vendor: 8,365 bytes, lines 1-18
1import{b as Dd,c as Ad}from"./chunk-KMYQMT4T.js";import"./chunk-TA34CWLK.js";import{A as Qi,B as Ki}from"./chunk-QBKSJLGR.js";import{A as yd,B as os,Bb as ei,Bc as Id,Dd as dt,E as Sd,J as as,K as Td,Mc as at,Nb as cs,O as kd,Vc as Ae,Wb as ve,Xb as rt,Xc as ct,Zb as st,Ze as ut,_e as Ue,b as Ze,ca as Pd,cc as De,d as vd,da as wd,db as Wi,dd as lt,e as qt,eb as Rd,f as et,fb as Hi,ga as tt,k as _d,lc as ot,m as bd,mb as Ld,n as Ie,pb as it,qb as nt,ra as Ed,sa as Od,sc as xd,t as Cd,tb as zi,ub as Gi,uc as Md}from"./chunk-CQ5D4WCL.js";import{A as od,B as Be,Bc as A,C as ad,Dd as Vt,Fb as ee,Fc as xe,G as Xt,Ga as X,Gb as k,Gc as ce,Ha as Z,Hc as le,La as It,Lc as Me,M as ns,Mb as z,Mc as jt,N as rs,Nc as ue,O as Lt,Oa as fd,P as cd,Qc as V,R as ji,Rb as Ni,Rc as ie,S as xt,Sb as $,Sc as Y,Tc as ss,Uc as gd,V as Vi,X as Mt,Z as ld,Za as qi,_ as dd,a as Mi,ba as Je,dc as ke,e as p,ea as ud,ec as Dt,ed as W,f as Ii,fc as At,g as Di,ga as pd,h as _t,id as L,j as Le,ja as hd,jd as x,ka as Q,kc as y,kd as St,lc as T,mc as S,na as J,nc as D,nd as $i,oc as Xe,pc as Zt,q as bt,qc as Fi,r as Ai,rc as Bi,s as sd,sc as Ui,ta as Ye,tb as md,uc as te,v as Qe,x as Ke,xb as v,y as Ct,ya as yt,z as Te,zc as H}from"./chunk-G2MBAB6T.js";var Vs=p((rM,js)=>{"use strict";var g={};g.generateIdentifier=function(){return Math.random().toString(36).substring(2,12)};g.localCName=g.generateIdentifier();g.splitLines=function(i){return i.trim().split(` 2`).map(e=>e.trim())};g.splitSections=function(i){return i.split(` 3m=`).map((t,n)=>(n>0?"m="+t:t).trim()+`\r 4`)};g.getDescription=function(i){let e=g.splitSections(i);return e&&e[0]};g.getMediaSections=function(i){let e=g.splitSections(i);return e.shift(),e};g.matchPrefix=function(i,e){return g.splitLines(i).filter(t=>t.indexOf(e)===0)};g.parseCandidate=function(i){let e;i.indexOf("a=candidate:")===0?e=i.substring(12).split(" "):e=i.substring(10).split(" ");let t={foundation:e[0],component:{1:"rtp",2:"rtcp"}[e[1]]||e[1],protocol:e[2].toLowerCase(),priority:parseInt(e[3],10),ip:e[4],address:e[4],port:parseInt(e[5],10),type:e[7]};for(let n=8;n<e.length;n+=2)switch(e[n]){case"raddr":t.relatedAddress=e[n+1];break;case"rport":t.relatedPort=parseInt(e[n+1],10);break;case"tcptype":t.tcpType=e[n+1];break;case"ufrag":t.ufrag=e[n+1],t.usernameFragment=e[n+1];break;default:t[e[n]]===void 0&&(t[e[n]]=e[n+1]);break}return t};g.writeCandidate=function(i){let e=[];e.push(i.foundation);let t=i.component;t==="rtp"?e.push(1):t==="rtcp"?e.push(2):e.push(t),e.push(i.protocol.toUpperCase()),e.push(i.priority),e.push(i.address||i.ip),e.push(i.port);let n=i.type;return e.push("typ"),e.push(n),n!=="host"&&i.relatedAddress&&i.relatedPort!==void 0&&(e.push("raddr"),e.push(i.relatedAddress),e.push("rport"),e.push(i.relatedPort)),i.tcpType&&i.protocol.toLowerCase()==="tcp"&&(e.push("tcptype"),e.push(i.tcpType)),(i.usernameFragment||i.ufrag)&&(e.push("ufrag"),e.push(i.usernameFragment||i.ufrag)),"candidate:"+e.join(" ")};g.parseIceOptions=function(i){return i.substring(14).split(" ")};g.parseRtpMap=function(i){let e=i.substring(9).split(" "),t={payloadType:parseInt(e.shift(),10)};return e=e[0].split("/"),t.name=e[0],t.clockRate=parseInt(e[1],10),t.channels=e.length===3?parseInt(e[2],10):1,t.numChannels=t.channels,t};g.writeRtpMap=function(i){let e=i.payloadType;i.preferredPayloadType!==void 0&&(e=i.preferredPayloadType);let t=i.channels||i.numChannels||1;return"a=rtpmap:"+e+" "+i.name+"/"+i.clockRate+(t!==1?"/"+t:"")+`\r 5`};g.parseExtmap=function(i){let e=i.substring(9).split(" ");return{id:parseInt(e[0],10),direction:e[0].indexOf("/")>0?e[0].split("/")[1]:"sendrecv",uri:e[1],attributes:e.slice(2).join(" ")}};g.writeExtmap=function(i){return"a=extmap:"+(i.id||i.preferredId)+(i.direction&&i.direction!=="sendrecv"?"/"+i.direction:"")+" "+i.uri+(i.attributes?" "+i.attributes:"")+`\r 6`};g.parseFmtp=function(i){let e={},t,n=i.substring(i.indexOf(" ")+1).split(";");for(let r=0;r<n.length;r++)t=n[r].trim().split("="),e[t[0].trim()]=t[1];return e};g.writeFmtp=function(i){let e="",t=i.payloadType;if(i.preferredPayloadType!==void 0&&(t=i.preferredPayloadType),i.parameters&&Object.keys(i.parameters).length){let n=[];Object.keys(i.parameters).forEach(r=>{i.parameters[r]!==void 0?n.push(r+"="+i.parameters[r]):n.push(r)}),e+="a=fmtp:"+t+" "+n.join(";")+`\r 7`}return e};g.parseRtcpFb=function(i){let e=i.substring(i.indexOf(" ")+1).split(" ");return{type:e.shift(),parameter:e.join(" ")}};g.writeRtcpFb=function(i){let e="",t=i.payloadType;return i.preferredPayloadType!==void 0&&(t=i.preferredPayloadType),i.rtcpFeedback&&i.rtcpFeedback.length&&i.rtcpFeedback.forEach(n=>{e+="a=rtcp-fb:"+t+" "+n.type+(n.parameter&&n.parameter.length?" "+n.parameter:"")+`\r 8`}),e};g.parseSsrcMedia=function(i){let e=i.indexOf(" "),t={ssrc:parseInt(i.substring(7,e),10)},n=i.indexOf(":",e);return n>-1?(t.attribute=i.substring(e+1,n),t.value=i.substring(n+1)):t.attribute=i.substring(e+1),t};g.parseSsrcGroup=function(i){let e=i.substring(13).split(" ");return{semantics:e.shift(),ssrcs:e.map(t=>parseInt(t,10))}};g.getMid=function(i){let e=g.matchPrefix(i,"a=mid:")[0];if(e)return e.substring(6)};g.parseFingerprint=function(i){let e=i.substring(14).split(" ");return{algorithm:e[0].toLowerCase(),value:e[1].toUpperCase()}};g.getDtlsParameters=function(i,e){return{role:"auto",fingerprints:g.matchPrefix(i+e,"a=fingerprint:").map(g.parseFingerprint)}};g.writeDtlsParameters=function(i,e){let t="a=setup:"+e+`\r 9`;return i.fingerprints.forEach(n=>{t+="a=fingerprint:"+n.algorithm+" "+n.value+`\r 10`}),t};g.parseCryptoLine=function(i){let e=i.substring(9).split(" ");return{tag:parseInt(e[0],10),cryptoSuite:e[1],keyParams:e[2],sessionParams:e.slice(3)}};g.writeCryptoLine=function(i){return"a=crypto:"+i.tag+" "+i.cryptoSuite+" "+(typeof i.keyParams=="object"?g.writeCryptoKeyParams(i.keyParams):i.keyParams)+(i.sessionParams?" "+i.sessionParams.join(" "):"")+`\r 11`};g.parseCryptoKeyParams=function(i){if(i.indexOf("inline:")!==0)return null;let e=i.substring(7).split("|");return{keyMethod:"inline",keySalt:e[0],lifeTime:e[1],mkiValue:e[2]?e[2].split(":")[0]:void 0,mkiLength:e[2]?e[2].split(":")[1]:void 0}};g.writeCryptoKeyParams=function(i){return i.keyMethod+":"+i.keySalt+(i.lifeTime?"|"+i.lifeTime:"")+(i.mkiValue&&i.mkiLength?"|"+i.mkiValue+":"+i.mkiLength:"")};g.getCryptoParameters=function(i,e){return g.matchPrefix(i+e,"a=crypto:").map(g.parseCryptoLine)};g.getIceParameters=function(i,e){let t=g.matchPrefix(i+e,"a=ice-ufrag:")[0],n=g.matchPrefix(i+e,"a=ice-pwd:")[0];return t&&n?{usernameFragment:t.substring(12),password:n.substring(10)}:null};g.writeIceParameters=function(i){let e="a=ice-ufrag:"+i.usernameFragment+`\r 12a=ice-pwd:`+i.password+`\r 13`;return i.iceLite&&(e+=`a=ice-lite\r 14`),e};g.parseRtpParameters=function(i){let e={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},n=g.splitLines(i)[0].split(" ");e.profile=n[2];for(let s=3;s<n.length;s++){let o=n[s],a=g.matchPrefix(i,"a=rtpmap:"+o+" ")[0];if(a){let c=g.parseRtpMap(a),l=g.matchPrefix(i,"a=fmtp:"+o+" ");switch(c.parameters=l.length?g.parseFmtp(l[0]):{},c.rtcpFeedback=g.matchPrefix(i,"a=rtcp-fb:"+o+" ").map(g.parseRtcpFb),e.codecs.push(c),c.name.toUpperCase()){case"RED":case"ULPFEC":e.fecMechanisms.push(c.name.toUpperCase());break;default:break}}}g.matchPrefix(i,"a=extmap:").forEach(s=>{e.headerExtensions.push(g.parseExtmap(s))});let r=g.matchPrefix(i,"a=rtcp-fb:* ").map(g.parseRtcpFb);return e.codecs.forEach(s=>{r.forEach(o=>{s.rtcpFeedback.find(c=>c.type===o.type&&c.parameter===o.parameter)||s.rtcpFeedback.push(o)})}),e};g.writeRtpDescription=function(i,e){let t="";t+="m="+i+" ",t+=e.codecs.length>0?"9":"0",t+=" "+(e.profile||"UDP/TLS/RTP/SAVPF")+" ",t+=e.codecs.map(r=>r.preferredPayloadType!==void 0?r.preferredPayloadType:r.payloadType).join(" ")+`\r 15`,t+=`c=IN IP4 0.0.0.0\r 16`,t+=`a=rtcp:9 IN IP4 0.0.0.0\r 17`,e.codecs.forEach(r=>{t+=g.writeRtpMap(r),t+=g.writeFmtp(r),t+=g.writeRtcpFb(r)});let n=0;return e.codecs.forEach(r=>{r.maxptime>n&&(n=r.maxptime)}),n>0&&(t+="a=maxptime:"+n+`\r 18`),e.headerExtensions&&e.headerExtensions.forEach(r=>{t+=g.writeExtmap(r)}),t};g.parseRtpEncodingParameters=function(i){let e=[],t=g.parseRtpParameters(i),n=t.fecMechanisms.indexOf("RED")!==-1,r=t.fecMechanisms.indexOf("ULPFEC")!==-1,s=g.matchPrefix(i,"a=ssrc:").map(d=>g.parseSsrcMedia(d)).filter(d=>d.attribute==="cname"),o=s.length>
180&&s[0].ssrc,a,c=g.matchPrefix(i,"a=ssrc-group:FID").map(d=>d.substring(17).split(" ").map(m=>parseInt(m,10)));c.length>0&&c[0].length>1&&c[0][0]===o&&(a=c[0][1]),t.codecs.forEach(d=>{if(d.name.toUpperCase()==="RTX"&&d.parameters.apt){let u={ssrc:o,codecPayloadType:parseInt(d.parameters.apt,10)};o&&a&&(u.rtx={ssrc:a}),e.push(u),n&&(u=JSON.parse(JSON.stringify(u)),u.fec={ssrc:o,mechanism:r?"red+ulpfec":"red"},e.push(u))}}),e.length===0&&o&&e.push({ssrc:o});let l=g.matchPrefix(i,"b=");return l.length&&(l[0].indexOf("b=TIAS:")===0?l=parseInt(l[0].substring(7),10):l[0].indexOf("b=AS:")===0?l=parseInt(l[0].substring(5),10)*1e3*.95-2e3*8:l=void 0,e.forEach(d=>{d.maxBitrate=l})),e};g.parseRtcpParameters=function(i){let e={},t=g.matchPrefix(i,"a=ssrc:").map(s=>g.parseSsrcMedia(s)).filter(s=>s.attribute==="cname")[0];t&&(e.cname=t.value,e.ssrc=t.ssrc);let n=g.matchPrefix(i,"a=rtcp-rsize");e.reducedSize=n.length>0,e.compound=n.length===0;let r=g.matchPrefix(i,"a=rtcp-mux");return e.mux=r.length>0,e};g.writeRtcpParameters=function(i){let e="";return i.reducedSize&&(e+=`a=rtcp-rsize\r 19`),i.mux&&(e+=`a=rtcp-mux\r 20`),i.ssrc!==void 0&&i.cname&&(e+="a=ssrc:"+i.ssrc+" cname:"+i.cname+`\r 21`),e};g.parseMsid=function(i){let e,t=g.matchPrefix(i,"a=msid:");if(t.length===1)return e=t[0].substring(7).split(" "),{stream:e[0],track:e[1]};let n=g.matchPrefix(i,"a=ssrc:").map(r=>g.parseSsrcMedia(r)).filter(r=>r.attribute==="msid");if(n.length>0)return e=n[0].value.split(" "),{stream:e[0],track:e[1]}};g.parseSctpDescription=function(i){let e=g.parseMLine(i),t=g.matchPrefix(i,"a=max-message-size:"),n;t.length>0&&(n=parseInt(t[0].substring(19),10)),isNaN(n)&&(n=65536);let r=g.matchPrefix(i,"a=sctp-port:");if(r.length>0)return{port:parseInt(r[0].substring(12),10),protocol:e.fmt,maxMessageSize:n};let s=g.matchPrefix(i,"a=sctpmap:");if(s.length>0){let o=s[0].substring(10).split(" ");return{port:parseInt(o[0],10),protocol:o[1],maxMessageSize:n}}};g.writeSctpDescription=function(i,e){let t=[];return i.protocol!=="DTLS/SCTP"?t=["m="+i.kind+" 9 "+i.protocol+" "+e.protocol+`\r 22`,`c=IN IP4 0.0.0.0\r 23`,"a=sctp-port:"+e.port+`\r 24`]:t=["m="+i.kind+" 9 "+i.protocol+" "+e.port+`\r 25`,`c=IN IP4 0.0.0.0\r 26`,"a=sctpmap:"+e.port+" "+e.protocol+` 65535\r 27`],e.maxMessageSize!==void 0&&t.push("a=max-message-size:"+e.maxMessageSize+`\r 28`),t.join("")};g.generateSessionId=function(){return Math.random().toString().substr(2,22)};g.writeSessionBoilerplate=function(i,e,t){let n,r=e!==void 0?e:2;return i?n=i:n=g.generateSessionId(),`v=0\r 29o=`+(t||"thisisadapterortc")+" "+n+" "+r+` IN IP4 127.0.0.1\r 30s=-\r 31t=0 0\r 32`};g.getDirection=function(i,e){let t=g.splitLines(i);for(let n=0;n<t.length;n++)switch(t[n]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return t[n].substring(2);default:}return e?g.getDirection(e):"sendrecv"};g.getKind=function(i){return g.splitLines(i)[0].split(" ")[0].substring(2)};g.isRejected=function(i){return i.split(" ",2)[1]==="0"};g.parseMLine=function(i){let t=g.splitLines(i)[0].substring(2).split(" ");return{kind:t[0],port:parseInt(t[1],10),protocol:t[2],fmt:t.slice(3).join(" ")}};g.parseOLine=function(i){let t=g.matchPrefix(i,"o=")[0].substring(2).split(" ");return{username:t[0],sessionId:t[1],sessionVersion:parseInt(t[2],10),netType:t[3],addressType:t[4],address:t[5]}};g.isValidSDP=function(i){if(typeof i!="string"||i.length===0)return!1;let e=g.splitLines(i);for(let t=0;t<e.length;t++)if(e[t].length<2||e[t].charAt(1)!=="=")return!1;return!0};typeof js=="object"&&(js.exports=g)});var Qd=p((lM,Gd)=>{"use strict";Gd.exports=(function(i){let{location:e,URL:t}=i;return[e,t].some(n=>!n)?function(r){return Promise.reject(new Error(`Failed to import: ${r}: dynamicImport is not supported`))}:(i.__twilioVideoImportedModules={},function(r){return r in i.__twilioVideoImportedModules?Promise.resolve(i.__twilioVideoImportedModules[r]):new Function("scope",`return import('${new t(r,e)}').then(m => scope.__twilioVideoImportedModules['${r}'] = m);`)(i)})})(globalThis)});var Bs=p((dM,Zd)=>{"use strict";var Jd=function(){},Ve="undefined",K_=typeof window!==Ve&&typeof window.navigator!==Ve&&/Trident\/|MSIE /.test(window.navigator.userAgent),Ns=["trace","debug","info","warn","error"];function Kd(i,e){var t=i[e];if(typeof t.bind=="function")return t.bind(i);try{return Function.prototype.bind.call(t,i)}catch(n){return function(){return Function.prototype.apply.apply(t,[i,arguments])}}}function J_(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function Y_(i){return i==="debug"&&(i="log"),typeof console===Ve?!1:i==="trace"&&K_?J_:console[i]!==void 0?Kd(console,i):console.log!==void 0?Kd(console,"log"):Jd}function Yd(i,e){for(var t=0;t<Ns.length;t++){var n=Ns[t];this[n]=t<i?Jd:this.methodFactory(n,i,e)}this.log=this.debug}function X_(i,e,t){return function(){typeof console!==Ve&&(Yd.call(this,e,t),this[i].apply(this,arguments))}}function Z_(i,e,t){return Y_(i)||X_.apply(this,arguments)}function Xd(i,e,t){var n=this,r,s="loglevel";
32typeof i=="string"?s+=":"+i:typeof i=="symbol"&&(s=void 0);function o(l){var d=(Ns[l]||"silent").toUpperCase();if(!(typeof window===Ve||!s)){try{window.localStorage[s]=d;return}catch(u){}try{window.document.cookie=encodeURIComponent(s)+"="+d+";"}catch(u){}}}function a(){var l;if(!(typeof window===Ve||!s)){try{l=window.localStorage[s]}catch(m){}if(typeof l===Ve)try{var d=window.document.cookie,u=d.indexOf(encodeURIComponent(s)+"=");u!==-1&&(l=/^([^;]+)/.exec(d.slice(u))[1])}catch(m){}return n.levels[l]===void 0&&(l=void 0),l}}n.name=i,n.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},n.methodFactory=t||Z_,n.getLevel=function(){return r},n.setLevel=function(l,d){if(typeof l=="string"&&n.levels[l.toUpperCase()]!==void 0&&(l=n.levels[l.toUpperCase()]),typeof l=="number"&&l>=0&&l<=n.levels.SILENT){if(r=l,d!==!1&&o(l),Yd.call(n,l,i),typeof console===Ve&&l<n.levels.SILENT)return"No console available for logging"}else throw"log.setLevel() called with invalid level: "+l},n.setDefaultLevel=function(l){a()||n.setLevel(l,!1)},n.enableAll=function(l){n.setLevel(n.levels.TRACE,l)},n.disableAll=function(l){n.setLevel(n.levels.SILENT,l)};var c=a();c==null&&(c=e??"WARN"),n.setLevel(c,!1)}var qe=new Xd,Fs={};qe.getLogger=function(e){if(typeof e!="symbol"&&typeof e!="string"||e==="")throw new TypeError("You must supply a name when creating a logger.");var t=Fs[e];return t||(t=Fs[e]=new Xd(e,qe.getLevel(),qe.methodFactory)),t};var eb=typeof window!==Ve?window.log:void 0;qe.noConflict=function(){return typeof window!==Ve&&window.log===qe&&(window.log=eb),qe};qe.getLoggers=function(){return Fs};qe.default=qe;Zd.exports=qe});var Us=p((uM,tb)=>{tb.exports={name:"twilio-video",title:"Twilio Video",description:"Twilio Video JavaScript Library",version:"2.35.0",homepage:"https://twilio.com",author:"Mark Andrus Roberts <[email protected]>",contributors:["Ryan Rowland <[email protected]>","Manjesh Malavalli <[email protected]>","Makarand Patwardhan <[email protected]>","Luis Rivas <[email protected]>"],keywords:["twilio","webrtc","library","javascript","video","rooms"],repository:{type:"git",url:"https://github.com/twilio/twilio-video.js.git"},devDependencies:{"@babel/core":"^7.14.2","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-object-rest-spread":"^7.20.7","@babel/preset-env":"^7.14.2","@babel/preset-typescript":"^7.13.0","@eslint/js":"^9.20.0","@stylistic/eslint-plugin":"^2.12.1","@types/express":"^4.17.21","@types/mocha":"^10.0.10","@types/node":"^24.7.2","@types/selenium-webdriver":"^3.0.8","@types/sinon":"^17.0.4","@types/ws":"^8.5.10","@typescript-eslint/eslint-plugin":"^8.18.2","@typescript-eslint/parser":"^8.18.2",browserify:"^17.0.1",cheerio:"^0.22.0",cors:"^2.8.5",electron:"^17.2.0",envify:"^4.0.0",eslint:"^9.37.0","eslint-plugin-import":"^2.29.1","eslint-plugin-n":"^16.6.2","eslint-plugin-promise":"^6.6.0",express:"^4.16.2",glob:"^7.1.7",globals:"^15.14.0","ink-docstrap":"^1.3.2",inquirer:"^7.0.0","is-docker":"^2.0.0",jsdoc:"^3.5.5","jsdoc-babel":"^0.5.0","json-loader":"^0.5.7",karma:"^6.4.4","karma-browserify":"^8.0.0","karma-chrome-launcher":"^2.0.0","karma-edgium-launcher":"^4.0.0-0","karma-electron":"^6.1.0","karma-firefox-launcher":"^2.1.3","karma-htmlfile-reporter":"^0.3.8","karma-junit-reporter":"^1.2.0","karma-mocha":"^2.0.1","karma-safari-launcher":"^1.0.0","karma-spec-reporter":"0.0.32","karma-typescript":"^5.5.1","karma-typescript-es6-transform":"^5.5.1",mocha:"^10.8.2","mock-require":"^3.0.3",ncp:"^2.0.0","node-http-server":"^8.1.2","npm-run-all":"^4.1.5",nyc:"^15.1.0",puppeteer:"19.2.2","regex-replace":"^2.3.1",requirejs:"^2.3.3",rimraf:"^2.6.1","simple-git":"^1.126.0",sinon:"^4.0.1","ts-node":"^10.9.2",rollup:"^4.41.0","@rollup/plugin-alias":"^5.1.1","@rollup/plugin-commonjs":"^28.0.6","@rollup/plugin-json":"^6.1.0","@rollup/plugin-node-resolve":"^16.0.3","@rollup/plugin-terser":"^0.4.4",twilio:"^3.49.0","twilio-release-tool":"^1.0.2",typescript:"5.9.3","vinyl-fs":"^2.4.4","webrtc-adapter":"^7.7.1"},engines:{node:">=22"},license:"BSD-3-Clause",main:"./es5/index.js",types:"./tsdef/index.d.ts",scripts:{"lint:js":"eslint ./lib ./test/*.js ./docker/**/*.js ./test/framework/*.js ./test/lib/*.js ./test/integration/** ./test/unit/** ","lint:ts":"eslint ./tsdef/*.ts ./lib/**/*.ts",lint:"npm-run-all lint:js lint:ts","patch-linkifyit-111":'regex-replace "readonly linkify: LinkifyIt.LinkifyIt;" "readonly linkify: typeof LinkifyIt;" "node_modules/@types/markdown-it/lib/index.d.ts" --filecontents',printVersion:"node --version && npm --version","test:unit":"npm-run-all printVersion build:es5 && nyc --report-dir=./coverage --include=lib/**/* --reporter=html --reporter=lcov --reporter=text mocha -r ts-node/register/transpile-only --exit ./test/unit/*","test:unit:quick":"nyc --report-dir=./coverage --include=lib/**/* --reporter=html --reporter=lcov mocha -r ts-node/register/transpile-only --exit","test:serversiderender":"mocha --exit ./test/serversiderender/index.js","test:integration:adapter":"node ./scripts/karma.js karma/integration.adapter.conf.js","test:integration":"npm run build:es5 && node ./scripts/karma.js karma/integration.conf.js","test:umd":"mocha --exit ./test/umd/index.js","test:crossbrowser:build:clean":"rimraf ./test/crossbrowser/lib ./test/crossbrowser/src/browser/index.js","test:crossbrowser:build:lint":"cd ./test/crossbrowser && eslint '**/*.ts'","test:crossbrowser:build:tsc":"cd ./test/crossbrowser && tsc","test:crossbrowser:build:browser":"cd ./test/crossbrowser && browserify lib/crossbrowser/src/browser/index.js > src/browser/index.js","test:crossbrowser:build":"npm-run-all test:crossbrowser:build:*","test:crossbrowser:test":"c
32d ./test/crossbrowser && mocha -r ts-node/register/transpile-only --exit test/integration/spec/**/*.ts","test:crossbrowser":"npm-run-all test:crossbrowser:*","test:sdkdriver:build:clean":"rimraf ./test/lib/sdkdriver/lib ./test/lib/sdkdriver/test/integration/browser/index.js","test:sdkdriver:build:lint":"cd ./test/lib/sdkdriver && eslint '**/*.ts'","test:sdkdriver:build:tsc":"cd ./test/lib/sdkdriver && tsc --rootDir src","test:sdkdriver:build":"npm-run-all test:sdkdriver:build:*","test:sdkdriver:test:unit":"cd ./test/lib/sdkdriver && mocha -r ts-node/register/transpile-only --exit test/unit/spec/**/*.ts","test:sdkdriver:test:integration:browser":"cd ./test/lib/sdkdriver/test/integration && browserify browser/browser.js > browser/index.js","test:sdkdriver:test:integration:run":"cd ./test/lib/sdkdriver && mocha -r ts-node/register/transpile-only --exit test/integration/spec/**/*.ts","test:sdkdriver:test:integration":"npm-run-all test:sdkdriver:test:integration:*","test:sdkdriver:test":"npm-run-all test:sdkdriver:test:*","test:sdkdriver":"npm-run-all test:sdkdriver:*","test:framework:angular:install":"cd ./test/framework/twilio-video-angular && rimraf ./node_modules package-lock.json && npm install","test:framework:angular:run":"mocha ./test/framework/twilio-video-angular.js","test:framework:angular":"npm-run-all test:framework:angular:*","test:framework:no-framework:run":"mocha ./test/framework/twilio-video-no-framework.js","test:framework:no-framework":"npm-run-all test:framework:no-framework:*","test:framework:react:install":"cd ./test/framework/twilio-video-react && rimraf ./node_modules package-lock.json && npm install","test:framework:react:test":"node ./scripts/framework.js twilio-video-react","test:framework:react:build":"cd ./test/framework/twilio-video-react && npm run build","test:framework:react:run":"mocha ./test/framework/twilio-video-react.js","test:framework:react":"npm-run-all test:framework:react:*","test:framework:install":"npm install chromedriver && npm install selenium-webdriver && npm install geckodriver && npm install puppeteer","test:framework":"npm-run-all test:framework:install test:framework:no-framework test:framework:react",test:"npm-run-all test:unit test:integration",typecheck:"npm run patch-linkifyit-111 && tsc tsdef/twilio-video-tests.ts --noEmit --lib es2018,dom && tsc --noEmit","build:es5":"npm run clean && npm run typecheck && tsc && rollup -c rollup.config.mjs",build:"npm-run-all clean lint docs test:unit test:integration build:es5 test:umd","build:quick":"npm-run-all clean lint docs build:es5",docs:"node ./scripts/docs.js ./dist/docs","watch:tsc":"tsc -w","watch:rollup":"rollup -c rollup.config.mjs --watch",watch:"npm-run-all -p watch:tsc watch:rollup",clean:"rimraf ./coverage ./es5 ./dist"},dependencies:{events:"^3.3.0",tslib:"^2.8.1",util:"^0.12.4",ws:"^8.18.3"},browser:{ws:"./src/ws.js"}}});var N=p((pM,q)=>{"use strict";var eu=Us();q.exports.SDK_NAME=`${eu.name}.js`;q.exports.SDK_VERSION=eu.version;q.exports.SDP_FORMAT="unified";q.exports.hardwareDevicePublisheriPad={hwDeviceManufacturer:"Apple",hwDeviceModel:"iPad",hwDeviceType:"tablet",platformName:"iOS"};q.exports.hardwareDevicePublisheriPhone={hwDeviceManufacturer:"Apple",hwDeviceModel:"iPhone",hwDeviceType:"mobile",platformName:"iOS"};q.exports.DEFAULT_ENVIRONMENT="prod";q.exports.DEFAULT_REALM="us1";q.exports.DEFAULT_REGION="gll";q.exports.DEFAULT_LOG_LEVEL="warn";q.exports.DEFAULT_LOGGER_NAME="twilio-video";q.exports.WS_SERVER=(i,e)=>(e=e==="gll"?"global":encodeURIComponent(e),i==="prod"?`wss://${e}.vss.twilio.com/signaling`:`wss://${e}.vss.${i}.twilio.com/signaling`);q.exports.PUBLISH_MAX_ATTEMPTS=5;q.exports.PUBLISH_BACKOFF_JITTER=10;q.exports.PUBLISH_BACKOFF_MS=20;function ib(i){return["a","e","i","o","u"].includes(i.toLowerCase()[0])?"an":"a"}q.exports.typeErrors={ILLEGAL_INVOKE(i,e){return new TypeError(`Illegal call to ${i}: ${e}`)},INVALID_TYPE(i,e){return new TypeError(`${i} must be ${ib(e)} ${e}`)},INVALID_VALUE(i,e){return new RangeError(`${i} must be one of ${e.join(", ")}`)},REQUIRED_ARGUMENT(i){return new TypeError(`${i} must be specified`)}};q.exports.DEFAULT_FRAME_RATE=24;q.exports.DEFAULT_VIDEO_PROCESSOR_STATS_INTERVAL_MS=1e4;q.exports.DEFAULT_ICE_GATHERING_TIMEOUT_MS=15e3;q.exports.DEFAULT_SESSION_TIMEOUT_SEC=30;q.exports.DEFAULT_NQ_LEVEL_LOCAL=1;q.exports.DEFAULT_NQ_LEVEL_REMOTE=0;q.exports.MAX_NQ_LEVEL=3;q.exports.ICE_ACTIVITY_CHECK_PERIOD_MS=1e3;q.exports.ICE_INACTIVITY_THRESHOLD_MS=3e3;
32q.exports.iceRestartBackoffConfig={factor:1.1,min:1,max:q.exports.DEFAULT_SESSION_TIMEOUT_SEC*1e3,jitter:1};q.exports.reconnectBackoffConfig={factor:1.5,min:80,jitter:1};q.exports.subscriptionMode={MODE_COLLABORATION:"collaboration",MODE_GRID:"grid",MODE_PRESENTATION:"presentation"};q.exports.trackSwitchOffMode={MODE_DISABLED:"disabled",MODE_DETECTED:"detected",MODE_PREDICTED:"predicted"};q.exports.trackPriority={PRIORITY_HIGH:"high",PRIORITY_LOW:"low",PRIORITY_STANDARD:"standard"};q.exports.clientTrackSwitchOffControl={MODE_AUTO:"auto",MODE_MANUAL:"manual"};q.exports.videoContentPreferencesMode={MODE_AUTO:"auto",MODE_MANUAL:"manual"}});var _e=p((hM,ou)=>{"use strict";var nb=Bs().getLogger,rb=N(),{DEFAULT_LOG_LEVEL:tu,DEFAULT_LOGGER_NAME:sb}=rb,an=N().typeErrors,ai;function ob(i){if(ai=ai||new Map,ai.has(i))return ai.get(i);let e=new Set;return ai.set(i,e),e}var ci=class i{constructor(e,t,n,r,s){if(typeof e!="string")throw an.INVALID_TYPE("moduleName","string");if(!t)throw an.REQUIRED_ARGUMENT("component");typeof n!="object"&&(n={}),s=s||nb,iu(n),Object.defineProperties(this,{_component:{value:t},_logLevels:{value:n},_warnings:{value:new Set},_loggerName:{get:function(){let a=r&&typeof r=="string"?r:sb;return this._logLevelsEqual||(a=`${a}-${e}`),a}},_logger:{get:function(){let a=s(this._loggerName),c=this._logLevels[e]||tu;return c=c==="off"?"silent":c,a.setDefaultLevel(c),a}},_logLevelsEqual:{get:function(){return new Set(Object.values(this._logLevels)).size===1}},logLevel:{get:function(){return i.getLevelByName(n[e]||tu)}},name:{get:t.toString.bind(t)}})}static getLevelByName(e){return isNaN(e)?(e=e.toUpperCase(),su(e),i[e]):parseInt(e,10)}createLog(e,t){let n=this._loggerName;return this._logLevelsEqual||(n=n.substring(0,n.lastIndexOf("-"))),new i(e,t,this._logLevels,n)}setLevels(e){return iu(e),Object.assign(this._logLevels,e),this}log(e,t){let n=i._levels[e];if(!n)throw an.INVALID_VALUE("logLevel",ru);n=n.toLowerCase();let r=[new Date().toISOString(),n,this.name];return(this._logger[n]||function(){})(...r.concat(t)),this}debug(){return this.log(i.DEBUG,[].slice.call(arguments))}deprecated(e){let t=ob(this._component.constructor);return t.has(e)?this:(t.add(e),this.warn(e))}info(){return this.log(i.INFO,[].slice.call(arguments))}warn(){return this.log(i.WARN,[].slice.call(arguments))}warnOnce(e){return this._warnings.has(e)?this:(this._warnings.add(e),this.warn(e))}error(){return this.log(i.ERROR,[].slice.call(arguments))}throw(e,t){throw e.clone&&(e=e.clone(t)),this.log(i.ERROR,e),e}};Object.defineProperties(ci,{DEBUG:{value:0},INFO:{value:1},WARN:{value:2},ERROR:{value:3},OFF:{value:4},_levels:{value:["DEBUG","INFO","WARN","ERROR","OFF"]}});var nu={},ru=[],ab=ci._levels.map((i,e)=>(nu[i]=!0,ru.push(e),i));function su(i){if(!(i in nu))throw an.INVALID_VALUE("level",ab)}
32function iu(i){Object.keys(i).forEach(e=>{su(i[e].toUpperCase())})}ou.exports=ci});var cu=p($s=>{"use strict";Object.defineProperty($s,"__esModule",{value:!0});$s.createNoiseCancellationAudioProcessor=pb;var cb=(Te(),_t(Ct)),lb=Qd(),fM=_e(),db={krisp:{supportedVersion:"1.0.0",pluginFile:"krispsdk.mjs"},rnnoise:{supportedVersion:"0.6.0",pluginFile:"rnnoise_sdk.mjs"}},ub=({supportedVersion:i,plugin:e,log:t})=>{if(!e.getVersion||!e.isSupported)throw new Error("Plugin does not export getVersion/isSupported api. Are you using old version of the plugin ?");let n=e.getVersion();t.debug(`Plugin Version = ${n}`);let r=i.split(".").map(c=>Number(c)),s=n.split(".").map(c=>Number(c));if(r.length!==3||s.length!==3)throw new Error(`Unsupported Plugin version format: ${i}, ${n}`);if(r[0]!==s[0])throw new Error(`Major version mismatch: [Plugin version ${n}], [Supported Version ${i}]`);if(s[1]<r[1])throw new Error(`Minor version mismatch: [Plugin version ${n}] < [Supported Version ${i}]`);let o=new AudioContext,a=e.isSupported(o);if(o.close(),!a)throw new Error("Noise Cancellation plugin is not supported on your browser")},au=new Map;function pb(i,e){return cb.__awaiter(this,void 0,void 0,function*(){let t=au.get(i.vendor);if(!t){let n=db[i.vendor];if(!n)throw new Error(`Unsupported NoiseCancellationOptions.vendor: ${i.vendor}`);let{supportedVersion:r,pluginFile:s}=n,o=i.sdkAssetsPath,a=`${o}/${s}`;try{e.debug("loading noise cancellation sdk: ",a);let c=yield lb(a);e.debug("Loaded noise cancellation sdk:",c);let l=c.default;ub({supportedVersion:r,plugin:l,log:e}),l.isInitialized()||(e.debug("initializing noise cancellation sdk: ",o),yield l.init({rootDir:o}),e.debug("noise cancellation sdk initialized!")),t={vendor:i.vendor,isInitialized:()=>l.isInitialized(),isConnected:()=>l.isConnected(),isEnabled:()=>l.isEnabled(),disconnect:()=>l.disconnect(),enable:()=>l.enable(),disable:()=>l.disable(),destroy:()=>l.destroy(),setLogging:d=>l.setLogging(d),connect:d=>{e.debug("connect: ",d.id),l.isConnected()&&l.disconnect();let u=l.connect(new MediaStream([d]));if(!u)throw new Error("Error connecting with noise cancellation sdk");let m=u.getAudioTracks()[0];if(!m)throw new Error("Error getting clean track from noise cancellation sdk");return l.enable(),m}},au.set(i.vendor,t)}catch(c){throw e.error(`Error loading noise cancellation sdk:${a}`,c),c}}return t})}});var du=p(li=>{"use strict";Object.defineProperty(li,"__esModule",{value:!0});li.NoiseCancellationImpl=void 0;li.applyNoiseCancellation=fb;var lu=(Te(),_t(Ct)),hb=cu(),gM=_e(),cn=class{constructor(e,t){this._processor=e,this._sourceTrack=t,this._disabledPermanent=!1}
32get vendor(){return this._processor.vendor}get sourceTrack(){return this._sourceTrack}get isEnabled(){return this._processor.isEnabled()}enable(){if(this._disabledPermanent)throw new Error(`${this.vendor} noise cancellation is disabled permanently for this track`);return this._processor.enable(),Promise.resolve()}disable(){return this._processor.disable(),Promise.resolve()}reacquireTrack(e){return lu.__awaiter(this,void 0,void 0,function*(){let t=this._processor.isEnabled();this._processor.disconnect();let n=yield e();this._sourceTrack=n;let r=yield this._processor.connect(n);return t?this._processor.enable():this._processor.disable(),r})}disablePermanently(){return this._disabledPermanent=!0,this.disable()}stop(){this._processor.disconnect(),this._sourceTrack.stop()}};li.NoiseCancellationImpl=cn;function fb(i,e,t){return lu.__awaiter(this,void 0,void 0,function*(){try{let n=yield(0,hb.createNoiseCancellationAudioProcessor)(e,t),r=n.connect(i),s=new cn(n,i);return{cleanTrack:r,noiseCancellation:s}}catch(n){return t.warn(`Failed to create noise cancellation. Returning normal audio track: ${n}`),{cleanTrack:i}}})}});var ae=p(oe=>{"use strict";function mb(){let i={};return i.promise=new Promise((e,t)=>{i.resolve=e,i.reject=t}),i}function gb(i,e,t,n){if(n in e)return;if(n.match(/^on[a-z]+$/))return;let r=!1;try{let o=Object.getOwnPropertyDescriptor(i,n);r=o&&!!o.get}catch(o){}if(r)return;let s;try{s=typeof i[n]}catch(o){}s==="function"&&(e[n]=function(){return this[t][n].apply(this[t],arguments)})}function vb(i,e,t){for(let n in i)gb(i,e,t,n)}function _b(i,e){i=Array.isArray(i)?new Set(i):new Set(i.values()),e=Array.isArray(e)?new Set(e):new Set(e.values());let t=new Set;return i.forEach(n=>{e.has(n)||t.add(n)}),t}function bb(i,e){return(i instanceof Map||i instanceof Set?Array.from(i.values()):i).reduce((n,r)=>n.concat(e(r)),[])}function Hs(){return typeof navigator<"u"&&typeof navigator.userAgent=="string"?navigator.userAgent:null}function zs(i){return typeof i>"u"&&(i=Hs()),/Chrome|CriOS/.test(i)?"chrome":/Firefox|FxiOS/.test(i)?"firefox":/Safari|iPhone|iPad|iPod/.test(i)?"safari":null}function Cb(i){typeof i>"u"&&(i=Hs());let e={chrome:"Chrome|CriOS",firefox:"Firefox|FxiOS",safari:"Version"}[zs(i)];if(!e)return null;let t=new RegExp(`(${e})/([^\\s]+)`),[,,n]=i.match(t)||[];if(!n)return null;let r=n.split(".").map(Number);return{major:isNaN(r[0])?null:r[0],minor:isNaN(r[1])?null:r[1]}}function yb(i){return typeof i>"u"&&(i=Hs()),/Mobi/.test(i)&&zs()==="chrome"&&/iPad|iPhone|iPod/.test(i)}function Sb(i,e){let t=null;
32Object.defineProperty(i,"on"+e,{get:function(){return t},set:function(n){t&&this.removeEventListener(e,t),typeof n=="function"?(t=n,this.addEventListener(e,t)):t=null}})}function Tb(i,e,t){return e?i.then(e,t):i}function kb(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,i=>{let e=Math.random()*16|0;return(i==="x"?e:e&3|8).toString(16)})}function Pb(i,e,t){Object.getOwnPropertyNames(i).forEach(n=>{wb(i,e,t,n)})}function wb(i,e,t,n){if(!(n in e)){if(n.match(/^on[a-z]+$/)){Object.defineProperty(e,n,{value:null,writable:!0}),t.addEventListener(n.slice(2),(...r)=>e.dispatchEvent(...r));return}Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})}}function Eb(){return typeof navigator=="object"&&typeof navigator.mediaDevices=="object"&&typeof navigator.mediaDevices.getUserMedia=="function"&&typeof RTCPeerConnection=="function"}function Ob(i){if(typeof RTCRtpSender<"u"&&typeof RTCRtpSender.getCapabilities=="function")return Promise.resolve(new Set(RTCRtpSender.getCapabilities(i).codecs.map(({mimeType:t})=>t.split("/")[1].toLowerCase())));if(typeof RTCPeerConnection>"u"||typeof RTCPeerConnection.prototype>"u"||typeof RTCPeerConnection.prototype.addTransceiver!="function"||typeof RTCPeerConnection.prototype.close!="function"||typeof RTCPeerConnection.prototype.createOffer!="function")return Promise.resolve(new Set);let e=new RTCPeerConnection;return e.addTransceiver(i),e.createOffer().then(({sdp:t})=>(e.close(),new Set((t.match(/^a=rtpmap:.+$/gm)||[]).map(n=>n.match(/^a=rtpmap:.+ ([^/]+)/)[1].toLowerCase()))),()=>(e.close(),new Set))}var Ws=new Map;function Rb(i,e){let t=Ws.get(e);return t?Promise.resolve(t.has(i.toLowerCase())):Ob(e).then(n=>(Ws.set(e,n),n.has(i.toLowerCase())))}function Lb(){Ws.clear()}oe.clearCachedSupportedCodecs=Lb;oe.defer=mb;oe.delegateMethods=vb;oe.difference=_b;oe.flatMap=bb;oe.guessBrowser=zs;oe.guessBrowserVersion=Cb;oe.isCodecSupported=Rb;oe.isIOSChrome=yb;oe.interceptEvent=Sb;oe.legacyPromise=Tb;oe.makeUUID=kb;oe.proxyProperties=Pb;oe.support=Eb});var Qs=p(Gs=>{"use strict";var uu="1234567890abcdef";function pu(i){let e="";for(let t=0;t<32;t++)e+=uu.charAt(Math.floor(Math.random()*uu.length));return`${i}${e}`}Gs.sessionSID=pu("SS");Gs.createSID=pu});var Ks=p((CM,hu)=>{"use strict";var xb={recordingMediaLost:"recording-media-lost"};hu.exports=xb});var j=p(M=>{"use strict";var fu=N(),{typeErrors:Mb,trackPriority:Ib}=fu,Db=ae(),{sessionSID:Ab}=Qs(),jb=Ks();function Vb(i,e){if(i instanceof e.LocalAudioTrack||i instanceof e.LocalVideoTrack||i instanceof e.LocalDataTrack)return i;if(i instanceof e.MediaStreamTrack)return i.kind==="audio"?new e.LocalAudioTrack(i,e):new e.LocalVideoTrack(i,e);throw Mb.INVALID_TYPE("track","LocalAudioTrack, LocalVideoTrack, LocalDataTrack, or MediaStreamTrack")}function qb(i,e,t,n){let r={audio:n.LocalAudioTrackPublication,video:n.LocalVideoTrackPublication,data:n.LocalDataTrackPublication}[i.kind];return new r(e,i,t,n)}function Nb(i){return i[0].toUpperCase()+i.slice(1)}function Fb(i,e,t,n){let r=new Set;e.on("newListener",function s(o){t.has(o)&&!r.has(o)&&(n.deprecated(`${i}#${o} has been deprecated and scheduled for removal in [email protected].${t.get(o)?` Use ${i}#${t.get(o)} instead.`:""}`),r.add(o)),r.size>=t.size&&e.removeListener("newListener",s)})}function Bb(i,e){i=Array.isArray(i)?new Set(i):new Set(i.values()),e=Array.isArray(e)?new Set(e):new Set(e.values());let t=new Set;return i.forEach(n=>{e.has(n)||t.add(n)}),t}function Ub(i,e){return Object.keys(i).reduce((t,n)=>(i[n]!==e&&(t[n]=i[n]),t),{})}function $b(i,e){let t=i instanceof Map||i instanceof Set?Array.from(i.values()):i;return e=e||function(r){return r},t.reduce((n,r)=>{let s=e(r);return n.concat(s)},[])}function mu(){return typeof navigator<"u"&&navigator.userAgent?navigator.userAgent:"Unknown"}function Wb(){let i=mu(),[,e="unknown"]=i.match(/\(([^)]+)\)/)||[],[t]=e.split(";").map(n=>n.trim());return t.toLowerCase()}function Hb(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,i=>{let e=Math.random()*16|0;return(i==="x"?e:e&3|8).toString(16)})}function zb(i){let e=null;function t(){e=null,i()}return function(){e&&clearTimeout(e),e=setTimeout(t)}}function Gb(i,e,t,n){return new Promise((r,s)=>{function o(){let c=[].slice.call(arguments);n&&e.removeListener(n,a),r(...c)}function a(){let c=[].slice.call(arguments);e.removeListener(t,o),s(...c)}e.once(t,o),n&&e.once(n,a),i()})}function Qb(i,e){return e.split(".").reduce((t,n)=>t?t[n]:null,i)}function Kb(){let i={};return i.promise=new Promise((e,t)=>
32{i.resolve=e,i.reject=t}),i}function Jb(i,e,t,n){if(n in e)return;if(n.match(/^on[a-z]+$/))return;let r;try{r=typeof i[n]}catch(s){}r==="function"&&(e[n]=function(...s){return this[t][n](...s)})}function Yb(i,e,t){for(let n in i)Jb(i,e,t,n)}function ln(i,e){if(i===e)return!0;if(typeof i!=typeof e)return!1;if(i===null)return e===null;if(e===null)return!1;if(Array.isArray(i))return Array.isArray(e)&&i.length===e.length&&i.every((t,n)=>ln(t,e[n]));if(typeof i=="object"){let t=Object.keys(i).sort(),n=Object.keys(e).sort();return!Array.isArray(e)&&ln(t,n)&&t.every(r=>ln(i[r],e[r]))}return!1}function gu(i){return typeof i=="object"&&!Array.isArray(i)}function Xb(i,e,t){Object.getOwnPropertyNames(i).forEach(n=>{Zb(i,e,t,n)})}function Zb(i,e,t,n){if(!(n in e)){if(n.match(/^on[a-z]+$/)){Object.defineProperty(e,n,{value:null,writable:!0}),t.addEventListener(n.slice(2),function(...r){e.dispatchEvent(...r)});return}Object.defineProperty(e,n,{enumerable:!0,get(){return t[n]}})}}function eC(i,e,t){return e?i.then(n=>{e(n)},n=>{t(n)}):i}function tC(i){return typeof i=="string"?{default:i,media:i,signaling:i,webrtc:i}:i}function iC(i,e){return e=e?"Local":"",`${e+(i.kind||"").replace(/\w{1}/,t=>t.toUpperCase())}Track`}function nC(i,e){return e=e?"Local":"",`${e+(i.kind||"").replace(/\w{1}/,t=>t.toUpperCase())}TrackPublication`}function vu(i){Object.getOwnPropertyNames(i).forEach(e=>{e.startsWith("_")&&_u(i,e)})}function rC(i,e){return class extends i{constructor(...t){super(...t),vu(this),sC(this,e)}}}function _u(i,e){let t=Object.getOwnPropertyDescriptor(i,e);t.enumerable=!1,Object.defineProperty(i,e,t)}function sC(i,e=[]){e.forEach(t=>{i.hasOwnProperty(t)&&_u(i,t)})}function bu(i){return i.map(un)}function oC(i){return bu([...i])}function aC(i){return[...i.entries()].reduce((e,[t,n])=>Object.assign({[t]:un(n)},e),{})}function cC(i){return Object.entries(i).reduce((e,[t,n])=>Object.assign({[t]:un(n)},e),{})}function un(i){return Array.isArray(i)?bu(i):i instanceof Set?oC(i):i instanceof Map?aC(i):i&&typeof i=="object"?cC(i):i}function dn(i){return i?"true":"false"}function lC(i){let e={sessionSID:Ab,iceServers:(i.iceServers||[]).length,audioTracks:(i.tracks||[]).filter(n=>n.kind==="audio").length,videoTracks:(i.tracks||[]).filter(n=>n.kind==="video").length,dataTracks:(i.tracks||[]).filter(n=>n.kind==="data").length};if([["audio"],["automaticSubscription"],["enableDscp"],["eventListener"],["preflight"],["video"],["dominantSpeaker","enableDominantSpeaker"]].forEach(([n,r])=>{r=r||n,e[r]=dn(!!i[n])}),[["maxVideoBitrate"],["maxAudioBitrate"]].forEach(([n,r])=>{r=r||n,typeof i[n]=="number"?e[r]=i[n]:isNaN(Number(i[n]))||(e[r]=Number(i[n]))}),[["iceTransportPolicy"],["region"],["name","roomName"]].forEach(([n,r])=>{r=r||n,typeof i[n]=="string"?e[r]=i[n]:typeof i[n]=="number"&&n==="name"&&(e[r]=i[n].toString())}),["preferredAudioCodecs","preferredVideoCodecs"].forEach(n=>{n in i&&(e[n]=JSON.stringify(i[n]))}),"networkQuality"in i&&(e.networkQualityConfiguration={},gu(i.networkQuality)?["local","remote"].forEach(n=>{typeof i.networkQuality[n]=="number"&&(e.networkQualityConfiguration[n]=i.networkQuality[n])}):(e.networkQualityConfiguration.remote=0,e.networkQualityConfiguration.local=i.networkQuality?1:0)),i.bandwidthProfile&&i.bandwidthProfile.video){let n=i.bandwidthProfile.video||{};e.bandwidthProfileOptions={},["mode","maxTracks","trackSwitchOffMode","dominantSpeakerPriority","maxSubscriptionBitrate","renderDimensions","contentPreferencesMode","clientTrackSwitchOffControl"].forEach(r=>{typeof n[r]=="number"||typeof n[r]=="string"?e.bandwidthProfileOptions[r]=n[r]:typeof n[r]=="boolean"?e.bandwidthProfileOptions[r]=dn(n[r]):typeof n[r]=="object"&&(e.bandwidthProfileOptions[r]=JSON.stringify(n[r]))})}return Object.entries({RTCPeerConnection:"customRTCPeerConnectionImpl",MediaStream:"customMediaStreamImpl",getUserMedia:"customGetUserMediaImpl",enumerateDevices:"customEnumerateDevicesImpl"}).forEach(([n,r])=>{e[r]=dn(typeof i[n]<"u")}),{group:"room",name:"connecting",level:"info",payload:e}}function dC(){return{group:"room",name:"connected",level:"info"}}function uC(i){return pn(i,[{prop:"video",type:"object",transform:pC}])}function pC(i){return pn(i,[{prop:"dominantSpeakerPriority",type:"string",payloadProp:"active_speaker_priority"},{prop:"maxSubscriptionBitrate",type:"number",payloadProp:"max_subscription_bandwidth"},{prop:"maxTracks",type:"number",payloadProp:"max_tracks"},{prop:"mode",type:"string"},{prop:"renderDimensions",type:"object",payloadProp:"render_dimensions",transform:fC},{prop:"trackSwitchOffMode",type:"string",payloadProp:"track_switch_off"}
32])}function hC(i,e,t,n,r,s,o){let a={transports:[{type:"data-channel"}]};return Object.assign(i?{active_speaker:a}:{},e?{network_quality:a}:{},s?{render_hints:a}:{},r?{publisher_hints:a}:{},t?{track_priority:a}:{},n?{track_switch_off:a}:{},o?{extension_transcriptions:a}:{})}function Js(i){return pn(i,[{prop:"height",type:"number"},{prop:"width",type:"number"}])}function fC(i){let{PRIORITY_HIGH:e,PRIORITY_LOW:t,PRIORITY_STANDARD:n}=Ib;return pn(i,[{prop:e,type:"object",transform:Js},{prop:t,type:"object",transform:Js},{prop:n,type:"object",transform:Js}])}function pn(i,e){return e.reduce((t,{prop:n,type:r,payloadProp:s=n,transform:o=a=>a})=>typeof i[n]===r?Object.assign({[s]:o(i[n])},t):t,{})}function mC(i){return{rules:[{type:i?"include":"exclude",all:!0}],revision:1}}function gC(i){let e={[jb.recordingMediaLost]:"recordings"};return i.map(t=>e[t]).filter(t=>!!t)}function vC(i,e){let t=Math.random();return i-e+Math.floor(2*e*t+.5)}function _C(i,e,t){return e<=i&&i<=t}function bC(i){return Db.guessBrowser()==="chrome"&&i.kind==="video"&&"displaySurface"in i.getSettings()}function CC(i=10){return new Promise(e=>setTimeout(e,i))}function yC(i,e){return new Promise(t=>{i.addEventListener(e,function n(r){i.removeEventListener(e,n),t(r)})})}M.constants=fu;M.createBandwidthProfilePayload=uC;M.createMediaSignalingPayload=hC;M.createMediaWarningsPayload=gC;M.createRoomConnectingEventPayload=lC;M.createRoomConnectedEventPayload=dC;M.boolToString=dn;M.createSubscribePayload=mC;M.asLocalTrack=Vb;M.asLocalTrackPublication=qb;M.capitalize=Nb;M.deprecateEvents=Fb;M.difference=Bb;M.filterObject=Ub;M.flatMap=$b;M.getPlatform=Wb;M.getUserAgent=mu;M.hidePrivateProperties=vu;M.hidePrivateAndCertainPublicPropertiesInClass=rC;M.isDeepEqual=ln;M.isNonArrayObject=gu;M.inRange=_C;M.makeUUID=Hb;M.oncePerTick=zb;M.promiseFromEvents=Gb;M.getOrNull=Qb;M.defer=Kb;M.delegateMethods=Yb;M.proxyProperties=Xb;M.legacyPromise=eC;M.buildLogLevels=tC;M.trackClass=iC;M.trackPublicationClass=nC;M.valueToJSON=un;M.withJitter=vC;M.isChromeScreenShareTrack=bC;M.waitForSometime=CC;M.waitForEvent=yC});var wu=p((TM,Pu)=>{"use strict";var{flatMap:SC,guessBrowser:TC,guessBrowserVersion:kC}=ae(),Ys=TC(),PC=kC(),Xs=Ys==="chrome",Tu=Ys==="firefox",ku=Ys==="safari",Cu=Xs?PC.major:null,wC=32767;function Ut(i,e){return typeof i.get=="function"?i.get(e):i.find(t=>t.id===e)}function EC(i,e,t=!1){let n;if(Array.isArray(i))n=new Map(i.map(f=>[f.id||String(Math.random()),f]));else if(i instanceof Map)n=i;else if(typeof i=="object"&&i!==null){let f=new Map;
32Object.keys(i).forEach(h=>{f.set(h,i[h])}),n=f}else return new Map;if(!n||!e)return new Map;let r=new Map,s=e.id,o=e.kind,a=null,c=null,l=null;for(let[f,h]of n)if(t&&h.type==="inbound-rtp"&&h.trackIdentifier===s){a=h,c=f,l=h.ssrc;break}else if(!t&&h.type==="media-source"&&h.trackIdentifier===s){a=h,c=f;break}else h.type==="track"&&h.trackIdentifier===s&&(a||(a=h,c=f));if(!a){if(t){let f=[];for(let[h,_]of n)_.type==="inbound-rtp"&&(_.kind===o||_.mediaType===o)&&f.push({id:h,stat:_});(f.length===1||f.length>1)&&(a=f[0].stat,c=f[0].id,l=a.ssrc)}else for(let[f,h]of n)if(h.type==="media-source"&&h.kind===o){a=h,c=f;break}}if(!a)return r;r.set(c,a);let d=new Set;if(t){if(a.codecId&&d.add(a.codecId),a.transportId&&d.add(a.transportId),a.remoteId&&d.add(a.remoteId),l)for(let[f,h]of n)h.type==="remote-outbound-rtp"&&h.ssrc===l&&d.add(f);for(let f of d)n.has(f)&&r.set(f,n.get(f));for(let[f,h]of n)h.type==="track"&&h.trackIdentifier===s&&r.set(f,h)}else{for(let[f,h]of n)if(h.type==="outbound-rtp"&&h.mediaSourceId===c){r.set(f,h),h.codecId&&d.add(h.codecId),h.transportId&&d.add(h.transportId);let _=f;for(let[b,R]of n)R.type==="remote-inbound-rtp"&&R.localId===_&&r.set(b,R)}for(let f of d)n.has(f)&&r.set(f,n.get(f))}let u=null,m=new Set;for(let f of r.values())f.transportId&&m.add(f.transportId);for(let f of m)if(n.has(f)){let h=n.get(f);r.set(f,h),h.selectedCandidatePairId&&(u=h.selectedCandidatePairId),h.localCertificateId&&n.has(h.localCertificateId)&&r.set(h.localCertificateId,n.get(h.localCertificateId)),h.remoteCertificateId&&n.has(h.remoteCertificateId)&&r.set(h.remoteCertificateId,n.get(h.remoteCertificateId))}if(u&&n.has(u)){let f=n.get(u);r.set(u,f),f.localCandidateId&&n.has(f.localCandidateId)&&r.set(f.localCandidateId,n.get(f.localCandidateId)),f.remoteCandidateId&&n.has(f.remoteCandidateId)&&r.set(f.remoteCandidateId,n.get(f.remoteCandidateId))}return r}function OC(i,e){return i&&typeof i.getStats=="function"?RC(i,e):Promise.reject(new Error("Given PeerConnection does not support getStats"))}function RC(i,e){let t=hn(i,"audio","local"),n=hn(i,"video","local"),r=hn(i,"audio"),s=hn(i,"video"),o={activeIceCandidatePair:null,localAudioTrackStats:[],localVideoTrackStats:[],remoteAudioTrackStats:[],remoteVideoTrackStats:[]},a=SC([[t,"localAudioTrackStats",!1],[n,"localVideoTrackStats",!1],[r,"remoteAudioTrackStats",!0],[s,"remoteVideoTrackStats",!0]],([c,l,d])=>c.map(u=>DC(i,u,Object.assign({isRemote:d},e)).then(m=>{m.forEach(f=>{f.trackId=u.id,o[l].push(f)})})));return Promise.all(a).then(()=>LC(i,e)).then(c=>(o.activeIceCandidatePair=c,o))}function LC(i,e={}){return typeof e.testForChrome<"u"||Xs||typeof e.testForSafari<"u"||ku?i.getStats().then(xC):typeof e.testForFirefox<"u"||Tu?i.getStats().then(MC):Promise.reject(new Error("RTCPeerConnection#getStats() not supported"))}function xC(i){let e=Array.from(i.values()).find(({nominated:c,type:l})=>l==="candidate-pair"&&c);if(!e)return null;let t=Ut(i,e.localCandidateId),n=Ut(i,e.remoteCandidateId),r=[{key:"candidateType",type:"string"},{key:"ip",type:"string"},{key:"port",type:"number"},{key:"priority",type:"number"},{key:"protocol",type:"string"},{key:"url",type:"string"}],s=r.concat([{key:"deleted",type:"boolean"},{key:"relayProtocol",type:"string"},{key:"networkType",type:"string"}]),o=t?s.reduce((c,{key:l,type:d})=>(c[l]=typeof t[l]===d?t[l]:l==="deleted"?!1:null,c),{}):null,a=n?r.reduce((c,{key:l,type:d})=>(c[l]=typeof n[l]===d?n[l]:null,c),{}):null;return[{key:"availableIncomingBitrate",type:"number"},{key:"availableOutgoingBitrate",type:"number"},{key:"bytesReceived",type:"number"},{key:"bytesSent",type:"number"},{key:"consentRequestsSent",type:"number"},{key:"currentRoundTripTime",type:"number"},{key:"lastPacketReceivedTimestamp",type:"number"},{key:"lastPacketSentTimestamp",type:"number"},{key:"nominated",type:"boolean"},{key:"priority",type:"number"},{key:"readable",type:"boolean"},{key:"requestsReceived",type:"number"},{key:"requestsSent",type:"number"},{key:"responsesReceived",type:"number"},{key:"responsesSent",type:"number"},{key:"retransmissionsReceived",type:"number"},{key:"retransmissionsSent",type:"number"},{key:"state",type:"string",fixup:c=>c==="inprogress"?"in-progress":c},{key:"totalRoundTripTime",type:"number"},{key:"transportId",type:"string"},{key:"writable",type:"boolean"}].reduce((c,{key:l,type:d,fixup:u})=>(c[l]=typeof e[l]===d?u?u(e[l]):e[l]:null,c),{localCandidate:o,remoteCandidate:a})}function MC(i){let e=Array.from(i.values()).find(({nominated:l,type:d})=>d==="candidate-pair"&&l);if(!e)return null;let t=Ut(i,e.localCandidateId),n=Ut(i,e.remoteCandidateId),r=[{key:"candidateType",type:"string"},{key:"ip",ffKeys:["address","ipAddress"],type:"string"},{key:"port",ffKeys:["portNumber"],type:"number"},{key:"priority",type:"number"},{key:"protocol",ffKeys:["transport"],type:"string"},{key:"url",type:"string"}],s=r.concat([{key:"deleted",type:"boolean"},{key:"relayProtocol",type:"string"}]),o={host:"host",peerreflexive:"prflx",relayed:"relay",serverreflexive:"srflx"},a=t?s.reduce((l,{ffKeys:d,key:u,type:m})=>{let f=d&&d.find(h=>h in t)||u;return l[u]=typeof t[f]===m?f==="candidateType"&&o[t[f]]||t[f]:f==="deleted"?!1:null,l},{}):null,c=n?r.reduce((l,{ffKeys:d,key:u,type:m})=>{let f=d&&d.find(h=>h in n)||u;return l[u]=typeof n[f]===m?f==="candidateType"&&o[n[f]]||n[f]:null,l},{}):null;return[{key:"availableIncomingBitrate",type:"number"},{key:"availableOutgoingBitrate",type:"number"},{key:"bytesReceived",type:"number"},{key:"bytesSent",type:"number"},{key:"consentRequestsSent",type:"number"},{key:"currentRoundTripTime",type:"number"},{key:"lastPacketReceivedTimestamp",type:"number"},{key:"lastPacketSentTimestamp",type:"number"},{key:"nominated",type:"boolean"},{key:"priority",type:"number"},{key:"readable",type:"boolean"},{key:"requestsReceived",type:"number"},{key:"requestsSent",type:"number"},{key:"responsesReceived",type:"number"},{key:"responsesSent",type:"number"},{key:"retransmissionsReceived",type:"number"},{key:"retransmissionsSent",type:"number"},{key:"state",type:"string"},{key:"totalRoundTripTime",type:"number"},{key:"transportId",type:"string"},{key:"writable",type:"boolean"}].reduce((l,{key:d,type:u})=>(l[d]=typeof e[d]===u?e[d]:null,l),{localCandidate:a,remoteCandidate:c})}function hn(i,e,t){return i[t==="local"?"getSenders":"getReceivers"]().map(({track:r})=>r).filter(r=>r&&r.kind===e)}function IC(i,e){if(!i||!e)return!1;if(i.getReceivers){let t=i.getReceivers();for(let n of t)if(n.track&&n.track.id===e.id)return!0}if(i.getRemoteStreams){let t=i.getRemoteStreams();for(let n of t){let r=n.getTracks();for(let s of r)if(s.id===e.id)return!0}}return!1}function DC(i,e,t={}){return typeof t.testForChrome<"u"||Xs?yu(i,e,t):typeof t.testForFirefox<"u"||Tu?AC(i,e,t):typeof t.testForSafari<"u"||ku?yu(i,e,t):Promise.reject(new Error("RTCPeerConnection#get
32Stats() not supported"))}function yu(i,e,t){let n=t.log;return Cu&&Cu<67?new Promise((r,s)=>{i.getStats(o=>{r([jC(o,e)])},null,s)}):i.getStats(e).then(r=>(n.info("getStats by track successful"),Su(r,t))).catch(()=>(n.warn("getStats by track failed. Getting default stats"),i.getStats().then(r=>{n.info("getStats by default successful");let s=IC(i,e);n.info(`Starting filtering stats for ${s?"remote":"local"} track`);let o=EC(r,e,s);return n.info(`Completed filtering stats for ${s?"remote":"local"} track`),Su(o,t)})))}function AC(i,e,t){return i.getStats(e).then(n=>[VC(n,t)])}function jC(i,e){let t=i.result().find(r=>r.type==="ssrc"&&r.stat("googTrackId")===e.id),n={};return t&&(n.timestamp=Math.round(Number(t.timestamp)),n=t.names().reduce((r,s)=>{switch(s){case"googCodecName":r.codecName=t.stat(s);break;case"googRtt":r.roundTripTime=Number(t.stat(s));break;case"googJitterReceived":r.jitter=Number(t.stat(s));break;case"googFrameWidthInput":r.frameWidthInput=Number(t.stat(s));break;case"googFrameHeightInput":r.frameHeightInput=Number(t.stat(s));break;case"googFrameWidthSent":r.frameWidthSent=Number(t.stat(s));break;case"googFrameHeightSent":r.frameHeightSent=Number(t.stat(s));break;case"googFrameWidthReceived":r.frameWidthReceived=Number(t.stat(s));break;case"googFrameHeightReceived":r.frameHeightReceived=Number(t.stat(s));break;case"googFrameRateInput":r.frameRateInput=Number(t.stat(s));break;case"googFrameRateSent":r.frameRateSent=Number(t.stat(s));break;case"googFrameRateReceived":r.frameRateReceived=Number(t.stat(s));break;case"ssrc":r[s]=t.stat(s);break;case"bytesReceived":case"bytesSent":case"packetsLost":case"packetsReceived":case"packetsSent":case"audioInputLevel":case"audioOutputLevel":r[s]=Number(t.stat(s));break}return r},n)),n}function Su(i,{simulateExceptionWhileStandardizingStats:e=!1}){if(e)throw new Error("Error while gathering stats");let t=null,n=[],r=null,s=null,o=null,a=null,c=null;i.forEach(f=>{let{type:h}=f;switch(h){case"inbound-rtp":t=f;break;case"outbound-rtp":n.push(f);break;case"media-source":c=f;break;case"track":o=f;break;case"codec":a=f;break;case"remote-inbound-rtp":r=f;break;case"remote-outbound-rtp":s=f;break}});let l=o?o.remoteSource:!c,d=l?[t]:n,u=[],m=l?s:r;return d.forEach(f=>{let h={},_=[f,c,o,a,m&&m.ssrc===f.ssrc?m:null];function b(Re){let nd=_.find(rd=>rd&&typeof rd[Re]<"u")||null;return nd?nd[Re]:null}let R=b("ssrc");typeof R=="number"&&(h.ssrc=String(R));let E=b("timestamp");h.timestamp=Math.round(E);let C=b("mimeType");typeof C=="string"&&(C=C.split("/"),h.codecName=C[C.length-1]);let U=b("roundTripTime");typeof U=="number"&&(h.roundTripTime=Math.round(U*1e3));let G=b("jitter");typeof G=="number"&&(h.jitter=Math.round(G*1e3));let B=b("frameWidth");typeof B=="number"&&(l?h.frameWidthReceived=B:(h.frameWidthSent=B,h.frameWidthInput=o?o.frameWidth:c.width));let I=b("frameHeight");typeof I=="number"&&(l?h.frameHeightReceived=I:(h.frameHeightSent=I,h.frameHeightInput=o?o.frameHeight:c.height));let K=b("framesPerSecond");(typeof K=="number"||K===null)&&(h[l?"frameRateReceived":"frameRateSent"]=K);let ye=b("qualityLimitationReason");typeof ye=="string"&&(h.qualityLimitationReason=ye);let fe=b("bytesReceived");typeof fe=="number"&&(h.bytesReceived=fe);let Fe=b("bytesSent");typeof Fe=="number"&&(h.bytesSent=Fe);let Se=b("packetsLost");typeof Se=="number"&&(h.packetsLost=Se);let se=b("packetsReceived");typeof se=="number"&&(h.packetsReceived=se);let Ge=b("packetsSent");typeof Ge=="number"&&(h.packetsSent=Ge);let me=b("audioLevel");typeof me=="number"&&(me=Math.round(me*wC),l?h.audioOutputLevel=me:h.audioInputLevel=me);let Oe=b("totalPacketSendDelay");typeof Oe=="number"&&(h.totalPacketSendDelay=Oe);let Pi=b("totalEncodeTime");typeof Pi=="number"&&(h.totalEncodeTime=Pi);let wi=b("framesEncoded");typeof wi=="number"&&(h.framesEncoded=wi);let Ei=b("estimatedPlayoutTimestamp");typeof Ei=="number"&&(h.estimatedPlayoutTimestamp=Ei);let Oi=b("totalDecodeTime");typeof Oi=="number"&&(h.totalDecodeTime=Oi);let Ri=b("framesDecoded");typeof Ri=="number"&&(h.framesDecoded=Ri);let Li=b("jitterBufferDelay");typeof Li=="number"&&(h.jitterBufferDelay=Li);let xi=b("jitterBufferEmittedCount");typeof xi=="number"&&(h.jitterBufferEmittedCount=xi);let ge=b("freezeCount");typeof ge=="number"&&(h.freezeCount=ge),u.push(h)}),u}function VC(i=new Map,{isRemote:e,simulateExceptionWhileStandardizingStats:t=!1}){if(t)throw new Error("Error while gathering stats");let n=null,r=null;
32i.forEach(se=>{let{isRemote:Ge,remoteId:me,type:Oe}=se;if(!Ge)switch(Oe){case"inbound-rtp":n=se,r=Ut(i,me);break;case"outbound-rtp":r=se,n=Ut(i,me);break}});let s=e?n:r,o=e?r:n;function a(se){return s&&typeof s[se]<"u"?s[se]:o&&typeof o[se]<"u"?o[se]:null}let c={},l=a("timestamp");c.timestamp=Math.round(l);let d=a("ssrc");typeof d=="number"&&(c.ssrc=String(d));let u=a("bytesSent");typeof u=="number"&&(c.bytesSent=u);let m=a("packetsLost");typeof m=="number"&&(c.packetsLost=m);let f=a("packetsSent");typeof f=="number"&&(c.packetsSent=f);let h=a("roundTripTime");typeof h=="number"&&(c.roundTripTime=Math.round(h*1e3));let _=a("jitter");typeof _=="number"&&(c.jitter=Math.round(_*1e3));let b=a("framesPerSecond");(typeof b=="number"||b===null)&&(c.frameRateSent=b);let R=a("bytesReceived");typeof R=="number"&&(c.bytesReceived=R);let E=a("packetsReceived");typeof E=="number"&&(c.packetsReceived=E);let C=a("framesPerSecond");(typeof C=="number"||C===null)&&(c.frameRateReceived=C);let U=a("totalPacketSendDelay");typeof U=="number"&&(c.totalPacketSendDelay=U);let G=a("totalEncodeTime");typeof G=="number"&&(c.totalEncodeTime=G);let B=a("framesEncoded");typeof B=="number"&&(c.framesEncoded=B);let I=a("estimatedPlayoutTimestamp");typeof I=="number"&&(c.estimatedPlayoutTimestamp=I);let K=a("totalDecodeTime");typeof K=="number"&&(c.totalDecodeTime=K);let ye=a("framesDecoded");typeof ye=="number"&&(c.framesDecoded=ye);let fe=a("jitterBufferDelay");typeof fe=="number"&&(c.jitterBufferDelay=fe);let Fe=a("jitterBufferEmittedCount");typeof Fe=="number"&&(c.jitterBufferEmittedCount=Fe);let Se=a("freezeCount");return typeof Se=="number"&&(c.freezeCount=Se),c}Pu.exports=OC});var Ou=p((kM,Eu)=>{"use strict";function qC(i={audio:!0,video:!0}){return typeof navigator=="object"&&typeof navigator.mediaDevices=="object"&&typeof navigator.mediaDevices.getUserMedia=="function"?navigator.mediaDevices.getUserMedia(i):Promise.reject(new Error("getUserMedia is not supported"))}Eu.exports=qC});var ne=p((PM,Zs)=>{"use strict";var $t=typeof Reflect=="object"?Reflect:null,Ru=$t&&typeof $t.apply=="function"?$t.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)},fn;$t&&typeof $t.ownKeys=="function"?fn=$t.ownKeys:Object.getOwnPropertySymbols?fn=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:fn=function(e){return Object.getOwnPropertyNames(e)};function NC(i){console&&console.warn&&console.warn(i)}var xu=Number.isNaN||function(e){return e!==e};function F(){F.init.call(this)}Zs.exports=F;Zs.exports.once=$C;F.EventEmitter=F;F.prototype._events=void 0;F.prototype._eventsCount=0;F.prototype._maxListeners=void 0;var Lu=10;function mn(i){if(typeof i!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof i)}Object.defineProperty(F,"defaultMaxListeners",{enumerable:!0,get:function(){return Lu},set:function(i){if(typeof i!="number"||i<0||xu(i))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+i+".");Lu=i}});F.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};F.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||xu(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function Mu(i){return i._maxListeners===void 0?F.defaultMaxListeners:i._maxListeners}F.prototype.getMaxListeners=function(){return Mu(this)};F.prototype.emit=function(e){for(var t=[],n=1;n<arguments.length;n++)t.push(arguments[n]);var r=e==="error",s=this._events;if(s!==void 0)r=r&&s.error===void 0;else if(!r)return!1;if(r){var o;if(t.length>0&&(o=t[0]),o instanceof Error)throw o;var a=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw a.context=o,a}var c=s[e];if(c===void 0)return!1;if(typeof c=="function")Ru(c,this,t);else for(var l=c.length,d=Vu(c,l),n=0;n<l;++n)Ru(d[n],this,t);return!0};function Iu(i,e,t,n){var r,s,o;if(mn(t),s=i._events,s===void 0?(s=i._events=Object.create(null),i._eventsCount=0):(s.newListener!==void 0&&(i.emit("newListener",e,t.listener?t.listener:t),s=i._events),o=s[e]),o===void 0)
32o=s[e]=t,++i._eventsCount;else if(typeof o=="function"?o=s[e]=n?[t,o]:[o,t]:n?o.unshift(t):o.push(t),r=Mu(i),r>0&&o.length>r&&!o.warned){o.warned=!0;var a=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");a.name="MaxListenersExceededWarning",a.emitter=i,a.type=e,a.count=o.length,NC(a)}return i}F.prototype.addListener=function(e,t){return Iu(this,e,t,!1)};F.prototype.on=F.prototype.addListener;F.prototype.prependListener=function(e,t){return Iu(this,e,t,!0)};function FC(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function Du(i,e,t){var n={fired:!1,wrapFn:void 0,target:i,type:e,listener:t},r=FC.bind(n);return r.listener=t,n.wrapFn=r,r}F.prototype.once=function(e,t){return mn(t),this.on(e,Du(this,e,t)),this};F.prototype.prependOnceListener=function(e,t){return mn(t),this.prependListener(e,Du(this,e,t)),this};F.prototype.removeListener=function(e,t){var n,r,s,o,a;if(mn(t),r=this._events,r===void 0)return this;if(n=r[e],n===void 0)return this;if(n===t||n.listener===t)--this._eventsCount===0?this._events=Object.create(null):(delete r[e],r.removeListener&&this.emit("removeListener",e,n.listener||t));else if(typeof n!="function"){for(s=-1,o=n.length-1;o>=0;o--)if(n[o]===t||n[o].listener===t){a=n[o].listener,s=o;break}if(s<0)return this;s===0?n.shift():BC(n,s),n.length===1&&(r[e]=n[0]),r.removeListener!==void 0&&this.emit("removeListener",e,a||t)}return this};F.prototype.off=F.prototype.removeListener;F.prototype.removeAllListeners=function(e){var t,n,r;if(n=this._events,n===void 0)return this;if(n.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):n[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete n[e]),this;if(arguments.length===0){var s=Object.keys(n),o;for(r=0;r<s.length;++r)o=s[r],o!=="removeListener"&&this.removeAllListeners(o);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(t=n[e],typeof t=="function")this.removeListener(e,t);else if(t!==void 0)for(r=t.length-1;r>=0;r--)this.removeListener(e,t[r]);return this};function Au(i,e,t){var n=i._events;if(n===void 0)return[];var r=n[e];return r===void 0?[]:typeof r=="function"?t?[r.listener||r]:[r]:t?UC(r):Vu(r,r.length)}F.prototype.listeners=function(e){return Au(this,e,!0)};F.prototype.rawListeners=function(e){return Au(this,e,!1)};F.listenerCount=function(i,e){return typeof i.listenerCount=="function"?i.listenerCount(e):ju.call(i,e)};F.prototype.listenerCount=ju;function ju(i){var e=this._events;if(e!==void 0){var t=e[i];if(typeof t=="function")return 1;if(t!==void 0)return t.length}return 0}F.prototype.eventNames=function(){return this._eventsCount>0?fn(this._events):[]};function Vu(i,e){for(var t=new Array(e),n=0;n<e;++n)t[n]=i[n];return t}function BC(i,e){for(;e+1<i.length;e++)i[e]=i[e+1];i.pop()}function UC(i){for(var e=new Array(i.length),t=0;t<e.length;++t)e[t]=i[t].listener||i[t];return e}function $C(i,e){return new Promise(function(t,n){function r(o){i.removeListener(e,s),n(o)}function s(){typeof i.removeListener=="function"&&i.removeListener("error",r),t([].slice.call(arguments))}qu(i,e,s,{once:!0}),e!=="error"&&WC(i,r,{once:!0})})}function WC(i,e,t){typeof i.on=="function"&&qu(i,"error",e,t)}function qu(i,e,t,n){if(typeof i.on=="function")n.once?i.once(e,t):i.on(e,t);else if(typeof i.addEventListener=="function")i.addEventListener(e,function r(s){n.once&&i.removeEventListener(e,r),t(s)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof i)}});var gn=p((wM,Nu)=>{"use strict";var{EventEmitter:HC}=ne(),eo=class{constructor(){Object.defineProperties(this,{_eventEmitter:{value:new HC}})}dispatchEvent(e){return this._eventEmitter.emit(e.type,e)}addEventListener(){return this._eventEmitter.addListener(...arguments)}removeEventListener(){return this._eventEmitter.removeListener(...arguments)}};Nu.exports=eo});var io=p((EM,Uu)=>{"use strict";var{defer:zC}=ae(),Fu={high:new Set(["low"]),low:new Set(["high"])},to=class{constructor(e="low"){let t=e;Object.defineProperties(this,{_state:{set:function(n){if(t!==n){t=n;let r=this._whenDeferreds.get(t);r.forEach(s=>s.resolve(this)),r.clear()}},get:function(){return t}},_whenDeferreds:{value:new Map([["high",new Set],["low",new Set]])}})}get state(){return this._state}lower(){return this.transition("low")}raise(){return this.transition("high")}transition(e){if(!Fu[this.state].has(e))throw Bu(this.state,e);return this._state=e,this}when(e){if(this.state===e)return Promise.resolve(this);if(!Fu[this.state].has(e))return Promise.reject(Bu(this.state,e));let t=zC();return this._whenDeferreds.get(e).add(t),t.promise}};function Bu(i,e){return new Error(`Cannot transition from "${i}" to "${e}"`)}Uu.exports=to});var vn=p(di=>{"use strict";var{flatMap:GC}=ae();function $u(i,e){return(e.match(new RegExp(i,"gm"))||[]).reduce((n,r)=>{let s=r.match(new RegExp(i));return s?n.add(s[1]):n},new Set)}function Wu(i){return $u("^a=msid:.+ +(.+) *$",i)}function Hu(i,e=".*",t=".*"){return i.split(`\r 33m=`).slice(1).map(n=>`m=${n}`).filter(n=>{let r=new RegExp(`m=${e}`,"gm"),s=new RegExp(`a=${t}`,"gm");return r.test(n)&&s.test(n)})}
33function QC(i){return Array.from($u("^a=ssrc:([0-9]+) +.*$",i))}function zu(i,e){let t=Hu(i),n=new RegExp(`^a=msid:[^ ]+ +${e} *$`,"gm"),r=t.filter(s=>s.match(n));return new Set(GC(r,QC))}function KC(i){return new Map(Array.from(Wu(i)).map(e=>[e,zu(i,e)]))}function JC(i,e){let t=KC(e),n=new Map;t.forEach((o,a)=>{if(!i.has(a)){i.set(a,o);return}let c=Array.from(i.get(a)),l=Array.from(o);c.forEach((d,u)=>{let m=l[u];n.set(m,d);let f=`^a=ssrc:${m} (.*)$`,h=`a=ssrc:${d} $1`;e=e.replace(new RegExp(f,"gm"),h)})});let r="^(a=ssrc-group:[^ ]+ +)(.*)$";return(e.match(new RegExp(r,"gm"))||[]).forEach(o=>{let a=o.match(new RegExp(r));if(!a)return;let c=a[1],d=a[2].split(" ").map(u=>{let m=n.get(u);return m||u}).join(" ");e=e.replace(a[0],c+d)}),e}di.getMediaSections=Hu;di.getTrackIds=Wu;di.getSSRCs=zu;di.updateTrackIdsToSSRCs=JC});var ep=p((RM,Zu)=>{"use strict";var YC=gn(),XC=io(),{updateTrackIdsToSSRCs:no}=vn(),{delegateMethods:ZC,interceptEvent:Gu,isIOSChrome:ey,legacyPromise:ui,proxyProperties:ty}=ae(),_n=class extends YC{constructor(e={},t={}){super();let n=t.chromeSpecificConstraints,r=Object.assign(e.iceTransportPolicy?{iceTransports:e.iceTransportPolicy}:{},e);Gu(this,"datachannel"),Gu(this,"signalingstatechange");let s=new RTCPeerConnection(r,n);Object.defineProperties(this,{_appliedTracksToSSRCs:{value:new Map,writable:!0},_applyCodecPreferences:{value:t.applyCodecPreferences||(()=>{})},_audioTransceiver:{value:null,writable:!0},_peerConnection:{value:s},_pendingLocalOffer:{value:null,writable:!0},_pendingRemoteOffer:{value:null,writable:!0},_rolledBackTracksToSSRCs:{value:new Map,writable:!0},_signalingStateLatch:{value:new XC},_tracksToSSRCs:{value:new Map,writable:!0},_videoTransceiver:{value:null,writable:!0}}),s.addEventListener("datachannel",o=>{Yu(o.channel),this.dispatchEvent(o)}),s.addEventListener("signalingstatechange",(...o)=>{s.signalingState==="stable"&&(this._appliedTracksToSSRCs=new Map(this._tracksToSSRCs)),!this._pendingLocalOffer&&!this._pendingRemoteOffer&&this.dispatchEvent(...o)}),ty(RTCPeerConnection.prototype,this,s)}get localDescription(){return this._pendingLocalOffer?this._pendingLocalOffer:this._peerConnection.localDescription}get remoteDescription(){return this._pendingRemoteOffer?this._pendingRemoteOffer:this._peerConnection.remoteDescription}get signalingState(){return this._pendingLocalOffer?"have-local-offer":this._pendingRemoteOffer?"have-remote-offer":this._peerConnection.signalingState}addIceCandidate(e,...t){let n;return this.signalingState==="have-remote-offer"?n=this._signalingStateLatch.when("low").then(()=>this._peerConnection.addIceCandidate(e)):n=this._peerConnection.addIceCandidate(e),t.length>0?ui(n,...t):n}close(){this.signalingState!=="closed"&&(this._pendingLocalOffer=null,this._pendingRemoteOffer=null,this._peerConnection.close())}createAnswer(...e){let t;return this._pendingRemoteOffer?t=this._peerConnection.setRemoteDescription(this._pendingRemoteOffer).then(()=>(this._signalingStateLatch.lower(),this._peerConnection.createAnswer())).then(n=>(this._pendingRemoteOffer=null,this._rolledBackTracksToSSRCs.clear(),new RTCSessionDescription({type:"answer",sdp:no(this._tracksToSSRCs,n.sdp)})),n=>{throw this._pendingRemoteOffer=null,n}):t=this._peerConnection.createAnswer().then(n=>(this._rolledBackTracksToSSRCs.clear(),new RTCSessionDescription({type:"answer",sdp:no(this._tracksToSSRCs,n.sdp)}))),e.length>1?ui(t,...e):t}createOffer(...e){let[t,n,r]=e,s=r||t||{};if(ey()){if(s.offerToReceiveVideo&&!this._audioTransceiver&&!Ku(this,"audio")){delete s.offerToReceiveAudio;try{this._audioTransceiver=this.addTransceiver("audio",{direction:"recvonly"}),this._applyCodecPreferences(this._audioTransceiver)}catch(a){return Promise.reject(a)}}if(s.offerToReceiveVideo&&!this._videoTransceiver&&!Ku(this,"video")){delete s.offerToReceiveVideo;try{this._videoTransceiver=this.addTransceiver("video",{direction:"recvonly"}),this._applyCodecPreferences(this._videoTransceiver)}catch(a){return Promise.reject(a)}}}let o=this._peerConnection.createOffer(s).then(a=>(this._rolledBackTracksToSSRCs.clear(),new RTCSessionDescription({type:a.type,sdp:no(this._tracksToSSRCs,a.sdp)})));return e.length>1?ui(o,t,n):o}
33createDataChannel(e,t){t=ny(t);let n=this._peerConnection.createDataChannel(e,t);return Yu(n),n}setLocalDescription(...e){let[t,n,r]=e;this._rolledBackTracksToSSRCs.size>0&&(this._tracksToSSRCs=new Map(this._rolledBackTracksToSSRCs),this._rolledBackTracksToSSRCs.clear());let s=Qu(this,!0,t);return e.length>1?ui(s,n,r):s}setRemoteDescription(...e){let[t,n,r]=e;this._rolledBackTracksToSSRCs.clear();let s=Qu(this,!1,t);return e.length>1?ui(s,n,r):s}};ZC(RTCPeerConnection.prototype,_n.prototype,"_peerConnection");function Qu(i,e,t){function n(d){e?i._pendingLocalOffer=d:i._pendingRemoteOffer=d}function r(){e?i._pendingLocalOffer=null:i._pendingRemoteOffer=null}let s=e?i._pendingLocalOffer:i._pendingRemoteOffer,o=e?i._pendingRemoteOffer:i._pendingLocalOffer,a=e?"have-local-offer":"have-remote-offer",c=e?"setLocalDescription":"setRemoteDescription",l;if(!e&&o&&t.type==="answer")l=iy(i,t);else if(t.type==="offer"){if(i.signalingState!==a&&i.signalingState!=="stable")return Promise.reject(new Error(`Cannot set ${e?"local":"remote"} offer in state ${i.signalingState}`));!s&&i._signalingStateLatch.state==="low"&&i._signalingStateLatch.raise();let d=i.signalingState;n(Ju(t)),l=Promise.resolve(),i.signalingState!==d&&l.then(()=>i.dispatchEvent(new Event("signalingstatechange")))}else t.type==="rollback"&&(i.signalingState!==a?l=Promise.reject(new Error(`Cannot rollback ${e?"local":"remote"} description in ${i.signalingState}`)):(r(),i._rolledBackTracksToSSRCs=new Map(i._tracksToSSRCs),i._tracksToSSRCs=new Map(i._appliedTracksToSSRCs),l=Promise.resolve(),l.then(()=>i.dispatchEvent(new Event("signalingstatechange")))));return l||i._peerConnection[c](Ju(t))}function iy(i,e){let t=i._pendingLocalOffer;return i._peerConnection.setLocalDescription(t).then(()=>(i._pendingLocalOffer=null,i.setRemoteDescription(e))).then(()=>{i._signalingStateLatch.lower()})}function Ku(i,e){return!!i.getTransceivers().find(({receiver:t={}})=>{let{track:n={}}=t;return n.kind===e})}function Ju(i){return i instanceof RTCSessionDescription?i:new RTCSessionDescription(i)}function Xu(){return"maxRetransmitTime"in RTCDataChannel.prototype&&!("maxPacketLifeTime"in RTCDataChannel.prototype)}function ny(i){return i=Object.assign({},i),Xu()&&"maxPacketLifeTime"in i&&(i.maxRetransmitTime=i.maxPacketLifeTime),i}function Yu(i){return Object.defineProperty(i,"maxRetransmits",{value:i.maxRetransmits===65535?null:i.maxRetransmits}),Xu()&&Object.defineProperty(i,"maxPacketLifeTime",{value:i.maxRetransmitTime===65535?null:i.maxRetransmitTime}),i}Zu.exports=_n});var sp=p((LM,rp)=>{"use strict";var ry=gn(),{updateTrackIdsToSSRCs:sy}=vn(),{delegateMethods:oy,interceptEvent:ay,legacyPromise:bn,proxyProperties:cy}=ae(),Cn=class extends ry{constructor(e){super(),ay(this,"signalingstatechange");let t=new RTCPeerConnection(e);Object.defineProperties(this,{_initiallyNegotiatedDtlsRole:{value:null,writable:!0},_isClosed:{value:!1,writable:!0},_peerConnection:{value:t},_rollingBack:{value:!1,writable:!0},_tracksToSSRCs:{value:new Map},peerIdentity:{enumerable:!0,value:Promise.resolve({idp:"",name:""})}});let n;t.addEventListener("signalingstatechange",(...r)=>{!this._rollingBack&&this.signalingState!==n&&(n=this.signalingState,this._isClosed?setTimeout(()=>this.dispatchEvent(...r)):this.dispatchEvent(...r))}),cy(RTCPeerConnection.prototype,this,t)}get iceGatheringState(){return this._isClosed?"complete":this._peerConnection.iceGatheringState}get localDescription(){return np(this._peerConnection.localDescription,this._initiallyNegotiatedDtlsRole)}get signalingState(){return this._isClosed?"closed":this._peerConnection.signalingState}createAnswer(...e){let t;return t=this._peerConnection.createAnswer().then(n=>(ip(this,n),np(n,this._initiallyNegotiatedDtlsRole))),typeof e[0]=="function"?bn(t,...e):t}createOffer(...e){let[t,n,r]=e,s=r||t||{},o;if(this.signalingState==="have-local-offer"||this.signalingState==="have-remote-offer"){let a=this.signalingState==="have-local-offer";o=tp(this,a,()=>this.createOffer(s))}else o=this._peerConnection.createOffer(s);return o=o.then(a=>new RTCSessionDescription({type:a.type,sdp:sy(this._tracksToSSRCs,a.sdp)})),e.length>1?bn(o,t,n):o}setLocalDescription(...e){let[t,...n]=e,r;return t&&t.type==="answer"&&this.signalingState==="have-local-offer"&&(r=Promise.reject(new Error("Cannot set local answer in state have-local-offer"))),r?e.length>1?bn(r,...n):r:this._peerConnection.setLocalDescription(...e)}setRemoteDescription(...e){let[t,...n]=e,r;return t&&this.signalingState==="have-remote-offer"&&(t.type==="answer"?r=Promise.reject(new Error("Cannot set remote answer in state have-remote-offer")):t.type==="offer"&&(r=tp(this,!1,()=>this._peerConnection.setRemoteDescription(t)))),r||(r=this._peerConnection.setRemoteDescription(t)),r=r.then(()=>ip(this,t,!0)),e.length>1?bn(r,...n):r}close(){this.signalingState!=="closed"&&(this._isClosed=!0,this._peerConnection.close())}};oy(RTCPeerConnection.prototype,Cn.prototype,"_peerConnection");function tp(i,e,t){let n=e?"setLocalDescription":"setRemoteDescription";return i._rollingBack=!0,i._peerConnection[n](new RTCSessionDescription({type:"rollback"})).then(t).then(r=>(i._rollingBack=!1,r),r=>{throw i._rollingBack=!1,r})}function ip(i,e,t){if(i._initiallyNegotiatedDtlsRole||e.type==="offer")return;let n=e.sdp.match(/a=setup:([a-z]+)/);if(!n)return;let r=n[1];i._initiallyNegotiatedDtlsRole=t?{active:"passive",passive:"active"}[r]:r}function np(i,e){return i&&i.type==="answer"&&e?new RTCSessionDescription({type:i.type,sdp:i.sdp.replace(/a=setup:[a-z]+/g,"a=setup:"+e)}):i}rp.exports=Cn});var dp=p((xM,lp)=>{"use strict";var ly=gn(),dy=io(),{updateTrackIdsToSSRCs:ro}=vn(),{delegateMethods:uy,interceptEvent:yn,proxyProperties:py}=ae(),Sn=class extends ly{constructor(e,t={}){super(),yn(this,"datachannel"),yn(this,"iceconnectionstatechange"),yn(this,"signalingstatechange"),yn(this,"track");let n=new RTCPeerConnection(e);Object.defineProperties(this,{_appliedTracksToSSRCs:{value:new Map,writable:!0},_applyCodecPreferences:{value:t.applyCodecPreferences||(()=>{})},_audioTransceiver:{value:null,writable:!0},_isClosed:{value:!1,writable:!0},_peerConnection:{value:n},_pendingLocalOffer:{value:null,writable:!0},_pendingRemoteOffer:{value:null,writable:!0},_rolledBackTracksToSSRCs:{value:new Map,writable:!0},_signalingStateLatch:{value:new dy},_tracksToSSRCs:{value:new Map,writable:!0},_videoTransceiver:{value:null,writable:!0}}),n.addEventListener("datachannel",r=>{cp(r.channel),this.dispatchEvent(r)}),n.addEventListener("iceconnectionstatechange",(...r)=>{this._isClosed||this.dispatchEvent(...r)}),n.addEventListener("signalingstatechange",(...r)=>{this._isClosed||(n.signalingState==="stable"&&(this._appliedTracksToSSRCs=new Map(this._tracksToSSRCs)),!this._pe
33ndingLocalOffer&&!this._pendingRemoteOffer&&this.dispatchEvent(...r))}),n.addEventListener("track",r=>{this._pendingRemoteOffer=null,this.dispatchEvent(r)}),py(RTCPeerConnection.prototype,this,n)}get localDescription(){return this._pendingLocalOffer||this._peerConnection.localDescription}get iceConnectionState(){return this._isClosed?"closed":this._peerConnection.iceConnectionState}get iceGatheringState(){return this._isClosed?"complete":this._peerConnection.iceGatheringState}get remoteDescription(){return this._pendingRemoteOffer||this._peerConnection.remoteDescription}get signalingState(){return this._isClosed?"closed":this._pendingLocalOffer?"have-local-offer":this._pendingRemoteOffer?"have-remote-offer":this._peerConnection.signalingState}addIceCandidate(e){return this.signalingState==="have-remote-offer"?this._signalingStateLatch.when("low").then(()=>this._peerConnection.addIceCandidate(e)):this._peerConnection.addIceCandidate(e)}createOffer(e){if(e=Object.assign({},e),e.offerToReceiveVideo&&!this._audioTransceiver&&!ap(this,"audio")){delete e.offerToReceiveAudio;try{this._audioTransceiver=this.addTransceiver("audio",{direction:"recvonly"}),this._applyCodecPreferences(this._audioTransceiver)}catch(t){return Promise.reject(t)}}if(e.offerToReceiveVideo&&!this._videoTransceiver&&!ap(this,"video")){delete e.offerToReceiveVideo;try{this._videoTransceiver=this.addTransceiver("video",{direction:"recvonly"}),this._applyCodecPreferences(this._videoTransceiver)}catch(t){return Promise.reject(t)}}return this._peerConnection.createOffer(e).then(t=>(this._rolledBackTracksToSSRCs.clear(),new RTCSessionDescription({type:t.type,sdp:ro(this._tracksToSSRCs,t.sdp)})))}createAnswer(e){return this._pendingRemoteOffer?this._peerConnection.setRemoteDescription(this._pendingRemoteOffer).then(()=>(this._signalingStateLatch.lower(),this._peerConnection.createAnswer())).then(t=>(this._pendingRemoteOffer=null,this._rolledBackTracksToSSRCs.clear(),new RTCSessionDescription({type:t.type,sdp:ro(this._tracksToSSRCs,t.sdp)})),t=>{throw this._pendingRemoteOffer=null,t}):this._peerConnection.createAnswer(e).then(t=>(this._rolledBackTracksToSSRCs.clear(),new RTCSessionDescription({type:t.type,sdp:ro(this._tracksToSSRCs,t.sdp)})))}createDataChannel(e,t){let n=this._peerConnection.createDataChannel(e,t);return cp(n),n}removeTrack(e){e.replaceTrack(null),this._peerConnection.removeTrack(e)}setLocalDescription(e){return this._rolledBackTracksToSSRCs.size>0&&(this._tracksToSSRCs=new Map(this._rolledBackTracksToSSRCs),this._rolledBackTracksToSSRCs.clear()),op(this,!0,e)}setRemoteDescription(e){return this._rolledBackTracksToSSRCs.clear(),op(this,!1,e)}close(){this._isClosed||(this._isClosed=!0,this._peerConnection.close())}};uy(RTCPeerConnection.prototype,Sn.prototype,"_peerConnection");function op(i,e,t){function n(l){e?i._pendingLocalOffer=l:i._pendingRemoteOffer=l}function r(){e?i._pendingLocalOffer=null:i._pendingRemoteOffer=null}let s=e?i._pendingLocalOffer:i._pendingRemoteOffer,o=e?i._pendingRemoteOffer:i._pendingLocalOffer,a=e?"have-local-offer":"have-remote-offer",c=e?"setLocalDescription":"setRemoteDescription";if(!e&&o&&t.type==="answer")return hy(i,t);if(t.type==="offer"){if(i.signalingState!==a&&i.signalingState!=="stable")return Promise.reject(new Error(`Cannot set ${e?"local":"remote"} 34 offer in state ${i.signalingState}`));!s&&i._signalingStateLatch.state==="low"&&i._signalingStateLatch.raise();let l=i.signalingState;return n(t),i.signalingState!==l?Promise.resolve().then(()=>i.dispatchEvent(new Event("signalingstatechange"))):Promise.resolve()}else if(t.type==="rollback")return i.signalingState!==a?Promise.reject(new Error(`Cannot rollback 35 ${e?"local":"remote"} description in ${i.signalingState}`)):(r(),i._rolledBackTracksToSSRCs=new Map(i._tracksToSSRCs),i._tracksToSSRCs=new Map(i._appliedTracksToSSRCs),Promise.resolve().then(()=>i.dispatchEvent(new Event("signalingstatechange"))));return i._peerConnection[c](t)}function hy(i,e){let t=i._pendingLocalOffer;return i._peerConnection.setLocalDescription(t).then(()=>(i._pendingLocalOffer=null,i.setRemoteDescription(e))).then(()=>i._signalingStateLatch.lower())}function ap(i,e){return!!i.getTransceivers().find(({receiver:t={}})=>{let{track:n={}}=t;return n.kind===e})}function cp(i){return Object.defineProperties(i,{maxPacketLifeTime:{value:i.maxPacketLifeTime===65535?null:i.maxPacketLifeTime},maxRetransmits:{value:i.maxRetransmits===65535?null:i.maxRetransmits}})}lp.exports=Sn});var up=p((MM,Wt)=>{"use strict";if(typeof RTCPeerConnection=="function"){let{guessBrowser:i}=ae();switch(i()){case"chrome":Wt.exports=ep();break;
35case"firefox":Wt.exports=sp();break;case"safari":Wt.exports=dp();break;default:Wt.exports=RTCPeerConnection;break}}else Wt.exports=function(){throw new Error("RTCPeerConnection is not supported")}});var Tn=p((IM,hp)=>{"use strict";var pp={};Object.defineProperties(pp,{getStats:{enumerable:!0,value:wu()},getUserMedia:{enumerable:!0,value:Ou()},RTCPeerConnection:{enumerable:!0,value:up()}});hp.exports=pp});var kn=p((DM,fp)=>{"use strict";fp.exports=function(e,t){if(e&&t)if(e.super_=t,typeof Object.create=="function")e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}});else{class n{constructor(){}}n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}}});var pt=p((AM,_p)=>{"use strict";function fy(){return/Android/.test(navigator.userAgent)}function mp(){return!!(navigator&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2)}function gp(){return mp()&&window.screen.width>=744&&(/Macintosh/i.test(navigator.userAgent)||/iPad/.test(navigator.userAgent)||/iPad/.test(navigator.platform))}function vp(){return mp()&&window.screen.width<=476&&(/Macintosh/i.test(navigator.userAgent)||/iPhone/.test(navigator.userAgent)||/iPhone/.test(navigator.platform))}function my(){return gp()||vp()}function gy(){return/Mobi/.test(navigator.userAgent)}function vy(i){return i==="chrome"&&/Edge/.test(navigator.userAgent)&&(typeof chrome>"u"||typeof chrome.runtime>"u")}function _y(i){if(i!=="chrome")return null;if("brave"in navigator)return"brave";let n=Cy(navigator.userAgent).reduce((s,o)=>s.replace(o,""),navigator.userAgent).match(/[^\s]+/g)||[],[,,...r]=n.map(s=>s.split("/")[0].toLowerCase());return r.find(s=>!["chrome","mobile","safari"].includes(s))||null}function by(i){return i!=="safari"?null:"brave"in navigator?"brave":["edge","edg"].find(e=>navigator.userAgent.toLowerCase().includes(e))||null}function Cy(i){let e=[],t=[];for(let n=0;n<i.length;n++)if(i[n]==="(")e.push(n);else if(i[n]===")"&&e.length>0){let r=e.pop();e.length===0&&t.push(i.substring(r,n+1))}return t}_p.exports={isAndroid:fy,isIOS:my,isIpad:gp,isIphone:vp,isMobile:gy,isNonChromiumEdge:vy,mobileWebKitBrowser:by,rebrandedChromeBrowser:_y}});var so=p((jM,bp)=>{"use strict";function yy(i){return i=typeof i=="number"?i:0,new Promise(e=>setTimeout(e,i))}function Sy(i,e,t){t=typeof t=="number"?t:250;let n=i.createMediaStreamSource(e),r=i.createAnalyser();r.fftSize=2048,n.connect(r);let s=new Uint8Array(r.fftSize),o=!1;setTimeout(()=>{o=!0},t);function a(){return o?Promise.resolve(!0):(r.getByteTimeDomainData(s),s.some(c=>c!==128&&c!==0)?Promise.resolve(!1):yy().then(a))}return a().then(c=>(n.disconnect(),c),c=>{throw n.disconnect(),c})}bp.exports=Sy});var pi=p((VM,Cp)=>{"use strict";var Ty=typeof AudioContext<"u"?AudioContext:typeof webkitAudioContext<"u"?webkitAudioContext:null,oo=class i{constructor(e){e=Object.assign({AudioContext:Ty},e),Object.defineProperties(this,{_AudioContext:{value:e.AudioContext},_audioContext:{value:null,writable:!0},_holders:{value:new Set},AudioContextFactory:{enumerable:!0,value:i}})}getOrCreate(e){if(!this._holders.has(e)&&(this._holders.add(e),this._AudioContext&&!this._audioContext))try{this._audioContext=new this._AudioContext}catch(t){}return this._audioContext}release(e){this._holders.has(e)&&(this._holders.delete(e),!this._holders.size&&this._audioContext&&(this._audioContext.close(),this._audioContext=null))}};Cp.exports=new oo});var ao=p((qM,yp)=>{"use strict";var ky=so(),Py=3,wy=250;function Ey(i){let e=pi(),t={},n=e.getOrCreate(t),r=Py;function s(){return r--,ky(n,i.srcObject,wy).then(o=>o?r>0?s():!0:!1).catch(()=>!0)}return s().finally(()=>{e.release(t)})}yp.exports=Ey});var lo=p((NM,Sp)=>{"use strict";var{defer:Pn}=j(),co=class{constructor(){Object.defineProperties(this,{_audio:{value:Pn(),writable:!0},_video:{value:Pn(),writable:!0}}),this._audio.resolve(),this._video.resolve()}resolveDeferred(e){e==="audio"?this._audio.resolve():this._video.resolve()}startDeferred(e){e==="audio"?this._audio=Pn():this._video=Pn()}whenResolved(e){return e==="audio"?this._audio.promise:this._video.promise}};Sp.exports=new co});var Ht=p((FM,Tp)=>{"use strict";var{EventEmitter:Oy}=ne(),{hidePrivateAndCertainPublicPropertiesInClass:Ry}=j();Tp.exports=Ry(Oy,["domain"])});var wn=p((BM,kp)=>{"use strict";var Ly=Ht(),{buildLogLevels:xy,valueToJSON:My}=j(),Iy=N().DEFAULT_LOG_LEVEL,Dy=_e(),Ay=0,uo=class extends Ly{constructor(e,t,n){n=Object.assign({name:e,log:null,logLevel:Iy},n),super();let r=String(n.name),s=xy(n.logLevel),o=n.log?n.log.createLog("media",this):new Dy("media",this,s,n.loggerName);Object.defineProperties(this,{_instanceId:{value:++Ay},_log:{value:o},kind:{enumerable:!0,value:t},name:{enumerable:!0,value:r}})}toJSON(){return My(this)}};kp.exports=uo});var ho=p((UM,Pp)=>{"use strict";var{isIOS:jy}=pt(),{waitForEvent:Vy,waitForSometime:qy}=j(),Ny=lo(),Fy=wn(),po=class extends Fy{constructor(e,t){t=Object.assign({playPausedElementsIfNotBackgroun
35ded:jy()&&typeof document=="object"&&typeof document.addEventListener=="function"&&typeof document.visibilityState=="string"},t),super(e.id,e.kind,t);let n=!1;if(t=Object.assign({MediaStream},t),typeof t.MediaStream!="function")throw new Error("MediaTrack received an invalid MediaStream constructor: "+t.MediaStream);Object.defineProperties(this,{_attachments:{value:new Set},_dummyEl:{value:null,writable:!0},_elShims:{value:new WeakMap},_isStarted:{get(){return n},set(r){n=r}},_playPausedElementsIfNotBackgrounded:{value:t.playPausedElementsIfNotBackgrounded},_shouldShimAttachedElements:{value:t.workaroundWebKitBug212780||t.playPausedElementsIfNotBackgrounded},_unprocessedTrack:{value:null,writable:!0},_MediaStream:{value:t.MediaStream},_mapMediaElement:{value:t.mapMediaElement},_disposeMediaElement:{value:t.disposeMediaElement},isStarted:{enumerable:!0,get(){return n}},mediaStreamTrack:{enumerable:!0,get(){return this._unprocessedTrack||e.track}},processedTrack:{enumerable:!0,value:null,writable:!0}}),this._initialize()}_start(){this._log.debug("Started"),this._isStarted=!0,this._dummyEl&&(this._dummyEl.oncanplay=null),this.emit("started",this)}_initialize(){let e=this;this._log.debug("Initializing"),this._dummyEl=this._createElement(),this.mediaStreamTrack&&this.mediaStreamTrack.addEventListener?this.mediaStreamTrack.addEventListener("ended",function t(){e._end(),e.mediaStreamTrack.removeEventListener("ended",t)}):this.mediaStreamTrack&&(this.mediaStreamTrack.onended=function(){e._end(),e.mediaStreamTrack.onended=null}),this._dummyEl&&(this._dummyEl.muted=!0,this._dummyEl.oncanplay=this._start.bind(this,this._dummyEl),this._attach(this._dummyEl,this.mediaStreamTrack),this._attachments.delete(this._dummyEl))}_end(){this._log.debug("Ended"),this._dummyEl&&(this._dummyEl.remove(),this._disposeMediaElement?this._disposeMediaElement(this._dummyEl):this._dummyEl.srcObject=null,this._dummyEl.oncanplay=null,this._dummyEl=null)}attach(e){if(typeof e=="string"?e=this._selectElement(e):e||(e=this._createElement()),this._log.debug("Attempting to attach to element:",e),e=this._attach(e),this._shouldShimAttachedElements&&!this._elShims.has(e)){let t=this._playPausedElementsIfNotBackgrounded?()=>By(e,this._log):null;this._elShims.set(e,Uy(e,t))}return e}_attach(e,t=this.processedTrack||this.mediaStreamTrack){let n=e.srcObject;n instanceof this._MediaStream||(n=new this._MediaStream);let r=t.kind==="audio"?"getAudioTracks":"getVideoTracks";return n[r]().forEach(s=>{n.removeTrack(s)}),n.addTrack(t),this._mapMediaElement&&(this._log.debug("Mapping element using mapMediaElement before attaching media to element"),this._mapMediaElement(e)),e.srcObject=n,e.autoplay=!0,e.playsInline=!0,this._attachments.has(e)||this._attachments.add(e),e}_selectElement(e){let t=document.querySelector(e);if(!t)throw new Error(`Selector matched no element: ${e}`);return t}_updateElementsMediaStreamTrack(){this._log.debug("Reattaching all elements to update mediaStreamTrack"),this._getAllAttachedElements().forEach(e=>this._attach(e))}_createElement(){return typeof document<"u"?document.createElement(this.kind):null}detach(e){let t;return typeof e=="string"?t=[this._selectElement(e)]:e?t=[e]:t=this._getAllAttachedElements(),this._log.debug("Attempting to detach from elements:",t),this._detachElements(t),e?t[0]:t}_detachElements(e){return e.map(this._detachElement.bind(this))}_detachElement(e){if(!this._attachments.has(e))return e;let t=e.srcObject;return t instanceof this._MediaStream&&t.removeTrack(this.processedTrack||this.mediaStreamTrack),this._disposeMediaElement&&(this._log.debug("Disposing element using disposeMediaElement after removing media from element"),this._disposeMediaElement(e)),this._attachments.delete(e),this._shouldShimAttachedElements&&this._elShims.has(e)&&(this._elShims.get(e).unShim(),this._elShims.delete(e)),e}_getAllAttachedElements(){let e=[];return this._attachments.forEach(t=>{e.push(t)}),e}};function By(i,e){let t=i.tagName.toLowerCase();e.warn("Unintentionally paused:",i),Promise.race([Vy(document,"visibilitychange"),qy(1e3)]).then(()=>{document.visibilityState==="visible"&&Ny.whenResolved("audio").then(()=>(e.info(`Playing unintentionally paused <${t}> element`),e.debug("Element:",i),i.play())).then(()=>{e.info(`Successfully played unintentionally paused <${t}> element`),e.debug("Element:",i)}).catch(n=>{e.warn(`Error while playing unintentionally paused <${t}> element:`,{error:n,el:i})})})}function Uy(i,e=null){let t=i.pause,n=i.play,r=!1;i.pause=()=>(r=!0,t.call(i)),i.play=()=>(r=!1,n.call(i));let s=e?()=>{r||e()}:null;return s&&i.addEventListener("pause",s),{pausedIntentionally(){return r},unShim(){i.pause=t,i.play=n,s&&i.removeEventListener("pause",s)}}}Pp.exports=po});var mo=p(($M,wp)=>{"use strict";var $y=ho(),fo=class extends $y{constructor(e,t){super(e,t)}attach(){return super.attach.apply(this,arguments)}detach(){return super.detach.apply(this,arguments)}};wp.exports=fo});var vo=p((WM,Lp)=>{"use strict";var go=null,Wy=3,Ep=50,Op=250,Rp=50;function Hy(i){try{let e=go.getContext("2d");e.drawImage(i,0,0,Rp,Ep);let n=e.getImageData(0,0,Rp,Ep).data.filter((s,o)=>(o+1)%4);return Math.max.apply(Math,n)===0}catch(e){return console.log("Error checking silence: ",e),!1}}function zy(i){return go=go||document.createElement("canvas"),new Promise(e=>{let t=Wy;setTimeout(function n(){return t--,Hy(i)?t>0?setTimeout(n,Op):e(!0):e(!1)},Op)})}Lp.exports=zy});var hi=p((HM,xp)=>{"use strict";var _o=class{constructor(e=1){Object.defineProperties(this,{_listeners:{value:[]},_onVisibilityChange:{value:()=>{this._emitVisible(document.visibilityState==="visible")}}});for(let t=0;t<e;t++)this._listeners.push([])}clear(){let e=this._listeners.length;for(let t=0;t<e;t++)this._listeners[t]=[]}_listenerCount(){return this._listeners.reduce((e,t)=>
35e+t.length,0)}_emitVisible(e){let t=Promise.resolve();for(let n=1;n<=this._listeners.length;n++)t=t.then(()=>this._emitVisiblePhase(n,e));return t}_emitVisiblePhase(e,t){let n=this._listeners[e-1];return Promise.all(n.map(r=>{let s=r(t);return s instanceof Promise?s:Promise.resolve(s)}))}_start(){document.addEventListener("visibilitychange",this._onVisibilityChange)}_stop(){document.removeEventListener("visibilitychange",this._onVisibilityChange)}onVisibilityChange(e,t){if(typeof e!="number"||e<=0||e>this._listeners.length)throw new Error("invalid phase: ",e);return this._listeners[e-1].push(t),this._listenerCount()===1&&this._start(),this}offVisibilityChange(e,t){if(typeof e!="number"||e<=0||e>this._listeners.length)throw new Error("invalid phase: ",e);let n=this._listeners[e-1],r=n.indexOf(t);return r!==-1&&(n.splice(r,1),this._listenerCount()===0&&this._stop()),this}};xp.exports=new _o(2)});var bo=p((zM,Mp)=>{"use strict";var Gy=so();function Qy(i,e,t,n,r){n=typeof n=="number"?n:3;let s=0,o=pi(),a={},c=o.getOrCreate(a);function l(){return e(t).then(d=>(t.audio?Gy(c,d,r).catch(m=>(i.warn("Encountered an error while detecting silence",m),!0)):Promise.resolve(!1)).then(m=>{if(m){if(n<=0)return i.warn("Got a silent audio MediaStreamTrack. Normally we would try to get a new one, but we've run out of retries; returning it anyway."),d}else return i.info("Got a non-silent audio MediaStreamTrack; returning it."),d;return i.warn(`Got a silent audio MediaStreamTrack. Stopping all MediaStreamTracks and calling getUserMedia again. This is retry #${++s}.`),d.getTracks().forEach(f=>f.stop()),n--,l()}))}return l().then(d=>(o.release(a),d),d=>{throw o.release(a),d})}Mp.exports=Qy});var yo=p((GM,Ip)=>{"use strict";var Ky=ne().EventEmitter,Co=class extends Ky{constructor(){super(),Object.defineProperties(this,{_queuedEvents:{value:new Map}})}dequeue(e){let t=!0;if(!e)return this._queuedEvents.forEach(function(r,s){t=this.dequeue(s)&&t},this),t;let n=this._queuedEvents.get(e)||[];return this._queuedEvents.delete(e),n.reduce((r,s)=>
35this.emit(...[e].concat(s))&&r,t)}queue(){let e=[].slice.call(arguments);if(this.emit(...e))return!0;let t=e[0];return this._queuedEvents.has(t)||this._queuedEvents.set(t,[]),this._queuedEvents.get(t).push(e.slice(1)),!1}};Ip.exports=Co});var To=p((QM,Dp)=>{"use strict";var Jy=yo(),So=class extends Jy{constructor(e,t){super(),Object.defineProperties(this,{id:{enumerable:!0,value:e},kind:{enumerable:!0,value:t}})}stop(){this.emit("stopped")}};Dp.exports=So});var Po=p((KM,Ap)=>{"use strict";var Yy=To(),ko=class extends Yy{constructor(e,t){super(e,t.kind),Object.defineProperties(this,{_track:{value:t,writable:!0},enabled:{enumerable:!0,get(){return this._track.enabled}},readyState:{enumerable:!0,get(){return this._track.readyState}},track:{enumerable:!0,get(){return this._track}}})}stop(){this.track.stop(),super.stop()}};Ap.exports=ko});var Eo=p((JM,jp)=>{"use strict";var Xy=Po(),wo=class i extends Xy{constructor(e){super(e.id,e),Object.defineProperties(this,{_clones:{value:new Set},_eventsToReemitters:{value:new Map([["mute",()=>this.queue("muted")],["unmute",()=>this.queue("unmuted")]])},_senders:{value:new Set},_senderToPublisherHintCallbacks:{value:new Map},isPublishing:{enumerable:!0,get(){return!!this._clones.size}},muted:{enumerable:!0,get(){return this._track.muted}}}),this._reemitMediaStreamTrackEvents()}_reemitMediaStreamTrackEvents(e=this._track){let{_eventsToReemitters:t,_track:n}=this;e.addEventListener?t.forEach((r,s)=>e.addEventListener(s,r)):t.forEach((r,s)=>{e[`on${s}`]=r}),n!==e&&(t.forEach((r,s)=>n.removeEventListener(s,r)),n.muted!==e.muted&&t.get(e.muted?"mute":"unmute")())}clone(){let e=new i(this.track.clone());return this._clones.add(e),e}removeClone(e){this._clones.delete(e)}setMediaStreamTrack(e){let t=Array.from(this._clones),n=Array.from(this._senders);return Promise.all(t.map(r=>r.setMediaStreamTrack(e.clone())).concat(n.map(r=>this._replaceTrack(r,e)))).finally(()=>{this._reemitMediaStreamTrackEvents(e),this._track=e})}addSender(e,t){return this._senders.add(e),t&&this._senderToPublisherHintCallbacks.set(e,t),this}removeSender(e){return this._senders.delete(e),this._senderToPublisherHintCallbacks.delete(e),this}setPublisherHint(e){let[t]=Array.from(this._senderToPublisherHintCallbacks.values());return t?t(e):Promise.resolve("COULD_NOT_APPLY_HINT")}_replaceTrack(e,t){return e.replaceTrack(t).then(n=>(this.setPublisherHint(null).catch(()=>{}),this.emit("replaced"),n))}};jp.exports=wo});var Oo=p((XM,Bp)=>{"use strict";var{getUserMedia:Zy}=Tn(),{isIOS:eS}=pt(),{capitalize:Vp,defer:tS,waitForSometime:iS,waitForEvent:nS}=j(),{typeErrors:{ILLEGAL_INVOKE:rS}}=N(),sS=ao(),oS=vo(),qp=hi(),Np=lo(),aS=bo(),cS=Eo();function lS(i){return class extends i{constructor(t,n){let r=eS()&&typeof document=="object"&&typeof document.addEventListener=="function"&&typeof document.visibilityState=="string";n=Object.assign({getUserMedia:Zy,isCreatedByCreateLocalTracks:!1,workaroundWebKitBug1208516:r,gUMSilentTrackWorkaround:aS},n);let s=new cS(t),{kind:o}=s;super(s,n),Object.defineProperties(this,{_constraints:{value:typeof n[o]=="object"?n[o]:{},writable:!0},_getUserMedia:{value:n.getUserMedia},_gUMSilentTrackWorkaround:{value:n.gUMSilentTrackWorkaround},_eventsToReemitters:{value:new Map([["muted",()=>
35this.emit("muted",this)],["unmuted",()=>this.emit("unmuted",this)]])},_workaroundWebKitBug1208516:{value:n.workaroundWebKitBug1208516},_workaroundWebKitBug1208516Cleanup:{value:null,writable:!0},_didCallEnd:{value:!1,writable:!0},_isCreatedByCreateLocalTracks:{value:n.isCreatedByCreateLocalTracks},_noiseCancellation:{value:n.noiseCancellation||null},_trackSender:{value:s},id:{enumerable:!0,value:s.id},isEnabled:{enumerable:!0,get(){return s.enabled}},isMuted:{enumerable:!0,get(){return s.muted}},isStopped:{enumerable:!0,get(){return s.readyState==="ended"}}}),this._workaroundWebKitBug1208516&&(this._workaroundWebKitBug1208516Cleanup=Fp(this)),this._reemitTrackSenderEvents()}_end(){this._didCallEnd||(super._end.call(this),this._didCallEnd=!0,this._eventsToReemitters.forEach((t,n)=>this._trackSender.removeListener(n,t)),this.emit("stopped",this))}_initialize(){this._didCallEnd&&(this._didCallEnd=!1),this._eventsToReemitters&&this._reemitTrackSenderEvents(),super._initialize.call(this)}_reacquireTrack(t){let{_getUserMedia:n,_gUMSilentTrackWorkaround:r,_log:s,mediaStreamTrack:{kind:o}}=this;s.info("Re-acquiring the MediaStreamTrack"),s.debug("Constraints:",t);let a=Object.assign({audio:!1,video:!1},{[o]:t});return(this._workaroundWebKitBug1208516Cleanup?r(s,n,a):n(a)).then(l=>l.getTracks()[0])}_reemitTrackSenderEvents(){this._eventsToReemitters.forEach((t,n)=>this._trackSender.on(n,t)),this._trackSender.dequeue("muted"),this._trackSender.dequeue("unmuted")}_restart(t){let{_log:n}=this;return t=t||this._constraints,this._stop(),this._reacquireTrack(t).catch(r=>{throw n.error("Failed to re-acquire the MediaStreamTrack:",{error:r,constraints:t}),r}).then(r=>(n.info("Re-acquired the MediaStreamTrack"),n.debug("MediaStreamTrack:",r),this._constraints=Object.assign({},t),this._setMediaStreamTrack(r)))}_setMediaStreamTrack(t){return t.enabled=this.mediaStreamTrack.enabled,this._stop(),(this._unprocessedTrack?Promise.resolve().then(()=>{this._unprocessedTrack=t}):this._trackSender.setMediaStreamTrack(t).catch(n=>{this._log.warn("setMediaStreamTrack failed:",{error:n,mediaStreamTrack:t})})).then(()=>{this._initialize(),this._getAllAttachedElements().forEach(n=>this._attach(n))})}_stop(){return this.mediaStreamTrack.stop(),this._end(),this}enable(t){return t=typeof t=="boolean"?t:!0,t!==this.mediaStreamTrack.enabled&&(this._log.info(`${t?"En":"Dis"}abling`),this.mediaStreamTrack.enabled=t,this.emit(t?"enabled":"disabled",this)),this}disable(){return this.enable(!1)}restart(t){let{kind:n}=this;if(!this._isCreatedByCreateLocalTracks)return Promise.reject(rS("restart",`can only be called on a Local${Vp(n)}Track that is created using createLocalTracks or createLocal${Vp(n)}Track.`));this._workaroundWebKitBug1208516Cleanup&&(this._workaroundWebKitBug1208516Cleanup(),this._workaroundWebKitBug1208516Cleanup=null);let r=this._restart(t);return this._workaroundWebKitBug1208516&&(r=r.finally(()=>{this._workaroundWebKitBug1208516Cleanup=Fp(this)})),r}stop(){return this._log.info("Stopping"),this._workaroundWebKitBug1208516Cleanup&&(this._workaroundWebKitBug1208516Cleanup(),this._workaroundWebKitBug1208516Cleanup=null),this._stop()}}}function Fp(i){let{_log:e,kind:t,_noiseCancellation:n}=i,r={audio:sS,video:oS}[t],s=()=>n?n.sourceTrack:i.mediaStreamTrack,{_dummyEl:o}=i,a=s(),c=null;function l(){return o.play().then(()=>r(o)).then(b=>(b?e.warn("Silence detected"):e.info("Non-silence detected"),b)).catch(b=>{e.warn("Failed to detect silence:",b)}).finally(()=>{i.processedTrack||o.pause()})}function d(){let{_workaroundWebKitBug1208516Cleanup:b,isStopped:R}=i,E=R&&!!b,{muted:C}=s();return Promise.resolve().then(()=>document.visibilityState==="visible"&&!c&&(C||E||l()))}function u(){return Promise.race([nS(a,"unmute"),iS(50)]).then(()=>d()).then(b=>(b&&!c&&(c=tS(),i._restart().finally(()=>{o=i._dummyEl,h(),a=s(),f(),c.resolve(),c=null}).catch(E=>{e.error("failed to restart track: ",E)})),(c&&c.promise||Promise.resolve()).finally(()=>Np.resolveDeferred(t)))).catch(b=>{e.error(`error in maybeRestart: ${b.message}`)})}function m(){let{_log:b,kind:R}=i;b.info("Muted"),b.debug("LocalMediaTrack:",i),Np.startDeferred(R)}function f(){a.addEventListener?(a.addEventListener("ended",u),a.addEventListener("mute",m),a.addEventListener("unmute",u)):(a.onended=u,a.onmute=m,a.onunmute=u)}function h(){a.removeEventListener?(a.removeEventListener("ended",u),a.removeEventListener("mute",m),a.removeEventListener("unmute",u)):(a.onended=null,a.onmute=null,a.onunmute=null)}let _=b=>b?u():!1;return qp.onVisibilityChange(1,_),f(),()=>{qp.offVisibilityChange(1,_),h()}}Bp.exports=lS});var $p=p((ZM,Up)=>{"use strict";var{isIOS:dS}=pt(),uS=ao(),{isIOSChrome:pS}=ae(),hS=mo(),fS=Oo(),mS=fS(hS),Ro=class extends mS{constructor(e,t){let n=t?.noiseCancellation||null;super(e,t);let{_log:r}=this,{label:s=""}=e,{deviceId:o="",groupId:a=""}=e.getSettings();Object.defineProperties(this,{_currentDefaultDeviceInfo:{value:{deviceId:o,groupId:a,label:s},writable:!0},_enumerateDevices:{value:typeof t?.enumerateDevices=="function"?t.enumerateDevices:navigator.mediaDevices.enumerateDevices},_defaultDeviceCaptureMode:{value:(!dS()||n)&&this._isCreatedByCreateLocalTracks&&typeof navigator=="object"&&typeof navigator.mediaDevices=="object"&&typeof navigator.mediaDevices.addEventListener=="function"&&(typeof t?.enumerateDevices=="function"||typeof navigator.mediaDevices.enumerateDevices=="function")?t?.defaultDeviceCaptureMode||"auto":"manual"},_onDeviceChange:{value:()=>{this._enumerateDevices().then(c=>{let l=c.find(({deviceId:d,kind:u})=>u==="audioinput"&&d!=="default");l&&["deviceId","groupId"].some(d=>l[d]!==this._currentDefaultDeviceInfo[d])&&(r.info("Default device changed, restarting the LocalAudioTrack"),r.debug(`Old default device: "${this._currentDefaultDeviceInfo.deviceId}" => "${this._currentDefaultDeviceInfo.label}"`),r.debug(`New default device: "${l.deviceId}" => "${l.label}"`),this._currentDefaultDeviceInfo=l,this._restartDefaultDevice().catch(d=>r.warn(`Failed to restart: ${d.message}`)))},c=>{r.warn(`Failed to run enumerateDevices(): ${c.message}`)})}},_restartOnDefaultDeviceChangeCleanup:{value:null,writable:!0},noiseCancellation:{enumerable:!0,value:n,writable:!1}}),r.debug("defaultDeviceCaptureMode:",this._defaultDeviceCaptureMode),this._maybeRestartOnDefaultDeviceChange()}toString(){return`[LocalAudioTrack #${this._instanceId}: ${this.id}]`}attach(e){return e=super.attach.call(this,e),e.muted=!0,e}_end(){return super._end.apply(this,arguments)}_maybeRestartOnDefaultDeviceChange(){let{_constraints:e,_defaultDeviceCaptureMode:t,_log:n}=this,r=this.noiseCancellation?this.noiseCancellation.sourceTrack:this.mediaStreamTrack,{deviceId:s}=r.getSettings(),o=c=>c!==s||c==="default",a=(function c(l={}){return typeof l=="string"?o(l):Array.isArray(l)?l.every(o):l.exact?c(l.exact):l.ideal?c(l.ideal):!0})(e.deviceId);t==="auto"&&a?this._restartOnDefaultDeviceChangeCleanup||(n.info("LocalAudioTrack will be restarted if the default device changes"),navigator.mediaDevices.addEventListener("devicechange",this._onDeviceChange),this._restartOnDefaultDeviceChangeCleanup=()=>{n.info("Cleaning up the listener to restart the LocalAudioTrack if the default device changes"),navigator.mediaDevices.removeEventListener("devicechange",this._onDeviceChange),this._restartOnDefaultDeviceChangeCleanup=null}):(n.info("LocalAudioTrack will NOT be restarted if the default device changes"),this._restartOnDefaultDeviceChangeCleanup&&this._restartOnDefaultDeviceChangeCleanup())}_reacquireTrack(e){return this._log.debug("_reacquireTrack: ",e),this.noiseCancellation?this.noiseCancellation.reacquireTrack(()=>super._reacquireTrack.call(this,e)):super._reacquireTrack.call(this,e)}_restartDefaultDevice(){let e=Object.assign({},this._constraints),t=Object.assign({},e,{deviceId:this._currentDefaultDeviceInfo.deviceId});return this.restart(t).then(()=>{this._constraints=e,this._maybeRestartOnDefaultDeviceChange()})}_setMediaStreamTrack(e){let{_log:t,noiseCancellation:n}=this,r=super._setMediaStreamTrack.call(this,e);return pS()&&n&&(t.debug("iOS Chrome detected, checking if the restarted Krisp audio is silent"),r=r.then(()=>
35uS(this._dummyEl)).then(s=>(t.debug(`Krisp audio is ${s?"silent, using source audio":"not silent"}`),s&&n.disablePermanently().then(()=>super._setMediaStreamTrack.call(this,n.sourceTrack))))),r}disable(){return super.disable.apply(this,arguments)}enable(){return super.enable.apply(this,arguments)}restart(){return super.restart.apply(this,arguments)}stop(){return this.noiseCancellation&&this.noiseCancellation.stop(),this._restartOnDefaultDeviceChangeCleanup&&this._restartOnDefaultDeviceChangeCleanup(),super.stop.apply(this,arguments)}};Up.exports=Ro});var zp=p((eI,Hp)=>{"use strict";var gS=kn(),Wp=$p();function Lo(i,e){let t=new Wp(i,e);return Object.setPrototypeOf(t,Lo.prototype),t}gS(Lo,Wp);Hp.exports=Lo});var Qp=p((tI,Gp)=>{"use strict";var{DEFAULT_FRAME_RATE:vS}=N();function _S(i,e){let[t]=i.srcObject.getVideoTracks(),{frameRate:n=vS}=t.getSettings(),r,s=new ReadableStream({start(a){r=setInterval(()=>a.enqueue(),1e3/n)}}),o=new TransformStream({transform(){return e()}});return s.pipeThrough(o).pipeTo(new WritableStream).then(()=>{}),()=>{clearInterval(r)}}function bS(i,e,t){let[n]=i.srcObject.getVideoTracks(),{readable:r}=new MediaStreamTrackProcessor({track:n}),s=new MediaStreamTrackGenerator({kind:"video"}),o=!1,a=new TransformStream({transform(c,l){return(t==="videoframe"?e(c):Promise.resolve(c.close()).then(e)).finally(()=>{o&&l.terminate()})}});return r.pipeThrough(a).pipeTo(s.writable).then(()=>{}),()=>{o=!0}}Gp.exports=typeof MediaStreamTrackGenerator=="function"&&typeof MediaStreamTrackProcessor=="function"?bS:_S});var Jp=p((iI,Kp)=>{"use strict";var{EventEmitter:CS}=ne(),{DEFAULT_VIDEO_PROCESSOR_STATS_INTERVAL_MS:yS}=N(),xo=class extends CS{constructor(e){super(),Object.defineProperties(this,{_lastStatsSaveTime:{value:null,writable:!0},_lastStatsPublishTime:{value:null,writable:!0},_log:{value:e},_processorInfo:{value:null,writable:!0},_stats:{value:null,writable:!0}}),this.on("add",t=>{this._lastStatsSaveTime=Date.now(),this._lastStatsPublishTime=Date.now(),this._processorInfo=t,this._stats=[],this._reemitEvent("add",this._getEventData())}),this.on("remove",()=>{let t=this._getEventData();this._lastStatsSaveTime=null,this._lastStatsPublishTime=null,this._processorInfo=null,this._stats=null,this._reemitEvent("remove",t)}),this.on("start",()=>{this._reemitEvent("start",this._getEventData())}),this.on("stop",t=>{this._reemitEvent("stop",Object.assign({message:t},this._getEventData()))}),this.on("stats",()=>this._maybeEmitStats())}_getEventData(){if(!this._processorInfo)return{};let{processor:e,captureHeight:t,captureWidth:n,inputFrameRate:r,isRemoteVideoTrack:s,inputFrameBufferType:o,outputFrameBufferContextType:a}=this._processorInfo,c={captureHeight:t,captureWidth:n,inputFrameRate:r,isRemoteVideoTrack:s,inputFrameBufferType:o,outputFrameBufferContextType:a};return c.name=e._name||"VideoProcessor",["assetsPath","blurFilterRadius","debounce","fitType","isSimdEnabled","maskBlurRadius","pipeline","version"].forEach(l=>{let d=e[`_${l}`];typeof d<"u"&&(c[l]=d)}),Object.keys(c).forEach(l=>{let d=c[l];typeof d=="boolean"&&(c[l]=d?"true":"false")}),c}_maybeEmitStats(){if(!this._stats||!this._processorInfo)return;let e=this._processorInfo.processor._benchmark;if(!e)return;let t=Date.now();if(t-this._lastStatsSaveTime<1e3)return;let n={outputFrameRate:e.getRate("totalProcessingDelay")};if(["captureFrameDelay","imageCompositionDelay","inputImageResizeDelay","processFrameDelay","segmentationDelay"].forEach(o=>{n[o]=e.getAverageDelay(o)}),this._lastStatsSaveTime=t,this._stats.push(n),t-this._lastStatsPublishTime<yS)return;this._lastStatsPublishTime=t;let s=this._stats.splice(0).reduce((o,a,c)=>(Object.keys(n).forEach(l=>{o[l]||(o[l]=0),o[l]=(o[l]*c+a[l])/(c+1)}),o),{});Object.keys(s).forEach(o=>{s[o]=parseFloat(s[o].toFixed(2))}),this._reemitEvent("stats",Object.assign({},s,this._getEventData()))}_reemitEvent(e,t){this._log.debug(`VideoProcessor:${e}`,t),this.emit("event",{name:e,data:t})}};Kp.exports=xo});var Mo=p((nI,eh)=>{"use strict";var SS=ho(),TS=Qp(),kS=Jp(),{DEFAULT_FRAME_RATE:PS}=N(),Xp=(()=>{class i extends SS{constructor(t,n){return super(t,n),Object.defineProperties(this,{_isCapturing:{value:!1,writable:!0},_inputFrame:{value:null,writable:!0},_outputFrame:{value:null,writable:!0},_processorEventObserver:{value:null,writable:!0},_processorOptions:{value:{},writable:!0},_stopCapture:{value:()=>{},writable:!0},_unmuteHandler:{value:null,writable:!0},dimensions:{enumerable:!0,value:{width:null,height:null}},processor:{enumerable:!0,value:null,writable:!0},_documentPipWindow:{value:null,writable:!0},_documentPipEnterListener:{value:null,writable:!0},_documentPipExitListener:{value:null,writable:!0}}),this._processorEventObserver=new(n.VideoProcessorEventObserver||kS)(this._log),this}_checkIfCanCaptureFrames(t=!1){let n=!0,r="",{enabled:s,readyState:o}=this.mediaStreamTrack;return s||(n=!1,r="MediaStreamTrack is disabled"),o==="ended"&&(n=!1,r="MediaStreamTrack is ended"),this.processor||(n=!1,r="
35VideoProcessor not detected."),!this._attachments.size&&!t&&(n=!1,r="VideoTrack is not publishing and there is no attached element."),r&&this._log.debug(r),{canCaptureFrames:n,message:r}}_captureFrames(){if(this._isCapturing){this._log.debug("Ignoring captureFrames call. Capture is already in progress");return}if(!this._checkIfCanCaptureFrames().canCaptureFrames){this._isCapturing=!1,this._log.debug("Cannot capture frames. Ignoring captureFrames call.");return}this._isCapturing=!0,this._processorEventObserver.emit("start"),this._log.debug("Start capturing frames");let{inputFrameBufferType:t}=this._processorOptions;this._dummyEl.play().then(()=>{let n=r=>{let s=this._checkIfCanCaptureFrames();if(!s.canCaptureFrames)return r&&r.close(),this._isCapturing=!1,this._stopCapture(),this._processorEventObserver.emit("stop",s.message),this._log.debug("Cannot capture frames. Stopping capturing frames."),Promise.resolve();let{width:o=0,height:a=0}=this.mediaStreamTrack.getSettings();this._outputFrame&&this._outputFrame.width!==o&&(this._outputFrame.width=o,this._outputFrame.height=a),this._inputFrame&&(this._inputFrame.width!==o&&(this._inputFrame.width=o,this._inputFrame.height=a),this._inputFrame.getContext("2d").drawImage(this._dummyEl,0,0,o,a));let c=r||(["video","videoframe"].includes(t)?this._dummyEl:this._inputFrame),l=null;try{l=this.processor.processFrame(c,this._outputFrame)}catch(d){this._log.debug("Exception detected after calling processFrame.",d)}return(l instanceof Promise?l:Promise.resolve(l)).then(()=>{this._outputFrame&&(typeof this.processedTrack.requestFrame=="function"&&this.processedTrack.requestFrame(),this._processorEventObserver.emit("stats"))})};this._stopCapture=TS(this._dummyEl,n,t)}).catch(n=>this._log.error("Video element cannot be played",{error:n,track:this}))}_initialize(){super._initialize(),this._dummyEl&&(this._dummyEl.onloadedmetadata=()=>{Yp(this,this._dummyEl)&&(this.dimensions.width=this._dummyEl.videoWidth,this.dimensions.height=this._dummyEl.videoHeight)},this._dummyEl.onresize=()=>{Yp(this,this._dummyEl)&&(this.dimensions.width=this._dummyEl.videoWidth,this.dimensions.height=this._dummyEl.videoHeight,this.isStarted&&(this._log.debug("Dimensions changed:",this.dimensions),this.emit(i.DIMENSIONS_CHANGED,this)))})}_restartProcessor(){let t=this.processor;if(t){let n=Object.assign({},this._processorOptions);this.removeProcessor(t),this.addProcessor(t,n)}}_start(t){return this.dimensions.width=t.videoWidth,this.dimensions.height=t.videoHeight,this._log.debug("Dimensions:",this.dimensions),this.emit(i.DIMENSIONS_CHANGED,this),super._start.call(this,t)}addProcessor(t,n){if(!t||typeof t.processFrame!="function")throw new Error("Received an invalid VideoProcessor from addProcessor.");if(this.processor)throw new Error("A VideoProcessor has already been added.");if(!this._dummyEl)throw new Error("VideoTrack has not been initialized.");this._log.debug("Adding VideoProcessor to the VideoTrack",t),this._unmuteHandler||(this._unmuteHandler=()=>{this._log.debug("mediaStreamTrack unmuted"),this.processedTrack.muted&&(this._log.debug("mediaStreamTrack is unmuted but processedTrack is muted. Restarting processor."),this._restartProcessor())},this.mediaStreamTrack.addEventListener?this.mediaStreamTrack.addEventListener("unmute",this._unmuteHandler):this.mediaStreamTrack.onunmute=this._unmuteHandler.bind(this)),this._processorOptions=n||{};let{inputFrameBufferType:r,outputFrameBufferContextType:s}=this._processorOptions;if(typeof OffscreenCanvas>"u"&&r==="offscreencanvas")throw new Error("OffscreenCanvas is not supported by this browser.");if(r&&r!=="videoframe"&&r!=="video"&&r!=="canvas"&&r!=="offscreencanvas")throw new Error(`Invalid inputFrameBufferType of ${r}`);r||(r=typeof OffscreenCanvas>"u"?"canvas":"offscreencanvas");let{width:o=0,height:a=0,frameRate:c=PS}=this.mediaStreamTrack.getSettings();if(r==="offscreencanvas"&&(this._inputFrame=new OffscreenCanvas(o,a)),r==="canvas"&&(this._inputFrame=document.createElement("canvas")),this._inputFrame&&(this._inputFrame.width=o,this._inputFrame.height=a),this._outputFrame=document.createElement("canvas"),this._outputFrame.width=o,this._outputFrame.height=a,s=s||"2d",!this._outputFrame.getContext(s))throw new Error(`Cannot get outputFrameBufferContextType: ${s}.`);let d=typeof CanvasCaptureMediaStreamTrack<"u"&&CanvasCaptureMediaStreamTrack.prototype&&typeof CanvasCaptureMediaStreamTrack.prototype.requestFrame=="function"?0:void 0;return this.processedTrack=this._outputFrame.captureStream(d).getTracks()[0],this.processedTrack.enabled=this.mediaStreamTrack.enabled,this.processor=t,this._processorEventObserver.emit("add",{processor:t,captureHeight:a,captureWidth:o,inputFrameRate:c,isRemoteVideoTrack:this.toString().includes("RemoteVideoTrack"),inputFrameBufferType:r,outputFrameBufferContextType:s}),this._updateElementsMediaStreamTrack(),this._captureFrames(),this}attach(){let t=super.attach.apply(this,arguments);return this._attachments.size===1&&wS(this),this.processor&&this._captureFrames(),t}detach(){let t=super.detach.apply(this,arguments);return this._attachments.size===0&&ES(this),t}
35removeProcessor(t){if(!t)throw new Error("Received an invalid VideoProcessor from removeProcessor.");if(!this.processor)throw new Error("No existing VideoProcessor detected.");if(t!==this.processor)throw new Error("The provided VideoProcessor is different than the existing one.");return this._processorEventObserver.emit("remove"),this._log.debug("Removing VideoProcessor from the VideoTrack",t),this._stopCapture(),this._stopCapture=()=>{},this.mediaStreamTrack.removeEventListener("unmute",this._unmuteHandler),this._processorOptions={},this._unmuteHandler=null,this._isCapturing=!1,this.processor=null,this.processedTrack=null,this._inputFrame=null,this._outputFrame=null,this._updateElementsMediaStreamTrack(),this}}return i.DIMENSIONS_CHANGED="dimensionsChanged",i})();function Yp(i,e){return i.dimensions.width!==e.videoWidth||i.dimensions.height!==e.videoHeight}function wS(i){!i._documentPipEnterListener&&"documentPictureInPicture"in globalThis&&globalThis.documentPictureInPicture&&typeof globalThis.documentPictureInPicture.addEventListener=="function"&&(i._documentPipEnterListener=e=>{i._log.debug("document pip entered"),i._documentPipWindow=e.window,i._documentPipExitListener=()=>{i._log.debug("document pip exited"),i._documentPipWindow=null,typeof i._onDocumentPipExit=="function"&&i._onDocumentPipExit()},e.window&&typeof e.window.addEventListener=="function"&&e.window.addEventListener("pagehide",i._documentPipExitListener),Zp(i),typeof i._onDocumentPipEnter=="function"&&i._onDocumentPipEnter(e)},globalThis.documentPictureInPicture.addEventListener("enter",i._documentPipEnterListener))}function ES(i){i._documentPipEnterListener&&(globalThis.documentPictureInPicture&&typeof globalThis.documentPictureInPicture.removeEventListener=="function"&&globalThis.documentPictureInPicture.removeEventListener("enter",i._documentPipEnterListener),i._documentPipWindow&&i._documentPipExitListener&&typeof i._documentPipWindow.removeEventListener=="function"&&i._documentPipWindow.removeEventListener("pagehide",i._documentPipExitListener),i._documentPipEnterListener=null,i._documentPipExitListener=null,i._documentPipWindow=null)}function Zp(i){if(i._documentPipWindow)try{let e=new WeakSet(i._documentPipWindow.document.querySelectorAll("video"));i._attachments.forEach(t=>{e.has(t)&&t.paused&&t.play().then(()=>{i._log.debug("Successfully played inadvertently paused video element in document PiP window")}).catch(n=>{i._log.debug("Failed to play inadvertently paused video element in document PiP window",n)})})}catch(e){i._log.debug("Error checking document PiP video playback:",e)}}Xp._ensureDocumentPipVideosPlaying=Zp;eh.exports=Xp});var nh=p((rI,ih)=>{"use strict";var{isIOS:OS}=pt(),RS=vo(),LS=Oo(),th=Mo(),xS=LS(th),Io=class extends xS{constructor(e,t){t=Object.assign({workaroundSilentLocalVideo:OS()&&typeof document<"u"&&typeof document.createElement=="function"},t),super(e,t),Object.defineProperties(this,{_workaroundSilentLocalVideo:{value:t.workaroundSilentLocalVideo?MS:null},_workaroundSilentLocalVideoCleanup:{value:null,writable:!0},_pipIntersectionObserver:{value:null,writable:!0}}),this._workaroundSilentLocalVideo&&(this._workaroundSilentLocalVideoCleanup=this._workaroundSilentLocalVideo(this,document))}toString(){return`[LocalVideoTrack #${this._instanceId}: ${this.id}]`}_onDocumentPipEnter(){this._log.debug("LocalVideoTrack: Setting up PiP intersection observer"),this._setupPipIntersectionObserver()}_onDocumentPipExit(){this._log.debug("LocalVideoTrack: Cleaning up PiP intersection observer"),this._cleanupPipIntersectionObserver()}_setupPipIntersectionObserver(){!this._pipIntersectionObserver&&this._documentPipWindow&&(this._log.debug("LocalVideoTrack: Creating PiP intersection observer"),this._pipIntersectionObserver=new IntersectionObserver(e=>{e.some(n=>n.isIntersecting)&&(this._log.debug("LocalVideoTrack: Element visible in PiP, ensuring videos are playing"),th._ensureDocumentPipVideosPlaying(this))},{threshold:.25}),this._attachments.forEach(e=>{this._log.debug("LocalVideoTrack: Observing element for PiP visibility"),this._pipIntersectionObserver.observe(e)}))}_cleanupPipIntersectionObserver(){this._pipIntersectionObserver&&(this._log.debug("LocalVideoTrack: Disconnecting PiP intersection observer"),this._pipIntersectionObserver.disconnect(),this._pipIntersectionObserver=null)}attach(){let e=super.attach.apply(this,arguments);return this._pipIntersectionObserver&&(this._log.debug("LocalVideoTrack: Observing newly attached element for PiP visibility"),this._pipIntersectionObserver.observe(e)),e}detach(){let e=super.detach.apply(this,arguments),t=Array.isArray(e)?e:[e];return this._pipIntersectionObserver&&t.forEach(n=>{this._log.debug("LocalVideoTrack: Unobserving detached element from PiP visibility"),this._pipIntersectionObserver.unobserve(n)}),e}_checkIfCanCaptureFrames(){return super._checkIfCanCaptureFrames.call(this,this._trackSender.isPublishing)}_end(){return super._end.apply(this,arguments)}_setSenderMediaStreamTrack(e){let t=this.mediaStreamTrack,n=e?this.processedTrack:t;return this._trackSender.setMediaStreamTrack(n).catch(r=>this._log.warn("setMediaStreamTrack failed on LocalVideoTrack RTCRtpSender",{error:r,mediaStreamTrack:n})).then(()=>{this._unprocessedTrack=e?t:null})}addProcessor(){this._log.debug("Adding VideoProcessor to the LocalVideoTrack");let e=super.addProcessor.apply(this,arguments);return this.processedTrack?(this._log.debug("Updating LocalVideoTrack's MediaStreamTrack
35with the processed MediaStreamTrack",this.processedTrack),this._setSenderMediaStreamTrack(!0),e):this._log.warn("Unable to add a VideoProcessor to the LocalVideoTrack")}removeProcessor(){this._log.debug("Removing VideoProcessor from the LocalVideoTrack");let e=super.removeProcessor.apply(this,arguments);return this._log.debug("Updating LocalVideoTrack's MediaStreamTrack with the original MediaStreamTrack"),this._setSenderMediaStreamTrack().then(()=>this._updateElementsMediaStreamTrack()),e}disable(){let e=super.disable.apply(this,arguments);return this.processedTrack&&(this.processedTrack.enabled=!1),e}enable(e=!0){let t=super.enable.apply(this,arguments);return this.processedTrack&&(this.processedTrack.enabled=e,e&&(this._captureFrames(),this._log.debug("Updating LocalVideoTrack's MediaStreamTrack with the processed MediaStreamTrack",this.processedTrack),this._setSenderMediaStreamTrack(!0))),t}restart(){this._workaroundSilentLocalVideoCleanup&&(this._workaroundSilentLocalVideoCleanup(),this._workaroundSilentLocalVideoCleanup=null);let e=super.restart.apply(this,arguments);return this.processor&&(e=e.then(()=>this._restartProcessor())),this._workaroundSilentLocalVideo&&e.finally(()=>{this._workaroundSilentLocalVideoCleanup=this._workaroundSilentLocalVideo(this,document)}),e}_restartProcessor(){let e=this.processor,t=Object.assign({},this._processorOptions);return super.removeProcessor.apply(this,[e]),super.addProcessor.apply(this,[e,t]),this._setSenderMediaStreamTrack(!0)}stop(){return this._workaroundSilentLocalVideoCleanup&&(this._workaroundSilentLocalVideoCleanup(),this._workaroundSilentLocalVideoCleanup=null),this._cleanupPipIntersectionObserver(),super.stop.apply(this,arguments)}};function MS(i,e){let{_log:t}=i,{_dummyEl:n,mediaStreamTrack:r}=i;function s(){i.isEnabled&&(t.info("Unmuted, checking silence"),n.play().then(()=>RS(n,e)).then(o=>{if(!o){t.info("Non-silent frames detected, so no need to restart");return}return t.warn("Silence detected, restarting"),i._stop(),i._restart()}).catch(o=>{t.warn("Failed to detect silence and restart:",o)}).finally(()=>{n=i._dummyEl,n&&!n.paused&&!i.processedTrack&&n.pause(),r.removeEventListener("unmute",s),r=i.mediaStreamTrack,r.addEventListener?r.addEventListener("unmute",s):r.onunmute=s}))}return r.addEventListener?r.addEventListener("unmute",s):r.onunmute=s,()=>{r.removeEventListener?r.removeEventListener("unmute",s):r.onunmute=null}}ih.exports=Io});var oh=p((sI,sh)=>{"use strict";var IS=kn(),rh=nh();function Do(i,e){let t=new rh(i,e);return Object.setPrototypeOf(t,Do.prototype),t}IS(Do,rh);sh.exports=Do});var jo=p((oI,ah)=>{"use strict";var DS=To(),Ao=class extends DS{constructor(e,t,n,r){super(e,"data"),Object.defineProperties(this,{maxPacketLifeTime:{enumerable:!0,value:t},maxRetransmits:{enumerable:!0,value:n},ordered:{enumerable:!0,value:r}})}};ah.exports=Ao});var lh=p((aI,ch)=>{"use strict";var AS=jo(),jS=j().makeUUID,Vo=class i extends AS{constructor(e,t,n){super(jS(),e,t,n),Object.defineProperties(this,{_clones:{value:new Set},_dataChannels:{value:new Set}})}_addClone(e){this._clones.add(e)}removeClone(e){this._clones.delete(e)}addDataChannel(e){return this._dataChannels.add(e),this}clone(){let e=new i(this.maxPacketLifeTime,this.maxRetransmits,this.ordered);return this._addClone(e),e.once("stopped",()=>this.removeClone(e)),e}removeDataChannel(e){return this._dataChannels.delete(e),this}send(e){return this._dataChannels.forEach(t=>{try{t.send(e)}catch(n){}}),this._clones.forEach(t=>{try{t.send(e)}catch(n){}}),this}stop(){this._dataChannels.forEach(e=>e.close()),this._clones.forEach(e=>e.stop()),super.stop()}};ch.exports=Vo});var uh=p((cI,dh)=>{"use strict";var VS=wn(),qS=lh(),qo=class extends VS{constructor(e){e=Object.assign({DataTrackSender:qS,maxPacketLifeTime:null,maxRetransmits:null,ordered:!0}
35,e);let t=e.DataTrackSender,n=new t(e.maxPacketLifeTime,e.maxRetransmits,e.ordered);super(n.id,"data",e),Object.defineProperties(this,{_trackSender:{value:n},id:{enumerable:!0,value:n.id},maxPacketLifeTime:{enumerable:!0,value:e.maxPacketLifeTime},maxRetransmits:{enumerable:!0,value:e.maxRetransmits},ordered:{enumerable:!0,value:e.ordered},reliable:{enumerable:!0,value:e.maxPacketLifeTime===null&&e.maxRetransmits===null}})}send(e){this._trackSender.send(e)}};dh.exports=qo});var fh=p((lI,hh)=>{"use strict";var NS=kn(),ph=uh();function No(i){let e=new ph(i);return Object.setPrototypeOf(e,No.prototype),e}NS(No,ph);hh.exports=No});var kt=p((dI,mh)=>{"use strict";mh.exports={LocalAudioTrack:zp(),LocalVideoTrack:oh(),LocalDataTrack:fh()}});var vh=p((uI,gh)=>{"use strict";var Fo=class{constructor(e){this._telemetry=e}typeChanged(e){this._telemetry.info({group:"network",name:"network-type-changed",payload:{networkType:e}})}informationChanged({downlink:e,downlinkMax:t,effectiveType:n,rtt:r,saveData:s,type:o}){this._telemetry.info({group:"network",name:"network-information-changed",payload:{downlink:e,downlinkMax:t,effectiveType:n,rtt:r,saveData:s,type:o}})}};gh.exports=Fo});var bh=p((pI,_h)=>{"use strict";var Bo=class{constructor(e){this._telemetry=e}succeeded(){this._telemetry.info({group:"get-user-media",name:"succeeded"})}denied(){this._telemetry.info({group:"get-user-media",name:"denied"})}failed(e){this._telemetry.info({group:"get-user-media",name:"failed",payload:{name:e.name,message:e.message}})}};_h.exports=Bo});var yh=p((hI,Ch)=>{"use strict";var Uo=class{constructor(e){this._telemetry=e}limitationChanged(e,t){this._telemetry.info({group:"quality",name:"quality-limitation-state-changed",payload:{trackSid:e,qualityLimitationReason:t}})}statsReport(e){this._telemetry.info({group:"quality",name:"stats-report",payload:e})}iceCandidatePair(e){this._telemetry.info({group:"quality",name:"active-ice-candidate-pair",payload:e})}};Ch.exports=Uo});var Th=p((fI,Sh)=>{"use strict";var $o=class{constructor(e){this._telemetry=e}stalled(e,t,n,r="video"){this._telemetry.warning({group:"track-warning-raised",name:"track-stalled",payload:{trackSid:e,frameRate:t,threshold:n,trackType:r}})}resumed(e,t,n,r="video"){this._telemetry.info({group:"track-warning-cleared",name:"track-stalled",payload:{trackSid:e,frameRate:t,threshold:n,trackType:r}})}};Sh.exports=$o});var Ph=p((mI,kh)=>{"use strict";var Wo=class{constructor(e){this._telemetry=e}resumed(){this._telemetry.info({group:"application",name:"resumed"})}backgrounded(){this._telemetry.info({group:"application",name:"backgrounded"})}terminated(){this._telemetry.info({group:"application",name:"terminated"})}};kh.exports=Wo});var Eh=p((gI,wh)=>{"use strict";var Ho=class{constructor(e){this._telemetry=e}cpuPressureChanged(e){this._telemetry.info({group:"system",name:"cpu-pressure-changed",payload:{resourceType:"cpu",pressure:e}})}};wh.exports=Ho});var Lh=p((vI,Rh)=>{"use strict";var{filterObject:Oh}=j(),zo=class{constructor(e){this._telemetry=e}connectionState(e,t){this._telemetry.debug({group:"pc-connection-state",name:t,payload:{peerConnectionId:e}})}signalingState(e,t){this._telemetry.debug({group:"pc-signaling-state",name:t,payload:{peerConnectionId:e}})}iceGatheringState(e,t){this._telemetry.debug({group:"ice-gathering-state",name:t,payload:{peerConnectionId:e}})}iceConnectionState(e,t){let n=t==="failed"?"error":"debug";this._telemetry[n]({group:"ice-connection-state",name:t,payload:{peerConnectionId:e}})}dtlsTransportState(e,t){let n=t==="failed"?"error":"debug";this._telemetry[n]({group:"dtls-transport-state",name:t,payload:{peerConnectionId:e}})}iceCandidate(e,t,n=!1){this._telemetry.debug({group:"ice-candidate",name:"ice-candidate",payload:Object.assign({peerConnectionId:e,isRemote:n?"true":"false"},this._toIceCandidatePayload(t))})}selectedCandidatePair(e,t){this._telemetry.debug({group:"ice-candidate",name:"selected-ice-candidate-pair",payload:Oh({peerConnectionId:e,localCandidate:t.local?this._toIceCandidatePayload(t.local):null,remoteCandidate:t.remote?this._toIceCandidatePayload(t.remote):null},null)})}_toIceCandidatePayload(e){var t;let n=(t=e.candidate)===null||t===void 0?void 0:t.match(/network-cost\s+(\d+)/),r=n?parseInt(n[1],10):null;return Oh({candidateType:e.type,ip:e.address,port:e.port,priority:e.priority,protocol:e.protocol,relatedAddress:e.relatedAddress,relatedPort:e.relatedPort,tcpType:e.tcpType,transportId:e.sdpMid,networkCost:r},null)}};Rh.exports=zo});var Mh=p((_I,xh)=>{"use strict";
35var Go=class i extends Error{constructor(e){let t=[].slice.call(arguments,1);super(...t),Object.setPrototypeOf(this,i.prototype);let n=Error.apply(this,t);n.name="TwilioError",Object.defineProperty(this,"code",{value:e,enumerable:!0}),Object.getOwnPropertyNames(n).forEach(function(r){Object.defineProperty(this,r,{value:n[r],enumerable:!0})},this)}toString(){let e=this.message?`: ${this.message}`:"";return`${this.name} ${this.code}${e}`}};xh.exports=Go});var Pe=p(w=>{"use strict";var O=Mh(),P={};w.createTwilioError=function(e,t){return e=typeof e=="number"?e:0,t=typeof t=="string"&&t?t:"Unknown error",P[e]?new P[e]:new O(e,t)};var En=class i extends O{constructor(){super(20101,"Invalid Access Token"),Object.setPrototypeOf(this,i.prototype)}};w.AccessTokenInvalidError=En;Object.defineProperty(P,20101,{value:En});var On=class i extends O{constructor(){super(20102,"Invalid Access Token header"),Object.setPrototypeOf(this,i.prototype)}};w.AccessTokenHeaderInvalidError=On;Object.defineProperty(P,20102,{value:On});var Rn=class i extends O{constructor(){super(20103,"Invalid Access Token issuer/subject"),Object.setPrototypeOf(this,i.prototype)}};w.AccessTokenIssuerInvalidError=Rn;Object.defineProperty(P,20103,{value:Rn});var Ln=class i extends O{constructor(){super(20104,"Access Token expired or expiration date invalid"),Object.setPrototypeOf(this,i.prototype)}};w.AccessTokenExpiredError=Ln;Object.defineProperty(P,20104,{value:Ln});var xn=class i extends O{constructor(){super(20105,"Access Token not yet valid"),Object.setPrototypeOf(this,i.prototype)}};w.AccessTokenNotYetValidError=xn;Object.defineProperty(P,20105,{value:xn});var Mn=class i extends O{constructor(){super(20106,"Invalid Access Token grants"),Object.setPrototypeOf(this,i.prototype)}};w.AccessTokenGrantsInvalidError=Mn;Object.defineProperty(P,20106,{value:Mn});var In=class i extends O{constructor(){super(20107,"Invalid Access Token signature"),Object.setPrototypeOf(this,i.prototype)}};w.AccessTokenSignatureInvalidError=In;Object.defineProperty(P,20107,{value:In});var Dn=class i extends O{constructor(){super(53e3,"Signaling connection error"),Object.setPrototypeOf(this,i.prototype)}};w.SignalingConnectionError=Dn;Object.defineProperty(P,53e3,{value:Dn});var An=class i extends O{constructor(){super(53001,"Signaling connection disconnected"),Object.setPrototypeOf(this,i.prototype)}};w.SignalingConnectionDisconnectedError=An;Object.defineProperty(P,53001,{value:An});var jn=class i extends O{constructor(){super(53002,"Signaling connection timed out"),Object.setPrototypeOf(this,i.prototype)}};w.SignalingConnectionTimeoutError=jn;Object.defineProperty(P,53002,{value:jn});var Vn=class i extends O{constructor(){super(53003,"Client received an invalid signaling message"),Object.setPrototypeOf(this,i.prototype)}};w.SignalingIncomingMessageInvalidError=Vn;Object.defineProperty(P,53003,{value:Vn});var qn=class i extends O{constructor(){super(53004,"Client sent an invalid signaling message"),Object.setPrototypeOf(this,i.prototype)}};w.SignalingOutgoingMessageInvalidError=qn;Object.defineProperty(P,53004,{value:qn});var Nn=class i extends O{constructor(){super(53006,"Video server is busy"),Object.setPrototypeOf(this,i.prototype)}};w.SignalingServerBusyError=Nn;Object.defineProperty(P,53006,{value:Nn});var Fn=class i extends O{constructor(){super(53100,"Room name is invalid"),Object.setPrototypeOf(this,i.prototype)}};w.RoomNameInvalidError=Fn;Object.defineProperty(P,53100,{value:Fn});var Bn=class i extends O{constructor(){super(53101,"Room name is too long"),Object.setPrototypeOf(this,i.prototype)}};w.RoomNameTooLongError=Bn;Object.defineProperty(P,53101,{value:Bn});var Un=class i extends O{constructor(){super(53102,"Room name contains invalid characters"),Object.setPrototypeOf(this,i.prototype)}};w.RoomNameCharsInvalidError=Un;Object.defineProperty(P,53102,{value:Un});var $n=class i extends O{constructor(){super(53103,"Unable to create Room"),Object.setPrototypeOf(this,i.prototype)}};w.RoomCreateFailedError=$n;Object.defineProperty(P,53103,{value:$n});var Wn=class i extends O{constructor(){super(53104,"Unable to connect to Room"),Object.setPrototypeOf(this,i.prototype)}};w.RoomConnectFailedError=Wn;Object.defineProperty(P,53104,{value:Wn});var Hn=class i extends O{constructor(){super(53105,"Room contains too many Participants"),Object.setPrototypeOf(this,i.prototype)}};w.RoomMaxParticipantsExceededError=Hn;Object.defineProperty(P,53105,{value:Hn});var zn=class i extends O{constructor(){super(53106,"Room not found"),Object.setPrototypeOf(this,i.prototype)}};w.RoomNotFoundError=zn;Object.defineProperty(P,53106,{value:zn});var Gn=class i extends O{constructor(){super(53107,"MaxParticipants is out of range"),Object.setPrototypeOf(this,i.prototype)}};w.RoomMaxParticipantsOutOfRangeError=Gn;Object.defineProperty(P,53107,{value:Gn});var Qn=class i extends O{constructor(){super(53108,"RoomType is not val
35id"),Object.setPrototypeOf(this,i.prototype)}};w.RoomTypeInvalidError=Qn;Object.defineProperty(P,53108,{value:Qn});var Kn=class i extends O{constructor(){super(53109,"Timeout is out of range"),Object.setPrototypeOf(this,i.prototype)}};w.RoomTimeoutOutOfRangeError=Kn;Object.defineProperty(P,53109,{value:Kn});var Jn=class i extends O{constructor(){super(53110,"StatusCallbackMethod is invalid"),Object.setPrototypeOf(this,i.prototype)}};w.RoomStatusCallbackMethodInvalidError=Jn;Object.defineProperty(P,53110,{value:Jn});var Yn=class i extends O{constructor(){super(53111,"StatusCallback is invalid"),Object.setPrototypeOf(this,i.prototype)}};w.RoomStatusCallbackInvalidError=Yn;Object.defineProperty(P,53111,{value:Yn});var Xn=class i extends O{constructor(){super(53112,"Status is invalid"),Object.setPrototypeOf(this,i.prototype)}};w.RoomStatusInvalidError=Xn;Object.defineProperty(P,53112,{value:Xn});var Zn=class i extends O{constructor(){super(53113,"Room exists"),Object.setPrototypeOf(this,i.prototype)}};w.RoomRoomExistsError=Zn;Object.defineProperty(P,53113,{value:Zn});var er=class i extends O{constructor(){super(53114,"Room creation parameter(s) incompatible with the Room type"),Object.setPrototypeOf(this,i.prototype)}};w.RoomInvalidParametersError=er;Object.defineProperty(P,53114,{value:er});var tr=class i extends O{constructor(){super(53115,"MediaRegion is invalid"),Object.setPrototypeOf(this,i.prototype)}};w.RoomMediaRegionInvalidError=tr;Object.defineProperty(P,53115,{value:tr});var ir=class i extends O{constructor(){super(53116,"There are no media servers available in the MediaRegion"),Object.setPrototypeOf(this,i.prototype)}};w.RoomMediaRegionUnavailableError=ir;Object.defineProperty(P,53116,{value:ir});var nr=class i extends O{constructor(){super(53117,"The subscription operation requested is not supported for the Room type"),Object.setPrototypeOf(this,i.prototype)}};w.RoomSubscriptionOperationNotSupportedError=nr;Object.defineProperty(P,53117,{value:nr});var rr=class i extends O{constructor(){super(53118,"Room completed"),Object.setPrototypeOf(this,i.prototype)}};w.RoomCompletedError=rr;Object.defineProperty(P,53118,{value:rr});var sr=class i extends O{constructor(){super(53124,"The AudioOnly flag is not supported for the Room type"),Object.setPrototypeOf(this,i.prototype)}};w.RoomAudioOnlyFlagNotSupportedError=sr;Object.defineProperty(P,53124,{value:sr});var or=class i extends O{constructor(){super(53125,"The track kind is not supported by the Room"),Object.setPrototypeOf(this,i.prototype)}};w.RoomTrackKindNotSupportedError=or;Object.defineProperty(P,53125,{value:or});var ar=class i extends O{constructor(){super(53200,"Participant identity is invali
35d"),Object.setPrototypeOf(this,i.prototype)}};w.ParticipantIdentityInvalidError=ar;Object.defineProperty(P,53200,{value:ar});var cr=class i extends O{constructor(){super(53201,"Participant identity is too long"),Object.setPrototypeOf(this,i.prototype)}};w.ParticipantIdentityTooLongError=cr;Object.defineProperty(P,53201,{value:cr});var lr=class i extends O{constructor(){super(53202,"Participant identity contains invalid characters"),Object.setPrototypeOf(this,i.prototype)}};w.ParticipantIdentityCharsInvalidError=lr;Object.defineProperty(P,53202,{value:lr});var dr=class i extends O{constructor(){super(53203,"The maximum number of published tracks allowed in the Room at the same time has been reached"),Object.setPrototypeOf(this,i.prototype)}};w.ParticipantMaxTracksExceededError=dr;Object.defineProperty(P,53203,{value:dr});var ur=class i extends O{constructor(){super(53204,"Participant not found"),Object.setPrototypeOf(this,i.prototype)}};w.ParticipantNotFoundError=ur;Object.defineProperty(P,53204,{value:ur});var pr=class i extends O{constructor(){super(53205,"Participant disconnected because of duplicate identity"),Object.setPrototypeOf(this,i.prototype)}};w.ParticipantDuplicateIdentityError=pr;Object.defineProperty(P,53205,{value:pr});var hr=class i extends O{constructor(){super(53300,"Track is invalid"),Object.setPrototypeOf(this,i.prototype)}};w.TrackInvalidError=hr;Object.defineProperty(P,53300,{value:hr});var fr=class i extends O{constructor(){super(53301,"Track name is invalid"),Object.setPrototypeOf(this,i.prototype)}};w.TrackNameInvalidError=fr;Object.defineProperty(P,53301,{value:fr});var mr=class i extends O{constructor(){super(53302,"Track name is too long"),Object.setPrototypeOf(this,i.prototype)}};w.TrackNameTooLongError=mr;Object.defineProperty(P,53302,{value:mr});var gr=class i extends O{constructor(){super(53303,"Track name contains invalid characters"),Object.setPrototypeOf(this,i.prototype)}};w.TrackNameCharsInvalidError=gr;Object.defineProperty(P,53303,{value:gr});var vr=class i extends O{constructor(){super(53304,"Track name is duplicated"),Object.setPrototypeOf(this,i.prototype)}};w.TrackNameIsDuplicatedError=vr;Object.defineProperty(P,53304,{value:vr});var _r=class i extends O{constructor(){super(53305,"The server has reached capacity and cannot fulfill this request"),Object.setPrototypeOf(this,i.prototype)}};w.TrackServerTrackCapacityReachedError=_r;Object.defineProperty(P,53305,{value:_r});var br=class i extends O{constructor(){super(53400,"Client is unable to create or apply a local media description"),Object.setPrototypeOf(this,i.prototype)}};w.MediaClientLocalDescFailedError=br;Object.defineProperty(P,53400,{value:br});var Cr=class i extends O{constructor(){super(53401,"Server is unable to create or apply a local media description"),Object.setPrototypeOf(this,i.prototype)}};w.MediaServerLocalDescFailedError=Cr;Object.defineProperty(P,53401,{value:Cr});var yr=class i extends O{constructor(){super(53402,"Client is unable to apply a remote media description"),Object.setPrototypeOf(this,i.prototype)}};w.MediaClientRemoteDescFailedError=yr;Object.defineProperty(P,53402,{value:yr});var Sr=class i extends O{constructor(){super(53403,"Server is unable to apply a remote media description"),Object.setPrototypeOf(this,i.prototype)}};w.MediaServerRemoteDescFailedError=Sr;Object.defineProperty(P,53403,{value:Sr});var Tr=class i extends O{constructor(){super(53404,"No supported codec"),Object.setPrototypeOf(this,i.prototype)}};w.MediaNoSupportedCodecError=Tr;Object.defineProperty(P,53404,{value:Tr});var kr=class i extends O{constructor(){super(53405,"Media connection failed or Media activity ceased"),Object.setPrototypeOf(this,i.prototype)}};w.MediaConnectionError=kr;Object.defineProperty(P,53405,{value:kr});var Pr=class i extends O{constructor(){super(53407,"Media connection failed due to DTLS handshake failure"),Object.setPrototypeOf(this,i.prototype)}};w.MediaDTLSTransportFailedError=Pr;Object.defineProperty(P,53407,{value:Pr});var wr=class i extends O{constructor(){super(53500,"Unable to acquire configuration"),Object.setPrototypeOf(this,i.prototype)}};w.ConfigurationAcquireFailedError=wr;Object.defineProperty(P,53500,{value:wr});var Er=class i extends O{constructor(){super(53501,"Unable to acquire TURN credentials"),Object.setPrototypeOf(this,i.prototype)}};w.ConfigurationAcquireTurnFailedError=Er;Object.defineProperty(P,53501,{value:Er})});var Dh=p((CI,Ih)=>{"use strict";var{MediaConnectionError:FS}=Pe(),Qo=class{constructor(e){this._telemetry=e}reconnecting(e){let t=e instanceof FS?"media":"signaling";this._telemetry.info({group:"room",name:"reconnecting",payload:{reason:t}})}reconnected(){this._telemetry.info({group:"room",name:"reconnected"})}disconnected(){this._telemetry.info({group:"room",name:"disconnected"})}};Ih.exports=Qo});var $e=p((yI,Ah)=>{"use strict";var BS=vh(),US=bh(),$S=yh(),WS=Th(),HS=Ph(),zS=Eh(),GS=Lh(),QS=Dh(),Ko=class{constructor(){this._publisher=null,this._connectTimestamp=null,this._log=null,this._isConfigured=!1,this.network=new BS(this),this.getUserMedia=new US(this),this.qual
35ity=new $S(this),this.track=new WS(this),this.application=new HS(this),this.system=new zS(this),this.pc=new GS(this),this.room=new QS(this)}configure({publisher:e,log:t,connectTimestamp:n}){if(!e||!t||typeof n!="number")throw new Error("Telemetry.configure requires publisher, log, and connectTimestamp");return this._publisher=e,this._log=t,this._connectTimestamp=n,this._isConfigured=!0,this._publisher.on("connected",()=>{this._log.debug("Telemetry publisher connected.")}),this._publisher.on("reconnecting",()=>{this._log.warn("Telemetry publisher reconnecting...")}),this}_emit(e,t,n,r){if(!this._isConfigured)return;let s=Date.now(),o=s-this._connectTimestamp,a=Object.assign({elapsedTime:o,level:n},r||{});if(!this._publisher.publish(e,t,a)){this._log.warn(`Telemetry event "${e}:${t}" dropped - publisher unavailable.`);return}let l=Object.assign({elapsedTime:o,group:e,level:n,name:t,timestamp:s},r?{payload:r}:{}),d={debug:"debug",error:"error",info:"info",warning:"warn"}[n];this._log[d]("telemetry",l)}info({group:e,name:t,payload:n}){return this._emit(e,t,"info",n)}warning({group:e,name:t,payload:n}){return this._emit(e,t,"warning",n)}error({group:e,name:t,payload:n}){return this._emit(e,t,"error",n)}debug({group:e,name:t,payload:n}){return this._emit(e,t,"debug",n)}};Ah.exports=new Ko});var Vh=p(Yo=>{"use strict";Object.defineProperty(Yo,"__esModule",{value:!0});Yo.createLocalTracks=aT;var jh=(Te(),_t(Ct)),KS=du(),{buildLogLevels:JS}=j(),{getUserMedia:YS}=Tn(),{LocalAudioTrack:XS,LocalDataTrack:ZS,LocalVideoTrack:eT}=kt(),tT=_e(),{DEFAULT_LOG_LEVEL:iT,DEFAULT_LOGGER_NAME:nT,typeErrors:{INVALID_VALUE:rT}}=N(),sT=bo(),Jo=$e(),oT=0;function aT(i){return jh.__awaiter(this,void 0,void 0,function*(){let e=!(i&&("audio"in i||"video"in i)),t=Object.assign({audio:e,getUserMedia:YS,loggerName:nT,logLevel:iT,LocalAudioTrack:XS,LocalDataTrack:ZS,LocalVideoTrack:eT,MediaStreamTrack,Log:tT,video:e},i),n=`[createLocalTracks #${++oT}]`,r=JS(t.logLevel),s=new t.Log("default",n,r,t.loggerName),o=Object.assign({log:s},t);if(delete o.name,t.audio===!1&&t.video===!1)return s.info("Neither audio nor video requested, so returning empty LocalTracks"),[];if(t.tracks)return s.info("Adding user-provided LocalTracks"),s.debug("LocalTracks:",t.tracks),t.tracks;let a={audio:typeof t.audio=="object"&&t.audio.name?{name:t.audio.name}:{defaultDeviceCaptureMode:"auto"},video:typeof t.video=="object"&&t.video.name?{name:t.video.name}:{}};a.audio.isCreatedByCreateLocalTracks=!0,a.video.isCreatedByCreateLocalTracks=!0;let c;if(typeof t.audio=="object")if(typeof t.audio.workaroundWebKitBug1208516=="boolean"&&(a.audio.workaroundWebKitBug1208516=t.audio.workaroundWebKitBug1208516),"noiseCancellationOptions"in t.audio&&(c=t.audio.noiseCancellationOptions,delete t.audio.noiseCancellationOptions),!("defaultDeviceCaptureMode"in t.audio))a.audio.defaultDeviceCaptureMode="auto";else{if(["auto","manual"].every(u=>u!==t.audio.defaultDeviceCaptureMode))throw rT("CreateLocalAudioTrackOptions.defaultDeviceCaptureMode",["auto","manual"]);a.audio.defaultDeviceCaptureMode=t.audio.defaultDeviceCaptureMode}typeof t.video=="object"&&typeof t.video.workaroundWebKitBug1208516=="boolean"&&(a.video.workaroundWebKitBug1208516=t.video.workaroundWebKitBug1208516),typeof t.audio=="object"&&delete t.audio.name,typeof t.video=="object"&&delete t.video.name;let l={audio:t.audio,video:t.video},d=typeof t.audio=="object"&&t.audio.workaroundWebKitBug180748;try{let u=yield d?sT(s,t.getUserMedia,l):t.getUserMedia(l);Jo.getUserMedia.succeeded();let m=[...u.getAudioTracks(),...u.getVideoTracks()];return s.info("Call to getUserMedia successful; got tracks:",m),yield Promise.all(m.map(f=>jh.__awaiter(this,void 0,void 0,function*(){if(f.kind==="audio"&&c){let{cleanTrack:h,noiseCancellation:_}=yield(0,KS.applyNoiseCancellation)(f,c,s);return new o.LocalAudioTrack(h,Object.assign(Object.assign(Object.assign({},a.audio),o),{noiseCancellation:_}))}else if(f.kind==="audio")return new o.LocalAudioTrack(f,Object.assign(Object.assign({},a.audio),o));return new o.LocalVideoTrack(f,Object.assign(Object.assign({},a.video),o))})))}catch(u){throw u.name==="NotAllowedError"||u.name==="PermissionDeniedError"?Jo.getUserMedia.denied():Jo.getUserMedia.failed(u),s.warn("Call to getUserMedia failed:",u),u}})}});var qh=p(Or=>{"use strict";
35Object.defineProperty(Or,"__esModule",{value:!0});Or.Timer=void 0;var Xo=class{constructor(){this._end=void 0,this.start()}start(){return this._start=Date.now(),this}stop(){return this._end=Date.now(),this}getTimeMeasurement(){return{start:this._start,end:this._end,duration:this._end===void 0?void 0:this._end-this._start}}};Or.Timer=Xo});var Fh=p(Rr=>{"use strict";Object.defineProperty(Rr,"__esModule",{value:!0});Rr.calculateMOS=cT;Rr.mosToScore=lT;var Nh=94.768;function cT(i,e,t){let n=i+e*2+10,r=0;switch(!0){case n<160:r=Nh-n/40;break;case n<1e3:r=Nh-(n-120)/10;break}return!0===t<=r/2.5?r=Math.max(r-t*2.5,6.52):r=0,1+.035*r+7e-6*r*(r-60)*(100-r)}function lT(i){let e=0;return i?i>4.2?e=5:i>4?e=4:i>3.6?e=3:i>3?e=2:e=1:e=0,e}});var Bh=p(ea=>{"use strict";Object.defineProperty(ea,"__esModule",{value:!0});ea.getCombinedConnectionStats=uT;var dT=(Te(),_t(Ct));function ht(i,e,t,n){let r=[];return i.forEach(s=>{(n.length===0||n.includes(s.type))&&(t.length===0||t.includes(s.kind))&&typeof s[e]=="number"&&r.push(s[e])}),r}function uT(i){return dT.__awaiter(this,arguments,void 0,function*({publisher:e,subscriber:t}){let[n,r]=yield Promise.all([e,t].map(R=>R.getStats())),s=ht(r,"timestamp",["audio"],["inbound-rtp"]),o=s.length>0?s[0]:0,a=ht(r,"jitter",["audio"],["inbound-rtp"]).reduce((R,E)=>Math.max(R,E),0),c=ht(r,"packetsReceived",["audio","video"],["inbound-rtp"]).reduce((R,E)=>R+E,0),l=ht(r,"packetsLost",["audio","video"],["inbound-rtp"]).reduce((R,E)=>R+E,0),d=ht(n,"roundTripTime",["audio","video"],["remote-inbound-rtp"]).reduce((R,E)=>Math.max(R,E),0),m=(ht(r,"currentRoundTripTime",[],["candidate-pair"]).reduce((R,E)=>Math.max(R,E),0)||d)*1e3,f=ht(n,"bytesSent",[],["candidate-pair"]).reduce((R,E)=>R+E,0),h=ht(r,"bytesReceived",[],["candidate-pair"]).reduce((R,E)=>R+E,0),_=pT(r),b=[];return r.forEach(R=>{(R.type==="local-candidate"||R.type==="remote-candidate")&&b.push(Zo(R))}),{timestamp:o,jitter:a,packets:c,packetsLost:l,roundTripTime:m,bytesSent:f,bytesReceived:h,selectedIceCandidatePairStats:_,iceCandidateStats:b}})}function Zo(i){return[{key:"transportId",type:"string"},{key:"candidateType",type:"string"},{key:"port",altKeys:["portNumber"],type:"number"},{key:"address",altKeys:["ip","ipAddress"],type:"string"},{key:"priority",type:"number"},{key:"protocol",altKeys:["transport"],type:"string"},{key:"url",type:"string"},{key:"relayProtocol",type:"string"}].reduce(function(t,n){let r=[n.key];n.altKeys&&(r=r.concat(n.altKeys));var s=r.find(o=>o in i);return s&&typeof i[s]===n.type&&(t[n.key]=i[s]),t},{})}function pT(i){let e=null,t=[];i.forEach(a=>{a.type==="transport"&&a.selectedCandidatePairId?e=a.selectedCandidatePairId:a.type==="candidate-pair"&&t.push(a)});let n=t.find(a=>a.selected||e&&a.id===e);if(!n)return null;let r=n,s=i.get(r.localCandidateId),o=i.get(r.remoteCandidateId);return!s||!o?null:{localCandidate:Zo(s),remoteCandidate:Zo(o)}}});var Pt=p((wI,Hh)=>{"use strict";var hT=ne().EventEmitter,$h=j(),ta=class extends hT{constructor(e,t){super();let n=null,r=e;t=gT(t),Object.defineProperties(this,{_lock:{get(){return n},set(s){n=s}},_reachableStates:{value:mT(t)},_state:{get(){return r},set(s){r=s}},_states:{value:t},_whenDeferreds:{value:new Set},isLocked:{enumerable:!0,get(){return n!==null}},state:{enumerable:!0,get(){return r}}}),this.on("stateChanged",s=>{this._whenDeferreds.forEach(o=>{o.when(s,o.resolve,o.reject)})})}_whenPromise(e){if(typeof e!="function")return Promise.reject(new Error("when() executor must be a function"));let t=$h.defer();return t.when=e,this._whenDeferreds.add(t),t.promise.then(n=>(this._whenDeferreds.delete(t),n),n=>{throw this._whenDeferreds.delete(t),n})}bracket(e,t){let n,r=this;function s(o){if(r.hasLock(n)&&r.releaseLockCompletely(n),o)throw o}return this.takeLock(e).then(function(a){return n=a,t(n)}).then(function(a){return s(),a},s)}hasLock(e){return this._lock===e}preempt(e,t,n){if(!Lr(this._states,this.state,e))throw new Error(`Cannot transition from "${this.state}" to "${e}"`);let r;this.isLocked&&(r=this._lock,this._lock=null);let s=null;t&&(s=this.takeLockSync(t));let o=s?null:this.takeLockSync("preemption");return this.transition(e,s||o,n),r&&r.resolve(),o&&this.releaseLock(o),s}releaseLock(e){if(this.isLocked){if(!this.hasLock(e))throw new Error(`Could not release the lock for ${e.name} because ${this._lock.name} has the lock`)}else throw new Error(`Could not release the lock for ${e.name} because the StateMachine is not locked`);e.depth===0?(this._lock=null,e.resolve()):e.depth--}releaseLockCompletely(e){if(this.isLocked){if(!this.hasLock(e))throw new Error(`Could not release the lock for ${e.name} because ${this._lock.name} has the lock`)}else throw new Error(`Could not release the lock for ${e.name} because the StateMachine is not locked`);e.depth=0,this._lock=null,e.resolve()}takeLock(e){if(typeof e=="object"){let r=e;return new Promise(s=>{s(this.takeLockSync(r))})}let t=e;if(this.isLocked){var n=this.takeLock.bind(this,t);return this._lock.promise.then(n)}return Promise.resolve(this.takeLockSync(t))}takeLockSync(e){let t=typeof e=="string"?null:e,n=t?t.name:e;if(t&&!this.hasLock(t)||!t&&this.isLocked)throw new Error(`Could not take the lock for ${n} because the lock for ${this._lock.name} was not released`);if(t)return t.depth++,t;let r=fT(n);return this._lock=r,r}transition(e,t,n){if(n=n||[],this.isLocked)if(t){if(!this.hasLock(t))throw new Error(`Could not transition using the key for ${t.name} because ${this._lock.name} has the lock`)}else throw new Error("You must provide the key in order to transition");else if(t)throw new Error(`Key provided for ${t.name}, but the StateMachine was not locked (possibly due to preemption)`);if(!Lr(this._states,this.state,e))throw new Error(`Cannot transition from "${this.state}" to "${e}"`);
35this._state=e,this.emit(...["stateChanged",e].concat(n))}tryTransition(e,t,n){try{this.transition(e,t,n)}catch(r){return!1}return!0}when(e){return this.state===e?Promise.resolve(this):Lr(this._reachableStates,this.state,e)?this._whenPromise((t,n,r)=>{t===e?n(this):Lr(this._reachableStates,t,e)||r(Uh(t,e))}):Promise.reject(Uh(this.state,e))}};function Lr(i,e,t){return i.get(e).has(t)}function fT(i){let e=$h.defer();return e.name=i,e.depth=0,e}function mT(i){return Array.from(i.keys()).reduce((e,t)=>e.set(t,Wh(i,t)),new Map)}function Wh(i,e,t){return t=t||new Set,i.get(e).forEach(n=>{t.has(n)||(t.add(n),Wh(i,n,t).forEach(t.add,t))}),t}function gT(i){let e=new Map;for(let t in i)e.set(t,new Set(i[t]));return e}function Uh(i,e){return new Error(`"${e}" cannot be reached from "${i}"`)}Hh.exports=ta});var Gh=p((EI,zh)=>{"use strict";var ia=class{constructor(e,t){t=Object.assign({navigator,window},t);let n=t.navigator,r=n.connection||{type:null},s=r.type,{_events:o,_listener:a,_target:c}=r.type?{_events:{value:["change","typechange"]},_listener:{value:()=>{let l=s!==this.type&&this.isOnline;s=this.type,l&&e()}},_target:{value:r}}:{_events:{value:["online"]},_listener:{value:e},_target:{value:t.window}};Object.defineProperties(this,{isOnline:{enumerable:!0,get(){return typeof n.onLine=="boolean"?n.onLine:!0}},type:{enumerable:!0,get(){return r.type||null}},_listener:a,_events:o,_target:c})}start(){this._events.forEach(e=>{this._target.addEventListener(e,this._listener)})}stop(){this._events.forEach(e=>{this._target.removeEventListener(e,this._listener)})}};zh.exports=ia});var ft=p((OI,Qh)=>{"use strict";var na=class{constructor(e,t,n=!0){Object.defineProperties(this,{_delay:{value:t,writable:!0},_fn:{value:e},_timeout:{value:null,writable:!0}}),n&&this.start()}get delay(){return this._delay}get isSet(){return!!this._timeout}setDelay(e){this._delay=e}start(){this.isSet||(this._timeout=setTimeout(()=>{let e=this._fn;this.clear(),e()},this._delay))}clear(){clearTimeout(this._timeout),this._timeout=null}reset(){this.clear(),this.start()}};Qh.exports=na});var ra=p((RI,Kh)=>{"use strict";Kh.exports=WebSocket});var da=p((LI,tf)=>{"use strict";var vT=Pt(),{buildLogLevels:_T,makeUUID:bT}=j(),CT=_e(),yT=Gh(),zt=ft(),ST=0,TT={closed:[],connecting:["closed","open","waiting"],early:["closed","connecting"],open:["closed"],waiting:["closed","connecting","early","open"]},Jh={closed:"close",open:"open",waiting:"waiting"},kT=2,PT=3,wT=3,ET=5e3,OT=15e3,RT=5e3,LT=200,Yh=1e3,sa=3e3,oa=3001,aa=3002,ca=3003,Zh=3004,xr=3005,la=3006,ef=3007,Xh=globalThis,xT=Xh.WebSocket?Xh.WebSocket:ra(),we={BUSY:"busy",FAILED:"failed",LOCAL:"local",REMOTE:"remote",TIMEOUT:"timeout"},MT=new Map([[sa,we.TIMEOUT],[oa,we.TIMEOUT],[aa,we.FAILED],[ca,we.FAILED],[Zh,we.TIMEOUT],[la,we.BUSY],[ef,we.TIMEOUT]]),IT=(()=>{class i extends vT{constructor(t,n){super("early",TT),n=Object.assign({helloBody:null,maxConsecutiveFailedHellos:wT,maxConsecutiveMissedHeartbeats:PT,requestedHeartbeatTimeout:ET,openTimeout:OT,welcomeTimeout:RT,Log:CT,WebSocket:xT},n);let r=_T(n.logLevel),s=new n.Log("default",this,r,n.loggerName),o=n.networkMonitor?new yT(()=>{let{type:c}=o,l=`Network changed${c?` to ${c}`:""}`;s.debug(l),this._close({code:Zh,reason:l})}):null;Object.defineProperties(this,{_busyWaitTimeout:{value:null,writable:!0},_consecutiveHeartbeatsMissed:{value:0,writable:!0},_cookie:{value:null,writable:!0},_eventObserver:{value:n.eventObserver},_heartbeatTimeout:{value:null,writable:!0},_hellosLeft:{value:n.maxConsecutiveFailedHellos,writable:!0},_instanceId:{value:++ST},_log:{value:s},_messageQueue:{value:[]},_networkMonitor:{value:o},_options:{value:n},_openTimeout:{value:null,writable:!0},_sendHeartbeatTimeout:{value:null,writable:!0},_serverUrl:{value:t},_welcomeTimeout:{value:null,writable:!0},_ws:{value:null,writable:!0}});let a={connecting:"info",early:"info",open:"info",waiting:"warning",closed:"info"};this.on("stateChanged",(c,...l)=>{c in Jh&&this.emit(Jh[c],...l);let d={name:c,group:"signaling",level:a[this.state]};if(c==="closed"){let[u]=l;d.payload={reason:u},d.level=u===we.LOCAL?"info":"error"}this._eventObserver.emit("event",d)}),this._eventObserver.emit("event",{name:this.state,group:"signaling",level:a[this.state]}),this._connect()}toString(){return`[TwilioConnection #${this._instanceId}: ${this._ws.url}]`}_close({code:t,reason:n}){if(this.state==="closed")return;this._openTimeout&&this._openTimeout.clear(),this._welcomeTimeout&&this._welcomeTimeout.clear(),this._heartbeatTimeout&&this._heartbeatTimeout.clear(),this._sendHeartbeatTimeout&&this._sendHeartbeatTimeout.clear(),this._networkMonitor&&this._networkMonitor.stop(),this._busyWaitTimeout&&t!==xr&&this._busyWaitTimeout.clear(),this._messageQueue.splice(0);let r=this._log;t===Yh?(r.debug("Closed"),this.transition("closed",null,[we.LOCAL])):(r.warn(`Closed: ${t} - ${n}`),t!==xr&&this.transition("closed",null,[MT.get(t)||we.REMOTE]));let{readyState:s}=this._ws,{WebSocket:o}=this._options;s!==o.CLOSING&&s!==o.CLOSED&&this._ws.close(t,n)}_connect(){let t=this._log;if(this.state==="waiting")this.transition("early");else if(this.state!=="early"){t.warn(`Unexpected state "${this.state}" for connecting to the TCMP server.`);return}this._ws=new this._options.WebSocket(this._serverUrl);let n=this._ws;t.debug("Created a new WebSocket:",n),n.addEventListener("close",s=>this._close(s));let{openTimeout:r}=this._options;this._openTimeout=new zt(()=>{let s=`Failed to open in ${r} ms`;this._close({code:ef,reason:s})},r),n.addEventListener("open",()=>{t.debug("WebSocket opened:",n),this._openTimeout.clear(),this._startHandshake(),this._networkMonitor&&this._networkMonitor.start()}),n.addEventListener("message",s=>{t.debug(`Incoming: ${s.data}`);try{s=JSON.parse(s.data)}
35catch(o){this.emit("error",o);return}switch(s.type){case"bad":this._handleBad(s);break;case"busy":this._handleBusy(s);break;case"bye":break;case"msg":this._handleMessage(s);case"heartbeat":this._handleHeartbeat();break;case"welcome":this._handleWelcome(s);break;default:this._log.debug(`Unknown message type: ${s.type}`),this.emit("error",new Error(`Unknown message type: ${s.type}`));break}})}_handleBad({reason:t}){let n=this._log;if(!["connecting","open"].includes(this.state)){n.warn(`Unexpected state "${this.state}" for handling a "bad" message from the TCMP server.`);return}if(this.state==="connecting"){n.warn(`Closing: ${aa} - ${t}`),this._close({code:aa,reason:t});return}n.debug(`Error: ${t}`),this.emit("error",new Error(t))}_handleBusy({cookie:t,keepAlive:n,retryAfter:r}){let s=this._log;if(!["connecting","waiting"].includes(this.state)){s.warn(`Unexpected state "${this.state}" for handling a "busy" message from the TCMP server.`);return}this._busyWaitTimeout&&this._busyWaitTimeout.clear(),this._welcomeTimeout&&this._welcomeTimeout.clear();let o=r<0?'Received terminal "busy" message':`Received "busy" message, retrying after ${r} ms`;if(r<0){s.warn(`Closing: ${la} - ${o}`),this._close({code:la,reason:o});return}let{maxConsecutiveFailedHellos:a}=this._options;this._hellosLeft=a,this._cookie=t||null,n?(s.warn(o),this._busyWaitTimeout=new zt(()=>this._startHandshake(),r)):(s.warn(`Closing: ${xr} - ${o}`),this._close({code:xr,reason:o}),this._busyWaitTimeout=new zt(()=>this._connect(),r)),this.transition("waiting",null,[n,r])}_handleHeartbeat(){if(this.state!=="open"){this._log.warn(`Unexpected state "${this.state}" for handling a "heartbeat" message from the TCMP server.`);return}this._heartbeatTimeout.reset()}_handleHeartbeatTimeout(){if(this.state!=="open")return;let t=this._log,{maxConsecutiveMissedHeartbeats:n}=this._options;t.debug(`Consecutive heartbeats missed: ${n}`);let r=`Missed ${n} "heartbeat" messages`;t.warn(`Closing: ${oa} - ${r}`),this._close({code:oa,reason:r})}_handleMessage({body:t}){if(this.state!=="open"){this._log.warn(`Unexpected state "${this.state}" for handling a "msg" message from the TCMP server.`);return}this.emit("message",t)}_handleWelcome({negotiatedTimeout:t}){let n=this._log;if(!["connecting","waiting"].includes(this.state)){n.warn(`Unexpected state "${this.state}" for handling a "welcome" message from the TCMP server.`);return}this.state==="waiting"&&(n.debug('Received "welcome" message, no need to retry connection.'),this._busyWaitTimeout.clear());let{maxConsecutiveMissedHeartbeats:r}=this._options,s=t*r,o=t-LT;this._welcomeTimeout.clear(),this._heartbeatTimeout=new zt(()=>this._handleHeartbeatTimeout(),s),this._messageQueue.splice(0).forEach(a=>this._send(a)),this._sendHeartbeatTimeout=new zt(()=>this._sendHeartbeat(),o),this.transition("open")}_handleWelcomeTimeout(){if(this.state!=="connecting")return;let t=this._log;if(this._hellosLeft<=0){let r="All handshake attempts failed";t.warn(`Closing: ${sa} - ${r}`),this._close({code:sa,reason:r});return}let{maxConsecutiveFailedHellos:n}=this._options;t.warn(`Handshake attempt ${n-this._hellosLeft} failed`),this._startHandshake()}_send(t){let{readyState:n}=this._ws,{WebSocket:r}=this._options;if(n===r.OPEN){let s=JSON.stringify(t);this._log.debug(`Outgoing: ${s}`);try{this._ws.send(s),this._sendHeartbeatTimeout&&this._sendHeartbeatTimeout.reset()}catch(o){let a="Failed to send message";this._log.warn(`Closing: ${ca} - ${a}`),this._close({code:ca,reason:a})}}}_sendHeartbeat(){this.state!=="closed"&&this._send({type:"heartbeat"})}_sendHello(){let{helloBody:t,requestedHeartbeatTimeout:n}=this._options,r={id:bT(),timeout:n,type:"hello",version:kT};this._cookie&&(r.cookie=this._cookie),t&&(r.body=t),this._send(r)}_sendOrEnqueue(t){if(this.state==="closed")return;(this.state==="open"?r=>this._send(r):r=>this._messageQueue.push(r))(t)}_startHandshake(){if(["early","waiting"].includes(this.state)&&this.transition("connecting"),this.state!=="connecting")return;this._hellosLeft--,this._sendHello();let{welcomeTimeout:t}=this._options;this._welcomeTimeout=new zt(()=>this._handleWelcomeTimeout(),t)}close(){this.state!=="closed"&&(this._sendOrEnqueue({type:"bye"}),this._close({code:Yh,reason:"Normal"}))}sendMessage(t){this._sendOrEnqueue({body:t,type:"msg"})}}return i.CloseReason=we,i})();tf.exports=IT});var nf=p(ua=>{"use strict";Object.defineProperty(ua,"__esModule",{value:!0});ua.getTurnCredentials=NT;var DT=da(),{ICE_VERSION:AT}
35=N(),{createTwilioError:jT,SignalingConnectionError:VT}=Pe(),qT=ne();function NT(i,e){return new Promise((t,n)=>{let s={networkMonitor:null,eventObserver:new qT.EventEmitter,helloBody:{edge:"roaming",preflight:!0,token:i,type:"ice",version:AT}},o=new DT(e,s),a=!1;o.once("close",()=>{a||(a=!0,n(new VT))}),o.on("message",c=>{let{code:l,message:d,ice_servers:u,type:m}=c;(m==="iced"||m==="error")&&!a&&(a=!0,m==="iced"?t(u):n(jT(l,d)),o.close())})})}});var rf=p(pa=>{"use strict";Object.defineProperty(pa,"__esModule",{value:!0});pa.makeStat=FT;function FT(i){if(i&&i.length){let e=Math.min(...i),t=Math.max(...i),n=i.reduce((r,s)=>r+s,0)/i.length;return{min:e,max:t,average:n}}return null}});var sf=p(ha=>{"use strict";Object.defineProperty(ha,"__esModule",{value:!0});ha.syntheticAudio=BT;function BT(){let i=pi(),e={},t=i.getOrCreate(e),n=t.createOscillator(),r=n.connect(t.createMediaStreamDestination());n.start();let s=r.stream.getAudioTracks()[0],o=s.stop;return s.stop=()=>{o.call(s),i.release(e)},s}});var of=p(fa=>{"use strict";Object.defineProperty(fa,"__esModule",{value:!0});fa.syntheticVideo=UT;function UT({width:i=640,height:e=480}={}){let t=Object.assign(document.createElement("canvas"),{width:i,height:e}),n=t.getContext("2d");n.fillStyle="green",n.fillRect(0,0,t.width,t.height);let r=!1;requestAnimationFrame(function c(){if(!r){let l=Math.round(Math.random()*255),d=Math.round(Math.random()*255),u=Math.round(Math.random()*255),m=Math.round(Math.random()*255);n.fillStyle=`rgba(${l}, ${d}, ${u}, ${m})`,n.fillRect(Math.random()*i,Math.random()*e,50,50),requestAnimationFrame(c)}});let o=t.captureStream(30).getTracks()[0],a=o.stop;return o.stop=()=>{r=!0,a.call(o)},o}});var ga=p((AI,af)=>{"use strict";var ma=class{constructor(){Object.defineProperties(this,{_samples:{value:[{denominator:0,numerator:0},{denominator:0,numerator:0}]}})}get(){let{_samples:e}=this,t=e[1].denominator-e[0].denominator||1/0;return(e[1].numerator-e[0].numerator)/t}putSample(e,t){let{_samples:n}=this;n.shift(),n.push({denominator:t,numerator:e})}};af.exports=ma});var _a=p((jI,cf)=>{"use strict";var{EventEmitter:$T}=ne(),WT=["signaling","room","media","quality","video-processor","preflight"],HT=["debug","error","info","warning"],va=class extends $T{constructor(e,t,n,r=null){super(),this.on("event",({name:s,group:o,level:a,payload:c})=>{if(typeof s!="string")throw n.error("Unexpected name: ",s),new Error("Unexpected name: ",s);if(!WT.includes(o))throw n.error("Unexpected group: ",o),new Error("Unexpected group: ",o);if(!HT.includes(a))throw n.error("Unexpected level: ",a),new Error("Unexpected level: ",a);let l=Date.now(),d=l-t,u=Object.assign({elapsedTime:d,level:a},c||{});e.publish(o,s,u);let m=Object.assign({elapsedTime:d,group:o,level:a,name:s,timestamp:l},c?{payload:c}:{}),f={debug:"debug",error:"error",info:"info",warning:"warn"}[a];n[f]("event",m),r&&o==="signaling"&&r.emit("event",m)})}};cf.exports=va});var ya=p((VI,uf)=>{"use strict";var zT=ne().EventEmitter,{getUserAgent:GT}=j(),QT=5,KT=50,JT=1e3,lf=globalThis,YT=lf.WebSocket?lf.WebSocket:ra(),{hardwareDevicePublisheriPad:XT,hardwareDevicePublisheriPhone:ZT}=N(),ek=j(),df=pt(),ba=class extends zT{constructor(e,t,n,r,s,o){super(),o=Object.assign({gateway:`${tk(r,s)}/v1/VideoEvents`,maxReconnectAttempts:QT,reconnectIntervalMs:KT,userAgent:GT(),WebSocket:YT},o),Object.defineProperties(this,{_connectTimestamp:{value:0,writable:!0},_eventQueue:{value:[]},_readyToConnect:{value:ek.defer()},_reconnectAttemptsLeft:{value:o.maxReconnectAttempts,writable:!0},_ws:{value:null,writable:!0},_WebSocket:{value:o.WebSocket}}),this._readyToConnect.promise.then(({roomSid:a,participantSid:c})=>{let l=this;this.on("disconnected",function d(u){if(l._session=null,u&&l._reconnectAttemptsLeft>0){l.emit("reconnecting"),nk(l,e,t,n,a,c,o);return}l.removeListener("disconnected",d)}),Ca(this,e,t,n,a,c,o)}).catch(()=>{})}connect(e,t){this._readyToConnect.resolve({roomSid:e,participantSid:t})}_publish(e){e.session=this._session,this._ws.send(JSON.stringify(e))}disconnect(){if(this._ws===null||this._ws.readyState===this._WebSocket.CLOSING||this._ws.readyState===this._WebSocket.CLOSED)return!1;try{this._ws.close()}catch(e){}
35return this.emit("disconnected"),!0}publish(e,t,n){return this._ws!==null&&(this._ws.readyState===this._WebSocket.CLOSING||this._ws.readyState===this._WebSocket.CLOSED)?!1:((typeof this._session=="string"?this._publish.bind(this):this._eventQueue.push.bind(this._eventQueue))({group:e,name:t,payload:n,timestamp:Date.now(),type:"event",version:1}),!0)}};function Ca(i,e,t,n,r,s,o){i._connectTimestamp=Date.now(),i._reconnectAttemptsLeft--,i._ws=new o.WebSocket(o.gateway);let a=i._ws;a.addEventListener("close",c=>{if(c.code===JT){i.emit("disconnected");return}i.emit("disconnected",new Error(`WebSocket Error ${c.code}: ${c.reason}`))}),a.addEventListener("message",c=>{ik(i,JSON.parse(c.data),o)}),a.addEventListener("open",()=>{let c={type:"connect",token:e,version:1};c.publisher={name:t,sdkVersion:n,userAgent:o.userAgent,participantSid:s,roomSid:r},df.isIpad()?c.publisher=Object.assign(Object.assign({},c.publisher),XT):df.isIphone()&&(c.publisher=Object.assign(Object.assign({},c.publisher),ZT)),a.send(JSON.stringify(c))})}function tk(i,e){return i==="prod"?`wss://sdkgw.${e}.twilio.com`:`wss://sdkgw.${i}-${e}.twilio.com`}function ik(i,e,t){switch(e.type){case"connected":i._session=e.session,i._reconnectAttemptsLeft=t.maxReconnectAttempts,i._eventQueue.splice(0).forEach(i._publish,i),i.emit("connected");break;case"error":i._ws.close(),i.emit("disconnected",new Error(e.message));break}}function nk(i,e,t,n,r,s,o){let a=Date.now()-i._connectTimestamp,c=o.reconnectIntervalMs-a;if(c>0){setTimeout(()=>{Ca(i,e,t,n,r,s,o)},c);return}Ca(i,e,t,n,r,s,o)}uf.exports=ba});var ff=p(mi=>{"use strict";Object.defineProperty(mi,"__esModule",{value:!0});mi.PreflightTest=void 0;mi.runPreflight=Sk;var fi=(Te(),_t(Ct)),Gt=N(),Qt=qh(),rk=Fh(),sk=Bh(),ok=nf(),Mr=rf(),ak=sf(),ck=of(),lk=j(),{WS_SERVER:dk}=N(),uk=_e(),pk=Ht(),Sa=ga(),hk=_a(),fk=ya(),{createSID:mk,sessionSID:gk}=Qs(),{SignalingConnectionTimeoutError:vk,MediaConnectionError:pf}=Pe(),hf=1e3,_k=10*hf,wt={mediaAcquired:"mediaAcquired",connected:"connected",mediaSubscribed:"mediaSubscribed",mediaStarted:"mediaStarted",dtlsConnected:"dtlsConnected",peerConnectionConnected:"peerConnectionConnected",iceConnected:"iceConnected"};function bk(i){return i!==null&&typeof i<"u"}var Ck=0,Ir=class extends pk{constructor(e,t){super(),this._testTiming=new Qt.Timer,this._dtlsTiming=new Qt.Timer,this._iceTiming=new Qt.Timer,this._peerConnectionTiming=new Qt.Timer,this._mediaTiming=new Qt.Timer,this._connectTiming=new Qt.Timer,this._sentBytesMovingAverage=new Sa,this._packetLossMovingAverage=new Sa,this._progressEvents=[],this._receivedBytesMovingAverage=new Sa;let n=t,{environment:r="prod",region:s="gll",duration:o=_k}=n,a=n.wsServer||dk(r,s);this._log=new uk("default",this,Gt.DEFAULT_LOG_LEVEL,Gt.DEFAULT_LOGGER_NAME),this._testDuration=o,this._instanceId=Ck++,this._testTiming.start(),this._runPreflightTest(e,r,a)}toString(){return`[Preflight #${this._instanceId}]`}stop(){this._stopped=!0}_generatePreflightReport(e){return this._testTiming.stop(),{testTiming:this._testTiming.getTimeMeasurement(),networkTiming:{dtls:this._dtlsTiming.getTimeMeasurement(),ice:this._iceTiming.getTimeMeasurement(),peerConnection:this._peerConnectionTiming.getTimeMeasurement(),connect:this._connectTiming.getTimeMeasurement(),media:this._mediaTiming.getTimeMeasurement()},stats:{jitter:(0,Mr.makeStat)(e?.jitter),rtt:(0,Mr.makeStat)(e?.rtt),packetLoss:(0,Mr.makeStat)(e?.packetLoss)},selectedIceCandidatePairStats:e?e.selectedIceCandidatePairStats:null,iceCandidateStats:e?e.iceCandidateStats:[],progressEvents:this._progressEvents,mos:(0,Mr.makeStat)(e?.mos)}}_executePreflightStep(e,t,n){return fi.__awaiter(this,void 0,void 0,function*(){this._log.debug("Executing step: ",e);let r=this._testDuration+10*hf;if(this._stopped)throw new Error("stopped");let s=Promise.resolve().then(t),o=null,a=new Promise((c,l)=>{o=setTimeout(()=>{l(n||new Error(`${e} timeout.`))},r)});try{return yield Promise.race([a,s])}finally{o!==null&&clearTimeout(o)}})}_collectNetworkTimings(e){return new Promise(t=>{let n;e.addEventListener("iceconnectionstatechange",()=>{e.iceConnectionState==="checking"&&this._iceTiming.start(),e.iceConnectionState==="connected"&&(this._iceTiming.stop(),this._updateProgress(wt.iceConnected),(!n||n&&n.state==="connected")&&t())}),e.addEventListener("connectionstatechange",()=>{e.connectionState==="connecting"&&this._peerConnectionTiming.start(),e.connectionState==="connected"&&(this._peerConnectionTiming.stop(),this._updateProgress(wt.peerConnectionConnected))});let s=e.getSenders().map(o=>o.transport).find(bk);typeof s<"u"&&(n=s,n.addEventListener("statechange",()=>{n.state==="connecting"&&this._dtlsTiming.start(),n.state==="connected"&&(this._dtlsTiming.stop(),this._updateProgress(wt.dtlsConnected),e.iceConnectionState==="connected"&&t())}))})}_setupInsights({token:e,environment:t=Gt.DEFAULT_ENVIRONMENT,realm:n=Gt.DEFAULT_REALM}){let r={},s=new fk(e,Gt.SDK_NAME,Gt.SDK_VERSION,t,n,r);s.connect("PREFLIGHT_ROOM_SID","PREFLIGHT_PARTICIPANT");let o=new hk(s,Date.now(),this._log),a=void 0;return{reportToInsights:({report:c})=>{var l,d;let u=c.stats.jitter||a,m=c.stats.rtt||a,f=c.stats.packetLoss||a,h=c.mos||a,_=new Map;
35c.iceCandidateStats.forEach(E=>{if(E.candidateType&&E.protocol){let C=_.get(E.candidateType)||[];C.indexOf(E.protocol)<0&&C.push(E.protocol),_.set(E.candidateType,C)}});let b=JSON.stringify(Object.fromEntries(_)),R={name:"report",group:"preflight",level:c.error?"error":"info",payload:{sessionSID:gk,preflightSID:mk("PF"),progressEvents:JSON.stringify(c.progressEvents),testTiming:c.testTiming,dtlsTiming:c.networkTiming.dtls,iceTiming:c.networkTiming.ice,peerConnectionTiming:c.networkTiming.peerConnection,connectTiming:c.networkTiming.connect,mediaTiming:c.networkTiming.media,selectedLocalCandidate:(l=c.selectedIceCandidatePairStats)===null||l===void 0?void 0:l.localCandidate,selectedRemoteCandidate:(d=c.selectedIceCandidatePairStats)===null||d===void 0?void 0:d.remoteCandidate,iceCandidateStats:b,jitterStats:u,rttStats:m,packetLossStats:f,mosStats:h,error:c.error}};o.emit("event",R),setTimeout(()=>s.disconnect(),2e3)}}}_runPreflightTest(e,t,n){return fi.__awaiter(this,void 0,void 0,function*(){let r=[],s=[],{reportToInsights:o}=this._setupInsights({token:e,environment:t});try{let a=[];r=yield this._executePreflightStep("Acquire media",()=>[(0,ak.syntheticAudio)(),(0,ck.syntheticVideo)({width:640,height:480})]),this._updateProgress(wt.mediaAcquired),this.emit("debug",{localTracks:r}),this._connectTiming.start();let c=yield this._executePreflightStep("Get turn credentials",()=>(0,ok.getTurnCredentials)(e,n),new vk);this._connectTiming.stop(),this._updateProgress(wt.connected);let l=new RTCPeerConnection({iceServers:c,iceTransportPolicy:"relay",bundlePolicy:"max-bundle"}),d=new RTCPeerConnection({iceServers:c,bundlePolicy:"max-bundle"});s.push(l),s.push(d),this._mediaTiming.start();let u=yield this._executePreflightStep("Setup Peer Connections",()=>fi.__awaiter(this,void 0,void 0,function*(){l.addEventListener("icecandidate",E=>E.candidate&&d.addIceCandidate(E.candidate)),d.addEventListener("icecandidate",E=>E.candidate&&l.addIceCandidate(E.candidate)),r.forEach(E=>l.addTrack(E));let h=new Promise(E=>{let C=[];d.addEventListener("track",U=>{C.push(U.track),C.length===r.length&&E(C)})}),b=yield l.createOffer();yield l.setLocalDescription(b),yield d.setRemoteDescription(b);let R=yield d.createAnswer();return yield d.setLocalDescription(R),yield l.setRemoteDescription(R),yield this._collectNetworkTimings(l),h}),new pf);this.emit("debug",{remoteTracks:u}),u.forEach(h=>{h.addEventListener("ended",()=>this._log.warn(h.kind+":ended")),h.addEventListener("mute",()=>this._log.warn(h.kind+":muted")),h.addEventListener("unmute",()=>this._log.warn(h.kind+":unmuted"))}),this._updateProgress(wt.mediaSubscribed),yield this._executePreflightStep("Wait for tracks to start",()=>new Promise(h=>{let _=document.createElement("video");_.autoplay=!0,_.playsInline=!0,_.muted=!0,_.srcObject=new MediaStream(u),a.push(_),this.emit("debugElement",_),_.oncanplay=h}),new pf),this._mediaTiming.stop(),this._updateProgress(wt.mediaStarted);let m=yield this._executePreflightStep("Collect stats for duration",()=>this._collectRTCStatsForDuration(this._testDuration,yk(),l,d)),f=yield this._executePreflightStep("Generate report",()=>this._generatePreflightReport(m));o({report:f}),this.emit("completed",f)}catch(a){let c=this._generatePreflightReport();o({report:Object.assign(Object.assign({},c),{error:a?.toString()})}),this.emit("failed",a,c)}finally{s.forEach(a=>a.close()),r.forEach(a=>a.stop())}})}_collectRTCStats(e,t,n){return fi.__awaiter(this,void 0,void 0,function*(){let r=yield(0,sk.getCombinedConnectionStats)({publisher:t,subscriber:n}),{timestamp:s,bytesSent:o,bytesReceived:a,packets:c,packetsLost:l,roundTripTime:d,jitter:u,selectedIceCandidatePairStats:m,iceCandidateStats:f}=r,h=e.jitter.length>0;if(e.jitter.push(u),e.rtt.push(d),this._sentBytesMovingAverage.putSample(o,s),this._receivedBytesMovingAverage.putSample(a,s),this._packetLossMovingAverage.putSample(l,c),h){e.outgoingBitrate.push(this._sentBytesMovingAverage.get()*1e3*8),e.incomingBitrate.push(this._receivedBytesMovingAverage.get()*1e3*8);let _=this._packetLossMovingAverage.get(),b=Math.min(100,_*100);e.packetLoss.push(b);let R=(0,rk.calculateMOS)(d,u,_);e.mos.push(R)}e.selectedIceCandidatePairStats||(e.selectedIceCandidatePairStats=m),e.iceCandidateStats.length===0&&(e.iceCandidateStats=f)})}_collectRTCStatsForDuration(e,t,n,r){return fi.__awaiter(this,void 0,void 0,function*(){let s=Date.now(),o=Math.min(1e3,e);yield(0,lk.waitForSometime)(o),yield this._collectRTCStats(t,n,r);let a=e-(Date.now()-s);return a>0&&(t=yield this._collectRTCStatsForDuration(a,t,n,r)),t})}_updateProgress(e){let t=Date.now()-this._testTiming.getTimeMeasurement().start;this._progressEvents.push({duration:t,name:e}
35),this.emit("progress",e)}};mi.PreflightTest=Ir;function yk(){return{mos:[],jitter:[],rtt:[],outgoingBitrate:[],incomingBitrate:[],packetLoss:[],selectedIceCandidatePairStats:null,iceCandidateStats:[]}}function Sk(i,e={}){return new Ir(i,e)}});var Dr=p((NI,mf)=>{"use strict";var Ta=class i{constructor(e,t){Object.defineProperties(this,{_isCancelable:{writable:!0,value:!0},_isCanceled:{writable:!0,value:!1},_onCancel:{value:t}}),Object.defineProperty(this,"_promise",{value:new Promise((n,r)=>{e(s=>{this._isCancelable=!1,n(s)},s=>{this._isCancelable=!1,r(s)},()=>this._isCanceled)})})}static reject(e){return new i(function(n,r){r(e)},function(){})}static resolve(e){return new i(function(n){n(e)},function(){})}cancel(){return this._isCancelable&&(this._isCanceled=!0,this._onCancel()),this}catch(){let e=[].slice.call(arguments),t=this._promise;return new i(function(r,s){t.catch(...e).then(r,s)},this._onCancel)}then(){let e=[].slice.call(arguments),t=this._promise;return new i(function(r,s){t.then(...e).then(r,s)},this._onCancel)}finally(){let e=[].slice.call(arguments),t=this._promise;return new i(function(r,s){t.finally(...e).then(r,s)},this._onCancel)}};mf.exports=Ta});var _f=p((FI,vf)=>{"use strict";var gf=Dr();function Tk(i,e,t,n){let r,s=new Error("Canceled");return new gf(function(a,c,l){let d;i(function(m){return l()?gf.reject(s):(d=e(m),t(d).then(function(h){if(l())throw s;return r=h(),r}))}).then(function(m){if(l())throw m.disconnect(),s;a(n(d,m))}).catch(function(m){c(m)})},function(){r&&r.cancel()})}vf.exports=Tk});var Cf=p((BI,bf)=>{"use strict";var kk=ne().EventEmitter,ka=class extends kk{constructor(e,t){super(),e=Object.assign({maxAudioBitrate:null,maxVideoBitrate:null},e),Object.defineProperties(this,{maxAudioBitrate:{value:e.maxAudioBitrate,writable:!0},maxVideoBitrate:{value:e.maxVideoBitrate,writable:!0},adaptiveSimulcast:{value:t}})}toJSON(){return{maxAudioBitrate:this.maxAudioBitrate,maxVideoBitrate:this.maxVideoBitrate}}update(e){e=Object.assign({maxAudioBitrate:this.maxAudioBitrate,maxVideoBitrate:this.maxVideoBitrate},e),["maxAudioBitrate","maxVideoBitrate"].reduce((n,r)=>(this[r]!==e[r]&&(this[r]=e[r],n=!0),n),!1)&&this.emit("changed")}};bf.exports=ka});var Pa=p(Ar=>{"use strict";var{isNonArrayObject:Pk}=j(),{typeErrors:gi,clientTrackSwitchOffControl:wk,videoContentPreferencesMode:Ek,subscriptionMode:Ok,trackPriority:yf,trackSwitchOffMode:Rk}=N();function Lk(i){let e=vi(i,"options.bandwidthProfile");return!i||e||(e=vi(i.video,"options.bandwidthProfile.video",[{prop:"contentPreferencesMode",values:Object.values(Ek)},{prop:"dominantSpeakerPriority",values:Object.values(yf)},{prop:"maxSubscriptionBitrate",type:"number"},{prop:"maxTracks",type:"number"},{prop:"mode",values:Object.values(Ok)},{prop:"clientTrackSwitchOffControl",values:Object.values(wk)},{prop:"trackSwitchOffMode",values:Object.values(Rk)}]),e)?e:i.video?"maxTracks"in i.video&&"clientTrackSwitchOffControl"in i.video?new TypeError("options.bandwidthProfile.video.maxTracks is deprecated. Use options.bandwidthProfile.video.clientTrackSwitchOffControl instead."):"renderDimensions"in i.video&&"contentPreferencesMode"in i.video?new TypeError("options.bandwidthProfile.video.renderDimensions is deprecated. Use options.bandwidthProfile.video.contentPreferencesMode instead."):Mk(i.video.renderDimensions):null}function xk(i,e){if(!(i instanceof e.LocalAudioTrack||i instanceof e.LocalDataTrack||i instanceof e.LocalVideoTrack||i instanceof e.MediaStreamTrack))throw gi.INVALID_TYPE("track","LocalAudioTrack, LocalVideoTrack, LocalDataTrack, or MediaStreamTrack")}function vi(i,e,t=[]){return typeof i>"u"?null:i===null||!Pk(i)?gi.INVALID_TYPE(e,"object"):t.reduce((n,{prop:r,type:s,values:o})=>{if(n||!(r in i))return n;let a=i[r];return s&&typeof a!==s?gi.INVALID_TYPE(`${e}.${r}`,s):s==="number"&&isNaN(a)?gi.INVALID_TYPE(`${e}.${r}`,s):Array.isArray(o)&&!o.includes(a)?gi.INVALID_VALUE(`${e}.${r}`,o):n},null)}function Mk(i){let e="options.bandwidthProfile.video.renderDimensions",t=vi(i,e);return i?t||Object.values(yf).reduce((n,r)=>n||vi(i[r],`${e}.${r}`,[{prop:"height",type:"number"},{prop:"width",type:"number"}]),null):t}Ar.validateBandwidthProfile=Lk;Ar.validateLocalTrack=xk;Ar.validateObject=vi});var Ea=p(($I,Sf)=>{"use strict";var Ik=Ht(),{buildLogLevels:Dk,valueToJSON:Ak}=j(),{DEFAULT_LOG_LEVEL:jk}=N(),Vk=_e(),qk=0,wa=class extends Ik{constructor(e,t,n){super(),n=Object.assign({logLevel:jk},n);let r=Dk(n.logLevel);Object.defineProperties(this,{_instanceId:{value:qk++},_log:{value:n.log?n.log.createLog("default",this):new Vk("default",this,r,n.loggerName)}
35,trackName:{enumerable:!0,value:e},trackSid:{enumerable:!0,value:t}})}toJSON(){return Ak(this)}toString(){return`[TrackPublication #${this._instanceId}: ${this.trackSid}]`}};Sf.exports=wa});var jr=p((WI,Tf)=>{"use strict";var Nk=Ea(),{typeErrors:Fk,trackPriority:Bk}=N(),Oa=class extends Nk{constructor(e,t,n,r){super(t.name,e.sid,r),Object.defineProperties(this,{_reemitSignalingEvent:{value:(...s)=>this.emit(s&&s.length?"warning":"warningsCleared",...s)},_reemitTrackEvent:{value:()=>this.emit(this.isTrackEnabled?"trackEnabled":"trackDisabled")},_signaling:{value:e},_unpublish:{value:n},isTrackEnabled:{enumerable:!0,get(){return this.track.kind==="data"?!0:this.track.isEnabled}},kind:{enumerable:!0,value:t.kind},priority:{enumerable:!0,get(){return e.updatedPriority}},track:{enumerable:!0,value:t}}),["disabled","enabled"].forEach(s=>t.on(s,this._reemitTrackEvent)),["warning","warningsCleared"].forEach(s=>e.on(s,this._reemitSignalingEvent))}toString(){return`[LocalTrackPublication #${this._instanceId}: ${this.trackSid}]`}setPriority(e){let t=Object.values(Bk);if(!t.includes(e))throw Fk.INVALID_VALUE("priority",t);return this._signaling.setPriority(e),this}unpublish(){return["disabled","enabled"].forEach(e=>this.track.removeListener(e,this._reemitTrackEvent)),["warning","warningsCleared"].forEach(e=>this._signaling.removeListener(e,this._reemitSignalingEvent)),this._unpublish(this),this}};Tf.exports=Oa});var Pf=p((HI,kf)=>{"use strict";var Uk=jr(),Ra=class extends Uk{constructor(e,t,n,r){super(e,t,n,r)}toString(){return`[LocalAudioTrackPublication #${this._instanceId}: ${this.trackSid}]`}};kf.exports=Ra});var Ef=p((zI,wf)=>{"use strict";var $k=jr(),La=class extends $k{constructor(e,t,n,r){super(e,t,n,r)}toString(){return`[LocalDataTrackPublication #${this._instanceId}: ${this.trackSid}]`}};wf.exports=La});var Rf=p((GI,Of)=>{"use strict";var Wk=jr(),xa=class extends Wk{constructor(e,t,n,r){super(e,t,n,r)}toString(){return`[LocalVideoTrackPublication #${this._instanceId}: ${this.trackSid}]`}};Of.exports=xa});var Ma=p((KI,xf)=>{"use strict";var{typeErrors:Hk,trackPriority:zk}=N(),{isIOS:Gk}=pt(),Lf=hi();function Qk(i){return class extends i{constructor(t,n,r,s,o,a,c){c=Object.assign({workaroundWebKitBug212780:Gk()&&typeof document=="object"&&typeof document.addEventListener=="function"&&typeof document.visibilityState=="string"},c),super(n,c),Object.defineProperties(this,{_isEnabled:{value:r,writable:!0},_isSwitchedOff:{value:s,writable:!0},_priority:{value:null,writable:!0},_setPriority:{value:o},_setRenderHint:{value:l=>{this._log.debug("updating render hint:",l),a(l)}},isEnabled:{enumerable:!0,get(){return this._isEnabled}},isSwitchedOff:{enumerable:!0,get(){return this._isSwitchedOff}},priority:{enumerable:!0,get(){return this._priority}},sid:{enumerable:!0,value:t},_workaroundWebKitBug212780:{value:c.workaroundWebKitBug212780},_workaroundWebKitBug212780Cleanup:{value:null,writable:!0}})}setPriority(t){let n=[null,...Object.values(zk)];if(!n.includes(t))throw Hk.INVALID_VALUE("priority",n);return this._priority!==t&&(this._priority=t,this._setPriority(t)),this}_setEnabled(t){this._isEnabled!==t&&(this._isEnabled=t,this.emit(this._isEnabled?"enabled":"disabled",this))}_setSwitchedOff(t){this._isSwitchedOff!==t&&(this._isSwitchedOff=t,this.emit(t?"switchedOff":"switchedOn",this))}attach(t){let n=super.attach(t);return this.mediaStreamTrack.enabled!==!0&&(this.mediaStreamTrack.enabled=!0,this.processedTrack&&(this.processedTrack.enabled=!0),this.processor&&this._captureFrames()),this._workaroundWebKitBug212780&&(this._workaroundWebKitBug212780Cleanup=this._workaroundWebKitBug212780Cleanup||Kk(this)),n}detach(t){let n=super.detach(t);return this._attachments.size===0&&(this.mediaStreamTrack.enabled=!1,this.processedTrack&&(this.processedTrack.enabled=!1),this._workaroundWebKitBug212780Cleanup&&(this._workaroundWebKitBug212780Cleanup(),this._workaroundWebKitBug212780Cleanup=null)),n}}}function Kk(i){let{_log:e,kind:t}=i;function n(r){r&&i._attachments.forEach(s=>{let o=i._elShims.get(s);s.paused&&o&&!o.pausedIntentionally()&&(e.info(`Playing inadvertently paused <${t}> element`),e.debug("Element:",s),e.debug("RemoteMediaTrack:",i),s.play().then(()=>{e.info(`Successfully played inadvertently paused <${t}> element`),e.debug("Element:",s),e.debug("RemoteMediaTrack:",i)}).catch(c=>{e.warn(`Error while playing inadvertently paused <${t}> element:`,{err:c,el:s,remoteMediaTrack:i})}))})}return Lf.onVisibilityChange(2,n),()=>{Lf.offVisibilityChange(2,n)}}xf.exports=Qk});var If=p((JI,Mf)=>{"use strict";var Jk=mo(),Yk=Ma(),Xk=Yk(Jk),Ia=class extends Xk{constructor(e,t,n,r,s,o,a){super(e,t,n,r,s,o,a)}toString(){return`[RemoteAudioTrack #${this._instanceId}: ${this.sid}]`}_start(){super._start(),this._dummyEl&&(this._disposeMediaElement?this._disposeMediaElement(this._dummyEl):this._dummyEl.srcObject=null,this._dummyEl=null)}setPriority(e){return super.setPriority(e)}};Mf.exports=Ia});var Vr=p((YI,Df)=>{"use strict";var Zk=Ea(),Da=class extends Zk{constructor(e,t){super(e.name,e.sid,t),Object.defineProperties(this,{_signaling:{value:e},_track:{value:null,writable:!0},isSubscribed:{enumerable:!0,get(){return!!this._track}},isTrackEnabled:{enumerable:!0,get(){return e.isEnabled}},kind:{enumerable:!0,value:e.kind},publishPriority:{enumerable:!0,get(){return e.priority}},track:{enumerable:!0,get(){return this._track}}});let{error:n,isEnabled:r,isSwitchedOff:s,priority:o}=e;e.on("updated",()=>
35{if(n!==e.error){n=e.error,this.emit("subscriptionFailed",e.error);return}r!==e.isEnabled&&(r=e.isEnabled,this.track&&this.track._setEnabled(e.isEnabled),this.emit(e.isEnabled?"trackEnabled":"trackDisabled")),s!==e.isSwitchedOff&&(this._log.debug(`${this.trackSid}: ${s?"OFF":"ON"} => ${e.isSwitchedOff?"OFF":"ON"}`),s=e.isSwitchedOff,this.track?(this.track._setSwitchedOff(e.isSwitchedOff),this.emit(s?"trackSwitchedOff":"trackSwitchedOn",this.track)):s&&this._log.warn("Track was not subscribed when switched Off.")),o!==e.priority&&(o=e.priority,this.emit("publishPriorityChanged",o))})}toString(){return`[RemoteTrackPublication #${this._instanceId}: ${this.trackSid}]`}_subscribed(e){!this._track&&e&&(this._track=e,this.emit("subscribed",e))}_unsubscribe(){if(this._track){let e=this._track;this._track=null,this.emit("unsubscribed",e)}}};Df.exports=Da});var jf=p((XI,Af)=>{"use strict";var eP=Vr(),Aa=class extends eP{constructor(e,t){super(e,t)}toString(){return`[RemoteAudioTrackPublication #${this._instanceId}: ${this.trackSid}]`}};Af.exports=Aa});var qf=p((ZI,Vf)=>{"use strict";var tP=wn(),{typeErrors:iP,trackPriority:nP}=N(),ja=class extends tP{constructor(e,t,n){super(t.id,"data",n),Object.defineProperties(this,{_isSwitchedOff:{value:!1,writable:!0},_priority:{value:null,writable:!0},isEnabled:{enumerable:!0,value:!0},isSwitchedOff:{enumerable:!0,get(){return this._isSwitchedOff}},maxPacketLifeTime:{enumerable:!0,value:t.maxPacketLifeTime},maxRetransmits:{enumerable:!0,value:t.maxRetransmits},ordered:{enumerable:!0,value:t.ordered},priority:{enumerable:!0,get(){return this._priority}},reliable:{enumerable:!0,value:t.maxPacketLifeTime===null&&t.maxRetransmits===null},sid:{enumerable:!0,value:e}}),t.on("message",r=>{this.emit("message",r,this)})}setPriority(e){let t=[null,...Object.values(nP)];if(!t.includes(e))throw iP.INVALID_VALUE("priority",t);return this._priority=e,this}_setEnabled(){}_setSwitchedOff(e){this._isSwitchedOff!==e&&(this._isSwitchedOff=e,this.emit(e?"switchedOff":"switchedOn",this))}};Vf.exports=ja});var Ff=p((e1,Nf)=>{"use strict";var rP=Vr(),Va=class extends rP{constructor(e,t){super(e,t)}toString(){return`[RemoteDataTrackPublication #${this._instanceId}: ${this.trackSid}]`}};Nf.exports=Va});var Uf=p((t1,Bf)=>{"use strict";var _i=class{constructor(e){Object.defineProperties(this,{_callback:{value:e}})}observe(){}unobserve(){}makeVisible(e){let t=this._makeFakeEntry(e,!0);this._callback([t])}makeInvisible(e){let t=this._makeFakeEntry(e,!1);this._callback([t])}_makeFakeEntry(e,t){return{target:e,isIntersecting:t}}},qa=class extends _i{},Na=class extends _i{resize(e){let t=this._makeFakeEntry(e,!0);this._callback([t])}};Bf.exports={NullIntersectionObserver:qa,NullResizeObserver:Na,NullObserver:_i}});var Gf=p((i1,zf)=>{"use strict";var sP=Ma(),Hf=Mo(),$f=hi(),{NullObserver:Wf}=Uf(),oP=ft(),aP=sP(Hf),cP=50,Fa=class extends aP{constructor(e,t,n,r,s,o,a){a=Object.assign({clientTrackSwitchOffControl:"auto",contentPreferencesMode:"auto",enableDocumentVisibilityTurnOff:!0},a),a=Object.assign({IntersectionObserver:typeof IntersectionObserver>"u"||a.clientTrackSwitchOffControl!=="auto"?Wf:IntersectionObserver,ResizeObserver:typeof ResizeObserver>"u"||a.contentPreferencesMode!=="auto"?Wf:ResizeObserver},a),super(e,t,n,r,s,o,a),Object.defineProperties(this,{_enableDocumentVisibilityTurnOff:{value:a.enableDocumentVisibilityTurnOff===!0&&a.clientTrackSwitchOffControl==="auto"},_documentVisibilityTurnOffCleanup:{value:null,writable:!0},_clientTrackSwitchOffControl:{value:a.clientTrackSwitchOffControl},_contentPreferencesMode:{value:a.contentPreferencesMode},_invisibleElements:{value:new WeakSet},_elToPipCallbacks:{value:new WeakMap},_elToPipWindows:{value:new WeakMap},_turnOffTimer:{value:new oP(()=>{this._setRenderHint({enabled:!1})},cP,!1)},_resizeObserver:{value:new a.ResizeObserver(c=>{c.find(d=>!this._invisibleElements.has(d.target))&&qr(this)})},_intersectionObserver:{value:new a.IntersectionObserver(c=>{let l=!1;
35c.forEach(d=>{!this._invisibleElements.has(d.target)!==d.isIntersecting&&(d.isIntersecting?(this._log.debug("intersectionObserver detected: Off => On"),this._invisibleElements.delete(d.target)):(this._log.debug("intersectionObserver detected: On => Off"),this._invisibleElements.add(d.target)),l=!0)}),l&&(Kt(this),qr(this))},{threshold:.25})}})}_start(e){let t=super._start.call(this,e);return Kt(this),t}switchOn(){if(this._clientTrackSwitchOffControl!=="manual")throw new Error('Invalid state. You can call switchOn only when bandwidthProfile.video.clientTrackSwitchOffControl is set to "manual"');return this._setRenderHint({enabled:!0}),this}switchOff(){if(this._clientTrackSwitchOffControl!=="manual")throw new Error('Invalid state. You can call switchOff only when bandwidthProfile.video.clientTrackSwitchOffControl is set to "manual"');return this._setRenderHint({enabled:!1}),this}setContentPreferences(e){if(this._contentPreferencesMode!=="manual")throw new Error('Invalid state. You can call switchOn only when bandwidthProfile.video.contentPreferencesMode is set to "manual"');return e.renderDimensions&&this._setRenderHint({renderDimensions:e.renderDimensions}),this}_unObservePip(e){let t=this._elToPipCallbacks.get(e);t&&(e.removeEventListener("enterpictureinpicture",t.onEnterPip),e.removeEventListener("leavepictureinpicture",t.onLeavePip),this._elToPipCallbacks.delete(e))}_observePip(e){if(!this._elToPipCallbacks.get(e)){let n=o=>this._onEnterPip(o,e),r=o=>this._onLeavePip(o,e),s=o=>this._onResizePip(o,e);e.addEventListener("enterpictureinpicture",n),e.addEventListener("leavepictureinpicture",r),this._elToPipCallbacks.set(e,{onEnterPip:n,onLeavePip:r,onResizePip:s})}}_onEnterPip(e,t){this._log.debug("onEnterPip");let n=e.pictureInPictureWindow;this._elToPipWindows.set(t,n);let{onResizePip:r}=this._elToPipCallbacks.get(t);n.addEventListener("resize",r),Kt(this)}_onLeavePip(e,t){this._log.debug("onLeavePip"),this._elToPipWindows.delete(t);let{onResizePip:n}=this._elToPipCallbacks.get(t);e.pictureInPictureWindow.removeEventListener("resize",n),Kt(this)}_onResizePip(){qr(this)}attach(e){let t=super.attach(e);return this._clientTrackSwitchOffControl==="auto"&&this._invisibleElements.add(t),this._intersectionObserver.observe(t),this._resizeObserver.observe(t),this._enableDocumentVisibilityTurnOff&&(this._documentVisibilityTurnOffCleanup=this._documentVisibilityTurnOffCleanup||dP(this)),this._observePip(t),t}detach(e){let t=super.detach(e);return(Array.isArray(t)?t:[t]).forEach(r=>{this._intersectionObserver.unobserve(r),this._resizeObserver.unobserve(r),this._invisibleElements.delete(r),this._unObservePip(r)}),this._attachments.size===0&&this._documentVisibilityTurnOffCleanup&&(this._documentVisibilityTurnOffCleanup(),this._documentVisibilityTurnOffCleanup=null),Kt(this),qr(this),t}addProcessor(){return super.addProcessor.apply(this,arguments)}removeProcessor(){return super.removeProcessor.apply(this,arguments)}toString(){return`[RemoteVideoTrack #${this._instanceId}: ${this.sid}]`}setPriority(e){return super.setPriority(e)}};function lP(i){if(!("documentPictureInPicture"in globalThis))return!1;let e=globalThis.documentPictureInPicture.window;if(!e)return!1;let t=new WeakSet(e.document.querySelectorAll("video"));return i._getAllAttachedElements().some(n=>t.has(n))}function Kt(i){if(i._clientTrackSwitchOffControl!=="auto")return;let e=i._getAllAttachedElements().filter(r=>!i._invisibleElements.has(r));(i._getAllAttachedElements().filter(r=>i._elToPipWindows.has(r)).length>0||lP(i)||document.visibilityState==="visible"&&e.length>0)===!0?(i._turnOffTimer.clear(),i._setRenderHint({enabled:!0}),Hf._ensureDocumentPipVideosPlaying(i)):i._turnOffTimer.isSet||i._turnOffTimer.start()}function qr(i){if(i._contentPreferencesMode!=="auto")return;let e=i._getAllAttachedElements().filter(r=>!i._invisibleElements.has(r)),t=i._getAllAttachedElements().map(r=>{let s=i._elToPipWindows.get(r);return s?{clientHeight:s.height,clientWidth:s.width}:{clientHeight:0,clientWidth:0}}),n=e.concat(t);if(n.length>0){let[{clientHeight:r,clientWidth:s}]=n.sort((a,c)=>c.clientHeight+c.clientWidth-a.clientHeight-a.clientWidth-1),o={height:r,width:s};i._setRenderHint({renderDimensions:o})}}function dP(i){function e(){Kt(i)}return $f.onVisibilityChange(1,e),()=>{$f.offVisibilityChange(1,e)}}zf.exports=Fa});var Kf=p((n1,Qf)=>{"use strict";var uP=Vr(),Ba=class extends uP{constructor(e,t){super(e,t)}toString(){return`[RemoteVideoTrackPublication #${this._instanceId}: ${this.trackSid}]`}};Qf.exports=Ba});var $a=p((r1,Yf)=>{"use strict";var pP=Ht(),hP=If(),fP=jf(),mP=qf(),gP=Ff(),vP=Gf(),_P=Kf(),We=j(),bP=0,Ua=class extends pP{constructor(e,t){super(),t=Object.assign({RemoteAudioTrack:hP,RemoteAudioTrackPublication:fP,RemoteDataTrack:mP,RemoteDataTrackPublication:gP,RemoteVideoTrack:vP,RemoteVideoTrackPublication:_P,tracks:[]},t);let n=CP(t.tracks),r=t.log.createLog("default",this),s=new Map(n.audioTracks),o=new Map(n.dataTracks),a=new Map(n.tracks),c=new Map(n.videoTracks);Object.defineProperties(this,{_RemoteAudioTrack:{value:t.RemoteAudioTrack},_RemoteAudioTrackPublication:{value:t.RemoteAudioTrackPublication},_RemoteDataTrack:{value:t.RemoteDataTrack},_RemoteDataTrackPublication:{value:t.RemoteDataTrackPublication},_RemoteVideoTrack:{value:t.RemoteVideoTrack},_RemoteVideoTrackPublication:{value:t.RemoteVideoTrackPublication},_audioTracks:{value:s},_dataTracks:{value:o},_instanceId:{value:++bP},_clientTrackSwitchOffControl:{value:t.clientTrackSwitchOffControl},_contentPreferencesMode:{value:t.contentPreferencesMode},_log:{value:r},_signaling:{value:e},_tracks:{value:a},_trackEventReemitters:{value:new Map},_trackPublicationEventReemitters:{value:new Map},_trackSignalingUpdatedEventCallbacks:{value:new Map},_videoTracks:{value:c},audioTracks:{enumerable:!0,value:new Map},dataTracks:{enumerable:!0,value:new Map},identity:{enumerable:!0,get(){return e.identity}},networkQualityLevel:{enumerable:!0,get(){return e.networkQualityLevel}},networkQualityStats:{enumerable:!0,get(){return e.networkQualityStats}},sid:{enumerable:!0,get(){return e.sid}},state:{enumerable:!0,get(){return e.state}},tracks:{enumerable:!0,value:new Map},videoTracks:{enumerable:!0,value:new Map},_MediaStream:{value:t.MediaStream},_mapMediaElement:{value:t.mapMediaElement},_disposeMediaElement:{value:t.disposeMediaElement}}),this._tracks.forEach(Jf.bind(null,this)),e.on("networkQualityLevelChanged",()=>
35this.emit("networkQualityLevelChanged",this.networkQualityLevel,this.networkQualityStats&&(this.networkQualityStats.audio||this.networkQualityStats.video)?this.networkQualityStats:null)),yP(this,e),r.info(`Created a new Participant${this.identity?`: ${this.identity}`:""}`)}_getTrackEvents(){return[["dimensionsChanged","trackDimensionsChanged"],["message","trackMessage"],["started","trackStarted"]]}_getTrackPublicationEvents(){return[]}toString(){return`[Participant #${this._instanceId}: ${this.sid}]`}_addTrack(e,t){let n=this._log;return this._tracks.has(t)?null:(this._tracks.set(t,e),{audio:this._audioTracks,video:this._videoTracks,data:this._dataTracks}[e.kind].set(t,e),Jf(this,e,t),n.info(`Added a new ${We.trackClass(e)}:`,t),n.debug(`${We.trackClass(e)}:`,e),e)}_addTrackPublication(e){let t=this._log;return this.tracks.has(e.trackSid)?null:(this.tracks.set(e.trackSid,e),{audio:this.audioTracks,data:this.dataTracks,video:this.videoTracks}[e.kind].set(e.trackSid,e),SP(this,e),t.info(`Added a new ${We.trackPublicationClass(e)}:`,e.trackSid),t.debug(`${We.trackPublicationClass(e)}:`,e),e)}_handleTrackSignalingEvents(){let{_log:e,_clientTrackSwitchOffControl:t,_contentPreferencesMode:n,_MediaStream:r,_mapMediaElement:s,_disposeMediaElement:o}=this,a=this;if(this.state==="disconnected")return;let c=this._RemoteAudioTrack,l=this._RemoteAudioTrackPublication,d=this._RemoteVideoTrack,u=this._RemoteVideoTrackPublication,m=this._RemoteDataTrack,f=this._RemoteDataTrackPublication,h=this._signaling;function _(C){let U={audio:l,data:f,video:u}[C.kind],G=new U(C,{log:e});a._addTrackPublication(G);let B=C.isSubscribed;B&&R(C),a._trackSignalingUpdatedEventCallbacks.set(C.sid,()=>{if(B!==C.isSubscribed){if(B=C.isSubscribed,B){R(C);return}E(C)}}),C.on("updated",a._trackSignalingUpdatedEventCallbacks.get(C.sid))}function b(C){C.isSubscribed&&C.setTrackTransceiver(null);let U=a._trackSignalingUpdatedEventCallbacks.get(C.sid);U&&(C.removeListener("updated",U),a._trackSignalingUpdatedEventCallbacks.delete(C.sid));let G=a.tracks.get(C.sid);G&&a._removeTrackPublication(G)}function R(C){let{isEnabled:U,name:G,kind:B,sid:I,trackTransceiver:K,isSwitchedOff:ye}=C,fe={audio:c,video:d,data:m}[B],Fe=a.tracks.get(I);if(!fe||B!==K.kind)return;let Se={log:e,name:G,clientTrackSwitchOffControl:t,contentPreferencesMode:n,mapMediaElement:s,disposeMediaElement:o};r&&(Se.MediaStream=r);let se=Oe=>h.updateSubscriberTrackPriority(I,Oe),Ge=Oe=>{C.isSubscribed&&h.updateTrackRenderHint(I,Oe)},me=B==="data"?new fe(I,K,Se):new fe(I,K,U,ye,se,Ge,Se);a._addTrack(me,Fe,K.id)}function E(C){let[U,G]=Array.from(a._tracks.entries()).find(([,I])=>I.sid===C.sid),B=a.tracks.get(C.sid);G&&a._removeTrack(G,B,U)}h.on("trackAdded",_),h.on("trackRemoved",b),h.tracks.forEach(_),h.on("stateChanged",function C(U){U==="disconnected"?(e.debug("Removing event listeners"),h.removeListener("stateChanged",C),h.removeListener("trackAdded",_),h.removeListener("trackRemoved",b)):U==="connected"&&(e.info("reconnected"),setTimeout(()=>a.emit("reconnected"),0))})}_removeTrack(e,t){if(!this._tracks.has(t))return null;this._tracks.delete(t),{audio:this._audioTracks,video:this._videoTracks,data:this._dataTracks}[e.kind].delete(t),(this._trackEventReemitters.get(t)||new Map).forEach((o,a)=>{e.removeListener(a,o)});let s=this._log;return s.info(`Removed a ${We.trackClass(e)}:`,t),s.debug(`${We.trackClass(e)}:`,e),e}_removeTrackPublication(e){if(e=this.tracks.get(e.trackSid),!e)return null;this.tracks.delete(e.trackSid),{audio:this.audioTracks,data:this.dataTracks,video:this.videoTracks}[e.kind].delete(e.trackSid),(this._trackPublicationEventReemitters.get(e.trackSid)||new Map).forEach((s,o)=>{e.removeListener(o,s)});let r=this._log;return r.info(`Removed a ${We.trackPublicationClass(e)}:`,e.trackSid),r.debug(`${We.trackPublicationClass(e)}:`,e),e}toJSON(){return We.valueToJSON(this)}};function CP(i){let e=i.map(s=>[s.id,s]),t=e.filter(s=>s[1].kind==="audio"),n=e.filter(s=>s[1].kind==="video"),r=e.filter(s=>s[1].kind==="data");return{audioTracks:t,dataTracks:r,tracks:e,videoTracks:n}}function yP(i,e){let t=i._log;i.state!=="disconnected"&&e.on("stateChanged",function n(r){t.debug("Transitioned to state:",r),i.emit(r,i),r==="disconnected"&&(t.debug("Removing Track event reemitters"),e.removeListener("stateChanged",n),i._tracks.forEach(s=>{let o=i._trackEventReemitters.get(s.id);s&&o&&o.forEach((a,c)=>{s.removeListener(c,a)})}),e.tracks.forEach(s=>{let o=i._tracks.get(s.id),a=i._trackEventReemitters.get(s.id);o&&a&&a.forEach((c,l)=>{o.removeListener(l,c)})}),i._trackEventReemitters.clear(),i.tracks.forEach(s=>
35{i._trackPublicationEventReemitters.get(s.trackSid).forEach((o,a)=>{s.removeListener(a,o)})}),i._trackPublicationEventReemitters.clear())})}function Jf(i,e,t){let n=new Map;i.state!=="disconnected"&&(i._getTrackEvents().forEach(r=>{let s=r[0],o=r[1];n.set(s,function(){let a=[o].concat([].slice.call(arguments));return i.emit(...a)}),e.on(s,n.get(s))}),i._trackEventReemitters.set(t,n))}function SP(i,e){let t=new Map;i.state!=="disconnected"&&(i._getTrackPublicationEvents().forEach(([n,r])=>{t.set(n,(...s)=>{i.emit(r,...s,e)}),e.on(n,t.get(n))}),i._trackPublicationEventReemitters.set(e.trackSid,t))}Yf.exports=Ua});var Zf=p((s1,Xf)=>{"use strict";var{asLocalTrack:TP,asLocalTrackPublication:kP,trackClass:Et}=j(),{typeErrors:mt,trackPriority:Wa}=N(),{validateLocalTrack:PP}=Pa(),{LocalAudioTrack:wP,LocalDataTrack:EP,LocalVideoTrack:OP}=kt(),RP=Pf(),LP=Ef(),xP=Rf(),MP=$a(),Ha=class extends MP{constructor(e,t,n){n=Object.assign({LocalAudioTrack:wP,LocalVideoTrack:OP,LocalDataTrack:EP,MediaStreamTrack,LocalAudioTrackPublication:RP,LocalVideoTrackPublication:xP,LocalDataTrackPublication:LP,shouldStopLocalTracks:!1,tracks:t},n);let r=n.shouldStopLocalTracks?new Set(t.filter(s=>s.kind!=="data")):new Set;super(e,n),Object.defineProperties(this,{_eventObserver:{value:n.eventObserver},_LocalAudioTrack:{value:n.LocalAudioTrack},_LocalDataTrack:{value:n.LocalDataTrack},_LocalVideoTrack:{value:n.LocalVideoTrack},_MediaStreamTrack:{value:n.MediaStreamTrack},_LocalAudioTrackPublication:{value:n.LocalAudioTrackPublication},_LocalDataTrackPublication:{value:n.LocalDataTrackPublication},_LocalVideoTrackPublication:{value:n.LocalVideoTrackPublication},_tracksToStop:{value:r},signalingRegion:{enumerable:!0,get(){return e.signalingRegion}}}),this._handleTrackSignalingEvents()}_addTrack(e,t,n){let r=super._addTrack(e,t);return r&&this.state!=="disconnected"&&this._addLocalTrack(e,n),r}_addLocalTrack(e,t){var n;let r=(n=e.noiseCancellation)===null||n===void 0?void 0:n.vendor;this._signaling.addTrack(e._trackSender,e.name,t,r),this._log.info(`Added a new ${Et(e,!0)}:`,e.id),this._log.debug(`${Et(e,!0)}:`,e)}_removeTrack(e,t){let n=super._removeTrack(e,t);return n&&this.state!=="disconnected"&&(this._signaling.removeTrack(e._trackSender),this._log.info(`Removed a ${Et(e,!0)}:`,e.id),this._log.debug(`${Et(e,!0)}:`,e)),n}_getTrackEvents(){return super._getTrackEvents.call(this).concat([["disabled","trackDisabled"],["enabled","trackEnabled"],["stopped","trackStopped"]])}toString(){return`[LocalParticipant #${this._instanceId}${this.sid?`: ${this.sid}`:""}]`}_handleTrackSignalingEvents(){let e=this._log;if(this.state==="disconnected")return;let t=o=>{let a=this._signaling.getPublication(o._trackSender);a&&(a.disable(),e.debug(`Disabled the ${Et(o,!0)}:`,o.id))},n=o=>{let a=this._signaling.getPublication(o._trackSender);a&&(a.enable(),e.debug(`Enabled the ${Et(o,!0)}:`,o.id))},r=o=>{let a=this._signaling.getPublication(o._trackSender);return a&&a.stop(),a},s=o=>{e.debug("Transitioned to state:",o),o==="disconnected"?(e.debug("Removing LocalTrack event listeners"),this._signaling.removeListener("stateChanged",s),this.removeListener("trackDisabled",t),this.removeListener("trackEnabled",n),this.removeListener("trackStopped",r),this._tracks.forEach(a=>{let c=r(a);c&&a._trackSender.removeClone(c._trackTransceiver)}),e.info(`LocalParticipant disconnected. Stopping ${this._tracksToStop.size} automatically-acquired LocalTracks`),this._tracksToStop.forEach(a=>{a.stop()})):o==="connected"&&(e.info("reconnected"),setTimeout(()=>
35this.emit("reconnected"),0))};this.on("trackDisabled",t),this.on("trackEnabled",n),this.on("trackStopped",r),this._signaling.on("stateChanged",s),this._tracks.forEach(o=>{this._addLocalTrack(o,Wa.PRIORITY_STANDARD),this._getOrCreateLocalTrackPublication(o).catch(a=>{e.warn(`Failed to get or create LocalTrackPublication for ${o}:`,a)})})}_getOrCreateLocalTrackPublication(e){let t=Nr(this.tracks,e);if(t)return Promise.resolve(t);let n=this._log,r=this,s=this._signaling.getPublication(e._trackSender);return s?new Promise((o,a)=>{function c(){let l=s.error;if(l){s.removeListener("updated",c),n.warn(`Failed to publish the ${Et(e,!0)}: ${l.message}`),r._removeTrack(e,e.id),setTimeout(()=>{r.emit("trackPublicationFailed",l,e)}),a(l);return}if(!r._tracks.has(e.id)){s.removeListener("updated",c),a(new Error(`The ${e} was unpublished`));return}if(!s.sid)return;s.removeListener("updated",c);let u={log:n,LocalAudioTrackPublication:r._LocalAudioTrackPublication,LocalDataTrackPublication:r._LocalDataTrackPublication,LocalVideoTrackPublication:r._LocalVideoTrackPublication};t=Nr(r.tracks,e);let m=b=>r.emit("trackWarning",b,t),f=()=>r.emit("trackWarningsCleared",t);t||(t=kP(e,s,b=>{t.removeListener("trackWarning",m),t.removeListener("trackWarningsCleared",f),r.unpublishTrack(b.track)},u),r._addTrackPublication(t)),t.on("warning",m),t.on("warningsCleared",f);let{state:_}=r._signaling;(_==="connected"||_==="connecting")&&(e._processorEventObserver&&e._processorEventObserver.on("event",b=>{r._eventObserver.emit("event",{name:b.name,payload:b.data,group:"video-processor",level:"info"})}),e.processedTrack&&(e._captureFrames(),e._setSenderMediaStreamTrack(!0))),_==="connected"&&setTimeout(()=>{r.emit("trackPublished",t)}),o(t)}s.on("updated",c)}):Promise.reject(new Error(`Unexpected error: The ${e} cannot be published`))}publishTrack(e,t){let n=Nr(this.tracks,e);if(n)return Promise.resolve(n);t=Object.assign({log:this._log,priority:Wa.PRIORITY_STANDARD,LocalAudioTrack:this._LocalAudioTrack,LocalDataTrack:this._LocalDataTrack,LocalVideoTrack:this._LocalVideoTrack,MediaStreamTrack:this._MediaStreamTrack},t);let r;try{r=TP(e,t)}catch(l){return Promise.reject(l)}let s=r.noiseCancellation,o=this._signaling.audioProcessors;s&&!o.includes(s.vendor)&&(this._log.warn(`${s.vendor} is not supported in this room. disabling it permanently`),s.disablePermanently());let a=Object.values(Wa);if(!a.includes(t.priority))return Promise.reject(mt.INVALID_VALUE("LocalTrackPublishOptions.priority",a));let c=this._addTrack(r,r.id,t.priority)||this._tracks.get(r.id);return this._getOrCreateLocalTrackPublication(c)}publishTracks(e){if(!Array.isArray(e))throw mt.INVALID_TYPE("tracks","Array of LocalAudioTrack, LocalVideoTrack, LocalDataTrack, or MediaStreamTrack");return Promise.all(e.map(this.publishTrack,this))}setBandwidthProfile(){this._log.warn("setBandwidthProfile is not implemented yet and may be available in future versions of twilio-video.js")}setNetworkQualityConfiguration(e){if(typeof e!="object"||e===null)throw mt.INVALID_TYPE("networkQualityConfiguration","NetworkQualityConfiguration");return["local","remote"].forEach(t=>{if(t in e&&(typeof e[t]!="number"||isNaN(e[t])))throw mt.INVALID_TYPE(`networkQualityConfiguration.${t}`,"number")}),this._signaling.setNetworkQualityConfiguration(e),this}setParameters(e){if(typeof e<"u"&&typeof e!="object")throw mt.INVALID_TYPE("encodingParameters","EncodingParameters, null or undefined");if(e){if(this._signaling.getParameters().adaptiveSimulcast&&e.maxVideoBitrate)throw mt.INVALID_TYPE("encodingParameters",'encodingParameters.maxVideoBitrate is not compatible with "preferredVideoCodecs=auto"');["maxAudioBitrate","maxVideoBitrate"].forEach(t=>{if(typeof e[t]<"u"&&typeof e[t]!="number"&&e[t]!==null)throw mt.INVALID_TYPE(`encodingParameters.${t}`,"number, null or undefined")})}else e===null&&(e={maxAudioBitrate:null,maxVideoBitrate:null});return this._signaling.setParameters(e),this}unpublishTrack(e){PP(e,{LocalAudioTrack:this._LocalAudioTrack,LocalDataTrack:this._LocalDataTrack,LocalVideoTrack:this._LocalVideoTrack,MediaStreamTrack:this._MediaStreamTrack});let t=this._tracks.get(e.id);if(!t||(this._signaling.getPublication(t._trackSender).publishFailed(new Error(`The ${t} was unpublished`)),t=this._removeTrack(t,t.id),!t))return null;let r=Nr(this.tracks,t);return r&&this._removeTrackPublication(r),r}unpublishTracks(e){if(!Array.isArray(e))throw mt.INVALID_TYPE("tracks","Array of LocalAudioTrack, LocalVideoTrack, LocalDataTrack, or MediaStreamTrack");return e.reduce((t,n)=>{let r=this.unpublishTrack(n);return r?t.concat(r):t},[])}};function Nr(i,e){return Array.from(i.values()).find(t=>t.track===e||t.track.mediaStreamTrack===e)||null}Xf.exports=Ha});var tm=p((o1,em)=>{"use strict";
35var za=class{constructor(){Object.defineProperties(this,{_connected:{writable:!0,value:!0}})}connect(){}disconnect(){return this._connected?(this._connected=!1,!0):!1}publish(){return this._connected}};em.exports=za});var rm=p((a1,nm)=>{"use strict";var{EventEmitter:IP}=ne(),{DEFAULT_NQ_LEVEL_LOCAL:Fr,DEFAULT_NQ_LEVEL_REMOTE:Br,MAX_NQ_LEVEL:im}=N(),{inRange:Ga}=j(),Qa=class extends IP{constructor(e){super(),e=Object.assign({local:Fr,remote:Br},e),Object.defineProperties(this,{local:{value:Ga(e.local,Fr,im)?e.local:Fr,writable:!0},remote:{value:Ga(e.remote,Br,im)?e.remote:Br,writable:!0}})}update(e){e=Object.assign({local:this.local,remote:this.remote},e),[["local",Fr,3],["remote",Br,3]].forEach(([t,n,r])=>{this[t]=typeof e[t]=="number"&&Ga(e[t],n,r)?e[t]:n})}};nm.exports=Qa});var om=p((c1,sm)=>{"use strict";var DP=$a(),Ka=class extends DP{constructor(e,t){super(e,t),this._handleTrackSignalingEvents(),this.once("disconnected",this._unsubscribeTracks.bind(this))}toString(){return`[RemoteParticipant #${this._instanceId}${this.sid?`: ${this.sid}`:""}]`}_addTrack(e,t,n){return super._addTrack(e,n)?(t._subscribed(e),this.emit("trackSubscribed",e,t),e):null}_addTrackPublication(e){let t=super._addTrackPublication(e);return t?(this.emit("trackPublished",t),t):null}_getTrackPublicationEvents(){return[...super._getTrackPublicationEvents(),["subscriptionFailed","trackSubscriptionFailed"],["trackDisabled","trackDisabled"],["trackEnabled","trackEnabled"],["publishPriorityChanged","trackPublishPriorityChanged"],["trackSwitchedOff","trackSwitchedOff"],["trackSwitchedOn","trackSwitchedOn"]]}_unsubscribeTracks(){this.tracks.forEach(e=>{if(e.isSubscribed){let t=e.track;e._unsubscribe(),this.emit("trackUnsubscribed",t,e)}})}_removeTrack(e,t,n){let r=this._tracks.get(n);return r?(super._removeTrack(r,n),t._unsubscribe(),this.emit("trackUnsubscribed",r,t),r):null}_removeTrackPublication(e){this._signaling.clearTrackHint(e.trackSid);let t=super._removeTrackPublication(e);return t?(this.emit("trackUnpublished",t),t):null}};sm.exports=Ka});var Ya=p((l1,am)=>
35{"use strict";var Ja=class{constructor(e,t){if(typeof e!="string")throw new Error("Track id must be a string");Object.defineProperties(this,{trackId:{value:e,enumerable:!0},trackSid:{value:t.trackSid,enumerable:!0},timestamp:{value:t.timestamp,enumerable:!0},ssrc:{value:t.ssrc,enumerable:!0},packetsLost:{value:typeof t.packetsLost=="number"?t.packetsLost:null,enumerable:!0},codec:{value:typeof t.codecName=="string"?t.codecName:null,enumerable:!0}})}};am.exports=Ja});var Za=p((d1,cm)=>{"use strict";var AP=Ya(),Xa=class extends AP{constructor(e,t,n){super(e,t),Object.defineProperties(this,{bytesSent:{value:typeof t.bytesSent=="number"?t.bytesSent:n?0:null,enumerable:!0},packetsSent:{value:typeof t.packetsSent=="number"?t.packetsSent:n?0:null,enumerable:!0},roundTripTime:{value:typeof t.roundTripTime=="number"?t.roundTripTime:n?0:null,enumerable:!0}})}};cm.exports=Xa});var dm=p((u1,lm)=>{"use strict";var jP=Za(),ec=class extends jP{constructor(e,t,n){super(e,t,n),Object.defineProperties(this,{audioLevel:{value:typeof t.audioInputLevel=="number"?t.audioInputLevel:null,enumerable:!0},jitter:{value:typeof t.jitter=="number"?t.jitter:null,enumerable:!0}})}};lm.exports=ec});var pm=p((p1,um)=>{"use strict";var VP=Za(),tc=class extends VP{constructor(e,t,n){super(e,t,n);let r=null;typeof t.frameWidthInput=="number"&&typeof t.frameHeightInput=="number"&&(r={},Object.defineProperties(r,{width:{value:t.frameWidthInput,enumerable:!0},height:{value:t.frameHeightInput,enumerable:!0}}));let s=null;typeof t.frameWidthSent=="number"&&typeof t.frameHeightSent=="number"&&(s={},Object.defineProperties(s,{width:{value:t.frameWidthSent,enumerable:!0},height:{value:t.frameHeightSent,enumerable:!0}})),Object.defineProperties(this,{captureDimensions:{value:r,enumerable:!0},dimensions:{value:s,enumerable:!0},captureFrameRate:{value:typeof t.frameRateInput=="number"?t.frameRateInput:null,enumerable:!0},frameRate:{value:typeof t.frameRateSent=="number"?t.frameRateSent:null,enumerable:!0},qualityLimitationReason:{value:["none","bandwidth","cpu","other"].find(o=>o===t.qualityLimitationReason)||null,enumerable:!0}})}};um.exports=tc});var nc=p((h1,hm)=>{"use strict";var qP=Ya(),ic=class extends qP{constructor(e,t){super(e,t),Object.defineProperties(this,{bytesReceived:{value:typeof t.bytesReceived=="number"?t.bytesReceived:null,enumerable:!0},packetsReceived:{value:typeof t.packetsReceived=="number"?t.packetsReceived:null,enumerable:!0},jitter:{value:typeof t.jitter=="number"?t.jitter:null,enumerable:!0}})}};hm.exports=ic});var mm=p((f1,fm)=>{"use strict";var NP=nc(),rc=class extends NP{constructor(e,t){super(e,t),Object.defineProperties(this,{audioLevel:{value:typeof t.audioOutputLevel=="number"?t.audioOutputLevel:null,enumerable:!0}})}};fm.exports=rc});var vm=p((m1,gm)=>{"use strict";var FP=nc(),sc=class extends FP{constructor(e,t){super(e,t);let n=null;typeof t.frameWidthReceived=="number"&&typeof t.frameHeightReceived=="number"&&(n={},Object.defineProperties(n,{width:{value:t.frameWidthReceived,enumerable:!0},height:{value:t.frameHeightReceived,enumerable:!0}})),Object.defineProperties(this,{dimensions:{value:n,enumerable:!0},frameRate:{value:typeof t.frameRateReceived=="number"?t.frameRateReceived:null,enumerable:!0},freezeCount:{value:typeof t.freezeCount=="number"?t.freezeCount:null,enumerable:!0}})}};gm.exports=sc});var ac=p((g1,_m)=>{"use strict";var BP=dm(),UP=pm(),$P=mm(),WP=vm(),oc=class{constructor(e,t,n){if(typeof e!="string")throw new Error("RTCPeerConnection id must be a string");Object.defineProperties(this,{peerConnectionId:{value:e,enumerable:!0},localAudioTrackStats:{value:t.localAudioTrackStats.map(r=>new BP(r.trackId,r,n)),enumerable:!0},localVideoTrackStats:{value:t.localVideoTrackStats.map(r=>new UP(r.trackId,r,n)),enumerable:!0},remoteAudioTrackStats:{value:t.remoteAudioTrackStats.map(r=>new $P(r.trackId,r)),enumerable:!0},remoteVideoTrackStats:{value:t.remoteVideoTrackStats.map(r=>new WP(r.trackId,r)),enumerable:!0}})}};_m.exports=oc});var ym=p((v1,Cm)=>{"use strict";var bm=hi(),cc=$e(),lc=class{constructor(e){if(!e)throw new Error("ApplicationMonitor requires a log instance");this._log=e,this._visibilityChangeHandler=null,this._boundHandleBeforeUnload=this._handleBeforeUnload.bind(this),this._setupVisibilityMonitoring(),this._setupBeforeUnloadMonitoring()}_setupVisibilityMonitoring(){if(typeof window>"u"||typeof document>"u"){this._log.debug("Not in browser environment, skipping setup of ApplicationMonitor");return}this._visibilityChangeHandler=e=>this._handleVisibilityChange(e);try{bm.onVisibilityChange(1,this._visibilityChangeHandler),this._log.debug("ApplicationMonitor visibility monitoring initialized")}catch(e){this._log.error("Error initializing ApplicationMonitor visibility monitoring:",e)}}_setupBeforeUnloadMonitoring(){try{window.addEventListener("beforeunload",this._boundHandleBeforeUnload),this._log.debug("ApplicationMonitor beforeunload monitoring initialized")}catch(e){this._log.error("Error initializing ApplicationMonitor beforeunload monitoring:",e)}}cleanup(){this._log.debug("Cleaning up application event monitors"),this._visibilityChangeHandler&&(bm.offVisibilityChange(1,this._visibilityChangeHandler),this._visibilityChangeHandler=null),typeof window<"u"&&this._boundHandleBeforeUnload&&window.removeEventListener("beforeunload",this._boundHandleBeforeUnload)}_handleVisibilityChange(e){e?cc.application.resumed():cc.application.backgrounded()}_handleBeforeUnload(){cc.application.terminated()}};Cm.exports=lc});var Tm=p((_1,Sm)=>{"use strict";var{boolToString:HP}=j(),zP=$e(),dc=class{constructor(e){if(!e)throw new Error("NetworkMonitor requires a log instance");this._log=e,this._networkInformationHandler=null,this._setupNetworkInformationAPI()}_setupNetworkInformationAPI(){if(typeof globalThis.navigator>"u"||!globalThis.navigator.connection){this._log.debug("Network Information API not supported");return}let e=()=>{let t=navigator.connection;zP.network.informationChanged({downlink:t.downlink,downlinkMax:t.downlinkMax,effectiveType:t.effectiveType,rtt:t.rtt,saveData:typeof t.saveData=="boolean"?HP(t.saveData):void 0,type:t.type})};try{let t=navigator.connection;["change","typechange"].forEach(n=>{t.addEventListener(n,e)}),this._networkInformationHandler={stop:()=>{["change","typechange"].forEach(n=>{t.removeEventListener(n,e)})}},this._log.debug("Network Information API monitoring initialized")}catch(t){this._log.error("Error initializing Network Information API monitoring:",t)}}cleanup(){this._log.debug("Cleaning up network monitoring"),this._networkInformationHandler&&(this._networkInformationHandler.stop(),this._networkInformationHandler=null)}};
35Sm.exports=dc});var wm=p((b1,Pm)=>{"use strict";var GP=(Te(),_t(Ct));function km(){return typeof globalThis<"u"&&typeof globalThis.PressureObserver=="function"?globalThis.PressureObserver:null}var uc=class{constructor(){this._lastCpuPressure=null,this._cpuPressureObserver=null,this._sampleInterval=2e3,this._cpuPressureChangeListeners=[]}watchCpuPressure(e){return GP.__awaiter(this,void 0,void 0,function*(){if(typeof e!="function")throw new Error("The CPU pressure change callback must be a function");let t=km();if(!t)throw new Error("PressureObserver is not supported in this environment");this._cpuPressureChangeListeners.push(e),this._cpuPressureObserver||(this._cpuPressureObserver=new t(n=>this._handleCpuPressureRecords(n)),yield this._cpuPressureObserver.observe("cpu",{sampleInterval:this._sampleInterval}))})}isSupported(){return!!km()}unwatchCpuPressure(e){this._cpuPressureChangeListeners=this._cpuPressureChangeListeners.filter(t=>t!==e),this._cpuPressureChangeListeners.length===0&&this.cleanup()}_handleCpuPressureRecords(e){if(!Array.isArray(e)||e.length===0)return;let t=e[e.length-1];if(!t)return;t.state!==this._lastCpuPressure&&(this._lastCpuPressure=t.state,this._cpuPressureChangeListeners.forEach(r=>r(t)))}cleanup(){this._cpuPressureObserver&&(this._cpuPressureObserver.disconnect(),this._cpuPressureObserver=null),this._cpuPressureChangeListeners=[],this._lastCpuPressure=null}};Pm.exports=new uc});var Om=p((C1,Em)=>{"use strict";var pc=wm(),QP=$e(),hc=class{constructor(e){if(!e)throw new Error("ResourceMonitor requires a log instance");this._log=e,this._cpuPressureHandler=null,this._setupCPUMonitoring()}_setupCPUMonitoring(){if(!pc.isSupported()){this._log.debug("CPU pressure monitoring not supported");return}this._cpuPressureHandler=e=>{this._log.debug("CPU pressure changed:",e),QP.system.cpuPressureChanged(e.state)},pc.watchCpuPressure(this._cpuPressureHandler).then(()=>{this._log.debug("CPU pressure monitoring initialized")}
35).catch(e=>{this._log.error("Error initializing CPU pressure monitoring:",e)})}cleanup(){this._log.debug("Cleaning up resource monitors"),this._cpuPressureHandler&&(pc.unwatchCpuPressure(this._cpuPressureHandler),this._cpuPressureHandler=null)}};Em.exports=hc});var Lm=p((y1,Rm)=>{"use strict";var KP=ym(),JP=Tm(),YP=Om(),fc=class{constructor(e){if(!e)throw new Error("MonitorRegistry requires a log instance");this._log=e,this._monitors=[new KP(e),new JP(e),new YP(e)]}cleanup(){this._monitors.forEach(e=>{try{e.cleanup()}catch(t){this._log.warn("Failed to cleanup monitor:",t)}})}};Rm.exports=fc});var Dm=p((S1,Im)=>{"use strict";var XP=Ht(),ZP=om(),e0=ac(),t0=Lm(),mc=$e(),{flatMap:i0,valueToJSON:n0}=j(),r0=0,gc=class extends XP{constructor(e,t,n){super();let r=n.log.createLog("default",this),s=new Map;Object.defineProperties(this,{_log:{value:r},_clientTrackSwitchOffControl:{value:n.clientTrackSwitchOffControl||"disabled"},_contentPreferencesMode:{value:n.contentPreferencesMode||"disabled"},_instanceId:{value:++r0},_options:{value:n},_participants:{value:s},_signaling:{value:t},_insightsMonitors:{value:n.eventObserver&&n.insights?new t0(r):null},dominantSpeaker:{enumerable:!0,get(){return this.participants.get(t.dominantSpeakerSid)||null}},isRecording:{enumerable:!0,get(){return t.recording.isEnabled||!1}},localParticipant:{enumerable:!0,value:e},name:{enumerable:!0,value:t.name},participants:{enumerable:!0,value:s},sid:{enumerable:!0,value:t.sid},state:{enumerable:!0,get(){return t.state}},mediaRegion:{enumerable:!0,value:t.mediaRegion}}),o0(this,e),a0(this,t.recording),c0(this,t),s0(this),r.info("Created a new Room:",this.name),r.debug("Initial RemoteParticipants:",Array.from(this._participants.values()))}toString(){return this._instanceId?`[Room #${this._instanceId}: ${this.sid}]`:"[Room (uninitialized)]"}disconnect(){return this._log.info("Disconnecting"),this._signaling.disconnect(),this}getStats(){return this._signaling.getStats().then(e=>Array.from(e).map(([t,n])=>new e0(t,Object.assign({},n,{localAudioTrackStats:xm(this,n.localAudioTrackStats),localVideoTrackStats:xm(this,n.localVideoTrackStats)}))))}refreshInactiveMedia(){let{tracks:e}=this.localParticipant,t=Array.from(e.values()).filter(({track:{kind:a}})=>a!=="data").map(({track:a})=>a),n=i0(this.participants,a=>Array.from(a.tracks.values())).filter(({track:a})=>a&&a.kind!=="data").map(({track:a})=>a),r=t.concat(n),s=new Event("unmute");t.forEach(({isMuted:a,mediaStreamTrack:c})=>{a&&c.dispatchEvent(s)});let o=new Event("pause");return r.forEach(({_attachments:a,_elShims:c})=>a.forEach(l=>{let d=c.get(l);l.paused&&d&&!d.pausedIntentionally()&&l.dispatchEvent(o)})),this}toJSON(){return n0(this)}};function s0(i){let e=i.localParticipant._signaling.audioProcessors;i.localParticipant.audioTracks.forEach(({track:t})=>{let n=t.noiseCancellation;n&&!e.includes(n.vendor)&&(i._log.warn(`${n.vendor} is not supported in this room. disabling it permanently`),n.disablePermanently())})}function xm(i,e){let t=i.localParticipant._signaling;return e.reduce((n,r)=>{let s=t.tracks.get(r.trackId),o=t.getSender(s);return o?[Object.assign({},r,{trackId:o.id})].concat(n):n},[])}function Mm(i,e){let{_log:t,_clientTrackSwitchOffControl:n,_contentPreferencesMode:r,_options:{MediaStream:s,mapMediaElement:o,disposeMediaElement:a}}=i,c=new ZP(e,{log:t,clientTrackSwitchOffControl:n,contentPreferencesMode:r,MediaStream:s,mapMediaElement:o,disposeMediaElement:a});t.info("A new RemoteParticipant connected:",c),i._participants.set(c.sid,c),i.emit("participantConnected",c);let l=[["reconnected","participantReconnected"],["reconnecting","participantReconnecting"],"trackDimensionsChanged","trackDisabled","trackEnabled","trackMessage","trackPublished","trackPublishPriorityChanged","trackStarted","trackSubscribed","trackSubscriptionFailed","trackSwitchedOff","trackSwitchedOn","trackUnpublished","trackUnsubscribed"].map(d=>{let[u,m]=Array.isArray(d)?d:[d,d];function f(){let h=[].slice.call(arguments);h.unshift(m),h.push(c),i.emit(...h)}return c.on(u,f),[u,f]});c.once("disconnected",function(){let u=i.dominantSpeaker;t.info("RemoteParticipant disconnected:",c),i._participants.delete(c.sid),l.forEach(m=>{c.removeListener(m[0],m[1])}),i.emit("participantDisconnected",c),c===u&&i.emit("dominantSpeakerChanged",i.dominantSpeaker)})}function o0(i,e){let t=["trackWarning","trackWarningsCleared"].map(n=>({eventName:n,handler:(...r)=>i.emit(n,...r,e)}));t.forEach(({eventName:n,handler:r})=>e.on(n,r)),i.once("disconnected",()=>t.forEach(({eventName:n,handler:r})=>e.removeListener(n,r)))}function a0(i,e){e.on("updated",function(){let n=e.isEnabled;i._log.info(`Recording ${n?"started":"stopped"}`),i.emit(`recording${n?"Started":"Stopped"}`)})}function c0(i,e){let t=i._log;t.debug("Creating a new RemoteParticipant for each ParticipantSignaling in the RoomSignaling"),e.participants.forEac
35h(Mm.bind(null,i)),t.debug("Setting up RemoteParticipant creation for all subsequent ParticipantSignalings that connect to the RoomSignaling"),e.on("participantConnected",Mm.bind(null,i)),e.on("dominantSpeakerChanged",()=>i.emit("dominantSpeakerChanged",i.dominantSpeaker)),e.on("transcription",n=>i.emit("transcription",n)),e.on("stateChanged",function n(r,s){switch(t.info("Transitioned to state:",r),r){case"disconnected":mc.room.disconnected(),i.participants.forEach(o=>{o._unsubscribeTracks()}),i.emit(r,i,s),i.localParticipant.tracks.forEach(o=>{o.unpublish()}),i._insightsMonitors&&i._insightsMonitors.cleanup(),e.removeListener("stateChanged",n);break;case"reconnecting":mc.room.reconnecting(s),setTimeout(()=>i.emit("reconnecting",s),0);break;default:mc.room.reconnected(),setTimeout(()=>i.emit("reconnected"),0)}})}Im.exports=gc});var _c=p((T1,Am)=>{"use strict";var vc=class{constructor(e){Object.defineProperties(this,{_min:{value:e.min||100},_max:{value:e.max||1e4},_jitter:{value:e.jitter>0&&e.jitter<=1?e.jitter:0},_factor:{value:e.factor||2},_attempts:{value:0,writable:!0},_duration:{enumerable:!1,get(){let t=this._min*Math.pow(this._factor,this._attempts);if(this._jitter){let n=Math.random(),r=Math.floor(n*this._jitter*t);t=(Math.floor(n*10)&1)===0?t-r:t+r}return Math.min(t,this._max)|0}},_timeoutID:{value:null,writable:!0}})}backoff(e){let t=this._duration;this._timeoutID&&(clearTimeout(this._timeoutID),this._timeoutID=null),this._timeoutID=setTimeout(()=>{this._attempts++,e()},t)}reset(){this._attempts=0,this._timeoutID&&(clearTimeout(this._timeoutID),this._timeoutID=null)}};Am.exports=vc});var Vm=p((k1,jm)=>{"use strict";var{difference:bc,flatMap:He}=j();function Cc(){return String(Math.floor(Math.random()*4294967295))}var yc=class{constructor(e,t,n){Object.defineProperties(this,{cName:{enumerable:!0,value:n},isSimulcastEnabled:{enumerable:!0,value:!1,writable:!0},primarySSRCs:{enumerable:!0,value:new Set},rtxPairs:{enumerable:!0,value:new Map},streamId:{enumerable:!0,value:t},trackId:{enumerable:!0,value:e}})}addSimulcastSSRCs(){if(this.isSimulcastEnabled)return;let e=[Cc(),Cc()];e.forEach(function(t){this.primarySSRCs.add(t)},this),this.rtxPairs.size&&e.forEach(function(t){this.rtxPairs.set(Cc(),t)},this)}addSSRC(e,t,n){t?this.rtxPairs.set(e,t):this.primarySSRCs.add(e),this.isSimulcastEnabled=this.isSimulcastEnabled||n}toSdpLines(e){let t=e?[]:Array.from(this.rtxPairs.entries()).map(c=>c.reverse()),n=Array.from(this.primarySSRCs.values()),r=t.length?He(t):n,s=He(r,c=>[`a=ssrc:${c} cname:${this.cName}`,`a=ssrc:${c} msid:${this.streamId} ${this.trackId}`]),o=t.map(c=>`a=ssrc-group:FID ${c.join(" ")}`),a=[`a=ssrc-group:SIM ${n.join(" ")}`];return o.concat(s).concat(a)}};function Ur(i,e){return(i.match(new RegExp(e,"gm"))||[]).map(n=>(n.match(new RegExp(e))||[]).slice(1))}function l0(i){let e="^a=ssrc-group:SIM ([0-9]+) ([0-9]+) ([0-9]+)$";return new Set(He(Ur(i,e)))}function d0(i,e,t){let n=`a=ssrc:${e} ${t}:(.+)`;return i.match(new RegExp(n))[1]}function u0(i){let e="^a=ssrc-group:FID ([0-9]+) ([0-9]+)$";return new Map(Ur(i,e).map(t=>t.reverse()))}function p0(i){let[e,t]=He(Ur(i,"^a=msid:(.+) (.+)$"));return He(Ur(i,"^a=ssrc:(.+) cname:.+$")).map(r=>[r,e,t])}function h0(i){let e=l0(i),t=u0(i);return p0(i).reduce((r,s)=>{let o=s[0],a=s[1],c=s[2],l=r.get(c)||new yc(c,a,d0(i,o,"cname")),d=t.get(o)||null;return l.addSSRC(o,d,e.has(o)),r.set(c,l)},new Map)}function f0(i,e){let t=h0(i),n=Array.from(t.keys()),r=Array.from(e.keys()),s=bc(n,r),o=bc(r,n);He(s,h=>t.get(h)).forEach(h=>{h.addSimulcastSSRCs(),e.set(h.trackId,h)}),r=Array.from(e.keys());let c=bc(r,o),l=He(c,h=>e.get(h)),d=!i.match(/a=rtpmap:[0-9]+ rtx/),u=He(l,h=>h.toSdpLines(d)),m=He(new Set(i.split(`\r 36`).concat(u))),f="a=x-google-flag:conference";return i.match(f)||m.push(f),m.join(`\r 37`)}jm.exports=f0});var $r=p(pe=>{"use strict";var{difference:m0,flatMap:qm}=j(),g0=Vm(),Nm={0:"PCMU",8:"PCMA"};function Ci(i){return Array.from(Sc(i)).reduce((e,t)=>{let n=t[0],r=t[1],s=e.get(r)||[];return e.set(r,s.concat(n))},new Map)}function Fm(i){return Ne(i).reduce((e,t)=>{let n=bi(t);return n?e.set(n,t):e},new Map)}function Sc(i){return yi(i).reduce((e,t)=>
37{if(e.has(t))return e;let n=new RegExp(`a=rtpmap:${t} ([^/]+)`),r=i.match(n),s=r?r[1].toLowerCase():Nm[t]?Nm[t].toLowerCase():"";return e.set(t,s)},new Map)}function v0(i,e){let t=new RegExp(`^a=fmtp:${i} (.+)$`,"m"),n=e.match(t);return n&&n[1].split(";").reduce((r,s)=>{let[o,a]=s.split("=");return r[o]=isNaN(a)?a:parseInt(a,10),r},{})}function bi(i){let e=i.match(/^a=mid:(.+)$/m);return e&&e[1]}function Ne(i,e,t){return i.replace(/\r\n\r\n$/,`\r 38`).split(`\r 39m=`).slice(1).map(n=>`m=${n}`).filter(n=>{let r=new RegExp(`m=${e||".*"}`,"gm"),s=new RegExp(`a=${t||".*"}`,"gm");return r.test(n)&&s.test(n)})}function yi(i){let t=i.split(`\r 40`)[0].match(/([0-9]+)/g);return t?t.slice(1).map(n=>parseInt(n,10)):[]}function Um(i,e){let t=e.split(`\r 41`),n=t[0],r=t.slice(1);return n=n.replace(/([0-9]+\s?)+$/,i.join(" ")),[n].concat(r).join(`\r 42`)}function _0(i,e){let t=Ne(i);return[i.split(`\r 43m=`)[0]].concat(t.map(r=>{if(r=r.replace(/\r\n$/,""),!/^m=video/.test(r))return r;let s=Ci(r),o=yi(r),a=new Set(s.get("vp8")||[]);return o.some(l=>a.has(l))?g0(r,e):r})).concat("").join(`\r 44`)}function b0(i,e,t,n=!1){let r=Fm(t),s=Fm(e),o=Ne(i);return[i.split(`\r 45m=`)[0]].concat(o.map(c=>{if(c=c.replace(/\r\n$/,""),!/^m=video/.test(c))return c;let l=c.match(/^a=mid:(.+)$/m),d=l&&l[1];if(!d)return c;let u=r.get(d),m=Sc(u),f=yi(u),h=f.length&&m.get(f[0])==="vp8";return n||!h?s.get(d).replace(/\r\n$/,""):c})).concat("").join(`\r 46`)}function C0(i,e,t){let n=Array.from(t).reduce((r,[s,o])=>(Ne(i,s,"send(only|recv)").map(bi).filter(l=>!e.has(l)).forEach((l,d)=>r.set(l,o[d])),r),new Map);return $m(i,n)}function $m(i,e){let t=Ne(i);return[i.split(`\r 47m=`)[0]].concat(t.map(r=>{if(!/^m=(audio|video)/.test(r))return r;let s=bi(r);if(!s)return r;let o=e.get(s);if(!o)return r;let a=(r.match(/^a=msid:(.+)$/m)||[])[1];if(!a)return r;let[c,l]=a.split(" "),d=new RegExp(`msid:${c}${l?` ${l}`:""}$`,"gm");return r.replace(d,`msid:${c} ${o}`)})).join(`\r 48`)}function y0(i,e){return i.split(`\r 49`).filter(t=>!e.find(n=>new RegExp("a=ssrc:.*"+n+":","g").test(t))).join(`\r 50`)}function S0(i){let e=Ne(i);return[i.split(`\r 51m=`)[0]].concat(e.map(n=>{if(!/^m=video/.test(n))return n;let s=Ci(n).get("rtx");if(!s)return n;let o=new Set(yi(n));s.forEach(d=>o.delete(d));let a=n.match(/a=ssrc-group:FID [0-9]+ ([0-9]+)/),c=a&&a[1],l=[/^a=fmtp:.+ apt=.+$/,/^a=rtpmap:.+ rtx\/.+$/,/^a=ssrc-group:.+$/].concat(c?[new RegExp(`^a=ssrc:${c} .+$`)]:[]);return n=n.split(`\r 52`).filter(d=>l.every(u=>!u.test(d))).join(`\r 53`),Um(Array.from(o),n)})).join(`\r 54`)}function Bm(i,e){let t=Object.entries(e).map(([n,r])=>`${n}=${r}`).join(";");return`a=fmtp:${i} ${t}`}function T0(i){let e=Ne(i);return[i.split(`\r 55m=`)[0]].concat(e.map(n=>{if(!/^m=(audio|video)/.test(n))return n;let r=new Set(yi(n));return n.split(`\r 56`).filter(s=>{let o=s.match(/^a=(fmtp|rtpmap|rtcp-fb):(\d+)/);if(!o)return!0;let a=parseInt(o[2],10);return r.has(a)}).join(`\r 57`)})).join(`\r 58`)}function k0(i,e){let t=Ne(i),n=i.split(`\r 59m=`)[0];return e=e||t.filter(r=>/^m=audio/.test(r)).map(bi),[n].concat(t.map(r=>{if(!/^m=audio/.test(r))return r;let o=Ci(r).get("opus");if(!o)return r;let a=v0(o,r);if(!a)return r;let c=Bm(o,a),l=bi(r);e.includes(l)?a.usedtx=1:delete a.usedtx;let d=Bm(o,a);return r.replace(c,d)})).join(`\r 60`)}function P0(i,e){e=e.map(({codec:s})=>s.toLowerCase());let t=qm(e,s=>i.get(s)||[]),n=m0(Array.from(i.keys()),e),r=qm(n,s=>i.get(s));return t.concat(r)}function w0(i,e,t){let n=Ne(i);return[i.split(`\r 61m=`)[0]].concat(n.map(s=>{if(!/^m=(audio|video)/.test(s))return s;let o=s.match(/^m=(audio|video)/)[1],a=Ci(s),l=P0(a,o==="audio"?e:t),d=Um(l,s),u=a.get("pcma")||[],m=a.get("pcmu")||[];return(o==="audio"?new Set(u.concat(m)):new Set).has(l[0])?d.replace(/\r\nb=(AS|TIAS):([0-9]+)/g,""):d})).join(`\r 62`)}pe.addOrRewriteNewTrackIds=C0;pe.addOrRewriteTrackIds=$m;pe.createCodecMapForMediaSection=Ci;pe.createPtToCodecName=Sc;pe.disableRtx=S0;pe.enableDtxForOpus=k0;pe.getMediaSections=Ne;pe.removeUnreferencedCodecAttributes=T0;pe.removeSSRCAttributes=y0;pe.revertSimulcast=b0;pe.setCodecPreferences=w0;pe.setSimulcast=_0});var Hm=p((w1,Wm)=>{"use strict";var Tc=class{constructor(e){e=Object.assign({getKey:function(n){return n},getValue:function(n){return n},isLessThanOrEqualTo:function(n,r){return n<=r}},e),Object.defineProperties(this,{_getKey:{value:e.getKey},_getValue:{value:e.getValue},_isLessThanOrEqualTo:{value:e.isLessThanOrEqualTo},_map:{value:new Map}})}toMap(){return new Map(this._map)}updateAndFilter(e){return e.filter(this.update,this)}update(e){let t=this._getKey(e),n=this._getValue(e);return this._map.has(t)&&this._isLessThanOrEqualTo(n,this._map.get(t))?!1:(this._map.set(t,n),!0)}};Wm.exports=Tc});var Gm=p((E1,zm)=>{"use strict";var E0=Hm(),kc=class{constructor(){Object.defineProperties(this,{_filter:{value:new E0({getKey:function(t){return t.ufrag},isLessThanOrEqualTo:function(t,n){return t.revision<=n.revision}})},_ufrag:{writable:!0,value:null},ufrag:{enumerable:!0,get(){return this._ufrag}}})}setUfrag(e){this._ufrag=e;let t=this._filter.toMap().get(e);return t?t.candidates:[]}update(e){e.candidates=e.candidates||[];let t=this._filter.toMap().get(e.ufrag),n=t?t.candidates:[];return this._filter.update(e)&&this._ufrag===e.ufrag?e.candidates.slice(n.length):[]}};zm.exports=kc});var Km=p((O1,Qm)=>{"use strict";var{ICE_ACTIVITY_CHECK_PERIOD_MS:O0,ICE_INACTIVITY_THRESHOLD_MS:R0}=N(),Pc=class{constructor(e,t){t=Object.assign({activityCheckPeriodMs:O0,inactivityThresholdMs:R0},t),Object.defineProperties(this,{_activityCheckPeriodMs:{value:t.activityCheckPeriodMs},_inactivityThresholdMs:{value:t.inactivityThresholdMs},_lastActivity:{value:null,writable:!0},_peerConnection:{value:e},_timer:{value:null,writable:!0},_onIceConnectionStateChanged:{value:null,writable:!0}})}_getActivePairStat(e){return Array.from(e.values()).find(r=>r.type==="candidate-pair"&&r.nominated)||{bytesReceived:0,timestamp:Math.round(new Date().getTime())}}_getIceConnectionStats(){return this._peerConnection.getStats().then(e=>this._getActivePairStat(e)).catch(()=>null)}_scheduleInactivityCallback(e){e&&this._onIceConnectionStateChanged===null?(this._onIceConnectionStateChanged=()=>{this._peerConnection.iceConnectionState==="disconnected"&&e()},this._peerConnection.addEventListener?this._peerConnection.addEventListener("iceconnectionstatechange",this._onIceConnectionStateChanged):this._peerConnection.oniceconnectionstatechange=this._onIceConnectionStateChanged):!e&&this._onIceConnectionStateChanged&&(this._peerConnection.removeEventListener?this._peerConnection.removeEventListener("iceconnectionstatechange",this._onIceConnectionStateChanged):this._peerConnection.oniceconnectionstatechange=null,this._onIceConnectionStateChanged=null)}start(e){this.stop(),this._timer=setInterval(()=>{this._getIceConnectionStats().then(t=>{t&&((!this._lastActivity||this._lastActivity.bytesReceived!==t.bytesReceived)&&(this._lastActivity=t,this._scheduleInactivityCallback(null)),t.timestamp-this._lastActivity.timestamp>=this._inactivityThresholdMs&&(this._peerConnection.iceConnectionState==="disconnected"?e():this._onIceConnectionStateChanged===null&&this._scheduleInactivityCallback(e)))})},this._activityCheckPeriodMs)}stop(){this._scheduleInactivityCallback(null),this._timer!==null&&(clearInterval(this._timer),this._timer=null,this._lastActivity=null)}};Qm.exports=Pc});var Ym=p((R1,Jm)=>{"use strict";var{EventEmitter:L0}=ne(),wc=class extends L0{constructor(e){super(),Object.defineProperties(this,{_dataChannel:{value:e},_messageQueue:{value:[]}}),e.addEventListener("open",()=>
62{this._messageQueue.splice(0).forEach(t=>this._publish(t))}),e.addEventListener("message",({data:t})=>{try{let n=JSON.parse(t);this.emit("message",n)}catch(n){}}),this.publish({type:"ready"})}_publish(e){let t=JSON.stringify(e);try{this._dataChannel.send(t)}catch(n){}}publish(e){let t=this._dataChannel;return t.readyState==="closing"||t.readyState==="closed"?!1:t.readyState==="connecting"?(this._messageQueue.push(e),!0):(this._publish(e),!0)}};Jm.exports=wc});var Zm=p((L1,Xm)=>{"use strict";var x0=jo(),M0=Ym(),Ec=class extends x0{constructor(e){super(e.label,e.maxPacketLifeTime,e.maxRetransmits,e.ordered),Object.defineProperties(this,{_dataChannel:{value:e}}),e.binaryType="arraybuffer",e.addEventListener("message",t=>{this.emit("message",t.data)}),e.addEventListener("close",()=>{this.emit("close")})}stop(){this._dataChannel.close(),super.stop()}toDataTransport(){return new M0(this._dataChannel)}};Xm.exports=Ec});var tg=p((x1,eg)=>{"use strict";var I0=Po(),Oc=class extends I0{constructor(e,t){super(e,t)}};eg.exports=Oc});var ng=p((M1,ig)=>{"use strict";var{getMediaSections:D0}=$r(),Rc=class{constructor(){Object.defineProperties(this,{_midsToTrackIds:{value:new Map,writable:!0}})}match(e){return this._midsToTrackIds.get(e.transceiver.mid)||null}update(e){let t=D0(e,"(audio|video)");this._midsToTrackIds=t.reduce((n,r)=>{let s=r.match(/^a=mid:(.+)$/m)||[],o=r.match(/^a=msid:.+ (.+)$/m)||[],a=s[1],c=o[1];return a&&c?n.set(a,c):n},this._midsToTrackIds)}};ig.exports=Rc});var og=p((I1,sg)=>{"use strict";var{createPtToCodecName:A0,getMediaSections:j0}=$r();function V0(i){let e={type:i.type};return i.type!=="rollback"&&(e.sdp=q0(i.sdp)),new RTCSessionDescription(e)}function q0(i){let e=j0(i);return[i.split(`\r 63m=`)[0]].concat(e.map(N0)).join(`\r 64`)}function N0(i){let e=A0(i);i=B0(i,e),i=F0(i);let t=U0(e),n=t.get("rtx")||new Set,r=new Set,s=$0(i,e,n,r),o=W0(s,r),a=Array.from(r);return["h264","vp8","vp9"].reduce((d,u)=>{let m=t.get(u)||new Set;return Array.from(m).reduce((f,h)=>o.has(h)?f:f.add(h),d)},new Set).forEach(d=>{if(a.length){let u=a.shift();i=rg(i,u),i=z0(i,u,d)}}),a.forEach(d=>{i=rg(i,d),i=H0(i,d)}),i}function F0(i){let e=i.split(`\r 65`),t=new Map,n=96;for(let r=0;r<e.length;r++){let s=e[r].match(/^a=rtpmap:(\d+) ([^/]+)/);if(s){let o=parseInt(s[1],10),a=s[2].toLowerCase();if(t.has(o)&&t.get(o)!==a){for(;t.has(n)||n===o;)n++;let c=n;t.set(c,a),e[r]=e[r].replace(`a=rtpmap:${o}`,`a=rtpmap:${c}`);for(let l=r+1;l<e.length;l++)e[l].match(new RegExp(`^a=(fmtp|rtcp-fb):${o}\\b`))&&(e[l]=e[l].replace(new RegExp(`^a=(fmtp|rtcp-fb):${o}\\b`),`a=$1:${c}`))}else t.set(o,a)}}return e.join(`\r 66`)}function B0(i,e){return Array.from(e.keys()).reduce((t,n)=>{let r=new RegExp(`^a=rtpmap:${n} rtx.+$`,"gm");return(t.match(r)||[]).slice(e.get(n)==="rtx"?1:0).reduce((s,o)=>{let a=new RegExp(`\r 67${o}`),c=new RegExp(`\r 68a=fmtp:${n} apt=[0-9]+`);return s.replace(a,"").replace(c,"")},t)},i)}function U0(i){let e=new Map;return i.forEach((t,n)=>{let r=e.get(t)||new Set;return e.set(t,r.add(n))}),e}function $0(i,e,t,n){return Array.from(t).reduce((r,s)=>{let o=new RegExp(`a=fmtp:${s} apt=(\\d+)`),a=i.match(o);if(!a)return n.add(s),r;let c=Number.parseInt(a[1]);return!e.has(c)||e.get(c)==="rtx"?(n.add(s),r):r.set(s,c)},new Map)}function W0(i,e){let t=Array.from(i).reduce((n,r)=>{let s=r[0],o=r[1],a=n.get(o)||new Set;return n.set(o,a.add(s))},new Map);return Array.from(t).reduce((n,r)=>{let s=r[0],o=Array.from(r[1]);return o.length>1?(o.forEach(a=>{e.add(a)}),n):n.set(s,o[0])},new Map)}function rg(i,e){let t=new RegExp(`a=fmtp:${e}.*\r 69`,"gm");return i.replace(t,"")}function H0(i,e){let t=new RegExp(`a=rtpmap:${e}.*\r 70`,"gm");return i.replace(t,"")}function z0(i,e,t){return i.endsWith(`\r 71`)?`${i}a=fmtp:${e} apt=${t}\r 72`:`${i}\r 73a=fmtp:${e} apt=${t}`}sg.exports=V0});var Cg=p((D1,bg)=>{"use strict";var G0=_c(),{RTCPeerConnection:Q0,getStats:K0}=Tn(),gg=ae(),{DEFAULT_ICE_GATHERING_TIMEOUT_MS:J0,DEFAULT_LOG_LEVEL:Y0,DEFAULT_SESSION_TIMEOUT_SEC:X0,iceRestartBackoffConfig:Z0}=N(),{addOrRewriteNewTrackIds:ew,addOrRewriteTrackIds:tw,createCodecMapForMediaSection:vg,disableRtx:ag,enableDtxForOpus:Wr,getMediaSections:Si,removeUnreferencedCodecAttributes:iw,removeSSRCAttributes:cg,revertSimulcast:nw,setCodecPreferences:rw,setSimulcast:sw}=$r(),ow=ft(),{MediaClientLocalDescFailedError:Lc,MediaClientRemoteDescFailedError:xc}=Pe(),{buildLogLevels:aw,isChromeScreenShareTrack:cw,oncePerTick:lw,defer:dw}=j(),uw=Gm(),pw=Km(),hw=Zm(),fw=tg(),mw=Pt(),gw=_e(),vw=ng(),lg=og(),re=$e(),Ic=gg.guessBrowser(),dg=Ic==="chrome",Jt=Ic==="firefox",_w=Ic==="safari",bw=0,Cw={open:["closed","updating"],updating:["closed","open"],closed:[]},Mc=class extends mw{constructor(e,t,n,r){super("open",Cw),r=Object.assign({enableDscp:!1,dummyAudioMediaStreamTrack:null,isChromeScreenShareTrack:cw,iceServers:[],logLevel:Y0,offerOptions:{},revertSimulcast:nw,sessionTimeout:X0*1e3,setCodecPreferences:rw,setSimulcast:sw,Backoff:G0,IceConnectionMonitor:pw,RTCIceCandidate,RTCPeerConnection:Q0,RTCSessionDescription,Timeout:ow},r);let s=fg(Object.assign({},r,r.rtcConfiguration)),o=aw(r.logLevel),a=r.RTCPeerConnection;r.enableDscp===!0&&(r.chromeSpecificConstraints=r.chromeSpecificConstraints||{},r.chromeSpecificConstraints.optional=r.chromeSpecificConstraints.optional||[],r.chromeSpecificConstraints.optional.pu
73sh({googDscp:!0}));let c=r.log?r.log.createLog("webrtc",this):new gw("webrtc",this,o,r.loggerName),l=new a(s,{chromeSpecificConstraints:r.chromeSpecificConstraints,applyCodecPreferences:u=>this._applyCodecPreferencesToTransceiver(u)});r.dummyAudioMediaStreamTrack&&l.addTrack(r.dummyAudioMediaStreamTrack),Object.defineProperties(this,{_appliedTrackIdsToAttributes:{value:new Map,writable:!0},_dataChannels:{value:new Map},_dataTrackReceivers:{value:new Set},_descriptionRevision:{writable:!0,value:0},_didGenerateLocalCandidates:{writable:!0,value:!1},_dtlsTransport:{writable:!0,value:null},_enableDscp:{value:r.enableDscp},_encodingParameters:{value:t},_isChromeScreenShareTrack:{value:r.isChromeScreenShareTrack},_iceGatheringFailed:{value:!1,writable:!0},_iceGatheringTimeout:{value:new r.Timeout(()=>this._handleIceGatheringTimeout(),J0,!1)},_iceRestartBackoff:{value:new r.Backoff(Z0)},_instanceId:{value:++bw},_isIceConnectionInactive:{writable:!0,value:!1},_isIceLite:{writable:!0,value:!1},_isIceRestartBackoffInProgress:{writable:!0,value:!1},_isRestartingIce:{writable:!0,value:!1},_lastIceConnectionState:{writable:!0,value:null},_lastStableDescriptionRevision:{writable:!0,value:0},_localCandidates:{writable:!0,value:[]},_localCodecs:{value:new Set},_localCandidatesRevision:{writable:!0,value:1},_localDescriptionWithoutSimulcast:{writable:!0,value:null},_localDescription:{writable:!0,value:null},_localUfrag:{writable:!0,value:null},_log:{value:c},_eventObserver:{value:r.eventObserver},_remoteCodecMaps:{value:new Map},_rtpSenders:{value:new Map},_rtpNewSenders:{value:new Set},_iceConnectionMonitor:{value:new r.IceConnectionMonitor(l)},_mediaTrackReceivers:{value:new Set},_needsAnswer:{writable:!0,value:!1},_negotiationRole:{writable:!0,value:null},_offerOptions:{writable:!0,value:r.offerOptions},_onEncodingParametersChanged:{value:lw(()=>{this._needsAnswer||_g(this)})},_peerConnection:{value:l},_preferredAudioCodecs:{value:n.audio},_preferredVideoCodecs:{value:n.video},_shouldApplyDtx:{value:n.audio.every(({codec:u})=>u!=="opus")||n.audio.some(({codec:u,dtx:m})=>u==="opus"&&m)},_queuedDescription:{writable:!0,value:null},_iceReconnectTimeout:{value:new r.Timeout(()=>{c.debug("ICE reconnect timed out"),this.close()},r.sessionTimeout,!1)},_recycledTransceivers:{value:{audio:[],video:[]}},_replaceTrackPromises:{value:new Map},_remoteCandidates:{writable:!0,value:new uw},_setSimulcast:{value:r.setSimulcast},_revertSimulcast:{value:r.revertSimulcast},_setCodecPreferences:{value:r.setCodecPreferences},_RTCIceCandidate:{value:r.RTCIceCandidate},_RTCPeerConnection:{value:r.RTCPeerConnection},_RTCSessionDescription:{value:r.RTCSessionDescription},_shouldOffer:{writable:!0,value:!1},_shouldRestartIce:{writable:!0,value:!1},_trackIdsToAttributes:{value:new Map,writable:!0},_trackMatcher:{writable:!0,value:null},_mediaTrackSenderToPublisherHints:{value:new Map},id:{enumerable:!0,value:e}}),t.on("changed",this._onEncodingParametersChanged),re.pc.signalingState(this.id,l.signalingState),re.pc.iceGatheringState(this.id,l.iceGatheringState),re.pc.iceConnectionState(this.id,l.iceConnectionState),re.pc.connectionState(this.id,this.connectionState),l.addEventListener("connectionstatechange",this._handleConnectionStateChange.bind(this)),l.addEventListener("datachannel",this._handleDataChannelEvent.bind(this)),l.addEventListener("icecandidate",this._handleIceCandidateEvent.bind(this)),l.addEventListener("iceconnectionstatechange",this._handleIceConnectionStateChange.bind(this)),l.addEventListener("icegatheringstatechange",this._handleIceGatheringStateChange.bind(this)),l.addEventListener("signalingstatechange",this._handleSignalingStateChange.bind(this)),l.addEventListener("track",this._handleTrackEvent.bind(this));let d=this;this.on("stateChanged",function u(m){m==="closed"&&(d.removeListener("stateChanged",u),d._dataChannels.forEach((f,h)=>{d.removeDataTrackSender(h)}))})}toString(){return`[PeerConnectionV2 #${this._instanceId}: ${this.id}]`}setEffectiveAdaptiveSimulcast(e){this._log.debug("Setting setEffectiveAdaptiveSimulcast: ",e),this._preferredVideoCodecs.forEach(t=>{"adaptiveSimulcast"in t&&(t.adaptiveSimulcast=e)})}get _shouldApplySimulcast(){return!dg&&!_w?!1:this._preferredVideoCodecs.some(t=>t.codec.toLowerCase()==="vp8"&&t.simulcast&&t.adaptiveSimulcast!==!1)}get connectionState(){return this.iceConnectionState==="failed"?"failed":this._peerConnection.connectionState||this.iceConnectionState}get iceConnectionState(){return this._isIceConnectionInactive&&this._peerConnection.iceConnectionState==="disconnected"||this._iceGatheringFailed?"failed":this._peerConnection.iceConnectionState}get isApplicationSectionNegotiated(){return this._peerConnection.signalingState!=="closed"?this._peerConnection.localDescription?Si(this._peerConnection.localDescription.sdp,"application").length>0:!1:!0}get _isAdaptiveSimulcastEnabled(){let e=this._preferredVideoCodecs.find(t=>"adaptiveSimulcast"in t);return e&&e.adaptiveSimulcast===!0}_maybeUpdateEncodings(e,t,n=!1){if(e.kind!=="video"||e.readyState==="ended")return!1;let{height:r,width:s}=e.getSettings();if(typeof r!="number"||typeof s!="number")return!1;let o=gg.guessBrowser();return o==="safari"||o==="chrome"&&this._isAdaptiveSimulcastEnabled?(this._updateEncodings(e,t,n
73),!0):!1}_updateEncodings(e,t,n){if(this._isChromeScreenShareTrack(e)){let r=[{scaleResolutionDownBy:1},{scaleResolutionDownBy:1}];t.forEach((s,o)=>{let a=r[o];a?(s.scaleResolutionDownBy=a.scaleResolutionDownBy,n&&delete s.active):(s.active=!1,delete s.scaleResolutionDownBy)})}else{let{width:r,height:s}=e.getSettings(),o=[{pixels:960*540,maxActiveLayers:3},{pixels:480*270,maxActiveLayers:2},{pixels:0,maxActiveLayers:1}],a=r*s,c=o.find(d=>a>=d.pixels),l=Math.min(t.length,c.maxActiveLayers);t.forEach((d,u)=>{u<l?(d.scaleResolutionDownBy=1<<l-u-1,n&&(d.active=!0)):(d.active=!1,delete d.scaleResolutionDownBy)})}this._log.debug("_updateEncodings:",t.map(({active:r,scaleResolutionDownBy:s},o)=>`[${o}: ${r}, ${s||0}]`).join(", "))}_addIceCandidate(e){return Promise.resolve().then(()=>(re.pc.iceCandidate(this.id,e,!0),e=new this._RTCIceCandidate(e),this._peerConnection.addIceCandidate(e))).catch(t=>{this._log.warn(`Failed to add RTCIceCandidate ${e?`"${e.candidate}"`:"null"}: `+t.message)})}_addIceCandidates(e){return Promise.all(e.map(this._addIceCandidate,this)).then(()=>{})}_applyCodecPreferencesToTransceiver(e){if(!e||!e.receiver||!e.receiver.track)return;let t=e.receiver.track.kind,n=t==="audio"?this._preferredAudioCodecs:this._preferredVideoCodecs;if(!(!n||n.length===0))try{let r=RTCRtpReceiver.getCapabilities(t).codecs,s=this._sortCodecsByPreference(r,n);e.setCodecPreferences(s)}catch(r){this._log.warn("Failed to apply codec preferences:",r)}}_sortCodecsByPreference(e,t){let n=[],r=[],s=t.map(o=>(typeof o=="string"?o:o.codec).toLowerCase());return e.forEach(o=>{let a=o.mimeType.split("/")[1].toLowerCase(),c=s.indexOf(a);c>=0?(n[c]||(n[c]=[]),n[c].push(o)):r.push(o)}),n.flat().concat(r)}_addOrUpdateTransceiver(e){let t=Pw(this,e.kind);if(t&&t.sender){let r=t.sender.track?t.sender.track.id:null;return r&&this._log.warn(`Reusing transceiver: ${t.mid}] ${r} => ${e.id}`),this._replaceTrackPromises.set(t,t.sender.replaceTrack(e).then(()=>{t.direction="sendrecv"},()=>{}).finally(()=>{this._replaceTrackPromises.delete(t)})),t}let n=this._peerConnection.addTransceiver(e,{});return this._applyCodecPreferencesToTransceiver(n),n}_checkIceBox(e){let t=hg(e);if(!t)return Promise.resolve();let n=this._remoteCandidates.setUfrag(t);return this._addIceCandidates(n)}_answer(e){return Promise.resolve().then(()=>(this._negotiationRole||(this._negotiationRole="answerer"),this._setRemoteDescription(e))).catch(()=>{throw new xc}).then(()=>this._peerConnection.createAnswer()).then(t=>{Jt?t=new this._RTCSessionDescription({sdp:ag(t.sdp),type:t.type}):t=lg(t);let n=cg(t.sdp,["mslabel","label"]);if(this._shouldApplySimulcast){let r=n;n=this._setSimulcast(r,this._trackIdsToAttributes),n=this._revertSimulcast(n,r,e.sdp)}return n=n.replace(/42e015/g,"42e01f"),this._setLocalDescription({type:t.type,sdp:n})}).then(()=>this._checkIceBox(e)).then(()=>this._queuedDescription&&this._updateDescription(this._queuedDescription)).then(()=>(this._queuedDescription=null,this._maybeReoffer(this._peerConnection.localDescription))).catch(t=>{let n=t instanceof xc?t:new Lc;throw this._publishMediaWarning({message:"Failed to _answer",code:n.code,error:t}),n})}_close(){return this._iceConnectionMonitor.stop(),this._peerConnection.signalingState!=="closed"?(this._peerConnection.close(),this._dtlsTransport&&!dg&&re.pc.dtlsTransportState(this.id,this._dtlsTransport.state),re.pc.signalingState(this.id,this._peerConnection.signalingState),re.pc.iceConnectionState(this.id,this._peerConnection.iceConnectionState),re.pc.connectionState(this.id,this._peerConnection.connectionState),this.preempt("closed"),this._encodingParameters.removeListener("changed",this._onEncodingParametersChanged),!0):!1}_handleConnectionStateChange(){re.pc.connectionState(this.id,this.connectionState),this.emit("connectionStateChanged")}_handleDataChannelEvent(e){let t=e.channel,n=new hw(t);this._dataTrackReceivers.add(n),t.addEventListener("close",()=>{this._dataTrackReceivers.delete(n)}),this.emit("trackAdded",n)}_handleGlare(e){return this._log.debug("Glare detected; rolling back"),this._isRestartingIce&&(this._log.debug("An ICE restart was in progress; we'll need to restart ICE again after rolling back"),this._isRestartingIce=!1,this._shouldRestartIce=!0),Promise.resolve().then(()=>(this._trackIdsToAttributes=new Map(this._appliedTrackIdsToAttributes),this._setLocalDescription({type:"rollback"}))).then(()=>(this._needsAnswer=!1,this._answer(e))).then(t=>t?Promise.resolve():this._offer())}_publishMediaWarning({message:e,code:t,error:n,sdp:r}){this._eventObserver.emit("event",{level:"warning",name:"error",group:"media",payload:{message:e,code:t,context:JSON.stringify({error:n.message,sdp:r})}})}_handleIceCandidateEvent(e){e.candidate&&(this._log.debug("Clearing ICE gathering timeout"),this._didGenerateLocalCandidates=!0,this._iceGatheringTimeout.clear(),this._localCandidates.push(e.candidate),re.pc.iceCandidate(this.id,e.candidate));let t={ice:{candidates:this._isIceLite?[]:this._localCandidates.slice(),ufrag:this._localUfrag},id:this.id};e.candidate||(t.ice.complete=!0),this._isIceLite&&e.candidate||(t.ice.revision=this._localCandidatesRevision++,this.emit
73("candidates",t))}_handleIceConnectionStateChange(){let{iceConnectionState:e}=this._peerConnection,t=["connected","completed"].includes(e),n=this._log;n.debug(`ICE connection state is "${e}"`),re.pc.iceConnectionState(this.id,e),t&&(this._iceReconnectTimeout.clear(),this._iceRestartBackoff.reset()),this._lastIceConnectionState!=="failed"&&e==="failed"&&!this._shouldRestartIce&&!this._isRestartingIce?(n.warn("ICE failed"),this._initiateIceRestartBackoff()):["disconnected","failed"].includes(this._lastIceConnectionState)&&t&&n.debug("ICE reconnected"),e==="connected"?(this._isIceConnectionInactive=!1,this._iceConnectionMonitor.start(()=>{this._iceConnectionMonitor.stop(),!this._shouldRestartIce&&!this._isRestartingIce&&(n.warn("ICE Connection Monitor detected inactivity"),this._isIceConnectionInactive=!0,this._initiateIceRestartBackoff(),this.emit("iceConnectionStateChanged"),this.emit("connectionStateChanged"))})):["disconnected","completed"].includes(e)||(this._iceConnectionMonitor.stop(),this._isIceConnectionInactive=!1),this._lastIceConnectionState=e,this.emit("iceConnectionStateChanged")}_handleIceGatheringTimeout(){this._log.warn("ICE failed to gather any local candidates"),this._iceGatheringFailed=!0,this._initiateIceRestartBackoff(),this.emit("iceConnectionStateChanged"),this.emit("connectionStateChanged")}_handleIceGatheringStateChange(){let{iceGatheringState:e}=this._peerConnection;re.pc.iceGatheringState(this.id,e);let t=this._log;t.debug(`ICE gathering state is "${e}"`);let{delay:n,isSet:r}=this._iceGatheringTimeout;e==="gathering"&&!this._didGenerateLocalCandidates&&!r&&(t.debug(`Starting ICE gathering timeout: ${n}`),this._iceGatheringFailed=!1,this._iceGatheringTimeout.start())}_handleSignalingStateChange(){re.pc.signalingState(this.id,this._peerConnection.signalingState),this._peerConnection.signalingState==="stable"&&(this._appliedTrackIdsToAttributes=new Map(this._trackIdsToAttributes))}_handleDtlsTransportStateChange(){let e=this._dtlsTransport;e&&(this._log.debug(`DTLS transport state is "${e.state}"`),re.pc.dtlsTransportState(this.id,e.state))}_handleSelectedCandidatePairChange(){var e;let t=(e=this._dtlsTransport)===null||e===void 0?void 0:e.iceTransport;if(t&&typeof t.getSelectedCandidatePair=="function"){let n=t.getSelectedCandidatePair();n&&re.pc.selectedCandidatePair(this.id,n)}}_handleTrackEvent(e){let t=this._peerConnection.remoteDescription?this._peerConnection.remoteDescription.sdp:null;this._trackMatcher=this._trackMatcher||new vw,this._trackMatcher.update(t);let n=e.track,r=this._trackMatcher.match(e)||n.id,s=new fw(r,n);this._mediaTrackReceivers.forEach(o=>{o.track.id===s.track.id&&this._mediaTrackReceivers.delete(o)}),this._mediaTrackReceivers.add(s),n.addEventListener?n.addEventListener("ended",()=>this._mediaTrackReceivers.delete(s)):n.onended=()=>this._mediaTrackReceivers.delete(s),this.emit("trackAdded",s)}_initiateIceRestart(){if(this._peerConnection.signalingState==="closed")return;let e=this._log;e.warn("Attempting to restart ICE"),this._didGenerateLocalCandidates=!1,this._isIceRestartBackoffInProgress=!1,this._shouldRestartIce=!0;let{delay:t,isSet:n}=this._iceReconnectTimeout;n||(e.debug(`Starting ICE reconnect timeout: ${t}`),this._iceReconnectTimeout.start()),this.offer().catch(r=>{e.error(`offer failed in _initiateIceRestart with: ${r.message}`)})}_initiateIceRestartBackoff(){this._peerConnection.signalingState==="closed"||this._isIceRestartBackoffInProgress||(this._log.warn("An ICE restart has been scheduled"),this._isIceRestartBackoffInProgress=!0,this._iceRestartBackoff.backoff(()=>this._initiateIceRestart()))}_maybeReoffer(e){let t=this._shouldOffer;if(e&&e.sdp){let r=this._peerConnection.getSenders().filter(c=>c.track);t=["audio","video"].reduce((c,l)=>{let d=Si(e.sdp,l,"(sendrecv|sendonly)"),u=r.filter(Sw.bind(null,l));return c||d.length<u.length},t);let s=this._dataChannels.size>0,o=Si(e.sdp,"application").length>0;t=t||s&&!o}return(t?this._offer():Promise.resolve()).then(()=>t)}_offer(){let e=Object.assign({},this._offerOptions);return this._needsAnswer=!0,this._shouldRestartIce&&(this._shouldRestartIce=!1,this._isRestartingIce=!0,e.iceRestart=!0),Promise.all(this._replaceTrackPromises.values()).then(()=>
73(this._peerConnection.getTransceivers().forEach(n=>this._applyCodecPreferencesToTransceiver(n)),this._peerConnection.createOffer(e))).catch(t=>{let n=new Lc;throw this._publishMediaWarning({message:"Failed to create offer",code:n.code,error:t}),n}).then(t=>{if(Jt){let r=ag(t.sdp);r=iw(r),t=new this._RTCSessionDescription({sdp:r,type:t.type})}else t=lg(t);let n=cg(t.sdp,["mslabel","label"]);return this._shouldOffer=!1,this._negotiationRole||(this._negotiationRole="offerer"),this._shouldApplySimulcast&&(this._localDescriptionWithoutSimulcast={type:"offer",sdp:n},n=this._setSimulcast(n,this._trackIdsToAttributes)),this._setLocalDescription({type:"offer",sdp:n})})}_getMediaTrackSenderId(e){let t=Array.from(this._rtpSenders.keys()).find(({track:{id:n}})=>n===e);return t?t.id:e}_addOrRewriteLocalTrackIds(e){let n=this._peerConnection.getTransceivers().filter(({sender:d,stopped:u})=>!u&&d&&d.track),r=n.filter(({mid:d})=>d),s=new Map(r.map(({mid:d,sender:u})=>[d,this._getMediaTrackSenderId(u.track.id)])),o=tw(e.sdp,s),a=n.filter(({mid:d})=>!d),c=new Map(["audio","video"].map(d=>[d,a.filter(({sender:u})=>u.track.kind===d).map(({sender:u})=>this._getMediaTrackSenderId(u.track.id))])),l=ew(o,s,c);return new this._RTCSessionDescription({sdp:l,type:e.type})}_rollbackAndApplyOffer(e){return this._setLocalDescription({type:"rollback"}).then(()=>this._setLocalDescription(e))}_setLocalDescription(e){return e.type!=="rollback"&&this._shouldApplyDtx&&(e=new this._RTCSessionDescription({sdp:Wr(e.sdp),type:e.type})),this._peerConnection.setLocalDescription(e).catch(t=>{this._log.warn(`Calling setLocalDescription with an RTCSessionDescription of type "${e.type}" failed with the error "${t.message}".`,t);let n=new Lc,r={message:`Calling setLocalDescription with an RTCSessionDescription of type "${e.type}" failed`,code:n.code,error:t};throw e.sdp&&(this._log.warn(`The SDP was ${e.sdp}`),r.sdp=e.sdp),this._publishMediaWarning(r),n}).then(()=>{e.type!=="rollback"&&(this._localDescription=this._addOrRewriteLocalTrackIds(e),this._shouldApplyDtx&&(this._localDescription=new this._RTCSessionDescription({sdp:Wr(this._localDescription.sdp,[]),type:this._localDescription.type})),this._localCandidates=[],e.type==="offer"?this._descriptionRevision++:e.type==="answer"&&(this._lastStableDescriptionRevision=this._descriptionRevision,mg(this)),this._localUfrag=hg(e),this.emit("description",this.getState()))})}_setRemoteDescription(e){return e.sdp&&(e.sdp=this._setCodecPreferences(e.sdp,this._preferredAudioCodecs,this._preferredVideoCodecs),this._shouldApplyDtx?e.sdp=Wr(e.sdp):e.sdp=Wr(e.sdp,[]),Jt&&(e.sdp=Tw(e.sdp)),this._peerConnection.remoteDescription||(this._isIceLite=/a=ice-lite/.test(e.sdp))),e=new this._RTCSessionDescription(e),Promise.resolve().then(()=>{if(e.type==="answer"&&this._localDescriptionWithoutSimulcast){let t=this._preferredVideoCodecs.find(s=>"adaptiveSimulcast"in s),n=!!t&&t.adaptiveSimulcast===!1,r=this._revertSimulcast(this._localDescription.sdp,this._localDescriptionWithoutSimulcast.sdp,e.sdp,n);if(this._localDescriptionWithoutSimulcast=null,r!==this._localDescription.sdp)return this._rollbackAndApplyOffer({type:this._localDescription.type,sdp:r})}}).then(()=>this._peerConnection.setRemoteDescription(e)).then(()=>{e.type==="answer"&&(this._isRestartingIce&&(this._log.debug("An ICE restart was in-progress and is now completed"),this._isRestartingIce=!1),mg(this))},t=>{throw this._log.warn(`Calling setRemoteDescription with an RTCSessionDescription of type "${e.type}" failed with the error "${t.message}".`,t),e.sdp&&this._log.warn(`The SDP was ${e.sdp}`),t})}_updateDescription(e){switch(e.type){case"answer":case"pranswer":if(e.revision!==this._descriptionRevision||this._peerConnection.signalingState!=="have-local-offer")return Promise.resolve();this._descriptionRevision=e.revision;break;case"close":return this._close();case"create-offer":return e.revision<=this._lastStableDescriptionRevision?Promise.resolve():this._needsAnswer?(this._queuedDescription=e,Promise.resolve()):(this._descriptionRevision=e.revision,this._offer());case"offer":return e.revision<=this._lastStableDescriptionRevision||this._peerConnection.signalingState==="closed"?Promise.resolve():this._peerConnection.signalingState==="have-local-offer"?this._needsAnswer&&this._lastStableDescriptionRevision===0?(this._queuedDescription=e,Promise.resolve()):(this._descriptionRevision=e.revision,this._handleGlare(e)):(this._descriptionRevision=e.revision,this._answer(e).then(()=>{}));default:}let t=e.revision;return Promise.resolve().then(()=>this._setRemoteDescription(e)).catch(n=>{let r=new xc;throw this._publishMediaWarning({message:`Calling setRemoteDescription with an RTCSessionDescription of type "${e.type}" failed`,code:r.code,error:n,sdp:e.sdp}),r}).then(()=>(this._lastStableDescriptionRevision=t,this._needsAnswer=!1,this._checkIceBox(e))).then(()=>this._queuedDescription&&this._updateDescription(this._queuedDescription)).then(()=>(this._queuedDescription=null,this._maybeReoffer(this._peerConnection.localDescription).then(()=>{})))}_updateIce(e){let t=this._remoteCandidates.update(e);return this._addIceCandidates(t)}addDataTrackSender(e){if(!this._dataChannels.has(e))try{let t={ordered:e.ordered};e.maxPacketLifeTime!==null&&(t.maxPacketLifeTime=e.maxPacketLifeTime),e.maxRetransmits!==null&&(t.maxRetransmits=e.maxRetransmits);
73let n=this._peerConnection.createDataChannel(e.id,t);e.addDataChannel(n),this._dataChannels.set(e,n)}catch(t){this._log.warn(`Error creating an RTCDataChannel for DataTrack "${e.id}": ${t.message}`)}}_handleQueuedPublisherHints(){this._peerConnection.signalingState==="stable"&&this._mediaTrackSenderToPublisherHints.forEach(({deferred:e,encodings:t},n)=>{this._mediaTrackSenderToPublisherHints.delete(n),this._setPublisherHint(n,t).then(r=>e.resolve(r)).catch(r=>e.reject(r))})}_setPublisherHint(e,t){if(Jt)return Promise.resolve("COULD_NOT_APPLY_HINT");this._mediaTrackSenderToPublisherHints.has(e)&&(this._mediaTrackSenderToPublisherHints.get(e).deferred.resolve("REQUEST_SKIPPED"),this._mediaTrackSenderToPublisherHints.delete(e));let n=this._rtpSenders.get(e);if(!n)return this._log.warn("Could not apply publisher hint because RTCRtpSender was not found"),Promise.resolve("UNKNOWN_TRACK");if(this._peerConnection.signalingState==="closed")return this._log.warn('Could not apply publisher hint because signalingState was "closed"'),Promise.resolve("COULD_NOT_APPLY_HINT");if(this._peerConnection.signalingState!=="stable"){this._log.debug("Queuing up publisher hint because signalingState:",this._peerConnection.signalingState);let s=dw();return this._mediaTrackSenderToPublisherHints.set(e,{deferred:s,encodings:t}),s.promise}let r=n.getParameters();return t!==null&&t.forEach(({enabled:s,layer_index:o})=>{r.encodings.length>o?(this._log.debug(`layer:${o}, active:${r.encodings[o].active} => ${s}`),r.encodings[o].active=s):this._log.warn(`invalid layer:${o}, active:${s}`)}),this._maybeUpdateEncodings(n.track,r.encodings,t===null),n.setParameters(r).then(()=>"OK").catch(s=>(this._log.error("Failed to apply publisher hints:",s),"COULD_NOT_APPLY_HINT"))}addMediaTrackSender(e){if(this._peerConnection.signalingState==="closed"||this._rtpSe
73nders.has(e))return;let t=this._addOrUpdateTransceiver(e.track),{sender:n}=t;e.addSender(n,r=>this._setPublisherHint(e,r)),this._rtpNewSenders.add(n),this._rtpSenders.set(e,n)}close(){this._close()&&(this._descriptionRevision++,this._localDescription={type:"close"},this.emit("description",this.getState()))}getTrackReceivers(){return Array.from(this._dataTrackReceivers).concat(Array.from(this._mediaTrackReceivers))}getState(){if(!this._localDescription)return null;let e=this._localDescription.type==="answer"?this._lastStableDescriptionRevision:this._descriptionRevision,t={type:this._localDescription.type,revision:e};return this._localDescription.sdp&&(t.sdp=this._localDescription.sdp),{description:t,id:this.id}}offer(){return this._needsAnswer||this._isRestartingIce?(this._shouldOffer=!0,Promise.resolve()):this.bracket("offering",e=>(this.transition("updating",e),(this._needsAnswer||this._isRestartingIce?Promise.resolve():this._offer()).then(()=>{this.tryTransition("open",e)},n=>{throw this.tryTransition("open",e),n})))}removeDataTrackSender(e){let t=this._dataChannels.get(e);t&&(e.removeDataChannel(t),this._dataChannels.delete(e),t.close())}removeMediaTrackSender(e){let t=this._rtpSenders.get(e);t&&(this._peerConnection.signalingState!=="closed"&&this._peerConnection.removeTrack(t),e.removeSender(t),this._mediaTrackSenderToPublisherHints.has(e)&&(this._mediaTrackSenderToPublisherHints.get(e).deferred.resolve("UNKNOWN_TRACK"),this._mediaTrackSenderToPublisherHints.delete(e)),this._rtpNewSenders.delete(t),this._rtpSe
73nders.delete(e))}setConfiguration(e){typeof this._peerConnection.setConfiguration=="function"&&this._peerConnection.setConfiguration(fg(e))}setIceReconnectTimeout(e){return this._iceReconnectTimeout.setDelay(e),this._log.debug("Updated ICE reconnection timeout period:",this._iceReconnectTimeout.delay),this}update(e){return this.bracket("updating",t=>{if(this.state==="closed")return Promise.resolve();this.transition("updating",t);let n=[];return e.ice&&n.push(this._updateIce(e.ice)),e.description&&n.push(this._updateDescription(e.description)),Promise.all(n).then(()=>{this.tryTransition("open",t)},r=>{throw this.tryTransition("open",t),r})})}getStats(){return K0(this._peerConnection,{log:this._log}).then(e=>yw(this,e))}};function ug(i,e){let t=i._getMediaTrackSenderId(e.trackId);return Object.assign(e,{trackId:t})}function pg(i,e){let t=[...i._mediaTrackReceivers].find(r=>r.track.id===e.trackId),n=t?t.id:null;return Object.assign(e,{trackId:n})}function yw(i,e){return Object.assign(e,{remoteAudioTrackStats:e.remoteAudioTrackStats.map(t=>pg(i,t)),remoteVideoTrackStats:e.remoteVideoTrackStats.map(t=>pg(i,t)),localAudioTrackStats:e.localAudioTrackStats.map(t=>ug(i,t)),localVideoTrackStats:e.localVideoTrackStats.map(t=>ug(i,t))})}function hg(i){if(i.sdp){let e=i.sdp.match(/^a=ice-ufrag:([a-zA-Z0-9+/]+)/m);if(e)return e[1]}return null}function fg(i={}){return Object.assign({bundlePolicy:"max-bundle",rtcpMuxPolicy:"require"},i)}function Sw(i,e){let t=e.track;return t&&t.kind===i&&t.readyState!=="ended"}function Tw(i){return i.replace(/a=msid:[^ ]+ /g,"a=msid:- ")}function kw(i,e){return!i.stopped&&!e._replaceTrackPromises.has(i)&&["inactive","recvonly"].includes(i.direction)}function Pw(i,e){let t={audio:i._preferredAudioCodecs.map(({codec:o})=>o.toLowerCase()),video:i._preferredVideoCodecs.map(({codec:o})=>o.toLowerCase())}[e],n=i._recycledTransceivers[e],r=t.find(o=>i._localCodecs.has(o));if(!r)return n.shift();let s=n.find(o=>{let a=i._remoteCodecMaps.get(o.mid);return a&&a.has(r)});return s&&n.splice(n.indexOf(s),1),s}function ww(i){let e=i._peerConnection.localDescription;!e||!e.sdp||Si(e.sdp).forEach(t=>{vg(t).forEach((r,s)=>i._localCodecs.add(s))})}function Ew(i){let e=i._peerConnection.remoteDescription;!e||!e.sdp||Si(e.sdp).forEach(t=>{let n=t.match(/^a=mid:(.+)$/m);if(!n||!n[1])return;let r=n[1],s=vg(t);i._remoteCodecMaps.set(r,s)})}function Ow(i){i._recycledTransceivers.audio=[],i._recycledTransceivers.video=[],i._peerConnection.getTransceivers().forEach(e=>{if(kw(e,i)){let t=e.receiver.track;i._recycledTransceivers[t.kind].push(e)}})}function Rw(i){var e;let n=(e=i._peerConnection.getSenders().find(r=>r.transport))===null||e===void 0?void 0:e.transport;n&&!i._dtlsTransport&&(i._dtlsTransport=n,n.addEventListener("statechange",i._handleDtlsTransportStateChange.bind(i)),n.state&&i._handleDtlsTransportStateChange(),n.iceTransport&&typeof n.iceTransport.getSelectedCandidatePair=="function"&&(n.iceTransport.addEventListener("selectedcandidatepairchange",i._handleSelectedCandidatePairChange.bind(i)),n.iceTransport.getSelectedCandidatePair()&&i._handleSelectedCandidatePairChange()))}function mg(i){Ow(i),ww(i),Ew(i),Rw(i),_g(i).then(()=>{i._handleQueuedPublisherHints()})}function _g(i){let{maxAudioBitrate:e,maxVideoBitrate:t}=i._encodingParameters,n=new Map([["audio",e],["video",t]]),r=[];return i._peerConnection.getSenders().filter(s=>s.track).forEach(s=>{let o=n.get(s.track.kind),a=s.getParameters();o===null||o===0?Lw(a):i._isChromeScreenShareTrack(s.track)?i._log.warn(`Not setting maxBitrate for ${s.track.kind} Track ${s.track.id} because it appears to be screen share track: ${s.track.label}`):xw(a,o),!Jt&&a.encodings.length>0&&(s.track.kind==="audio"?a.encodings[0].priority="high":i._isChromeScreenShareTrack(s.track)&&(a.encodings[0].priority="medium"),i._enableDscp&&(a.encodings[0].networkPriority="high"));let c=i._rtpNewSenders.has(s);i._maybeUpdateEncodings(s.track,a.encodings,c),i._rtpNewSenders.delete(s);let l=s.setParameters(a).catch(d=>{i._log.warn(`Error while setting encodings parameters for ${s.track.kind} Track ${s.track.id}: ${d.message||d.name}`)});r.push(l)}),Promise.all(r)}
73function Lw(i){Array.isArray(i.encodings)&&i.encodings.forEach(e=>delete e.maxBitrate)}function xw(i,e){Jt?i.encodings=[{maxBitrate:e}]:i.encodings.forEach(t=>{t.maxBitrate=e})}bg.exports=Mc});var kg=p((A1,Tg)=>{"use strict";var{guessBrowser:Mw}=ae(),Iw=Cg(),Dw=Eo(),Aw=yo(),gt=j(),{MediaConnectionError:jw}=Pe(),Vw=Mw()==="firefox",Ac=class extends Aw{constructor(e,t,n){super(),n=Object.assign({audioContextFactory:Vw?pi():null,PeerConnectionV2:Iw},n);let r=n.audioContextFactory?n.audioContextFactory.getOrCreate(this):null,s=r?{offerToReceiveVideo:!0}:{offerToReceiveAudio:!0,offerToReceiveVideo:!0};Object.defineProperties(this,{_audioContextFactory:{value:n.audioContextFactory},_closedPeerConnectionIds:{value:new Set},_configuration:{writable:!0,value:null},_configurationDeferred:{writable:!0,value:gt.defer()},_connectionState:{value:"new",writable:!0},_dummyAudioTrackSender:{value:r?new Dw(qw(r)):null},_encodingParameters:{value:e},_iceConnectionState:{writable:!0,value:"new"},_dataTrackSenders:{writable:!0,value:new Set},_lastConnectionState:{value:"new",writable:!0},_lastIceConnectionState:{writable:!0,value:"new"},_mediaTrackSenders:{writable:!0,value:new Set},_offerOptions:{value:s},_peerConnections:{value:new Map},_preferredCodecs:{value:t},_sessionTimeout:{value:null,writable:!0},_PeerConnectionV2:{value:n.PeerConnectionV2}})}setEffectiveAdaptiveSimulcast(e){this._peerConnections.forEach(t=>t.setEffectiveAdaptiveSimulcast(e)),this._preferredCodecs.video.forEach(t=>{"adaptiveSimulcast"in t&&(t.adaptiveSimulcast=e)})}get connectionState(){return this._connectionState}get iceConnectionState(){return this._iceConnectionState}_closeAbsentPeerConnections(e){let t=new Set(e.map(n=>n.id));return this._peerConnections.forEach(n=>{t.has(n.id)||n._close()}),this}_getConfiguration(){return this._configurationDeferred.promise}_getOrCreate(e,t){let n=this,r=this._peerConnections.get(e);if(!r){let s=this._PeerConnectionV2,o=Object.assign({dummyAudioMediaStreamTrack:this._dummyAudioTrackSender?this._dummyAudioTrackSender.track:null,offerOptions:this._offerOptions},this._sessionTimeout?{sessionTimeout:this._sessionTimeout}:{},t);try{r=new s(e,this._encodingParameters,this._preferredCodecs,o)}catch(a){throw new jw}this._peerConnections.set(r.id,r),r.on("candidates",this.queue.bind(this,"candidates")),r.on("description",this.queue.bind(this,"description")),r.on("trackAdded",this.queue.bind(this,"trackAdded")),r.on("stateChanged",function a(c){c==="closed"&&(r.removeListener("stateChanged",a),n._dataTrackSenders.forEach(l=>r.removeDataTrackSender(l)),n._mediaTrackSenders.forEach(l=>r.removeMediaTrackSender(l)),n._peerConnections.delete(r.id),n._closedPeerConnectionIds.add(r.id),yg(n),Hr(n))}),r.on("connectionStateChanged",()=>yg(this)),r.on("iceConnectionStateChanged",()=>Hr(this)),this._dataTrackSenders.forEach(r.addDataTrackSender,r),this._mediaTrackSenders.forEach(r.addMediaTrackSender,r),Hr(this)}return r}close(){return this._peerConnections.forEach(e=>{e.close()}),this._dummyAudioTrackSender&&this._dummyAudioTrackSender.stop(),this._audioContextFactory&&this._audioContextFactory.release(this),Hr(this),this}createAndOffer(){return this._getConfiguration().then(e=>{let t;do t=gt.makeUUID();while(this._peerConnections.has(t));return this._getOrCreate(t,e)}).then(e=>e.offer()).then(()=>this)}getTrackReceivers(){return gt.flatMap(this._peerConnections,e=>e.getTrackReceivers())}getStates(){let e=[];return this._peerConnections.forEach(t=>{let n=t.getState();n&&e.push(n)}),e}setConfiguration(e){return this._configuration&&(this._configurationDeferred=gt.defer(),this._peerConnections.forEach(t=>{t.setConfiguration(e)})),this._configuration=e,this._configurationDeferred.resolve(e),this}setIceReconnectTimeout(e){return this._sessionTimeout===null&&(this._peerConnections.forEach(t=>{t.setIceReconnectTimeout(e)}),this._sessionTimeout=e),this}setTrackSenders(e){let t=new Set(e.filter(s=>s.kind==="data")),n=new Set(e.filter(s=>s&&(s.kind==="audio"||s.kind==="video"))),r=Bw(this,t,n);return this._dataTrackSenders=t,this._mediaTrackSenders=n,Nw(this,r),this}update(e,t=!1){return t&&this._closeAbsentPeerConnections(e),this._getConfiguration().then(n=>Promise.all(e.map(r=>this._closedPeerConnectionIds.has(r.id)?null:this._getOrCreate(r.id,n).update(r)))).then(()=>this)}getStats(){let e=Array.from(this._peerConnections.values());return Promise.all(e.map(t=>t.getStats().then(n=>[t.id,n]))).then(t=>new Map(t))}};function qw(i){return i.createMediaStreamDestination().stream.getAudioTracks()[0]}function Nw(i,e){(e.data.add.size||e.data.remove.size||e.media.add.size||e.media.remove.size)&&i._peerConnections.forEach(t=>{e.data.remove.forEach(t.removeDataTrackSender,t),e.media.remove.forEach(t.removeMediaTrackSender,t),e.data.add.forEac
73h(t.addDataTrackSender,t),e.media.add.forEach(t.addMediaTrackSender,t),(e.media.add.size||e.media.remove.size||e.data.add.size&&!t.isApplicationSectionNegotiated)&&t.offer()})}function Fw(i,e){let t=gt.difference(e,i._dataTrackSenders),n=gt.difference(i._dataTrackSenders,e);return{add:t,remove:n}}function Bw(i,e,t){return{data:Fw(i,e),media:Uw(i,t)}}function Uw(i,e){let t=gt.difference(e,i._mediaTrackSenders),n=gt.difference(i._mediaTrackSenders,e);return{add:t,remove:n}}var zr={new:0,checking:1,connecting:2,connected:3,completed:4,disconnected:-1,failed:-2,closed:-3},Dc;function $w(){return Object.keys(zr).reduce((i,e)=>Object.assign(i,{[zr[e]]:e}),{})}function Sg(i){return i.length?(Dc=Dc||$w(),i.reduce((e,t)=>Dc[Math.max(zr[e],zr[t])])):"new"}function Hr(i){i._lastIceConnectionState=i.iceConnectionState,i._iceConnectionState=Sg([...i._peerConnections.values()].map(e=>e.iceConnectionState)),i.iceConnectionState!==i._lastIceConnectionState&&i.emit("iceConnectionStateChanged")}function yg(i){i._lastConnectionState=i.connectionState,i._connectionState=Sg([...i._peerConnections.values()].map(e=>e.connectionState)),i.connectionState!==i._lastConnectionState&&i.emit("connectionStateChanged")}Tg.exports=Ac});var vt=p((j1,Pg)=>{"use strict";var Ww=ne(),Hw=0,jc=class extends Ww{constructor(e,t,n){super(),Object.defineProperties(this,{_instanceId:{value:Hw++},channel:{value:t},_log:{value:n.log.createLog("default",this)},_getReceiver:{value:e},_receiverPromise:{value:null,writable:!0},_transport:{value:null,writable:!0}})}get isSetup(){return!!this._receiverPromise}toString(){return`[MediaSignaling #${this._instanceId}:${this.channel}]`}setup(e){this._teardown(),this._log.info("setting up msp transport for id:",e);let t=this._getReceiver(e).then(n=>{if(n.kind!=="data"&&this._log.error("Expected a DataTrackReceiver"),this._receiverPromise===t){try{this._transport=n.toDataTransport(),this.emit("ready",this._transport)}catch(r){this._log.error(`Failed to toDataTransport: ${r.message}`)}n.once("close",()=>this._teardown())}});this._receiverPromise=t}_teardown(){this._transport&&(this._log.info("Tearing down"),this._transport=null,this._receiverPromise=null,this.emit("teardown"))}};Pg.exports=jc});var Eg=p((V1,wg)=>{"use strict";var zw=vt(),Vc=class extends zw{constructor(e,t){super(e,"active_speaker",t),Object.defineProperties(this,{_loudestParticipantSid:{value:null,writable:!0}}),this.on("ready",n=>{n.on("message",r=>{r.type==="active_speaker"&&this._setLoudestParticipantSid(r.participant)})})}get loudestParticipantSid(){return this._loudestParticipantSid}_setLoudestParticipantSid(e){this.loudestParticipantSid!==e&&(this._loudestParticipantSid=e,this.emit("updated"))}};wg.exports=Vc});var Rg=p((q1,Og)=>{"use strict";var Gw=vt(),qc=class extends Gw{constructor(e,t){super(e,"extension_transcriptions",t),this.on("ready",n=>{n.on("message",r=>{r.type==="extension_transcriptions"&&this.emit("transcription",r)})})}};Og.exports=qc});var xg=p((N1,Lg)=>{"use strict";var Nc=class i{constructor(e,t,n,r){Object.defineProperties(this,{availableSend:{enumerable:!0,value:n},recv:{enumerable:!0,value:t},rtt:{enumerable:!0,value:r},send:{enumerable:!0,value:e}})}static of(e,t){let n=(t.timestamp-e.timestamp)/1e3,r=t.bytesSent-e.bytesSent,s=t.bytesReceived-e.bytesReceived,o=n>0?r/n*8:0,a=n>0?s/n*8:0,{availableOutgoingBitrate:c,currentRoundTripTime:l}=t;return new i(o,a,c,l)}};Lg.exports=Nc});var Ig=p((F1,Mg)=>{"use strict";var Fc=xg(),Bc=class{constructor(){Object.defineProperties(this,{lastReport:{enumerable:!0,value:new Fc(0,0),writable:!0},lastStats:{enumerable:!0,value:null,writable:!0}})}next(e){let t=this.lastStats;if(this.lastStats=e,t){let n=t.id===e.id?Fc.of(t,e):new Fc(0,0);this.lastReport=n}return this.lastReport}};Mg.exports=Bc});var Uc=p((B1,Dg)=>{"use strict";function Qw(i){return i=i.filter(e=>typeof e=="number"),i.length<1?void 0:i.reduce((e,t)=>t+e)/i.length}Dg.exports=Qw});var Wc=p((U1,Ag)=>{"use strict";var $c=class{constructor(e,t,n){Object.defineProperties(this,{id:{enumerable:!0,value:e},trackId:{enumerable:!0,value:t},bitrate:{enumerable:!0,value:n}})}};Ag.exports=$c});var Hc=p(($1,jg)=>{"use strict";function Kw(i){return i.reduce((e,t)=>
73typeof t=="number"?t+e:e,0)}jg.exports=Kw});var Gc=p((W1,qg)=>{"use strict";var Vg=Uc(),Jw=Wc(),Yw=Hc(),zc=class i extends Jw{constructor(e,t,n,r,s,o,a){super(e,t,n);let c=s>0?r/s:0;Object.defineProperties(this,{deltaPacketsLost:{enumerable:!0,value:r},deltaPacketsReceived:{enumerable:!0,value:s},fractionLost:{enumerable:!0,value:o},jitter:{enumerable:!0,value:a},phonyFractionLost:{enumerable:!0,value:c}})}static of(e,t,n){if(t.id!==n.id)throw new Error("RTCStats IDs must match");let r=(n.timestamp-t.timestamp)/1e3,s=n.bytesReceived-t.bytesReceived,o=r>0?s/r*8:0,a=Math.max(n.packetsLost-t.packetsLost,0),c=n.packetsReceived-t.packetsReceived,{fractionLost:l,jitter:d}=n;return new i(t.id,e,o,a,c,l,d)}static summarize(e){let t=e.map(o=>o.summarize()),n=Yw(t.map(o=>o.bitrate)),r=Vg(t.map(o=>o.fractionLost)),s=Vg(t.map(o=>o.jitter));return{bitrate:n,fractionLost:r,jitter:s}}summarize(){return{bitrate:this.bitrate,fractionLost:typeof this.fractionLost=="number"?this.fractionLost:this.phonyFractionLost,jitter:this.jitter}}};qg.exports=zc});var Kc=p((H1,Ng)=>{"use strict";var Xw=Uc(),Zw=Wc(),eE=Hc(),Qc=class i extends Zw{constructor(e,t,n,r){super(e,t,n),Object.defineProperties(this,{rtt:{enumerable:!0,value:r}})}static of(e,t,n,r){if(t.id!==n.id)throw new Error("RTCStats IDs must match");let s=(n.timestamp-t.timestamp)/1e3,o=n.bytesSent-t.bytesSent,a=s>0?o/s*8:0,c=r&&typeof r.roundTripTime=="number"?r.roundTripTime/1e3:void 0;return new i(t.id,e,a,c)}static summarize(e){let t=eE(e.map(r=>r.bitrate)),n=Xw(e.map(r=>r.rtt));return{bitrate:t,rtt:n}}};Ng.exports=Qc});var Bg=p((z1,Fg)=>{"use strict";var Jc=Gc(),Yc=Kc(),Xc=class{constructor(e,t,n){Object.defineProperties(this,{ice:{enumerable:!0,value:e},audio:{enumerable:!0,value:t},video:{enumerable:!0,value:n}})}summarize(){let e=this.audio.send.concat(this.video.send),t=Yc.summarize(e),n=this.audio.recv.concat(this.video.recv),r=Jc.summarize(n);return{ice:this.ice,send:t,recv:r,audio:{send:Yc.summarize(this.audio.send),recv:Jc.summarize(this.audio.recv)},video:{send:Yc.summarize(this.video.send),recv:Jc.summarize(this.video.recv)}}}};Fg.exports=Xc});var el=p((G1,Ug)=>{"use strict";var Zc=class{constructor(e,t,n){Object.defineProperties(this,{id:{enumerable:!0,value:e,writable:!0},trackId:{enumerable:!0,value:t,writable:!0},lastStats:{enumerable:!0,value:n,writable:!0}})}};Ug.exports=Zc});var Wg=p((Q1,$g)=>{"use strict";var tE=Gc(),iE=el(),tl=class extends iE{constructor(e,t){super(t.id,e,t),Object.defineProperties(this,{lastReport:{enumerable:!0,value:null,writable:!0}})}next(e,t){let n=this.lastStats;this.lastStats=t,this.trackId=e;let r=tE.of(e,n,t);return this.lastReport=r,r}};$g.exports=tl});var zg=p((K1,Hg)=>{"use strict";var nE=el(),rE=Kc(),il=class extends nE{constructor(e,t){super(t.id,e,t),Object.defineProperties(this,{lastReport:{enumerable:!0,value:null,writable:!0}})}next(e,t,n){let r=this.lastStats;this.lastStats=t,this.trackId=e;let s=rE.of(e,r,t,n);return this.lastReport=s,s}};Hg.exports=il});var iv=p((J1,tv)=>{"use strict";var{guessBrowser:Qg}=ae(),sE=Ig(),oE=Bg(),aE=Wg(),cE=zg(),nl=class{constructor(e){Object.defineProperties(this,{pc:{enumerable:!0,value:e},ice:{enumerable:!0,value:new sE},audio:{enumerable:!0,value:{send:new Map,recv:new Map}},video:{enumerable:!0,value:{send:new Map,recv:new Map}},lastReport:{enumerable:!0,value:null,writable:!0}})}next(){return(Qg()==="firefox"?uE(this):pE(this)).then(()=>{let t=[...this.audio.send.values()],n=[...this.video.send.values()],r=[...this.audio.recv.values()],s=[...this.video.recv.values()],o=new oE(this.ice.lastReport,{send:t.map(a=>a.lastReport).filter(a=>a),recv:r.map(a=>a.lastReport).filter(a=>a)},{send:n.map(a=>a.lastReport).filter(a=>a),recv:s.map(a=>a.lastReport).filter(a=>a)});return this.lastReport=o,o})}};function Gg(i){return Promise.all(i.map(e=>{let t=e.track.id;return e.getStats().then(n=>{for(let r of n.values())r.type==="inbound-rtp"&&(r.id=`${t}-${r.id}`);return[t,n]})})).then(e=>new Map(e))}function Kg(i,e,t,n,r){let s=e[n.mediaType];if(!r){let o=t.get(n.trackId);o&&(r=o.trackIdentifier)}if(s&&r){if(s.has(n.id))return s.get(n.id);let o=new i(r,n);s.set(n.id,o)}return null}function rl(i){return{audio:i.audio.send,video:i.video.send}}function sl(i){return{audio:i.audio.recv,video:i.video.recv}}function lE(i,e,t,n){return Kg(cE,rl(i),e,t,n)}function dE(i,e,t,n){return Kg(aE,sl(i),e,t,n)}function Jg(i){return{audio:new Set(i.audio.send.keys()),video:new Set(i.video.send.keys())}}function Yg(i){return{audio:new Set(i.audio.recv.keys()),video:new Set(i.video.recv.keys())}}function Xg(i,e,t,n){for(let r of e.values())if(r.type==="outbound-rtp"&&!r.isRemote){if(Qg()!=="firefox"&&!r.trackId)continue;let s=t[r.mediaType];s&&s.delete(r.id);let o=lE(i,e,r,n);if(o){let a=e.get(r.remoteId);o.next(n||o.trackId,r,a)}}}function Zg(i,e,t,n){for(let r of e.values())if(r.type==="inbound-rtp"&&!r.isRemote){let s=t[r.mediaType];s&&s.delete(r.id);let o=dE(i,e,r,n);o&&o.next(n||o.trackId,r)}}function Gr(i,e){for(let t in e){let n=i[t];e[t].forEach(s=>n.delete(s))}}function ev(i,e){let t;for(let n of e.values())n.type==="transport"&&(t=e.get(n.selectedCandidatePairId));if(t){i.next(t);return}for(let n of e.values())n.type==="candidate-pair"&&n.nominated&&(!("selected"in n)||n.selected)&&i.next(n)}function uE(i){let e=i.pc.getTransceivers().filter(n=>n.currentDirection&&n.currentDirection.match(/send/)&&n.sender.track).map(n=>n.sender),t=i.pc.getTransceivers().filter(n=>n.currentDirection&&n.currentDirection.match(/recv/)).map(n=>n.receiver);return Promise.all([Gg(e),Gg(t),i.pc.getStats()]).then(([n,r,s])=>{let o=rl(i),a=Jg(i);
73n.forEach((d,u)=>Xg(i,d,a,u)),Gr(o,a);let c=sl(i),l=Yg(i);r.forEach((d,u)=>Zg(i,d,l,u)),Gr(c,l),ev(i.ice,s)})}function pE(i){return i.pc.getStats().then(e=>{let t=rl(i),n=Jg(i);Xg(i,e,n),Gr(t,n);let r=sl(i),s=Yg(i);Zg(i,e,s),Gr(r,s),ev(i.ice,e)})}tv.exports=nl});var rv=p((Y1,nv)=>{"use strict";var hE=ne(),fE=iv(),ol=class extends hE{constructor(e,t){super(),Object.defineProperties(this,{_factories:{value:new WeakMap},_manager:{value:e},_signaling:{value:t}}),t.on("updated",()=>this.emit("updated"))}get level(){return this._signaling.level}get levels(){return this._signaling.levels}get remoteLevels(){return this._signaling.remoteLevels}start(){this.stop();let e=setTimeout(()=>{this._timeout===e&&mE(this).then(t=>{if(this._timeout===e){if(t.length){let[n]=t;this._signaling.put(n)}this.start()}})},200);this._timeout=e}stop(){clearTimeout(this._timeout),this._timeout=null}};function mE(i){let r=(i._manager._peerConnections?Array.from(i._manager._peerConnections.values()):[]).map(s=>s._peerConnection).filter(s=>s.signalingState!=="closed").map(s=>{if(i._factories.has(s))return i._factories.get(s);let o=new fE(s);return i._factories.set(s,o),o}).map(s=>s.next().catch(()=>null));return Promise.all(r).then(s=>s.filter(o=>o).map(o=>o.summarize()))}nv.exports=ol});var ov=p((X1,sv)=>{"use strict";var{defer:gE}=j(),al=class{constructor(){Object.defineProperties(this,{_deferreds:{value:[]},_hasValue:{value:!1,writable:!0},_value:{value:null,writable:!0}})}put(e){this._hasValue=!0,this._value=e;let t=this._deferreds.shift();return t&&t.resolve(e),this}take(){if(this._hasValue&&!this._deferreds.length)return this._hasValue=!1,Promise.resolve(this._value);let e=gE();return this._deferreds.push(e),e.promise.then(t=>(this._hasValue=!1,t))}};sv.exports=al});var lv=p((Z1,cv)=>{"use strict";var vE=vt(),_E=ov(),bE=ft(),av=5e3,cl=class extends vE{constructor(e,t,n){super(e,"network_quality",n),Object.defineProperties(this,{_level:{value:null,writable:!0},_levels:{value:null,writable:!0},_remoteLevels:{value:new Map,writable:!0},_networkQualityInputs:{value:new _E},_resendTimer:{value:new bE(()=>{this._resendTimer.setDelay(this._resendTimer.delay*1.5),this._sendNetworkQualityInputs()},av,!1)},_networkQualityReportLevels:{get(){return{reportLevel:t.local,remoteReportLevel:t.remote}}}}),this.on("ready",r=>{r.on("message",s=>{this._log.debug("Incoming: ",s),s.type==="network_quality"&&this._handleNetworkQualityMessage(s)})}),this._sendNetworkQualityInputs()}get level(){return this._level}get levels(){return this._levels}get remoteLevels(){return this._remoteLevels}_handleNetworkQualityMessage(e){let t=!1,n=null,r=e?e.local:null;typeof r=="number"?(n=r,this._levels=null):typeof r=="object"&&r&&(this._levels=r,n=typeof r.level=="number"?r.level:Math.min(r.audio.send,r.audio.recv,r.video.send,r.video.recv)),n!==null&&this.level!==n&&(this._level=n,t=!0),this._remoteLevels=e&&e.remotes?e.remotes.reduce((s,o)=>((this._remoteLevels.get(o.sid)||{}).level!==o.level&&(t=!0),s.set(o.sid,o)),new Map):this._remoteLevels,t&&this.emit("updated"),this._resendTimer.setDelay(av),this._resendTimer.isSet&&setTimeout(()=>this._sendNetworkQualityInputs(),1e3)}_sendNetworkQualityInputs(){return this._resendTimer.clear(),this._networkQualityInputs.take().then(e=>{this._transport&&this._transport.publish(CE(e,this._networkQualityReportLevels))}).finally(()=>{this._resendTimer.start()})}put(e){this._networkQualityInputs.put(e)}};function CE(i,e){return Object.assign({type:"network_quality"},i,e)}cv.exports=cl});var dl=p((eD,dv)=>{"use strict";var yE=ne().EventEmitter,ll=class extends yE{constructor(){super(),Object.defineProperties(this,{_isEnabled:{value:null,writable:!0},isEnabled:{enumerable:!0,get(){return this._isEnabled}}})}disable(){return this.enable(!1)}enable(e){return e=typeof e=="boolean"?e:!0,this.isEnabled!==e&&(this._isEnabled=e,this.emit("updated")),this}};dv.exports=ll});var pv=p((tD,uv)=>{"use strict";var SE=dl(),ul=class extends SE{constructor(){super(),Object.defineProperties(this,{_revision:{value:1,writable:!0}})}update(e){return e.revision<this._revision?this:(this._revision=e.revision,this.enable(e.is_recording))}};uv.exports=ul});var mv=p((iD,fv)=>{"use strict";
73var hv=(Te(),_t(Ct)),TE=ac(),Qr=ga(),{filterObject:pl,flatMap:kE,difference:PE}=j(),Ot=$e(),hl=class{constructor(e,t,n={}){if(!e||typeof e.getStats!="function")throw new Error("StatsMonitor requires a stats source with getStats() method");if(!t)throw new Error("StatsMonitor requires a log instance");this._statsSource=e,this._log=t,this._publishIntervalMs=n.publishIntervalMs||1e4,this._collectionIntervalMs=n.collectionIntervalMs||1e3,this._collectionsPerPublish=Math.floor(this._publishIntervalMs/this._collectionIntervalMs),this._stallThreshold=.5,this._resumeThreshold=5,this._initializeState(),this._startStatsCollection()}_initializeState(){this._movingAverageDeltas=new Map,this._interval=null,this._statsCollectionCount=0,this._iceCandidatePublishToggle=!1,this._hasSeenActivePair=!1,this._lastNetworkType=null,this._lastQualityLimitationReasonByTrackSid=new Map,this._stalledTrackSids=new Set}_startStatsCollection(){if(this._interval){this._log.warn("StatsMonitor already started");return}this._interval=setInterval(()=>hv.__awaiter(this,void 0,void 0,function*(){yield this._collectAndAnalyzeStats()}),this._collectionIntervalMs),this._log.debug("StatsMonitor started")}_stopStatsCollection(){this._interval&&(clearInterval(this._interval),this._interval=null),this._log.debug("StatsMonitor stopped")}_collectAndAnalyzeStats(){return hv.__awaiter(this,void 0,void 0,function*(){try{let e=yield this._statsSource.getStats();this._statsCollectionCount++;let t=this._statsCollectionCount%this._collectionsPerPublish===0;t&&(this._iceCandidatePublishToggle=!this._iceCandidatePublishToggle);let n=t&&this._iceCandidatePublishToggle;this._analyzeStats(e,t,n)}catch(e){}})}_analyzeStats(e,t,n){!e||e instanceof Map&&e.size===0||Array.isArray(e)&&e.length===0||e.forEach((r,s)=>{this._checkNetworkTypeChanges(r),this._checkQualityLimitations(r.localVideoTrackStats),this._checkTrackStalls(r.remoteVideoTrackStats),t&&(this._publishStatsReport(s,r),n&&this._publishActiveIceCandidatePair(s,r))})}_checkNetworkTypeChanges(e){let{activeIceCandidatePair:t}=e;if(!t||!t.localCandidate)return;let n=t.localCandidate.networkType;if(n){if(!this._hasSeenActivePair){this._hasSeenActivePair=!0,this._lastNetworkType=n,Ot.network.typeChanged(n);return}this._lastNetworkType!==n&&(this._log.debug(`Network type changed: ${this._lastNetworkType} -> ${n}`),this._lastNetworkType=n,Ot.network.typeChanged(n))}}_checkQualityLimitations(e){Array.isArray(e)&&e.forEach(({trackSid:t,qualityLimitationReason:n})=>{if(!t||typeof n!="string")return;let r=this._lastQualityLimitationReasonByTrackSid.get(t);r!==n&&(this._log.debug(`Quality limitation reason changed for track ${t}: ${r||"none"} -> ${n}`),this._lastQualityLimitationReasonByTrackSid.set(t,n),Ot.quality.limitationChanged(t,n))})}_checkTrackStalls(e){Array.isArray(e)&&e.forEach(({trackSid:t,frameRateReceived:n})=>{if(n===void 0)return;let r=typeof n=="number"&&!isNaN(n)?n:0,s=this._stalledTrackSids.has(t);!s&&r<this._stallThreshold?(this._stalledTrackSids.add(t),this._log.debug(`Track ${t} stalled: frame rate ${r} below threshold ${this._stallThreshold}`),Ot.track.stalled(t,r,this._stallThreshold)):s&&r>=this._resumeThreshold&&(this._stalledTrackSids.delete(t),this._log.debug(`Track ${t} resumed: frame rate ${r} above threshold ${this._resumeThreshold}`),Ot.track.resumed(t,r,this._resumeThreshold))})}_addLocalTrackMetrics(e,t){let{framesEncoded:n,packetsSent:r,totalEncodeTime:s,totalPacketSendDelay:o}=t,a=Object.assign({},e),c=`${e.trackSid}+${e.ssrc}`,l=this._movingAverageDeltas.get(c)||new Map;if(typeof s=="number"&&typeof n=="number"){let d=l.get("avgEncodeDelay")||new Qr;d.putSample(s*1e3,n),a.avgEncodeDelay=Math.round(d.get()),l.set("avgEncodeDelay",d)}if(typeof o=="number"&&typeof r=="number"){let d=l.get("avgPacketSendDelay")||new Qr;d.putSample(o*1e3,r),a.avgPacketSendDelay=Math.round(d.get()),l.set("avgPacketSendDelay",d)}return this._movingAverageDeltas.set(c,l),a}_addRemoteTrackMetrics(e,t){let{estimatedPlayoutTimestamp:n,framesDecoded:r,jitterBufferDelay:s,jitterBufferEmittedCount:o,totalDecodeTime:a}=t,c=Object.assign({},e),l=`${e.trackSid}+${e.ssrc}`,d=this._movingAverageDeltas.get(l)||new Map;if(typeof n=="number"&&(c.estimatedPlayoutTimestamp=n),typeof r=="number"&&typeof a=="number"){let u=d.get("avgDecodeDelay")||new Qr;u.putSample(a*1e3,r),c.avgDecodeDelay=Math.round(u.get()),d.set("avgDecodeDelay",u)}if(typeof s=="number"&&typeof o=="number"){let u=d.get("avgJitterBufferDelay")||new Qr;u.putSample(s*1e3,o),c.avgJitterBufferDelay=Math.round(u.get()),d.set("avgJitterBufferDelay",u)}return this._movingAverageDeltas.set(l,d),c}_cleanupMovingAverageDeltas(e){let t=kE(["localAudioTrackStats","localVideoTrackStats","remoteAudioTrackStats","remoteVideoTrackStats"],r=>e[r].map(({ssrc:s,trackSid:o})=>`${o}+${s}`));PE(Array.from(this._movingAverageDeltas.keys()),t).forEach(r=>this._movingAverageDeltas.delete(r))}_publishStatsReport(e,t){let n=new TE(e,t,!0);Ot.quality.statsReport({audioTrackStats:n.remoteAudioTrackStats.map((r,s)=>this._addRemoteTrackMetrics(r,t.remoteAudioTrackStats[s])),localAudioTrackStats:n.localAudioTrackStats.map((r,s)=>this._addLocalTrackMetrics(r,t.localAudioTrackStats[s])),localVideoTrackStats:n.localVideoTrackStats.map((r,s)=>this._addLocalTrackMetrics(r,t.localVideoTrackStats[s])),peerConnectionId:n.peerConnectionId,videoTrackStats:n.remoteVideoTrackStats.map((r,s)=>this._addRemoteTrackMetrics(r,t.remoteVideoTrackStats[s]))}),this._cleanupMovingAverageDeltas(n)}_publishActiveIceCandidatePair(e,t){let n=this._replaceNullsWithDefaults(t.activeIceCandidatePair,e);Ot.quality.iceCandidatePair(n)}_replaceNullsWithDefaults(e,t){return e=Object.assign({availableIncomingBitrate:0,availableOutgoingBitrate:0,bytesReceived:0,bytesSent:0,consentRequestsSent:0,currentRoundTripTime:0,lastPacketReceivedTimestamp:0,lastPacketSentTimestamp:0,nominated:!1,peerConnectionId:t,priority:0,readable:!1,requestsReceived:0,requestsSent:0,responsesReceived:0,responsesSent:0,retransmissionsReceived:0,retransmissionsSent:0,state:"failed",totalRoundTripTime:0,transportId:"",writable:!1},pl(e||{},null)),e.localCandidate=Object.assign({candidateType:"host",deleted:!1,ip:"",port:0,priority:0,protocol:"udp",url:""},pl(e.localCandidate||{},null)),e.remoteCandidate=Object.assign({candidateType:"host",ip:"",port:0,priority:0,protocol:"udp",url:""},pl(e.remoteCandidate||{},null)),e}cleanup(){this._stopStatsCollection(),this._movingAverageDeltas.clear(),this._lastQualityLimitationReasonByTrackSid.clear(),this._stalledTrackSids.clear()}};fv.exports=hl});var gl=p((nD,gv)=>{"use strict";var wE=dl(),EE=Pt(),OE=ft(),{buildLogLevels:RE}=j(),{DEFAULT_LOG_LEVEL:LE}
73=N(),xE=_e(),{MediaConnectionError:ME,MediaDTLSTransportFailedError:IE,SignalingConnectionDisconnectedError:DE}=Pe(),AE=0,jE={connected:["reconnecting","disconnected"],reconnecting:["connected","disconnected"],disconnected:[]},ml=class extends EE{constructor(e,t,n,r){r=Object.assign({logLevel:LE,RecordingSignaling:wE,Timeout:OE},r);let s=RE(r.logLevel);super("connected",jE);let o=r.RecordingSignaling,a=new r.Timeout(()=>{this._disconnect(this._reconnectingError)},r.sessionTimeout,!1);Object.defineProperties(this,{_instanceId:{value:AE++},_log:{value:r.log?r.log.createLog("default",this):new xE("default",this,s,r.loggerName)},_mediaConnectionIsReconnecting:{writable:!0,value:!1},_options:{value:r},_reconnectingError:{value:null,writable:!0},_sessionTimeout:{value:a},dominantSpeakerSid:{enumerable:!0,value:null,writable:!0},localParticipant:{enumerable:!0,value:e},name:{enumerable:!0,value:n},participants:{enumerable:!0,value:new Map},recording:{enumerable:!0,value:new o},sid:{enumerable:!0,value:t}}),this.on("connectionStateChanged",()=>{this.connectionState==="failed"&&!["disconnected","failed"].includes(this.iceConnectionState)&&this._disconnect(new IE)}),this.on("iceConnectionStateChanged",()=>fl(this)),this.on("signalingConnectionStateChanged",()=>fl(this)),setTimeout(()=>fl(this))}_disconnect(e){return this.state!=="disconnected"?(this.preempt("disconnected",null,[e]),!0):!1}toString(){return`[RoomSignaling #${this._instanceId}: ${this.localParticipant?this.localParticipant.sid:"null"}]`}connectParticipant(e){let t=this;return e.state==="disconnected"||this.participants.has(e.sid)?!1:(this.participants.set(e.sid,e),e.on("stateChanged",function n(r){r==="disconnected"&&(e.removeListener("stateChanged",n),t.participants.delete(e.sid),t.emit("participantDisconnected",e))}),this.emit("participantConnected",e),!0)}disconnect(){return this._disconnect()}setDominantSpeaker(e){this.dominantSpeakerSid=e,this.emit("dominantSpeakerChanged")}};function fl(i){if(i.state==="disconnected"||i.signalingConnectionState==="disconnected"){i._sessionTimeout.clear();return}let e;i.signalingConnectionState==="reconnecting"?e=i.signalingConnectionState:i.iceConnectionState==="failed"?(i._mediaConnectionIsReconnecting=!0,e="reconnecting"):i.iceConnectionState==="new"||i.iceConnectionState==="checking"?e=i._mediaConnectionIsReconnecting?"reconnecting":"connected":(i._mediaConnectionIsReconnecting=!1,i._reconnectingError=null,i._sessionTimeout.clear(),e="connected"),e!==i.state&&(e==="reconnecting"?(i._reconnectingError=i.signalingConnectionState==="reconnecting"?new DE:new ME,i._sessionTimeout.start(),i.preempt(e,null,[i._reconnectingError])):i.preempt(e))}gv.exports=ml});var _v=p((rD,vv)=>{"use strict";var vl=class{constructor({actual:e=null,available:t=null,level:n=null}){Object.defineProperties(this,{actual:{value:e,enumerable:!0},available:{value:t,enumerable:!0},level:{value:n,enumerable:!0}})}};vv.exports=vl});
73var Cv=p((sD,bv)=>{"use strict";var _l=class{constructor({fractionLost:e=null,level:t=null}){Object.defineProperties(this,{fractionLost:{value:e,enumerable:!0},level:{value:t,enumerable:!0}})}};bv.exports=_l});var Sv=p((oD,yv)=>{"use strict";var bl=class{constructor({jitter:e=null,rtt:t=null,level:n=null}){Object.defineProperties(this,{jitter:{value:e,enumerable:!0},rtt:{value:t,enumerable:!0},level:{value:n,enumerable:!0}})}};yv.exports=bl});var yl=p((aD,Tv)=>{"use strict";var VE=_v(),qE=Cv(),NE=Sv(),Cl=class{constructor({bandwidth:e=null,fractionLost:t=null,latency:n=null}){Object.defineProperties(this,{bandwidth:{value:e?new VE(e):null,enumerable:!0},fractionLost:{value:t?new qE(t):null,enumerable:!0},latency:{value:n?new NE(n):null,enumerable:!0}})}};Tv.exports=Cl});var Pv=p((cD,kv)=>{"use strict";var FE=yl(),Sl=class extends FE{constructor(e){super(e)}};kv.exports=Sl});var Ev=p((lD,wv)=>{"use strict";var BE=yl(),Tl=class extends BE{constructor(e){super(e)}};wv.exports=Tl});var Pl=p((dD,Ov)=>{"use strict";var UE=Pv(),$E=Ev(),kl=class{constructor({send:e,recv:t,sendStats:n=null,recvStats:r=null}){Object.defineProperties(this,{send:{value:e,enumerable:!0},recv:{value:t,enumerable:!0},sendStats:{value:n?new UE(n):null,enumerable:!0},recvStats:{value:r?new $E(r):null,enumerable:!0}})}};Ov.exports=kl});var Lv=p((uD,Rv)=>{"use strict";var WE=Pl(),wl=class extends WE{constructor(e){super(e)}};Rv.exports=wl});var Mv=p((pD,xv)=>{"use strict";var HE=Pl(),El=class extends HE{constructor(e){super(e)}};xv.exports=El});var Dv=p((hD,Iv)=>{"use strict";var zE=Lv(),GE=Mv(),Ol=class{constructor({level:e,audio:t,video:n}){Object.defineProperties(this,{level:{value:e,enumerable:!0},audio:{value:t?new zE(t):null,enumerable:!0},video:{value:n?new GE(n):null,enumerable:!0}})}};Iv.exports=Ol});var Kr=p((fD,Av)=>{"use strict";var QE=Pt(),KE=Dv(),JE={connecting:["connected"],connected:["disconnected","reconnecting"],reconnecting:["connected","disconnected"],disconnected:[]},Rl=class extends QE{constructor(){super("connecting",JE),Object.defineProperties(this,{_identity:{writable:!0,value:null},_networkQualityLevel:{value:null,writable:!0},_networkQualityStats:{value:null,writable:!0},_sid:{writable:!0,value:null},identity:{enumerable:!0,get(){return this._identity}},sid:{enumerable:!0,get(){return this._sid}},tracks:{enumerable:!0,value:new Map}})}get networkQualityLevel(){return this._networkQualityLevel}get networkQualityStats(){return this._networkQualityStats}addTrack(e){return this.tracks.set(e.id||e.sid,e),this.emit("trackAdded",e),this}disconnect(){return this.state!=="disconnected"?(this.preempt("disconnected"),!0):!1}removeTrack(e){let t=this.tracks.get(e.id||e.sid);return this.tracks.delete(e.id||e.sid),t&&this.emit("trackRemoved",e),t||null}setNetworkQualityLevel(e,t){this._networkQualityLevel!==e&&(this._networkQualityLevel=e,this._networkQualityStats=t&&(t.audio||t.video)?new KE(t):null,this.emit("networkQualityLevelChanged"))}connect(e,t){return this.state==="connecting"||this.state==="reconnecting"?(this._sid||(this._sid=e),this._identity||(this._identity=t),this.preempt("connected"),!0):!1}reconnecting(){return this.state==="connecting"||this.state==="connected"?(this.preempt("reconnecting"),!0):!1}};Av.exports=Rl});var Vv=p((mD,jv)=>{"use strict";var YE=Kr(),Ll=class extends YE{constructor(e,t){super(),this.connect(e,t)}};jv.exports=Ll});var Ml=p((gD,qv)=>{"use strict";var{EventEmitter:XE}=ne(),xl=class extends XE{constructor(e,t,n,r){super();let s=null;Object.defineProperties(this,{_error:{value:null,writable:!0},_isEnabled:{value:n,writable:!0},_priority:{value:r,writable:!0},_trackTransceiver:{value:null,writable:!0},_sid:{get(){return s},set(o){s===null&&(s=o)}},kind:{enumerable:!0,value:t},name:{enumerable:!0,value:e}})}get error(){return this._error}get isEnabled(){return this._isEnabled}get priority(){return this._priority}get sid(){return this._sid}get trackTransceiver(){return this._trackTransceiver}disable(){return this.enable(!1)}enable(e){return e=typeof e=="boolean"?e:!0,this.isEnabled!==e&&(this._isEnabled=e,this.emit
73("updated")),this}setTrackTransceiver(e){return e=e||null,this.trackTransceiver!==e&&(this._trackTransceiver=e,this.emit("updated")),this}setSid(e){return this.sid===null&&(this._sid=e,this.emit("updated")),this}};qv.exports=xl});var Fv=p((vD,Nv)=>{"use strict";var ZE=Ml(),Il=class extends ZE{constructor(e,t,n,r,s,o){super(t,n,r,s),Object.defineProperties(this,{_isSwitchedOff:{value:o,writable:!0}}),this.setSid(e)}get isSubscribed(){return!!this.trackTransceiver}get isSwitchedOff(){return this._isSwitchedOff}subscribeFailed(e){return this.error||(this._error=e,this.emit("updated")),this}setPriority(e){return this._priority!==e&&(this._priority=e,this.emit("updated")),this}setSwitchedOff(e){return this._isSwitchedOff!==e&&(this._isSwitchedOff=e,this.emit("updated")),this}};Nv.exports=Il});var Uv=p((_D,Bv)=>{"use strict";var eO=Fv(),Dl=class extends eO{constructor(e,t){super(e.sid,e.name,e.kind,e.enabled,e.priority,t)}update(e){return this.enable(e.enabled),this.setPriority(e.priority),this}};Bv.exports=Dl});var Wv=p((bD,$v)=>{"use strict";var tO=Vv(),iO=Uv(),Al=class extends tO{constructor(e,t,n,r,s,o){return super(e.sid,e.identity),o=Object.assign({RemoteTrackPublicationV2:iO},o),Object.defineProperties(this,{_revision:{writable:!0,value:null},_RemoteTrackPublicationV2:{value:o.RemoteTrackPublicationV2},_getInitialTrackSwitchOffState:{value:t},updateSubscriberTrackPriority:{value:(a,c)=>n(a,c)},updateTrackRenderHint:{value:(a,c)=>r(a,c)},clearTrackHint:{value:a=>s(a)},revision:{enumerable:!0,get(){return this._revision}}}),this.update(e)}_getOrCreateTrack(e){let t=this._RemoteTrackPublicationV2,n=this.tracks.get(e.sid);if(!n){let r=this._getInitialTrackSwitchOffState(e.sid);n=new t(e,r),this.addTrack(n)}return n}update(e){if(this.revision!==null&&e.revision<=this.revision)return this;this._revision=e.revision;let t=new Set;switch(e.tracks.forEach(n=>{let r=this._getOrCreateTrack(n);r.update(n),t.add(r)}),this.tracks.forEach(n=>{t.has(n)||this.removeTrack(n)}),e.state){case"disconnected":this.disconnect();break;case"reconnecting":this.reconnecting();break;case"connected":this.connect(this.sid,this.identity);break}return this}};$v.exports=Al});var zv=p((CD,Hv)=>{"use strict";var nO=vt(),jl=class extends nO{constructor(e,t){super(e,"track_priority",t),Object.defineProperties(this,{_enqueuedPriorityUpdates:{value:new Map}}),this.on("ready",n=>{Array.from(this._enqueuedPriorityUpdates.keys()).forEach(r=>{n.publish({type:"track_priority",track:r,subscribe:this._enqueuedPriorityUpdates.get(r)})})})}sendTrackPriorityUpdate(e,t,n){if(t!=="subscribe")throw new Error("only subscribe priorities are supported, found: "+t);this._enqueuedPriorityUpdates.set(e,n),this._transport&&this._transport.publish({type:"track_priority",track:e,subscribe:n})}};Hv.exports=jl});var Qv=p((yD,Gv)=>{"use strict";var rO=vt(),Vl=class extends rO{constructor(e,t){super(e,"track_switch_off",t),this.on("ready",n=>{n.on("message",r=>{r.type==="track_switch_off"&&this._setTrackSwitchOffUpdates(r.off||[],r.on||[])})})}_setTrackSwitchOffUpdates(e,t){this.emit("updated",e,t)}};Gv.exports=Vl});var Yv=p((SD,Jv)=>{"use strict";var sO=vt(),oO=ft(),{isDeepEqual:aO}=j(),Kv=2e3,cO=1,ql=class extends sO{constructor(e,t){super(e,"render_hints",t),Object.defineProperties(this,{_trackSidsToRenderHints:{value:new Map},_responseTimer:{value:new oO(()=>{this._sendAllHints(),this._responseTimer.setDelay(this._responseTimer.delay*2)},Kv,!1)}}),this.on("ready",n=>{n.on("message",r=>{this._log.debug("Incoming: ",r),r.type==="render_hints"?this._processHintResults(r&&r.subscriber&&r.subscriber.hints||[]):this._log.warn("Unknown message type: ",r.type)}),this._sendAllHints()})}_sendAllHints(){Array.from(this._trackSidsToRenderHints.keys()).forEach(e=>{let t=this._trackSidsToRenderHints.get(e);t.renderDimensions&&(t.isDimensionDirty=!0),"enabled"in t&&(t.isEnabledDirty=!0)}),this._sendHints()}_processHintResults(e){this._responseTimer.clear(),this._responseTimer.setDelay(Kv),e.forEach(t=>{t.result!=="OK"&&this._log.debug("Server error processing hint:",t)}),this._sendHints()}_sendHints(){if(!this._transport||this._responseTimer.isSet)return;let e=[];
73if(Array.from(this._trackSidsToRenderHints.keys()).forEach(t=>{let n=this._trackSidsToRenderHints.get(t);if(n.isEnabledDirty||n.isDimensionDirty){let r={track:t};n.isEnabledDirty&&(r.enabled=n.enabled,n.isEnabledDirty=!1),n.isDimensionDirty&&(r.render_dimensions=n.renderDimensions,n.isDimensionDirty=!1),e.push(r)}}),e.length>0){let t={type:"render_hints",subscriber:{id:cO++,hints:e}};this._log.debug("Outgoing: ",t),this._transport.publish(t),this._responseTimer.start()}}setTrackHint(e,t){let n=this._trackSidsToRenderHints.get(e)||{isEnabledDirty:!1,isDimensionDirty:!1};"enabled"in t&&n.enabled!==t.enabled&&(n.enabled=!!t.enabled,n.isEnabledDirty=!0),t.renderDimensions&&!aO(t.renderDimensions,n.renderDimensions)&&(n.renderDimensions=t.renderDimensions,n.isDimensionDirty=!0),this._trackSidsToRenderHints.set(e,n),this._sendHints()}clearTrackHint(e){this._trackSidsToRenderHints.delete(e)}};Jv.exports=ql});var Zv=p((TD,Xv)=>{"use strict";var lO=vt(),dO=1,Nl=class extends lO{constructor(e,t){super(e,"publisher_hints",t),this.on("ready",n=>{this._log.debug("publisher_hints transport ready:",n),n.on("message",r=>{this._log.debug("Incoming: ",r),r.type==="publisher_hints"?r.publisher&&r.publisher.hints&&r.publisher.id&&this._processPublisherHints(r.publisher.hints,r.publisher.id):this._log.warn("Unknown message type: ",r.type)})})}sendTrackReplaced({trackSid:e}){if(!this._transport)return;let t={type:"client_reset",track:e,id:dO++};this._log.debug("Outgoing: ",t),this._transport.publish(t)}sendHintResponse({id:e,hints:t}){if(!this._transport)return;let n={type:"publisher_hints",id:e,hints:t};this._log.debug("Outgoing: ",n),this._transport.publish(n)}_processPublisherHints(e,t){try{this.emit("updated",e,t)}catch(n){this._log.error("error processing hints:",n)}}};Xv.exports=Nl});var o_=p((kD,s_)=>{"use strict";var uO=Eg(),pO=Rg(),hO=rv(),fO=lv(),mO=pv(),gO=mv(),vO=gl(),_O=Wv(),bO=zv(),CO=Qv(),yO=Yv(),SO=Zv(),{constants:{DEFAULT_SESSION_TIMEOUT_SEC:TO},createBandwidthProfilePayload:kO,defer:PO,flatMap:n_,oncePerTick:e_}
73=j(),{createTwilioError:wO}=Pe(),EO=1e4,OO=1e3,Fl=class extends vO{constructor(e,t,n,r,s){t.options=Object.assign({session_timeout:TO},t.options),s=Object.assign({DominantSpeakerSignaling:uO,TranscriptionSignaling:pO,NetworkQualityMonitor:hO,NetworkQualitySignaling:fO,RecordingSignaling:mO,RemoteParticipantV2:_O,TrackPrioritySignaling:bO,TrackSwitchOffSignaling:CO,bandwidthProfile:null,sessionTimeout:t.options.session_timeout*1e3,statsPublishIntervalMs:EO,statsCollectionIntervalMs:OO},s),e.setBandwidthProfile(s.bandwidthProfile);let{options:{signaling_region:o,audio_processors:a=[]}}=t;e.setSignalingRegion(o),a.includes("krisp")&&a.push("rnnoise"),e.setAudioProcessors(a),r.setIceReconnectTimeout(s.sessionTimeout),super(e,t.sid,t.name,s);let c=d=>this._getTrackReceiver(d),l=this._log;Object.defineProperties(this,{_disconnectedParticipantRevisions:{value:new Map},_NetworkQualityMonitor:{value:s.NetworkQualityMonitor},_lastBandwidthProfileRevision:{value:e.bandwidthProfileRevision,writable:!0},_mediaStatesWarningsRevision:{value:0,writable:!0},_networkQualityMonitor:{value:null,writable:!0},_networkQualityConfiguration:{value:e.networkQualityConfiguration},_peerConnectionManager:{value:r},_published:{value:new Map},_publishedRevision:{value:0,writable:!0},_RemoteParticipantV2:{value:s.RemoteParticipantV2},_subscribed:{value:new Map},_subscribedRevision:{value:0,writable:!0},_subscriptionFailures:{value:new Map},_dominantSpeakerSignaling:{value:new s.DominantSpeakerSignaling(c,{log:l})},_transcriptionSignaling:{value:new s.TranscriptionSignaling(c,{log:l})},_networkQualitySignaling:{value:new s.NetworkQualitySignaling(c,e.networkQualityConfiguration,{log:l})},_renderHintsSignaling:{value:new yO(c,{log:l})},_publisherHintsSignaling:{value:new SO(c,{log:l})},_trackPrioritySignaling:{value:new s.TrackPrioritySignaling(c,{log:l})},_trackSwitchOffSignaling:{value:new s.TrackSwitchOffSignaling(c,{log:l})},_pendingSwitchOffStates:{value:new Map},_statsMonitor:{value:s.eventObserver&&s.insights?new gO(this,l,{publishIntervalMs:s.statsPublishIntervalMs,collectionIntervalMs:s.statsCollectionIntervalMs}):null},_transport:{value:n},_trackReceiverDeferreds:{value:new Map},mediaRegion:{enumerable:!0,value:t.options.media_region||null}}),this._initTrackSwitchOffSignaling(),this._initDominantSpeakerSignaling(),this._initTranscriptionSignaling(),this._initNetworkQualityMonitorSignaling(),this._initPublisherHintSignaling(),RO(this,e),LO(this,r),xO(this,n),this._statsMonitor&&this.on("stateChanged",d=>{d==="disconnected"&&this._statsMonitor&&this._statsMonitor.cleanup()}),this._update(t),this._peerConnectionManager.setEffectiveAdaptiveSimulcast(this._publisherHintsSignaling.isSetup)}get connectionState(){return this._peerConnectionManager.connectionState}get signalingConnectionState(){return this._transport.state==="syncing"?"reconnecting":this._transport.state}get iceConnectionState(){return this._peerConnectionManager.iceConnectionState}_deleteTrackReceiverDeferred(e){return this._trackReceiverDeferreds.delete(e)}_getOrCreateTrackReceiverDeferred(e){let t=this._trackReceiverDeferreds.get(e)||PO(),r=this._peerConnectionManager.getTrackReceivers().find(s=>s.id===e&&s.readyState!=="ended");return r?t.resolve(r):this._trackReceiverDeferreds.set(e,t),t}_addTrackReceiver(e){return this._getOrCreateTrackReceiverDeferred(e.id).resolve(e),this}_disconnect(e){let t=super._disconnect.call(this,e);return t&&(this._teardownNetworkQualityMonitor(),this._transport.disconnect(),this._peerConnectionManager.close()),this.localParticipant.tracks.forEach(n=>{n.publishFailed(e||new Error("LocalParticipant disconnected"))}),t}_getTrackReceiver(e){return this._getOrCreateTrackReceiverDeferred(e).promise.then(t=>(this._deleteTrackReceiverDeferred(e),t))}_getInitialTrackSwitchOffState(e){let t=this._pendingSwitchOffStates.get(e)||!1;return this._pendingSwitchOffStates.delete(e),t&&this._log.warn(`[${e}] was initially switched off! `),t}_getTrackSidsToTrackSignalings(){let e=n_(this.participants,t=>Array.from(t.tracks));return new Map(e)}_getOrCreateRemoteParticipant(e){let t=this._RemoteParticipantV2,n=this.participants.get(e.sid),r=this;return n||(n=new t(e,s=>this._getInitialTrackSwitchOffState(s),(s,o)=>this._trackPrioritySignaling.sendTrackPriorityUpdate(s,"subscribe",o),(s,o)=>this._renderHintsSignaling.setTrackHint(s,o),s=>this._renderHintsSignaling.clearTrackHint(s)),n.on("stateChanged",function s(o){o==="disconnected"&&(n.removeListener("stateChanged",s),r.participants.delete(n.sid),r._disconnectedParticipantRevisions.set(n.sid,n.revision))}),this.connectParticipant(n)),n}_getState(){return{participant:this.localParticipant.getState()}}_maybeAddBandwidthProfile(e){let{bandwidthProfile:t,bandwidthProfileRevision:n}=this.localParticipant;return t&&this._lastBandwidthProfileRevision<n?(this._lastBandwidthProfileRevision=n,Object.assign({bandwidth_profile:kO(t)},e)):e}
73_publishNewLocalParticipantState(){this._transport.publish(this._maybeAddBandwidthProfile(this._getState()))}_publishPeerConnectionState(e){this._transport.publish(Object.assign({peer_connections:[e]},this._getState()))}_update(e){if(e.subscribed&&e.subscribed.revision>this._subscribedRevision){this._subscribedRevision=e.subscribed.revision,e.subscribed.tracks.forEach(r=>{r.id?(this._subscriptionFailures.delete(r.sid),this._subscribed.set(r.sid,r.id)):r.error&&!this._subscriptionFailures.has(r.sid)&&this._subscriptionFailures.set(r.sid,r.error)});let n=new Set(e.subscribed.tracks.filter(r=>!!r.id).map(r=>r.sid));this._subscribed.forEach((r,s)=>{n.has(s)||this._subscribed.delete(s)})}let t=new Set;return(e.participants||[]).forEach(n=>{if(n.sid===this.localParticipant.sid)return;let r=this._disconnectedParticipantRevisions.get(n.sid);if(r&&n.revision<=r)return;r&&this._disconnectedParticipantRevisions.delete(n.sid);let s=this._getOrCreateRemoteParticipant(n);s.update(n),t.add(s)}),e.type==="synced"&&this.participants.forEac
73h(n=>{t.has(n)||n.disconnect()}),MO(this),e.peer_connections&&this._peerConnectionManager.update(e.peer_connections,e.type==="synced"),e.recording&&this.recording.update(e.recording),e.published&&e.published.revision>this._publishedRevision&&(this._publishedRevision=e.published.revision,e.published.tracks.forEach(n=>{n.sid&&this._published.set(n.id,n.sid)}),this.localParticipant.update(e.published)),e.participant&&this.localParticipant.connect(e.participant.sid,e.participant.identity),[this._dominantSpeakerSignaling,this._transcriptionSignaling,this._networkQualitySignaling,this._trackPrioritySignaling,this._trackSwitchOffSignaling,this._renderHintsSignaling,this._publisherHintsSignaling].forEach(n=>{let r=n.channel;!n.isSetup&&e.media_signaling&&e.media_signaling[r]&&e.media_signaling[r].transport&&e.media_signaling[r].transport.type==="data-channel"&&n.setup(e.media_signaling[r].transport.label)}),e.type==="warning"&&e.states&&e.states.revision>this._mediaStatesWarningsRevision&&(this._mediaStatesWarningsRevision=e.states.revision,this.localParticipant.updateMediaStates(e.states)),this}_initPublisherHintSignaling(){this._publisherHintsSignaling.on("updated",(t,n)=>{Promise.all(t.map(r=>this.localParticipant.setPublisherHint(r.track,r.encodings).then(s=>({track:r.track,result:s})))).then(r=>{this._publisherHintsSignaling.sendHintResponse({id:n,hints:r})})});let e=t=>{t.kind==="video"&&t.trackTransceiver.on("replaced",()=>{this._publisherHintsSignaling.sendTrackReplaced({trackSid:t.sid})})};Array.from(this.localParticipant.tracks.values()).forEach(t=>e(t)),this.localParticipant.on("trackAdded",t=>e(t))}_initTrackSwitchOffSignaling(){this._trackSwitchOffSignaling.on("updated",(e,t)=>{try{this._log.debug("received trackSwitch: ",{tracksOn:t,tracksOff:e});let n=new Map;t.forEach(r=>n.set(r,!0)),e.forEach(r=>{n.get(r)&&this._log.warn(`${r} is DUPLICATED in both tracksOff and tracksOn list`),n.set(r,!1)}
73),this.participants.forEach(r=>{r.tracks.forEach(s=>{let o=n.get(s.sid);typeof o<"u"&&(s.setSwitchedOff(!o),n.delete(s.sid))})}),n.forEach((r,s)=>this._pendingSwitchOffStates.set(s,!r))}catch(n){this._log.error("error processing track switch off:",n)}})}_initDominantSpeakerSignaling(){this._dominantSpeakerSignaling.on("updated",()=>this.setDominantSpeaker(this._dominantSpeakerSignaling.loudestParticipantSid))}_initTranscriptionSignaling(){this._transcriptionSignaling.on("transcription",e=>{this.emit("transcription",e)})}_initNetworkQualityMonitorSignaling(){this._networkQualitySignaling.on("ready",()=>{let e=new this._NetworkQualityMonitor(this._peerConnectionManager,this._networkQualitySignaling);this._networkQualityMonitor=e,e.on("updated",()=>{this.iceConnectionState!=="failed"&&(this.localParticipant.setNetworkQualityLevel(e.level,e.levels),this.participants.forEach(t=>{let n=e.remoteLevels.get(t.sid);n&&t.setNetworkQualityLevel(n.level,n)}))}),e.start()}),this._networkQualitySignaling.on("teardown",()=>this._teardownNetworkQualityMonitor())}_teardownNetworkQualityMonitor(){this._networkQualityMonitor&&(this._networkQualityMonitor.stop(),this._networkQualityMonitor=null)}getStats(){return this._peerConnectionManager.getStats().then(e=>new Map(Array.from(e).map(([t,n])=>[t,Object.assign({},n,{localAudioTrackStats:t_(this,n.localAudioTrackStats),localVideoTrackStats:t_(this,n.localVideoTrackStats),remoteAudioTrackStats:i_(this,n.remoteAudioTrackStats),remoteVideoTrackStats:i_(this,n.remoteVideoTrackStats)})])))}};function r_(i,e){return e.reduce((t,n)=>{let r=i.get(n.trackId);return r?[Object.assign({},n,{trackSid:r})].concat(t):t},[])}function t_(i,e){return r_(i._published,e)}function i_(i,e){let t=new Map(Array.from(i._subscribed.entries()).map(([n,r])=>[r,n]));return r_(t,e)}function RO(i,e){let t=e_(()=>{i._publishNewLocalParticipantState()}),n=e_(()=>{let r=n_(e.tracks,s=>s.trackTransceiver);i._peerConnectionManager.setTrackSenders(r)});e.on("trackAdded",n),e.on("trackRemoved",n),e.on("updated",t),i.on("stateChanged",function r(s){s==="disconnected"&&(e.removeListener("trackAdded",n),e.removeListener("trackRemoved",n),e.removeListener("updated",t),i.removeListener("stateChanged",r),e.disconnect())}),i.on("signalingConnectionStateChanged",()=>{let{localParticipant:r,signalingConnectionState:s}=i,{identity:o,sid:a}=r;switch(s){case"connected":r.connect(a,o);break;case"reconnecting":r.reconnecting();break}})}function LO(i,e){e.on("description",function(n){i._publishPeerConnectionState(n)}),e.dequeue("description"),e.on("candidates",function(n){i._publishPeerConnectionState(n)}),e.dequeue("candidates"),e.on("trackAdded",i._addTrackReceiver.bind(i)),e.dequeue("trackAdded"),e.getTrackReceivers().forEach(i._addTrackReceiver,i),e.on("connectionStateChanged",()=>{i.emit("connectionStateChanged")}),e.on("iceConnectionStateChanged",()=>{i.emit("iceConnectionStateChanged"),i.iceConnectionState==="failed"&&(i.localParticipant.networkQualityLevel!==null&&i.localParticipant.setNetworkQualityLevel(0),i.participants.forEac
73h(t=>{t.networkQualityLevel!==null&&t.setNetworkQualityLevel(0)}))})}function xO(i,e){e.on("message",i._update.bind(i)),e.on("stateChanged",function t(n,r){n==="disconnected"&&(i.state!=="disconnected"&&i._disconnect(r),e.removeListener("stateChanged",t)),i.emit("signalingConnectionStateChanged")})}function MO(i){let e=i._getTrackSidsToTrackSignalings();i._subscriptionFailures.forEach((t,n)=>{let r=e.get(n);r&&(i._subscriptionFailures.delete(n),r.subscribeFailed(wO(t.code,t.message)))}),e.forEach(t=>{let n=i._subscribed.get(t.sid);(!n||t.isSubscribed&&t.trackTransceiver.id!==n)&&t.setTrackTransceiver(null),n&&i._getTrackReceiver(n).then(r=>t.setTrackTransceiver(r))})}s_.exports=Fl});var d_=p((PD,l_)=>{"use strict";var IO=Pt(),c_=da(),DO=_c(),{reconnectBackoffConfig:AO}=N(),jO=ft(),{SDK_NAME:VO,SDK_VERSION:qO,SDP_FORMAT:NO}=N(),{createBandwidthProfilePayload:FO,createMediaSignalingPayload:BO,createMediaWarningsPayload:UO,createSubscribePayload:$O,getUserAgent:WO,isNonArrayObject:HO}=j(),{createTwilioError:zO,RoomCompletedError:Bl,SignalingConnectionError:GO,SignalingServerBusyError:QO}=Pe(),KO=1,Ul=2,JO={connecting:["connected","disconnected"],connected:["disconnected","syncing"],syncing:["connected","disconnected"],disconnected:[]},$l=class extends IO{constructor(e,t,n,r,s,o){o=Object.assign({Backoff:DO,TwilioConnection:c_,iceServers:null,trackPriority:!0,trackSwitchOff:!0,renderHints:!0,userAgent:WO()},o),super("connecting",JO),Object.defineProperties(this,{_accessToken:{value:t},_adaptiveSimulcast:{value:o.adaptiveSimulcast},_automaticSubscription:{value:o.automaticSubscription},_bandwidthProfile:{value:o.bandwidthProfile},_dominantSpeaker:{value:o.dominantSpeaker},_receiveTranscriptions:{value:o.receiveTranscriptions},_eventObserver:{value:o.eventObserver,writable:!1},_renderHints:{value:o.renderHints},_iceServersStatus:{value:Array.isArray(o.iceServers)?"overrode":"acquire"},_localParticipant:{value:n},_name:{value:e},_networkQuality:{value:HO(o.networkQuality)||o.networkQuality},_notifyWarnings:{value:o.notifyWarnings},_options:{value:o},_peerConnectionManager:{value:r},_sessionTimer:{value:null,writable:!0},_sessionTimeoutMS:{value:0,writable:!0},_reconnectBackoff:{value:new o.Backoff(AO)},_session:{value:null,writable:!0},_trackPriority:{value:o.trackPriority},_trackSwitchOff:{value:o.trackSwitchOff},_twilioConnection:{value:null,writable:!0},_updatesReceived:{value:[]},_updatesToSend:{value:[]},_userAgent:{value:o.userAgent},_wsServer:{value:s}}),XO(this)}_createConnectOrSyncOrDisconnectMessage(){if(this.state==="connected")return null;if(this.state==="disconnected")return{session:this._session,type:"disconnect",version:Ul};let e={connecting:"connect",syncing:"sync"}[this.state],t={name:this._name,participant:this._localParticipant.getState(),peer_connections:this._peerConnectionManager.getStates(),type:e,version:Ul};return t.type==="connect"?(t.ice_servers=this._iceServersStatus,t.publisher={name:VO,sdk_version:qO,user_agent:this._userAgent},this._bandwidthProfile&&(t.bandwidth_profile=FO(this._bandwidthProfile)),this._notifyWarnings&&(t.participant.media_warnings=UO(this._notifyWarnings)),t.media_signaling=BO(this._dominantSpeaker,this._networkQuality,this._trackPriority,this._trackSwitchOff,this._adaptiveSimulcast,this._renderHints,this._receiveTranscriptions),t.subscribe=$O(this._automaticSubscription),t.format=NO,t.token=this._accessToken):t.type==="sync"?(t.session=this._session,t.token=this._accessToken):t.type==="update"&&(t.session=this._session),t}_createIceMessage(){return{edge:"roaming",token:this._accessToken,type:"ice",version:KO}}_sendConnectOrSyncOrDisconnectMessage(){let e=this._createConnectOrSyncOrDisconnectMessage();e&&this._twilioConnection.sendMessage(e)}disconnect(e){return this.state!=="disconnected"?(this.preempt("disconnected",null,[e]),this._sendConnectOrSyncOrDisconnectMessage(),this._twilioConnection.close(),!0):!1}publish(e){switch(this.state){case"connected":return this._twilioConnection.sendMessage(Object.assign({session:this._session,type:"update",version:Ul},e)),!0;case"connecting":case"syncing":return this._updatesToSend.push(e),!0;default:return!1}}publishEvent(e,t,n,r){this._eventObserver.emit("event",{group:e,name:t,level:n,payload:r})}sync(){return this.state==="connected"?(this.preempt("syncing"),this._sendConnectOrSyncOrDisconnectMessage(),!0):!1}_setSession(e,t){this._session=e,this._sessionTimeoutMS=t*1e3}_getReconnectTimer(){return this._sessionTimeoutMS===0?null:(this._sessionTimer||(this._sessionTimer=new jO(()=>{this._sessionTimer&&(this._sessionTimeoutMS=0)},this._sessionTimeoutMS)),new Promise(e=>{this._reconnectBackoff.backoff(e)}))}_clearReconnectTimer(){this._reconnectBackoff.reset(),this._sessionTimer&&(this._sessionTimer.clear(),this._sessionTimer=null)}};function a_(i){return Array.from(i.reduce((e,t)=>
73{let n=e.get(t.id)||t;return(!n.description&&t.description||n.description&&t.description&&t.description.revision>n.description.revision)&&(n.description=t.description),(!n.ice&&t.ice||n.ice&&t.ice&&t.ice.revision>n.ice.revision)&&(n.ice=t.ice),e.set(n.id,n),e},new Map).values())}function YO(i){return i.reduce((e,t)=>((!e.participant&&t.participant||e.participant&&t.participant&&t.participant.revision>e.participant.revision)&&(e.participant=t.participant),!e.peer_connections&&t.peer_connections?e.peer_connections=a_(t.peer_connections):e.peer_connections&&t.peer_connections&&(e.peer_connections=a_(e.peer_connections.concat(t.peer_connections))),e),{})}function XO(i){function e(){if(i.state==="disconnected")return;i._twilioConnection&&i._twilioConnection.removeListener("message",n);let{_iceServersStatus:c,_options:l,_wsServer:d,state:u}=i,{TwilioConnection:m}=l,f=new m(d,Object.assign({helloBody:u==="connecting"&&c==="acquire"?i._createIceMessage():i._createConnectOrSyncOrDisconnectMessage()},l));f.once("close",h=>{h===m.CloseReason.LOCAL?t():t(new Error(h))}),f.on("message",n),i._twilioConnection=f}function t(c){if(i.state==="disconnected")return;if(!c){i.disconnect();return}let l=i._getReconnectTimer();if(!l){let d=c.message===c_.CloseReason.BUSY?new QO:new GO;i.disconnect(d);return}i.state==="connected"&&i.preempt("syncing"),l.then(e)}function n(c){if(i.state!=="disconnected"){if(c.type==="error"){i.disconnect(zO(c.code,c.message));return}switch(i.state){case"connected":switch(c.type){case"connected":case"synced":case"update":case"warning":i.emit("message",c);return;case"disconnected":i.disconnect(c.status==="completed"?new Bl:null);return;default:return}case"connecting":switch(c.type){case"iced":i._options.onIced(c.ice_servers).then(()=>{i._sendConnectOrSyncOrDisconnectMessage()});return;case"connected":i._setSession(c.session,c.options.session_timeout),i.emit("connected",c),i.preempt("connected");return;case"synced":case"update":i._updatesReceived.push(c);return;case"disconnected":i.disconnect(c.status==="completed"?new Bl:null);return;default:return}case"syncing":switch(c.type){case"connected":case"update":i._updatesReceived.push(c);return;case"synced":i._clearReconnectTimer(),i.emit("message",c),i.preempt("connected");return;case"disconnected":i.disconnect(c.status==="completed"?new Bl:null);return;default:return}default:return}}}i.on("stateChanged",function c(l){switch(l){case"connected":{let d=i._updatesToSend.splice(0);d.length&&i.publish(YO(d)),i._updatesReceived.splice(0).forEach(u=>i.emit("message",u));return}case"disconnected":i._twilioConnection.removeListener("message",n),i.removeListener("stateChanged",c);return;case"syncing":return;default:return}});let{_options:r,_iceServersStatus:s}=i,{iceServers:o,onIced:a}=r;s==="overrode"?a(o).then(e):e()}l_.exports=$l});var p_=p((wD,u_)=>{"use strict";var ZO=Dr(),eR=kg(),tR=o_(),iR=d_(),{SignalingConnectionDisconnectedError:nR,SignalingIncomingMessageInvalidError:rR}=Pe(),{flatMap:sR,createRoomConnectingEventPayload:oR}=j();function aR(i,e,t,n,r,s){s=Object.assign({PeerConnectionManager:eR,RoomV2:tR,Transport:iR},s);let o=r.video[0]&&r.video[0].adaptiveSimulcast===!0,{PeerConnectionManager:a,RoomV2:c,Transport:l,iceServers:d,log:u}=s,m=new a(n,r,s),f=sR(t.tracks,R=>[R.trackTransceiver]);m.setTrackSenders(f);let h=new Error("Canceled"),_,b=new ZO((R,E,C)=>{let U=ge=>C()?(E(h),Promise.reject(h)):(u.debug("Got ICE servers:",ge),s.iceServers=ge,m.setConfiguration(s),m.createAndOffer().then(()=>{if(C())throw E(h),h;u.debug("createAndOffer() succeeded."),m.dequeue("description")}).catch(Re=>{throw u.error("createAndOffer() failed:",Re),E(Re),Re})),{automaticSubscription:G,bandwidthProfile:B,dominantSpeaker:I,receiveTranscriptions:K,environment:ye,eventObserver:fe,loggerName:Fe,logLevel:Se,name:se,networkMonitor:Ge,networkQuality:me,notifyWarnings:Oe,realm:Pi,sdpSemantics:wi}=s,Ei=!!B,Oi=!!B,Ri=!!B&&(s.clientTrackSwitchOffControl!=="disabled"||s.contentPreferencesMode!=="disabled"),Li=Object.assign({adaptiveSimulcast:o,automaticSubscription:G,dominantSpeaker:I,receiveTranscriptions:K,environment:ye,eventObserver:fe,loggerName:Fe,logLevel:Se,networkMonitor:Ge,networkQuality:me,notifyWarnings:Oe,iceServers:d,onIced:U,realm:Pi,renderHints:Ri,sdpSemantics:wi,trackPriority:Ei,trackSwitchOff:Oi},B?{bandwidthProfile:B}:{});_=new l(se,i,t,m,e,Li);let xi=oR(s);fe.emit("event",xi),_.once("connected",ge=>
73{if(u.debug("Transport connected:",ge),C()){E(h);return}let{participant:Re}=ge;if(!Re){E(new rR);return}R(new c(t,ge,_,m,s))}),_.once("stateChanged",(ge,Re)=>{ge==="disconnected"?(_=null,E(Re||new nR)):u.debug("Transport state changed:",ge)})},()=>{_&&(_.disconnect(),_=null)});return b.catch(()=>{_&&(_.disconnect(),_=null),m.close()}),b}u_.exports=aR});var f_=p((ED,h_)=>{"use strict";var cR=Kr(),Wl=class extends cR{constructor(){super(),Object.defineProperties(this,{_publicationsToTrackSenders:{value:new Map},_trackSendersToPublications:{value:new Map}})}addTrack(e,t,n,r=null){let s=this._createLocalTrackPublicationSignaling(e,t,n,r);return this._trackSendersToPublications.set(e,s),this._publicationsToTrackSenders.set(s,e),super.addTrack(s),this}getPublication(e){return this._trackSendersToPublications.get(e)||null}getSender(e){return this._publicationsToTrackSenders.get(e)||null}removeTrack(e){let t=this._trackSendersToPublications.get(e);return t?(this._trackSendersToPublications.delete(e),this._publicationsToTrackSenders.delete(t),super.removeTrack(t)&&t.stop(),t):null}};h_.exports=Wl});var g_=p((OD,m_)=>{"use strict";var lR=Ml(),Hl=class extends lR{constructor(e,t,n){let r=e.clone();e.kind!=="data"&&(r.track.enabled=e.track.enabled),e=r;let s=e.kind==="data"?!0:e.track.enabled;super(t,e.kind,s,n),this.setTrackTransceiver(e),Object.defineProperties(this,{_updatedPriority:{value:n,writable:!0},id:{enumerable:!0,value:e.id}})}get updatedPriority(){return this._updatedPriority}enable(e){return e=typeof e=="boolean"?e:!0,this.trackTransceiver.track.enabled=e,super.enable(e)}publishFailed(e){return dR(this,e)&&this.emit("updated"),this}setPriority(e){return this._updatedPriority!==e&&(this._updatedPriority=e,this.emit("updated")),this}setSid(e){return this._error?this:super.setSid.call(this,e)}stop(){this.trackTransceiver.stop()}};function dR(i,e){return i._sid!==null||i._error?!1:(i._error=e,!0)}m_.exports=Hl});var __=p((RD,v_)=>{"use strict";var uR=g_(),pR=Ks(),hR=Pe().createTwilioError,zl=class extends uR{constructor(e,t,n,r,s){super(e,t,n),Object.defineProperties(this,{_log:{value:s.log.createLog("default",this)},_mediaStates:{value:{recordings:null},writable:!0},_noiseCancellationVendor:{value:r}})}getState(){let e={enabled:this.isEnabled,id:this.id,kind:this.kind,name:this.name,priority:this.updatedPriority};return this._noiseCancellationVendor&&(e.audio_processor=this._noiseCancellationVendor),e}toString(){return`[LocalTrackPublicationV2: ${this.sid}]`}update(e){switch(e.state){case"ready":this.setSid(e.sid);break;case"failed":{let t=e.error;this.publishFailed(hR(t.code,t.message));break}default:break}return this}updateMediaStates(e){if(!e||!e.recordings||this._mediaStates.recordings===e.recordings)return this;switch(this._mediaStates.recordings=e.recordings,this._mediaStates.recordings){case"OK":this._log.info("Warnings have cleared."),this.emit("warningsCleared");break;case"NO_MEDIA":this._log.warn("Recording media lost."),this.emit("warning",pR.recordingMediaLost);break;default:this._log.warn(`Unknown media state detected: ${this._mediaStates.recordings}`);break}return this}};v_.exports=zl});var C_=p((LD,b_)=>{"use strict";var fR=f_(),mR=__(),{DEFAULT_LOG_LEVEL:gR}=N(),vR=_e(),{buildLogLevels:_R,isDeepEqual:bR}=j(),Gl=class extends fR{constructor(e,t,n){n=Object.assign({logLevel:gR,LocalTrackPublicationV2:mR},n),super();let r=_R(n.logLevel);Object.defineProperties(this,{_bandwidthProfile:{value:null,writable:!0},_bandwidthProfileRevision:{value:0,writable:!0},_encodingParameters:{value:e},_removeListeners:{value:new Map},_LocalTrackPublicationV2:{value:n.LocalTrackPublicationV2},_log:{value:n.log?n.log.createLog("default",this):new vR("default",this,r,n.loggerName)},_publishedRevision:{writable:!0,value:0},_revision:{writable:!0,value:1},_signalingRegion:{value:null,writable:!0},audioProcessors:{value:[],writable:!0},bandwidthProfile:{enumerable:!0,get(){return this._bandwidthProfile}},bandwidthProfileRevision:{enumerable:!0,get(){return this._bandwidthProfileRevision}},networkQualityConfiguration:{enumerable:!0,value:t},revision:{enumerable:!0,get(){return this._revision}},signalingRegion:{enumerable:!0,get(){return this._signalingRegion}}})}toString(){return`[LocalParticipantSignaling: ${this.sid}]`}setSignalingRegion(e){this._signalingRegion||(this._signalingRegion=e)}setBandwidthProfile(e){bR(this._bandwidthProfile,e)||(this._bandwidthProfile=JSON.parse(JSON.stringify(e)),this._bandwidthProfileRevision++,this.didUpdate())}setAudioProcessors(e){this.audioProcessors=e}getParameters(){return this._encodingParameters}setParameters(e){return this._encodingParameters.update(e),this}update(e){return this._publishedRevision>=e.revision?this:(this._publishedRevision=e.revision,e.tracks.forEach(function(t){let n=this.tracks.get(t.id);n&&n.update(t)},this),this)}updateMediaStates(e){return!e||!e.tracks?this:(Array.from(this.tracks.values()).forEac
73h(t=>{let n=e.tracks[t.sid];n&&t.updateMediaStates(n)}),this)}_createLocalTrackPublicationSignaling(e,t,n,r){return new this._LocalTrackPublicationV2(e,t,n,r,{log:this._log})}addTrack(e,t,n,r){super.addTrack(e,t,n,r);let s=this.getPublication(e),{isEnabled:o,updatedPriority:a}=s,c=()=>{(o!==s.isEnabled||a!==s.updatedPriority)&&(this.didUpdate(),o=s.isEnabled,a=s.updatedPriority)};return s.on("updated",c),this._removeListener(s),this._removeListeners.set(s,()=>s.removeListener("updated",c)),this.didUpdate(),this}_removeListener(e){let t=this._removeListeners.get(e);t&&t()}getState(){return{revision:this.revision,tracks:Array.from(this.tracks.values()).map(e=>e.getState())}}didUpdate(){this._revision++,this.emit("updated")}removeTrack(e){let t=super.removeTrack(e);return t&&(e.removeClone(t.trackTransceiver),this._removeListener(t),this.didUpdate()),t}setNetworkQualityConfiguration(e){this.networkQualityConfiguration.update(e)}setPublisherHint(e,t){let n=Array.from(this.tracks.values()).find(r=>r.sid===e);return n?n.trackTransceiver.setPublisherHint(t):(this._log.warn(`track:${e} not found`),Promise.resolve("UNKNOWN_TRACK"))}};b_.exports=Gl});var S_=p((xD,y_)=>{"use strict";var CR=Kr(),yR=gl(),SR=Pt(),TR={closed:["opening"],opening:["closed","open"],open:["closed","closing"],closing:["closed","open"]},Ql=class extends SR{constructor(){super("closed",TR)}_close(e){return this.transition("closing",e),this.transition("closed",e),Promise.resolve(this)}_connect(e,t,n,r,s){e.connect("PA00000000000000000000000000000000","test");let o="RM00000000000000000000000000000000",a=Promise.resolve(new yR(e,o,s));return a.cancel=function(){},a}_open(e){return this.transition("opening",e),this.transition("open",e),Promise.resolve(this)}close(){return this.bracket("close",e=>{switch(this.state){case"closed":return this;case"open":return this._close(e);default:throw new Error(`Unexpected Signaling state "${this.state}"`)}})}connect(e,t,n,r,s){let o=this;return this.bracket("connect",function a(c){switch(o.state){case"closed":return o._open(c).then(a.bind(null,c));case"open":return o.releaseLockCompletely(c),o._connect(e,t,n,r,s);default:throw new Error(`Unexpected Signaling state "${o.state}"`)}})}createLocalParticipantSignaling(){return new CR}open(){return this.bracket("open",e=>{switch(this.state){case"closed":return this._open(e);case"open":return this;default:throw new Error(`Unexpected Signaling state "${this.state}"`)}})}};y_.exports=Ql});var k_=p((MD,T_)=>{"use strict";var kR=p_(),PR=C_(),wR=S_(),Kl=class extends wR{constructor(e,t){t=Object.assign({createCancelableRoomSignalingPromise:kR},t),super(),Object.defineProperties(this,{_createCancelableRoomSignalingPromise:{value:t.createCancelableRoomSignalingPromise},_options:{value:t},_wsServer:{value:e}})}_connect(e,t,n,r,s){return s=Object.assign({},this._options,s),this._createCancelableRoomSignalingPromise.bind(null,t,this._wsServer,e,n,r,s)}createLocalParticipantSignaling(e,t){return new PR(e,t)}};T_.exports=Kl});var M_=p((ID,x_)=>{"use strict";var{guessBrowser:ER,guessBrowserVersion:OR,isCodecSupported:RR}=ae(),LR=_f(),xR=Cf(),MR=Zf(),IR=ya(),DR=tm(),{LocalAudioTrack:AR,LocalDataTrack:jR,LocalVideoTrack:VR}=kt(),qR=rm(),NR=Dm(),FR=k_(),{asLocalTrack:BR,buildLogLevels:UR,createRoomConnectedEventPayload:$R,filterObject:WR,isNonArrayObject:P_}=j(),{DEFAULT_ENVIRONMENT:HR,DEFAULT_LOG_LEVEL:zR,DEFAULT_LOGGER_NAME:GR,DEFAULT_REALM:QR,DEFAULT_REGION:KR,WS_SERVER:JR,SDK_NAME:YR,SDK_VERSION:XR,typeErrors:Jr}=N(),Rt=Dr(),ZR=_a(),eL=_e(),{validateBandwidthProfile:tL}=Pa(),iL=$e(),w_=ER()==="safari"&&OR(),nL=0,E_=!1,L_=!1;if(w_){let{major:i,minor:e}=w_;L_=i<12||i===12&&e<1}var rL=new Set([{didWarn:!1,shouldDelete:!0,name:"abortOnIceServersTimeout"},{didWarn:!1,shouldDelete:!0,name:"dscpTagging",newName:"enableDscp"},{didWarn:!1,shouldDelete:!0,name:"iceServersTimeout"},{didWarn:!1,shouldDelete:!1,name:"eventListener",newName:"Video.Logger"},{didWarn:!1,shouldDelete:!1,name:"logLevel",newName:"Video.Logger"}]),sL=new Set([{didWarn:!1,shouldDelete:!1,name:"maxTracks",newName:"bandwidthProfile.video.clientTrackSwitchOffControl"},{didWarn:!1,shouldDelete:!1,name:"renderDimensions",newName:"bandwidthProfile.video.contentPreferencesMode"}]);function oL(i,e){if(typeof e>"u"&&(e={}),!P_(e))return Rt.reject(Jr.INVALID_TYPE("options","object"));let t=e.Log||eL,n=e.loggerName||GR,r=e.logLevel||zR,s=UR(r),o=`[connect #${++nL}]`,a;try{a=new t("default",o,s,n)}catch(I){return Rt.reject(I)}O_(e,a,rL);let c=e.preferredVideoCodecs==="auto";if(c&&(e.preferredVideoCodecs=[{codec:"VP8",simulcast:!0,adaptiveSimulcast:!0}]),e.maxVideoBitrate&&c)return a.error('ConnectOptions "maxVideoBitrate" is not compatible with "preferredVideoCodecs=auto"'),Rt.reject(Jr.ILLEGAL_INVOKE("connect",'ConnectOptions "maxVideoBitrate" is not compatible with "preferredVideoCodecs=auto"'));e=Object.assign({automaticSubscription:!0,dominantSpeaker:!1,enableDscp:!1,receiveTranscriptions:!1,environment:HR,eventListener:null,insights:!0,LocalAudioTrack:AR,LocalDataTrack:jR,LocalParticipant:MR,LocalVideoTrack:VR,Log:t,MediaStreamTrack,loggerName:n,logLevel:r,maxAudioBitrate:null,maxVideoBitrate:null,name:null,networkMonitor:!0,networkQuality:!1,preferredAudioCodecs:[],preferredVideoCodecs:[],realm:QR,region:KR,signaling:FR},WR(e));let l={};typeof e.wsServerInsights=="string"&&(l.gateway=e.wsServerInsights);
73let d=e.insights?IR:DR,u=new d(i,YR,XR,e.environment,e.realm,l),m=JR(e.environment,e.region),f=Date.now(),h=new ZR(u,f,a,e.eventListener);if(e=Object.assign({eventObserver:h,wsServer:m},e),e.log=a,L_&&!E_&&a.logLevel!=="error"&&a.logLevel!=="off"&&(E_=!0,a.warn(["Support for Safari 12.0 and below is limited because it does not support VP8.","This means you may experience codec issues in Group Rooms. You may also","experience codec issues in Peer-to-Peer (P2P) Rooms containing Android- or","iOS-based Participants who do not support H.264. However, P2P Rooms","with browser-based Participants should work. For more information, please","refer to this guide: https://www.twilio.com/docs/video/javascript-v2-developing-safari-11"].join(" "))),typeof i!="string")return Rt.reject(Jr.INVALID_TYPE("token","string"));e.insights&&u&&iL.configure({publisher:u,log:a,connectTimestamp:f});let _=Object.assign({},e);if(delete _.name,"tracks"in e){if(!Array.isArray(e.tracks))return Rt.reject(Jr.INVALID_TYPE("options.tracks","Array of LocalAudioTrack, LocalVideoTrack or MediaStreamTrack"));try{e.tracks=e.tracks.map(I=>BR(I,_))}catch(I){return Rt.reject(I)}}let b=tL(e.bandwidthProfile);if(b)return Rt.reject(b);e.clientTrackSwitchOffControl="disabled",e.contentPreferencesMode="disabled",e.bandwidthProfile&&(e.clientTrackSwitchOffControl="auto",e.contentPreferencesMode="auto",e.bandwidthProfile.video&&(O_(e.bandwidthProfile.video,a,sL),"maxTracks"in e.bandwidthProfile.video?e.clientTrackSwitchOffControl="disabled":e.bandwidthProfile.video.clientTrackSwitchOffControl==="manual"?e.clientTrackSwitchOffControl="manual":e.clientTrackSwitchOffControl="auto","renderDimensions"in e.bandwidthProfile.video?e.contentPreferencesMode="disabled":e.bandwidthProfile.video.contentPreferencesMode==="manual"?e.contentPreferencesMode="manual":e.contentPreferencesMode="auto"));let R=e.signaling,E=new R(e.wsServer,e);a.info("Connecting to a Room"),a.debug("Options:",e);let C=new xR({maxAudioBitrate:e.maxAudioBitrate,maxVideoBitrate:e.maxVideoBitrate},c),U={audio:e.preferredAudioCodecs.map(R_),video:e.preferredVideoCodecs.map(R_)},G=new qR(P_(e.networkQuality)?e.networkQuality:{});["audio","video"].forEach(I=>U[I].forEach(({codec:K})=>RR(K,I).then(ye=>!ye&&a.warn(`The preferred ${I} codec "${K}" will be ignored as it is not supported by the browser.`))));let B=LR(uL.bind(null,e),cL.bind(null,E,a,C,G,e),dL.bind(null,i,e,E,C,U),lL.bind(null,e));return B.then(I=>{u.connect(I.sid,I.localParticipant.sid);let K=$R(e);return e.eventObserver.emit("event",K),a.info("Connected to Room:",I.toString()),a.info("Room name:",I.name),a.debug("Room:",I),I.once("disconnected",()=>{setTimeout(()=>u.disconnect(),50)}),I},I=>{setTimeout(()=>u.disconnect(),50),B._isCanceled?a.info("Attempt to connect to a Room was canceled"):a.info("Error while connecting to a Room:",I)}),B}var aL={H264:"H264",VP8:"VP8"};aL.VP9="VP9";function O_(i,e,t){t.forEach(n=>{let{didWarn:r,name:s,newName:o,shouldDelete:a}=n;s in i&&typeof i[s]<"u"&&(o&&a&&(i[o]=i[s]),a&&delete i[s],!r&&!["error","off"].includes(e.level)&&(e.warn(`The ConnectOptions "${s}" is ${o?`deprecated and scheduled for removal. Please use "${o}" instead.`:"no longer applicable and will be ignored."}`),n.didWarn=!0))})}function cL(i,e,t,n,r,s){let o=i.createLocalParticipantSignaling(t,n);return e.debug("Creating a new LocalParticipant:",o),new r.LocalParticipant(o,s,r)}function lL(i,e,t){let n=new NR(e,t,i),r=i.log;return r.debug("Creating a new Room:",n),t.on("stateChanged",function s(o){o==="disconnected"&&(r.info("Disconnected from Room:",n.toString()),t.removeListener("stateChanged",s))}),n}function dL(i,e,t,n,r,s){return e.log.debug("Creating a new RoomSignaling"),t.connect(s._signaling,i,n,r,e)}function uL(i,e){let t=i.log;return i.shouldStopLocalTracks=!i.tracks,i.shouldStopLocalTracks?t.info("LocalTracks were not provided, so they will be acquired automatically before connecting to the Room. LocalTracks will be released if connecting to the Room fails or if the Room is disconnected"):(t.info("Getting LocalTracks"),t.debug("Options:",i)),i.createLocalTracks(i).then(function(r){let s=e(r);return s.catch(function(){i.shouldStopLocalTracks&&(t.info("The automatically acquired LocalTracks will now be stopped"),r.forEach(a=>{a.stop()}))}),s})}function R_(i){let e=typeof i=="string"?{codec:i}:i;switch(e.codec.toLowerCase()){case"opus":return Object.assign({dtx:!0}
73,e);case"vp8":return Object.assign({simulcast:!1},e);default:return e}}x_.exports=oL});var Jl=p((DD,D_)=>{"use strict";var{DEFAULT_LOG_LEVEL:pL,DEFAULT_LOGGER_NAME:hL}=N();function I_(i,e){e=Object.assign({loggerName:hL,logLevel:pL},e);let t={};t.loggerName=e.loggerName,t.logLevel=e.logLevel,delete e.loggerName,delete e.logLevel,["getUserMedia","enumerateDevices","MediaStream","mapMediaElement","disposeMediaElement"].forEach(s=>{s in e&&(t[s]=e[s],delete e[s])});let r=e.createLocalTracks;return delete e.createLocalTracks,t[i]=Object.keys(e).length>0?e:!0,r(t).then(s=>s[0])}function fL(i){return I_("audio",i)}function mL(i){return I_("video",i)}D_.exports={audio:fL,video:mL}});var j_=p((AD,A_)=>{"use strict";var{guessBrowser:gL,support:vL}=ae(),{isAndroid:_L,isMobile:bL,isNonChromiumEdge:CL,rebrandedChromeBrowser:yL,mobileWebKitBrowser:SL}=pt(),TL=["crios","edg","edge","electron","headlesschrome","samsungbrowser"],kL=["chrome","firefox"],PL=["chrome","safari"],wL=["edg"];function EL(){let i=gL();if(!i)return!1;let e=yL(i),t=SL(i),n=_L()?kL:PL;return vL()&&(!e||TL.includes(e))&&!CL(i)&&(!t||wL.includes(t))&&(!bL()||n.includes(i))}A_.exports=EL});var Yl=p((V_,q_)=>{"use strict";Object.defineProperty(V_,"__esModule",{value:!0});var Yr=Vh(),OL=ff(),ze={connect:M_(),createLocalAudioTrack:Jl().audio,createLocalVideoTrack:Jl().video,isSupported:j_()(),version:Us().version,Logger:Bs(),LocalAudioTrack:kt().LocalAudioTrack,LocalDataTrack:kt().LocalDataTrack,LocalVideoTrack:kt().LocalVideoTrack};function RL(i,e){let t=Object.assign({createLocalTracks:Yr.createLocalTracks},e);return ze.connect(i,t)}function LL(i){let e=Object.assign({createLocalTracks:Yr.createLocalTracks},i);return ze.createLocalAudioTrack(e)}function xL(i){let e=Object.assign({createLocalTracks:Yr.createLocalTracks},i);return ze.createLocalVideoTrack(e)}var ML=ze.isSupported,IL=ze.version,DL=ze.Logger,AL=ze.LocalAudioTrack,jL=ze.LocalVideoTrack,VL=ze.LocalDataTrack;q_.exports={connect:RL,createLocalAudioTrack:LL,createLocalVideoTrack:xL,createLocalTracks:Yr.createLocalTracks,runPreflight:OL.runPreflight,isSupported:ML,version:IL,Logger:DL,LocalAudioTrack:AL,LocalVideoTrack:jL,LocalDataTrack:VL}});Te();var Vd=!0,qd=!0;function Nt(i,e,t){let n=i.match(e);return n&&n.length>=t&&parseFloat(n[t],10)}function je(i,e,t){if(!i.RTCPeerConnection)return;if(!Object.getOwnPropertyDescriptor(EventTarget.prototype,"addEventListener").writable){ti("Unable to polyfill events");return}let r=i.RTCPeerConnection.prototype,s=r.addEventListener;r.addEventListener=function(a,c){if(a!==e)return s.apply(this,arguments);let l=d=>{let u=t(d);u&&(c.handleEvent?c.handleEvent(u):c(u))};return this._eventMap=this._eventMap||{},this._eventMap[e]||(this._eventMap[e]=new Map),this._eventMap[e].set(c,l),s.apply(this,[a,l])};let o=r.removeEventListener;r.removeEventListener=function(a,c){if(a!==e||!this._eventMap||!this._eventMap[e])return o.apply(this,arguments);if(!this._eventMap[e].has(c))return o.apply(this,arguments);let l=this._eventMap[e].get(c);return this._eventMap[e].delete(c),this._eventMap[e].size===0&&delete this._eventMap[e],Object.keys(this._eventMap).length===0&&delete this._eventMap,o.apply(this,[a,l])},Object.defineProperty(r,"on"+e,{get(){return this["_on"+e]},set(a){this["_on"+e]&&(this.removeEventListener(e,this["_on"+e]),delete this["_on"+e]),a&&this.addEventListener(e,this["_on"+e]=a)},enumerable:!0,configurable:!0})}function Nd(i){return typeof i!="boolean"?new Error("Argument type: "+typeof i+". Please use a boolean."):(Vd=i,i?"adapter.js logging disabled":"adapter.js logging enabled")}function Fd(i){return typeof i!="boolean"?new Error("Argument type: "+typeof i+". Please use a boolean."):(qd=!i,"adapter.js deprecation warnings "+(i?"disabled":"enabled"))}function ti(){if(typeof window=="object"){if(Vd)return;typeof console<"u"&&typeof console.log=="function"&&console.log.apply(console,arguments)}}function Ft(i,e){qd&&console.warn(i+" is deprecated, please use "+e+" instead.")}function Bd(i){let e={browser:null,version:null};if(typeof i>"u"||!i.navigator||!i.navigator.userAgent)return e.browser="Not a browser.",e;let{navigator:t}=i;if(t.userAgentData&&t.userAgentData.brands){let n=t.userAgentData.brands.find(r=>r.brand==="Chromium");
vendor: 18,530 bytes, line 73
73if(n){let r=parseInt(n.version,10);if(r>=90)return{browser:"chrome",version:r}}}if(t.mozGetUserMedia)e.browser="firefox",e.version=parseInt(Nt(t.userAgent,/Firefox\/(\d+)\./,1));else if(t.webkitGetUserMedia||i.isSecureContext===!1&&i.webkitRTCPeerConnection)e.browser="chrome",e.version=parseInt(Nt(t.userAgent,/Chrom(e|ium)\/(\d+)\./,2))||null;else if(i.RTCPeerConnection&&t.userAgent.match(/AppleWebKit\/(\d+)\./))e.browser="safari",e.version=parseInt(Nt(t.userAgent,/AppleWebKit\/(\d+)\./,1)),e.supportsUnifiedPlan=i.RTCRtpTransceiver&&"currentDirection"in i.RTCRtpTransceiver.prototype,e._safariVersion=Nt(t.userAgent,/Version\/(\d+(\.?\d+))/,1);else return e.browser="Not a supported browser.",e;return e}function jd(i){return Object.prototype.toString.call(i)==="[object Object]"}function ds(i){return jd(i)?Object.keys(i).reduce(function(e,t){let n=jd(i[t]),r=n?ds(i[t]):i[t],s=n&&!Object.keys(r).length;return r===void 0||s?e:Object.assign(e,{[t]:r})},{}):i}function ls(i,e,t){!e||t.has(e.id)||(t.set(e.id,e),Object.keys(e).forEach(n=>{n.endsWith("Id")?ls(i,i.get(e[n]),t):n.endsWith("Ids")&&e[n].forEach(r=>{ls(i,i.get(r),t)})}))}function us(i,e,t){let n=t?"outbound-rtp":"inbound-rtp",r=new Map;if(e===null)return r;let s=[];return i.forEach(o=>{o.type==="track"&&o.trackIdentifier===e.id&&s.push(o)}),s.forEach(o=>{i.forEach(a=>{a.type===n&&a.trackId===o.id&&ls(i,a,r)})}),r}var Xi={};Ii(Xi,{fixNegotiationNeeded:()=>vs,shimAddTrackRemoveTrack:()=>gs,shimAddTrackRemoveTrackWithNative:()=>$d,shimGetSendersWithDtmf:()=>fs,shimGetUserMedia:()=>Ji,shimMediaStream:()=>ps,shimOnTrack:()=>hs,shimPeerConnection:()=>Yi,shimSenderReceiverGetStats:()=>ms});var Ud=ti;function Ji(i,e){if(e.version>=64)return;let t=i&&i.navigator;if(!t.mediaDevices)return;let n=function(a){if(typeof a!="object"||a.mandatory||a.optional)return a;let c={};return Object.keys(a).forEach(l=>{if(l==="require"||l==="advanced"||l==="mediaSource")return;let d=typeof a[l]=="object"?a[l]:{ideal:a[l]};d.exact!==void 0&&typeof d.exact=="number"&&(d.min=d.max=d.exact);let u=function(m,f){return m?m+f.charAt(0).toUpperCase()+f.slice(1):f==="deviceId"?"sourceId":f};if(d.ideal!==void 0){c.optional=c.optional||[];let m={};typeof d.ideal=="number"?(m[u("min",l)]=d.ideal,c.optional.push(m),m={},m[u("max",l)]=d.ideal,c.optional.push(m)):(m[u("",l)]=d.ideal,c.optional.push(m))}d.exact!==void 0&&typeof d.exact!="number"?(c.mandatory=c.mandatory||{},c.mandatory[u("",l)]=d.exact):["min","max"].forEach(m=>{d[m]!==void 0&&(c.mandatory=c.mandatory||{},c.mandatory[u(m,l)]=d[m])})}),a.advanced&&(c.optional=(c.optional||[]).concat(a.advanced)),c},r=function(a,c){if(e.version>=61)return c(a);if(a=JSON.parse(JSON.stringify(a)),a&&typeof a.audio=="object"){let l=function(d,u,m){u in d&&!(m in d)&&(d[m]=d[u],delete d[u])};a=JSON.parse(JSON.stringify(a)),l(a.audio,"autoGainControl","googAutoGainControl"),l(a.audio,"noiseSuppression","googNoiseSuppression"),a.audio=n(a.audio)}if(a&&typeof a.video=="object"){let l=a.video.facingMode;l=l&&(typeof l=="object"?l:{ideal:l});let d=e.version<66;if(l&&(l.exact==="user"||l.exact==="environment"||l.ideal==="user"||l.ideal==="environment")&&!(t.mediaDevices.getSupportedConstraints&&t.mediaDevices.getSupportedConstraints().facingMode&&!d)){delete a.video.facingMode;let u;if(l.exact==="environment"||l.ideal==="environment"?u=["back","rear"]:(l.exact==="user"||l.ideal==="user")&&(u=["front"]),u)return t.mediaDevices.enumerateDevices().then(m=>{m=m.filter(h=>h.kind==="videoinput");let f=m.find(h=>u.some(_=>h.label.toLowerCase().includes(_)));return!f&&m.length&&u.includes("back")&&(f=m[m.length-1]),f&&(a.video.deviceId=l.exact?{exact:f.deviceId}:{ideal:f.deviceId}),a.video=n(a.video),Ud("chrome: "+JSON.stringify(a)),c(a)})}a.video=n(a.video)}return Ud("chrome: "+JSON.stringify(a)),c(a)},s=function(a){return e.version>=64?a:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[a.name]||a.name,message:a.message,constraint:a.constraint||a.constraintName,toString(){return this.name+(this.message&&": ")+this.message}}},o=function(a,c,l){r(a,d=>{t.webkitGetUserMedia(d,c,u=>{l&&l(s(u))})})};if(t.getUserMedia=o.bind(t),t.mediaDevices.getUserMedia){let a=t.mediaDevices.getUserMedia.bind(t.mediaDevices);t.mediaDevices.getUserMedia=function(c){return r(c,l=>a(l).then(d=>{if(l.audio&&!d.getAudioTracks().length||l.video&&!d.getVideoTracks().length)throw d.getTracks().forEach(u=>{u.stop()}),new DOMException("","NotFoundError");return d},d=>Promise.reject(s(d))))}}}function ps(i){i.MediaStream=i.MediaStream||i.webkitMediaStream}function hs(i,e){if(!(e.version>102))if(typeof i=="object"&&i.RTCPeerConnection&&!("ontrack"in i.RTCPeerConnection.prototype)){Object.defineProperty(i.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack},set(n){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=n)},enumerable:!0,configurable:!0});let t=i.RTCPeerConnection.prototype.setRemoteDescription;i.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=r=>{r.stream.addEventListener("addtrack",s=>{let o;i.RTCPeerConnection.prototype.getReceivers?o=this.getReceivers().find(c=>c.track&&c.track.id===s.track.id):o={track:s.track};let a=new Event("track");a.track=s.track,a.receiver=o,a.transceiver={receiver:o},a.streams=[r.stream],this.dispatchEvent(a)}),r.stream.getTracks().forEach(s=>{let o;i.RTCPeerConnection.prototype.getReceivers?o=this.getReceivers().find(c=>c.track&&c.track.id===s.id):o={track:s};let a=new Event("track");a.track=s,a.receiver=o,a.transceiver={receiver:o},a.streams=[r.stream],this.dispatchEvent(a)})},this.addEventListener("addstream",this._ontrackpoly)),t.apply(this,arguments)}}else je(i,"track",t=>(t.transceiver||Object.defineProperty(t,"transceiver",{value:{receiver:t.receiver}}),t))}function fs(i){if(typeof i=="object"&&i.RTCPeerConnection&&!("getSenders"in i.RTCPeerConnection.prototype)&&"createDTMFSender"in i.RTCPeerConnection.prototype){let e=function(r,s){return{track:s,get dtmf(){return this._dtmf===void 0&&(s.kind==="audio"?this._dtmf=r.createDTMFSender(s):this._dtmf=null),this._dtmf},_pc:r}};if(!i.RTCPeerConnection.prototype.getSenders){i.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};let r=i.RTCPeerConnection.prototype.addTrack;i.RTCPeerConnection.prototype.addTrack=function(a,c){let l=r.apply(this,arguments);return l||(l=e(this,a),this._senders.push(l)),l};let s=i.RTCPeerConnection.prototype.removeTrack;i.RTCPeerConnection.prototype.removeTrack=function(a){s.apply(this,arguments);let c=this._senders.indexOf(a);c!==-1&&this._senders.splice(c,1)}}let t=i.RTCPeerConnection.prototype.addStream;i.RTCPeerConnection.prototype.addStream=function(s){this._senders=this._senders||[],t.apply(this,[s]),s.getTracks().forEach(o=>{this._senders.push(e(this,o))})};let n=i.RTCPeerConnection.prototype.removeStream;i.RTCPeerConnection.prototype.removeStream=function(s){this._senders=this._senders||[],n.apply(this,[s]),s.getTracks().forEach(o=>{let a=this._senders.find(c=>c.track===o);a&&this._senders.splice(this._senders.indexOf(a),1)})}}else if(typeof i=="object"&&i.RTCPeerConnection&&"getSenders"in i.RTCPeerConnection.prototype&&"createDTMFSender"in i.RTCPeerConnection.prototype&&i.RTCRtpSender&&!("dtmf"in i.RTCRtpSender.prototype)){let e=i.RTCPeerConnection.prototype.getSenders;i.RTCPeerConnection.prototype.getSenders=function(){let n=e.apply(this,[]);return n.forEach(r=>r._pc=this),n},Object.defineProperty(i.RTCRtpSender.prototype,"dtmf",{get(){return this._dtmf===void 0&&(this.track.kind==="audio"?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function ms(i,e){if(e.version>=67||!(typeof i=="object"&&i.RTCPeerConnection&&i.RTCRtpSender&&i.RTCRtpReceiver))return;if(!("getStats"in i.RTCRtpSender.prototype)){let n=i.RTCPeerConnection.prototype.getSenders;n&&(i.RTCPeerConnection.prototype.getSenders=function(){let o=n.apply(this,[]);return o.forEach(a=>a._pc=this),o});let r=i.RTCPeerConnection.prototype.addTrack;r&&(i.RTCPeerConnection.prototype.addTrack=function(){let o=r.apply(this,arguments);return o._pc=this,o}),i.RTCRtpSender.prototype.getStats=function(){let o=this;return this._pc.getStats().then(a=>us(a,o.track,!0))}}if(!("getStats"in i.RTCRtpReceiver.prototype)){let n=i.RTCPeerConnection.prototype.getReceivers;n&&(i.RTCPeerConnection.prototype.getReceivers=function(){let s=n.apply(this,[]);return s.forEach(o=>o._pc=this),s}),je(i,"track",r=>(r.receiver._pc=r.srcElement,r)),i.RTCRtpReceiver.prototype.getStats=function(){let s=this;return this._pc.getStats().then(o=>us(o,s.track,!1))}}if(!("getStats"in i.RTCRtpSender.prototype&&"getStats"in i.RTCRtpReceiver.prototype))return;let t=i.RTCPeerConnection.prototype.getStats;i.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof i.MediaStreamTrack){let r=arguments[0],s,o,a;return this.getSenders().forEach(c=>{c.track===r&&(s?a=!0:s=c)}),this.getReceivers().forEach(c=>(c.track===r&&(o?a=!0:o=c),c.track===r)),a||s&&o?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):s?s.getStats():o?o.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return t.apply(this,arguments)}}function $d(i){i.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map(o=>this._shimmedLocalStreams[o][0])};let e=i.RTCPeerConnection.prototype.addTrack;i.RTCPeerConnection.prototype.addTrack=function(o,a){if(!a)return e.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};let c=e.apply(this,arguments);return this._shimmedLocalStreams[a.id]?this._shimmedLocalStreams[a.id].indexOf(c)===-1&&this._shimmedLocalStreams[a.id].push(c):this._shimmedLocalStreams[a.id]=[a,c],c};let t=i.RTCPeerConnection.prototype.addStream;i.RTCPeerConnection.prototype.addStream=function(o){this._shimmedLocalStreams=this._shimmedLocalStreams||{},o.getTracks().forEach(l=>{if(this.getSenders().find(u=>u.track===l))throw new DOMException("Track already exists.","InvalidAccessError")});let a=this.getSenders();t.apply(this,arguments);let c=this.getSenders().filter(l=>a.indexOf(l)===-1);this._shimmedLocalStreams[o.id]=[o].concat(c)};let n=i.RTCPeerConnection.prototype.removeStream;i.RTCPeerConnection.prototype.removeStream=function(o){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[o.id],n.apply(this,arguments)};let r=i.RTCPeerConnection.prototype.removeTrack;i.RTCPeerConnection.prototype.removeTrack=function(o){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},o&&Object.keys(this._shimmedLocalStreams).forEach(a=>{let c=this._shimmedLocalStreams[a].indexOf(o);c!==-1&&this._shimmedLocalStreams[a].splice(c,1),this._shimmedLocalStreams[a].length===1&&delete this._shimmedLocalStreams[a]}),r.apply(this,arguments)}}function gs(i,e){if(!i.RTCPeerConnection)return;if(i.RTCPeerConnection.prototype.addTrack&&e.version>=65)return $d(i);let t=i.RTCPeerConnection.prototype.getLocalStreams;i.RTCPeerConnection.prototype.getLocalStreams=function(){let d=t.apply(this);return this._reverseStreams=this._reverseStreams||{},d.map(u=>this._reverseStreams[u.id])};let n=i.RTCPeerConnection.prototype.addStream;i.RTCPeerConnection.prototype.addStream=function(d){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},d.getTracks().forEach(u=>{if(this.getSenders().find(f=>f.track===u))throw new DOMException("Track already exists.","InvalidAccessError")}),!this._reverseStreams[d.id]){let u=new i.MediaStream(d.getTracks());this._streams[d.id]=u,this._reverseStreams[u.id]=d,d=u}n.apply(this,[d])};let r=i.RTCPeerConnection.prototype.removeStream;i.RTCPeerConnection.prototype.removeStream=function(d){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},r.apply(this,[this._streams[d.id]||d]),delete this._reverseStreams[this._streams[d.id]?this._streams[d.id].id:d.id],delete this._streams[d.id]},i.RTCPeerConnection.prototype.addTrack=function(d,u){if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");let m=[].slice.call(arguments,1);if(m.length!==1||!m[0].getTracks().find(_=>_===d))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");if(this.getSenders().find(_=>_.track===d))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};let h=this._streams[u.id];if(h)h.addTrack(d),Promise.resolve().then(()=>{this.dispatchEvent(new Event("negotiationneeded"))});else{let _=new i.MediaStream([d]);this._streams[u.id]=_,this._reverseStreams[_.id]=u,this.addStream(_)}return this.getSenders().find(_=>_.track===d)};function s(l,d){let u=d.sdp;return Object.keys(l._reverseStreams||[]).forEach(m=>{let f=l._reverseStreams[m],h=l._streams[f.id];u=u.replace(new RegExp(h.id,"g"),f.id)}),new RTCSessionDescription({type:d.type,sdp:u})}function o(l,d){let u=d.sdp;return Object.keys(l._reverseStreams||[]).forEach(m=>{let f=l._reverseStreams[m],h=l._streams[f.id];u=u.replace(new RegExp(f.id,"g"),h.id)}),new RTCSessionDescription({type:d.type,sdp:u})}["createOffer","createAnswer"].forEach(function(l){let d=i.RTCPeerConnection.prototype[l],u={[l](){let m=arguments;return arguments.length&&typeof arguments[0]=="function"?d.apply(this,[h=>{let _=s(this,h);m[0].apply(null,[_])},h=>{m[1]&&m[1].apply(null,h)},arguments[2]]):d.apply(this,arguments).then(h=>s(this,h))}};i.RTCPeerConnection.prototype[l]=u[l]});let a=i.RTCPeerConnection.prototype.setLocalDescription;i.RTCPeerConnection.prototype.setLocalDescription=function(){return!arguments.length||!arguments[0].type?a.apply(this,arguments):(arguments[0]=o(this,arguments[0]),a.apply(this,arguments))};let c=Object.getOwnPropertyDescriptor(i.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(i.RTCPeerConnection.prototype,"localDescription",{get(){let l=c.get.apply(this);return l.type===""?l:s(this,l)}}),i.RTCPeerConnection.prototype.removeTrack=function(d){if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!d._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(!(d._pc===this))throw new DOMException("Sender was not created by this connection.","InvalidAccessError");this._streams=this._streams||{};let m;Object.keys(this._streams).forEach(f=>{this._streams[f].getTracks().find(_=>d.track===_)&&(m=this._streams[f])}),m&&(m.getTracks().length===1?this.removeStream(this._reverseStreams[m.id]):m.removeTrack(d.track),this.dispatchEvent(new Event("negotiationneeded")))}}function Yi(i,e){!i.RTCPeerConnection&&i.webkitRTCPeerConnection&&(i.RTCPeerConnection=i.webkitRTCPeerConnection),i.RTCPeerConnection&&e.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(t){let n=i.RTCPeerConnection.prototype[t],r={[t](){return arguments[0]=new(t==="addIceCandidate"?i.RTCIceCandidate:i.RTCSessionDescription)(arguments[0]),n.apply(this,arguments)}};i.RTCPeerConnection.prototype[t]=r[t]})}function vs(i,e){e.version>102||je(i,"negotiationneeded",t=>{let n=t.target;if(!((e.version<72||n.getConfiguration&&n.getConfiguration().sdpSemantics==="plan-b")&&n.signalingState!=="stable"))return t})}var tn={};Ii(tn,{shimAddTransceiver:()=>ks,shimCreateAnswer:()=>Es,shimCreateOffer:()=>ws,shimGetDisplayMedia:()=>Wd,shimGetParameters:()=>Ps,shimGetStats:()=>bs,shimGetUserMedia:()=>Zi,shimOnTrack:()=>_s,shimPeerConnection:()=>en,shimRTCDataChannel:()=>Ts,shimReceiverGetStats:()=>ys,shimRemoveStream:()=>Ss,shimSenderGetStats:()=>Cs});function Zi(i,e){let t=i&&i.navigator;if(!t.mediaDevices)return;let n=i&&i.MediaStreamTrack;if(t.getUserMedia=function(r,s,o){Ft("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),t.mediaDevices.getUserMedia(r).then(s,o)},!(e.version>55&&"autoGainControl"in t.mediaDevices.getSupportedConstraints())){let r=function(o,a,c){a in o&&!(c in o)&&(o[c]=o[a],delete o[a])},s=t.mediaDevices.getUserMedia.bind(t.mediaDevices);if(t.mediaDevices.getUserMedia=function(o){return typeof o=="object"&&typeof o.audio=="object"&&(o=JSON.parse(JSON.stringify(o)),r(o.audio,"autoGainControl","mozAutoGainControl"),r(o.audio,"noiseSuppression","mozNoiseSuppression")),s(o)},n&&n.prototype.getSettings){let o=n.prototype.getSettings;n.prototype.getSettings=function(){let a=o.apply(this,arguments);return r(a,"mozAutoGainControl","autoGainControl"),r(a,"mozNoiseSuppression","noiseSuppression"),a}}if(n&&n.prototype.applyConstraints){let o=n.prototype.applyConstraints;n.prototype.applyConstraints=function(a){return this.kind==="audio"&&typeof a=="object"&&(a=JSON.parse(JSON.stringify(a)),r(a,"autoGainControl","mozAutoGainControl"),r(a,"noiseSuppression","mozNoiseSuppression")),o.apply(this,[a])}}}}function Wd(i,e){i.navigator.mediaDevices&&(i.navigator.mediaDevices&&"getDisplayMedia"in i.navigator.mediaDevices||(i.navigator.mediaDevices.getDisplayMedia=function(n){if(!(n&&n.video)){let r=new DOMException("getDisplayMedia without video constraints is undefined");return r.name="NotFoundError",r.code=8,Promise.reject(r)}return n.video===!0?n.video={mediaSource:e}:n.video.mediaSource=e,i.navigator.mediaDevices.getUserMedia(n)}))}function _s(i){typeof i=="object"&&i.RTCTrackEvent&&"receiver"in i.RTCTrackEvent.prototype&&!("transceiver"in i.RTCTrackEvent.prototype)&&Object.defineProperty(i.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function en(i,e){typeof i!="object"||!(i.RTCPeerConnection||i.mozRTCPeerConnection)||(!i.RTCPeerConnection&&i.mozRTCPeerConnection&&(i.RTCPeerConnection=i.mozRTCPeerConnection),e.ver
vendor: 4,777 bytes, line 73
73sion<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(t){let n=i.RTCPeerConnection.prototype[t],r={[t](){return arguments[0]=new(t==="addIceCandidate"?i.RTCIceCandidate:i.RTCSessionDescription)(arguments[0]),n.apply(this,arguments)}};i.RTCPeerConnection.prototype[t]=r[t]}))}function bs(i,e){if(typeof i!="object"||!(i.RTCPeerConnection||i.mozRTCPeerConnection)||e.version>=151)return;let t={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},n=i.RTCPeerConnection.prototype.getStats;i.RTCPeerConnection.prototype.getStats=function(){let[s,o,a]=arguments;return this.signalingState==="closed"?Promise.resolve(new Map):n.apply(this,[s||null]).then(c=>{if(e.version<53&&!o)try{c.forEach(l=>{l.type=t[l.type]||l.type})}catch(l){if(l.name!=="TypeError")throw l;c.forEach((d,u)=>{c.set(u,Object.assign({},d,{type:t[d.type]||d.type}))})}return c}).then(o,a)}}function Cs(i){if(!(typeof i=="object"&&i.RTCPeerConnection&&i.RTCRtpSender)||i.RTCRtpSender&&"getStats"in i.RTCRtpSender.prototype)return;let e=i.RTCPeerConnection.prototype.getSenders;e&&(i.RTCPeerConnection.prototype.getSenders=function(){let r=e.apply(this,[]);return r.forEach(s=>s._pc=this),r});let t=i.RTCPeerConnection.prototype.addTrack;t&&(i.RTCPeerConnection.prototype.addTrack=function(){let r=t.apply(this,arguments);return r._pc=this,r}),i.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function ys(i){if(!(typeof i=="object"&&i.RTCPeerConnection&&i.RTCRtpSender)||i.RTCRtpSender&&"getStats"in i.RTCRtpReceiver.prototype)return;let e=i.RTCPeerConnection.prototype.getReceivers;e&&(i.RTCPeerConnection.prototype.getReceivers=function(){let n=e.apply(this,[]);return n.forEach(r=>r._pc=this),n}),je(i,"track",t=>(t.receiver._pc=t.srcElement,t)),i.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function Ss(i){!i.RTCPeerConnection||"removeStream"in i.RTCPeerConnection.prototype||(i.RTCPeerConnection.prototype.removeStream=function(t){Ft("removeStream","removeTrack"),this.getSenders().forEach(n=>{n.track&&t.getTracks().includes(n.track)&&this.removeTrack(n)})})}function Ts(i){i.DataChannel&&!i.RTCDataChannel&&(i.RTCDataChannel=i.DataChannel)}function ks(i,e){if(!(typeof i=="object"&&i.RTCPeerConnection)||e.version>=110)return;let t=i.RTCPeerConnection.prototype.addTransceiver;t&&(i.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];let r=arguments[1]&&arguments[1].sendEncodings;r===void 0&&(r=[]),r=[...r];let s=r.length>0;s&&r.forEach(a=>{if("rid"in a&&!/^[a-z0-9]{0,16}$/i.test(a.rid))throw new TypeError("Invalid RID value provided.");if("scaleResolutionDownBy"in a&&!(parseFloat(a.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in a&&!(parseFloat(a.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")});let o=t.apply(this,arguments);if(s){let{sender:a}=o,c=a.getParameters();(!("encodings"in c)||c.encodings.length===1&&Object.keys(c.encodings[0]).length===0)&&(c.encodings=r,a.sendEncodings=r,this.setParametersPromises.push(a.setParameters(c).then(()=>{delete a.sendEncodings}).catch(()=>{delete a.sendEncodings})))}return o})}function Ps(i,e){if(!(typeof i=="object"&&i.RTCRtpSender)||e.version>=110)return;let t=i.RTCRtpSender.prototype.getParameters;t&&(i.RTCRtpSender.prototype.getParameters=function(){let r=t.apply(this,arguments);return"encodings"in r||(r.encodings=[].concat(this.sendEncodings||[{}])),r})}function ws(i,e){if(!(typeof i=="object"&&i.RTCPeerConnection)||e.version>=110)return;let t=i.RTCPeerConnection.prototype.createOffer;i.RTCPeerConnection.prototype.createOffer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>t.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):t.apply(this,arguments)}}function Es(i,e){if(!(typeof i=="object"&&i.RTCPeerConnection)||e.version>=110)return;let t=i.RTCPeerConnection.prototype.createAnswer;i.RTCPeerConnection.prototype.createAnswer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>t.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):t.apply(this,arguments)}}var nn={};Ii(nn,{shimAudioContext:()=>As,shimCallbacksAPI:()=>Ls,shimConstraints:()=>Hd,shimCreateOfferLegacy:()=>Ds,shimGetUserMedia:()=>xs,shimLocalStreamsAPI:()=>Os,shimRTCIceServerUrls:()=>Ms,shimRemoteStreamsAPI:()=>Rs,shimTrackEventTransceiver:()=>Is});function Os(i){if(!(typeof i!="object"||!i.RTCPeerConnection)){if
vendor: 10,843 bytes, lines 73-76
73("getLocalStreams"in i.RTCPeerConnection.prototype||(i.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in i.RTCPeerConnection.prototype)){let e=i.RTCPeerConnection.prototype.addTrack;i.RTCPeerConnection.prototype.addStream=function(n){this._localStreams||(this._localStreams=[]),this._localStreams.includes(n)||this._localStreams.push(n),n.getAudioTracks().forEach(r=>e.call(this,r,n)),n.getVideoTracks().forEach(r=>e.call(this,r,n))},i.RTCPeerConnection.prototype.addTrack=function(n,...r){return r&&r.forEach(s=>{this._localStreams?this._localStreams.includes(s)||this._localStreams.push(s):this._localStreams=[s]}),e.apply(this,arguments)}}"removeStream"in i.RTCPeerConnection.prototype||(i.RTCPeerConnection.prototype.removeStream=function(t){this._localStreams||(this._localStreams=[]);let n=this._localStreams.indexOf(t);if(n===-1)return;this._localStreams.splice(n,1);let r=t.getTracks();this.getSenders().forEach(s=>{r.includes(s.track)&&this.removeTrack(s)})})}}function Rs(i){if(!(typeof i!="object"||!i.RTCPeerConnection)&&("getRemoteStreams"in i.RTCPeerConnection.prototype||(i.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in i.RTCPeerConnection.prototype))){Object.defineProperty(i.RTCPeerConnection.prototype,"onaddstream",{get(){return this._onaddstream},set(t){this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=t),this.addEventListener("track",this._onaddstreampoly=n=>{n.streams.forEach(r=>{if(this._remoteStreams||(this._remoteStreams=[]),this._remoteStreams.includes(r))return;this._remoteStreams.push(r);let s=new Event("addstream");s.stream=r,this.dispatchEvent(s)})})}});let e=i.RTCPeerConnection.prototype.setRemoteDescription;i.RTCPeerConnection.prototype.setRemoteDescription=function(){let n=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(r){r.streams.forEach(s=>{if(n._remoteStreams||(n._remoteStreams=[]),n._remoteStreams.indexOf(s)>=0)return;n._remoteStreams.push(s);let o=new Event("addstream");o.stream=s,n.dispatchEvent(o)})}),e.apply(n,arguments)}}}function Ls(i){if(typeof i!="object"||!i.RTCPeerConnection)return;let e=i.RTCPeerConnection.prototype,t=e.createOffer,n=e.createAnswer,r=e.setLocalDescription,s=e.setRemoteDescription,o=e.addIceCandidate;e.createOffer=function(l,d){let u=arguments.length>=2?arguments[2]:arguments[0],m=t.apply(this,[u]);return d?(m.then(l,d),Promise.resolve()):m},e.createAnswer=function(l,d){let u=arguments.length>=2?arguments[2]:arguments[0],m=n.apply(this,[u]);return d?(m.then(l,d),Promise.resolve()):m};let a=function(c,l,d){let u=r.apply(this,[c]);return d?(u.then(l,d),Promise.resolve()):u};e.setLocalDescription=a,a=function(c,l,d){let u=s.apply(this,[c]);return d?(u.then(l,d),Promise.resolve()):u},e.setRemoteDescription=a,a=function(c,l,d){let u=o.apply(this,[c]);return d?(u.then(l,d),Promise.resolve()):u},e.addIceCandidate=a}function xs(i){let e=i&&i.navigator;if(e.mediaDevices&&e.mediaDevices.getUserMedia){let t=e.mediaDevices,n=t.getUserMedia.bind(t);e.mediaDevices.getUserMedia=r=>n(Hd(r))}!e.getUserMedia&&e.mediaDevices&&e.mediaDevices.getUserMedia&&(e.getUserMedia=function(n,r,s){e.mediaDevices.getUserMedia(n).then(r,s)}.bind(e))}function Hd(i){return i&&i.video!==void 0?Object.assign({},i,{video:ds(i.video)}):i}function Ms(i){if(!i.RTCPeerConnection)return;let e=i.RTCPeerConnection;i.RTCPeerConnection=function(n,r){if(n&&n.iceServers){let s=[];for(let o=0;o<n.iceServers.length;o++){let a=n.iceServers[o];a.urls===void 0&&a.url?(Ft("RTCIceServer.url","RTCIceServer.urls"),a=JSON.parse(JSON.stringify(a)),a.urls=a.url,delete a.url,s.push(a)):s.push(n.iceServers[o])}n.iceServers=s}return new e(n,r)},i.RTCPeerConnection.prototype=e.prototype,"generateCertificate"in e&&Object.defineProperty(i.RTCPeerConnection,"generateCertificate",{get(){return e.generateCertificate}})}function Is(i){typeof i=="object"&&i.RTCTrackEvent&&"receiver"in i.RTCTrackEvent.prototype&&!("transceiver"in i.RTCTrackEvent.prototype)&&Object.defineProperty(i.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function Ds(i){let e=i.RTCPeerConnection.prototype.createOffer;i.RTCPeerConnection.prototype.createOffer=function(n){if(n){typeof n.offerToReceiveAudio<"u"&&(n.offerToReceiveAudio=!!n.offerToReceiveAudio);let r=this.getTransceivers().find(o=>o.receiver.track.kind==="audio");n.offerToReceiveAudio===!1&&r?r.direction==="sendrecv"?r.setDirection?r.setDirection("sendonly"):r.direction="sendonly":r.direction==="recvonly"&&(r.setDirection?r.setDirection("inactive"):r.direction="inactive"):n.offerToReceiveAudio===!0&&!r&&this.addTransceiver("audio",{direction:"recvonly"}),typeof n.offerToReceiveVideo<"u"&&(n.offerToReceiveVideo=!!n.offerToReceiveVideo);let s=this.getTransceivers().find(o=>o.receiver.track.kind==="video");n.offerToReceiveVideo===!1&&s?s.direction==="sendrecv"?s.setDirection?s.setDirection("sendonly"):s.direction="sendonly":s.direction==="recvonly"&&(s.setDirection?s.setDirection("inactive"):s.direction="inactive"):n.offerToReceiveVideo===!0&&!s&&this.addTransceiver("video",{direction:"recvonly"})}return e.apply(this,arguments)}}function As(i){typeof i!="object"||i.AudioContext||(i.AudioContext=i.webkitAudioContext)}var qs={};Ii(qs,{removeExtmapAllowMixed:()=>on,shimAddIceCandidateNullOrEmpty:()=>si,shimConnectionState:()=>sn,shimMaxMessageSize:()=>ni,shimParameterlessSetLocalDescription:()=>oi,shimRTCIceCandidate:()=>ii,shimRTCIceCandidateRelayProtocol:()=>rn,shimSendThrowTypeError:()=>ri});var Bt=Di(Vs());function ii(i){if(!i.RTCIceCandidate||i.RTCIceCandidate&&"foundation"in i.RTCIceCandidate.prototype)return;let e=i.RTCIceCandidate;i.RTCIceCandidate=function(n){if(typeof n=="object"&&n.candidate&&n.candidate.indexOf("a=")===0&&(n=JSON.parse(JSON.stringify(n)),n.candidate=n.candidate.substring(2)),n.candidate&&n.candidate.length){let r=new e(n),s=Bt.default.parseCandidate(n.candidate);for(let o in s)o in r||Object.defineProperty(r,o,{value:s[o]});return r.toJSON=function(){return{candidate:r.candidate,sdpMid:r.sdpMid,sdpMLineIndex:r.sdpMLineIndex,usernameFragment:r.usernameFragment}},r}return new e(n)},i.RTCIceCandidate.prototype=e.prototype,je(i,"icecandidate",t=>(t.candidate&&Object.defineProperty(t,"candidate",{value:new i.RTCIceCandidate(t.candidate),writable:"false"}),t))}function rn(i){!i.RTCIceCandidate||i.RTCIceCandidate&&"relayProtocol"in i.RTCIceCandidate.prototype||je(i,"icecandidate",e=>{if(e.candidate){let t=Bt.default.parseCandidate(e.candidate.candidate);t.type==="relay"&&(e.candidate.relayProtocol={0:"tls",1:"tcp",2:"udp"}[t.priority>>24])}return e})}function ni(i,e){if(!i.RTCPeerConnection||e.browser==="chrome"&&e.version>102||e.browser==="firefox"&&e.version>=113)return;"sctp"in i.RTCPeerConnection.prototype||Object.defineProperty(i.RTCPeerConnection.prototype,"sctp",{get(){return typeof this._sctp>"u"?null:this._sctp}});let t=function(a){if(!a||!a.sdp)return!1;let c=Bt.default.splitSections(a.sdp);return c.shift(),c.some(l=>{let d=Bt.default.parseMLine(l);return d&&d.kind==="application"&&d.protocol.indexOf("SCTP")!==-1})},n=function(a){let c=a.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(c===null||c.length<2)return-1;let l=parseInt(c[1],10);return l!==l?-1:l},r=function(a){let c=65536;return e.browser==="firefox"&&(e.version<57?a===-1?c=16384:c=2147483637:e.version<60?c=e.version===57?65535:65536:c=2147483637),c},s=function(a,c){let l=65536;e.browser==="firefox"&&e.version===57&&(l=65535);let d=Bt.default.matchPrefix(a.sdp,"a=max-message-size:");return d.length>0?l=parseInt(d[0].substring(19),10):e.browser==="firefox"&&c!==-1&&(l=2147483637),l},o=i.RTCPeerConnection.prototype.setRemoteDescription;i.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,e.browser==="chrome"&&e.version>=76){let{sdpSemantics:c}=this.getConfiguration();c==="plan-b"&&Object.defineProperty(this,"sctp",{get(){return typeof this._sctp>"u"?null:this._sctp},enumerable:!0,configurable:!0})}if(t(arguments[0])){let c=n(arguments[0]),l=r(c),d=s(arguments[0],c),u;l===0&&d===0?u=Number.POSITIVE_INFINITY:l===0||d===0?u=Math.max(l,d):u=Math.min(l,d);let m={};Object.defineProperty(m,"maxMessageSize",{get(){return u}}),this._sctp=m}return o.apply(this,arguments)}}function ri(i,e){if(!(i.RTCPeerConnection&&"createDataChannel"in i.RTCPeerConnection.prototype)||e.browser==="chrome"&&e.version>=149||e.browser==="firefox"&&e.version>60)return;function t(r,s){let o=r.send;r.send=function(){let c=arguments[0],l=c.length||c.size||c.byteLength;if(r.readyState==="open"&&s.sctp&&l>s.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+s.sctp.maxMessageSize+" bytes)");return o.apply(r,arguments)}}let n=i.RTCPeerConnection.prototype.createDataChannel;i.RTCPeerConnection.prototype.createDataChannel=function(){let s=n.apply(this,arguments);return t(s,this),s},je(i,"datachannel",r=>(t(r.channel,r.target),r))}function sn(i){if(!i.RTCPeerConnection||"connectionState"in i.RTCPeerConnection.prototype)return;let e=i.RTCPeerConnection.prototype;Object.defineProperty(e,"connectionState",{get(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(e,"onconnectionstatechange",{get(){return this._onconnectionstatechange||null},set(t){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),t&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=t)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach(t=>{let n=e[t];e[t]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=r=>{let s=r.target;if(s._lastConnectionState!==s.connectionState){s._lastConnectionState=s.connectionState;let o=new Event("connectionstatechange",r);s.dispatchEvent(o)}return r},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),n.apply(this,arguments)}})}function on(i,e){if(!i.RTCPeerConnection||e.browser==="chrome"&&e.version>=71||e.browser==="safari"&&e._safariVersion>=13.1)return;let t=i.RTCPeerConnection.prototype.setRemoteDescription;i.RTCPeerConnection.prototype.setRemoteDescription=function(r){if(r&&r.sdp&&r.sdp.indexOf(` 74a=extmap-allow-mixed`)!==-1){let s=r.sdp.split(` 75`).filter(o=>o.trim()!=="a=extmap-allow-mixed").join(` 76`);i.RTCSessionDescription&&r instanceof i.RTCSessionDescription?arguments[0]=new i.RTCSessionDescription({type:r.type,sdp:s}
76):r.sdp=s}return t.apply(this,arguments)}}function si(i,e){if(!(i.RTCPeerConnection&&i.RTCPeerConnection.prototype))return;let t=i.RTCPeerConnection.prototype.addIceCandidate;!t||t.length===0||(i.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?(e.browser==="chrome"&&e.version<78||e.browser==="firefox"&&e.version<68||e.browser==="safari")&&arguments[0]&&arguments[0].candidate===""?Promise.resolve():t.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}function oi(i,e){if(!(i.RTCPeerConnection&&i.RTCPeerConnection.prototype))return;let t=i.RTCPeerConnection.prototype.setLocalDescription;!t||t.length===0||(i.RTCPeerConnection.prototype.setLocalDescription=function(){let r=arguments[0]||{};if(typeof r!="object"||r.type&&r.sdp)return t.apply(this,arguments);if(r={type:r.type,sdp:r.sdp},!r.type)switch(this.signalingState){case"stable":case"have-local-offer":case"have-remote-pranswer":r.type="offer";break;default:r.type="answer";break}return r.sdp||r.type!=="offer"&&r.type!=="answer"?t.apply(this,[r]):(r.type==="offer"?this.createOffer:this.createAnswer).apply(this).then(o=>t.apply(this,[o]))})}var Q_=Di(Vs());function zd({window:i}={},e={shimChrome:!0,shimFirefox:!0,shimSafari:!0}){let t=ti,n=Bd(i),r={browserDetails:n,commonShim:qs,extractVersion:Nt,disableLog:Nd,disableWarnings:Fd,sdp:Q_};switch(n.browser){case"chrome":if(!Xi||!Yi||!e.shimChrome)return t("Chrome shim is not included in this adapter release."),r;if(n.version===null)return t("Chrome shim can not determine version, not shimming."),r;t("adapter.js shimming chrome."),r.browserShim=Xi,si(i,n),oi(i,n),Ji(i,n),ps(i,n),Yi(i,n),hs(i,n),gs(i,n),fs(i,n),ms(i,n),vs(i,n),ii(i,n),rn(i,n),sn(i,n),ni(i,n),ri(i,n),on(i,n);break;case"firefox":if(!tn||!en||!e.shimFirefox)return t("Firefox shim is not included in this adapter release."),r;t("adapter.js shimming firefox."),r.browserShim=tn,si(i,n),oi(i,n),Zi(i,n),en(i,n),bs(i,n),_s(i,n),Ss(i,n),Cs(i,n),ys(i,n),Ts(i,n),ks(i,n),Ps(i,n),ws(i,n),Es(i,n),ii(i,n),sn(i,n),ni(i,n),ri(i,n);break;case"safari":if(!nn||!e.shimSafari)return t("Safari shim is not included in this adapter release."),r;t("adapter.js shimming safari."),r.browserShim=nn,si(i,n),oi(i,n),Ms(i,n),Ds(i,n),Ls(i,n),Os(i,n),Rs(i,n),Is(i,n),xs(i,n),As(i,n),ii(i,n),rn(i,n),ni(i,n),ri(i,n),on(i,n);break;default:t("Unsupported browser!");break}return r}var aM=zd({window:typeof window>"u"?void 0:window});var Xr=Di(Yl());var de=(()=>{class i{isBrowserChrome(){return"chrome"in window}isScreenSharingAvailable(){return this.isBrowserChrome()&&"mediaDevices"in navigator&&"getDisplayMedia"in navigator.mediaDevices}getSharedAudioTrack(){return navigator.mediaDevices.getDisplayMedia({video:!0,audio:{echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,sampleRate:48e3,channelCount:2,suppressLocalAudioPlayback:!1}}).then(t=>{t.getVideoTracks().forEach(r=>r.stop());let n=t.getAudioTracks();return n.length?new Xr.LocalAudioTrack(n[0]):null}).catch(t=>{if(!(t instanceof DOMException&&t.name==="NotAllowedError"&&t.message==="Permission denied"))return console.error("Audio sharing error: "+t.name+", "+t.message),null})}getScreenVideoTrack(){return navigator.mediaDevices.getDisplayMedia({video:{cursor:"always"},audio:!1}).then(t=>new Xr.LocalVideoTrack(t.getVideoTracks()[0])).catch(t=>{if(!(t instanceof DOMException&&t.name==="NotAllowedError"&&t.message==="Permission denied"))return console.error("Screen sharing error: "+t.name+", "+t.message),null})}clearAppointmentData(){this.clinicData=null,this.appointmentData=null}clearLocalTracks(){this.screenTrack&&(this.screenTrack=null),this.sharedAudioTrack&&(this.sharedAudioTrack=null),this.audioTrack=null,this.videoTrack=null,this.dataTrack=null}leaveVideoCallRoom(){this.videoCallRoom&&this.videoCallRoom.disconnect(),this.videoCallRoom=null}static{this.\u0275fac=function(n){return new(n||i)}}static{this.\u0275prov=Ye({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})();var be=(()=>{class i{constructor(t){this.videoCallService=t}getParticipants(){return this.participants}setParticipants(t){this.participants=t}addParticipant(t){t&&this.participants.set(t.sid,t)}removeParticipant(t){this.participants?.has(t.sid)&&this.participants.delete(t.sid)}clearParticipants(){this.participants?.clear()}get participantCount(){return this.participants?.size??0}get isLocalParticipantAlone(){if(this.participantCount===0)return!0;let[t,n]=this.videoCallService.videoCallRoom.localParticipant.identity.split("-");for(let r of this.participants?.values()??[])if(!r.identity.startsWith(t+"-"+n))return!1;return!0}static{this.\u0275fac=function(n){return new(n||i)(yt(de))}}static{this.\u0275prov=Ye({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})();var qL=["list"],N_=(()=>{class i{constructor(t,n,r){this.renderer=t,this.videoCallService=n,this.videoCallParticipantService=r,this.videoPlayerList=new Map}initialize(t){this.videoCallParticipantService.setParticipants(t),t?.forEach(n=>this.registerParticipantEvents(n))}add(t){!this.videoCallParticipantService.getParticipants()||!t||(this.videoCallParticipantService.addParticipant(t),this.registerParticipantEvents(t))}clear(){if(this.videoCallParticipantService.clearParticipants(),this.videoPlayerList?.size){for(let[,t]of this.videoPlayerList)this.renderer.removeChild(this.listRef.nativeElement,t);this.videoPlayerList.clear()}}remove(t){let n=this.videoCallParticipantService.getParticipants();!n||!n.has(t.sid)||(t.tracks.forEach(r=>this.unsubscribe(r,t.sid)),this.removeParticipantVideoPlayer(t.sid),this.videoCallParticipantService.removeParticipant(t))}refreshParticipantListClass(){return this.refreshVideoPlayers(),{"video-call-2-participants":this.videoCallParticipantService.participantCount===2,"video-call-3-participants":this.videoCallParticipantService.participantCount===3,"video-call-4-participants":this.videoCallParticipantService.participantCount>=4}}getVideoCallPlayerClass(){return"video-call-video-player"}getVideoCallCoverClass(){return"video-call-cover"}getVideoCallEnabledClass(){return"enabled"}getVideoCallDisabledClass(){return"disabled"}getVideoCallWrapperClass(){return"video-call-wrapper"}getVideoCallWrapperPortraitClass(){return"portrait"}removeParticipantVideoPlayer(t){this.videoPlayerList&&this.videoPlayerList.has(t)&&(this.renderer.removeChild(this.listRef.nativeElement,this.videoPlayerList.get(t)),this.videoPlayerList.delete(t))}createParticipantVideoPlayer(t){let n=this.renderer.createElement("div");return this.renderer.addClass(n,this.getVideoCallPlayerClass()),this.renderer.addClass(n,this.getVideoCallEnabledClass()),this.renderer.appendChild(this.listRef.nativeElement,n),this.videoPlayerList.set(t,n),n}registerParticipantEvents(t){t&&(t.tracks.forEach(n=>this.subscribe(n,t.sid)),t.on("trackPublished",n=>this.subscribe(n,t.sid)),t.on("trackUnpublished",n=>this.unsubscribe(n,t.sid)))}unsubscribe(t,n){t?.track&&this.detachRemoteTrack(t.track,n)}subscribe(t,n){t?.on&&(t.on("subscribed",r=>this.attachRemoteTrack(r,n)),t.on("unsubscribed",r=>this.detachRemoteTrack(r,n)))}attachRemoteTrack(t,n){if(this.isAttachable(t)){let r=this.videoPlayerList?.has(n)?this.videoPlayerList.get(n):this.createParticipantVideoPlayer(n),s=t.attach();if(this.renderer.data.id=t.sid,t.kind==="video"){let o=this.createRemoteVideoTrackWrapper();this.renderer.appendChild(o,s),this.renderer.appendChild(r,o),t.once("started",()=>this.onVideoTrackStarted(t,o))}else this.renderer.appendChild(r,s)}}onVideoTrackStarted(t,n){t.dimensions.height>t.dimensions.width&&this.renderer.addClass(n,this.getVideoCallWrapperPortraitClass())}createRemoteVideoTrackWrapper(){let t=this.renderer.createElement("div");this.renderer.addClass(t,this.getVideoCallWrapperClass());let n=this.renderer.createElement("div");return this.renderer.addClass(n,this.getVideoCallCoverClass()),this.renderer.appendChild(t,n),t}
76detachRemoteTrack(t,n){this.isDetachable(t)&&t.detach().forEach(s=>{let o=s.parentElement;t.kind==="video"&&o?.classList.contains(this.getVideoCallWrapperClass())?o.remove():s.remove()});let r=this.videoPlayerList?.get(n);r&&this.isVideoPlayerWithoutTracks(r)&&this.removeParticipantVideoPlayer(n)}isVideoPlayerWithoutTracks(t){let n=t.children;if(!n?.length)return!0;if(n.length===1&&n[0].classList.contains(this.getVideoCallWrapperClass())){let r=n[0].children;if(!r?.length||r.length===1&&r[0].classList.contains(this.getVideoCallCoverClass()))return!0}return!1}isAttachable(t){return!!t&&(t.attach!==void 0||t.attach!==void 0)}isDetachable(t){return!!t&&(t.detach!==void 0||t.detach!==void 0)}refreshVideoPlayer(t){if(this.videoPlayerList?.has(t.sid)&&t.videoTracks.size){let n=!0;for(let a of t.videoTracks.values())if(a.isTrackEnabled===!1){n=!1;break}let r=this.videoPlayerList.get(t.sid),s=this.getVideoCallEnabledClass(),o=this.getVideoCallDisabledClass();!n&&r.classList.contains(s)?(this.renderer.removeClass(r,s),this.renderer.addClass(r,o)):n&&r.classList.contains(o)&&(this.renderer.removeClass(r,o),this.renderer.addClass(r,s))}}refreshVideoPlayers(){this.videoCallParticipantService.getParticipants()?.forEach(t=>this.refreshVideoPlayer(t))}static{this.\u0275fac=function(n){return new(n||i)(k(ee),k(de),k(be))}}static{this.\u0275cmp=z({type:i,selectors:[["ng-component"]],viewQuery:function(n,r){if(n&1&&xe(qL,5),n&2){let s;ce(s=le())&&(r.listRef=s.first)}},decls:0,vars:0,template:function(n,r){},encapsulation:2})}}return i})();var F_=(()=>{class i extends N_{constructor(t,n,r,s,o,a){super(t,n,r),this.renderer=t,this.videoCallService=n,this.videoCallParticipantService=r,this.document=s,this.changeDetectorRef=o,this.appConfig=a}updateDimensionsInVideoPlayerList(){if(!this.videoPlayerList?.size)return;let t=[];for(let[,n]of this.videoPlayerList){if(!n.children.length)continue;let r=n.querySelector("."+this.getVideoCallWrapperClass());if(!r)continue;let s=r.querySelector("video");
76s&&t.push([n,r,s])}for(let[n,r,s]of t)this.adjustVideoCallPlayer(n,r,s,t.length)}adjustVideoCallPlayer(t,n,r,s){this.resetVideoCallAdjustments(t,n,r),this.document.body.clientWidth<=this.appConfig.viewport?.medium?this.adjustVideoCallDimensionsMobile(t,n,r,s):this.adjustVideoCallDimensionsDesktop(t,n,r,s)}resetVideoCallAdjustments(t,n,r){(n.style.width&&n.style.height||r.style.width||r.style.height||t.style.height)&&(this.renderer.setStyle(t,"height",""),this.renderer.setStyle(n,"width",""),this.renderer.setStyle(n,"height",""),this.renderer.setStyle(r,"width",""),this.renderer.setStyle(r,"height",""),this.changeDetectorRef.detectChanges())}adjustVideoCallDimensionsDesktop(t,n,r,s){let o=this.getVideoPlayerMaxHeightDesktop(s),a=n.classList.contains(this.getVideoCallWrapperPortraitClass());a&&(this.renderer.setStyle(t,"height",o+"px"),this.changeDetectorRef.detectChanges());let c=t.clientWidth;if(!(n.clientHeight>o||c>0&&n.clientWidth>c||s===1&&a))return;let{width:d,height:u}=this.fitToContainer(c,o,a);d>0&&u>0&&this.applyVideoCallDimensions(n,r,d,u)}adjustVideoCallDimensionsMobile(t,n,r,s){let o=this.getVideoPlayerMaxHeightMobile(s),a=t.clientWidth,c=n.classList.contains(this.getVideoCallWrapperPortraitClass());if(!(n.clientHeight>o||a>0&&n.clientWidth>a))return;let{width:d,height:u}=this.fitToContainer(a,o,c);d>0&&u>0&&this.applyVideoCallDimensions(n,r,d,u)}fitToContainer(t,n,r){let s=n,o=this.calculateWidth(s,r);return t>0&&o>t&&(o=t,s=this.calculateHeight(o,r)),{width:o,height:s}}calculateWidth(t,n){let{width:r,height:s}=this.appConfig.videoCallOptions;return Math.floor(t*(n?s:r)/(n?r:s))}calculateHeight(t,n){let{width:r,height:s}=this.appConfig.videoCallOptions;return Math.floor(t*(n?r:s)/(n?s:r))}applyVideoCallDimensions(t,n,r,s){this.renderer.setStyle(t,"width",r+"px"),this.renderer.setStyle(t,"height",s+"px"),this.renderer.setStyle(n,"width",r+"px"),this.renderer.setStyle(n,"height",s+"px")}getVideoPlayerMaxHeightDesktop(t){let n=this.getVideoPlayerWrapperHeight();return t>=3&&(n=Math.floor(n/2)),n}getVideoPlayerMaxHeightMobile(t){let n=this.getVideoPlayerWrapperHeight();return t===2?n=Math.floor(n/2):t===3?n=Math.floor(n/3):t>=4&&(n=Math.floor(n/4)),n}getVideoPlayerWrapperHeight(){return this.getParticipantsContainer()?.clientHeight||this.listRef?.nativeElement?.clientHeight||0}getParticipantsContainer(){return this.listRef?.nativeElement?.closest(".video-call-participants-wrapper")??null}onVideoTrackStarted(t,n){super.onVideoTrackStarted(t,n),this.updateDimensionsInVideoPlayerList()}detachRemoteTrack(t,n){super.detachRemoteTrack(t,n),t.kind==="video"&&this.updateDimensionsInVideoPlayerList()}static{this.\u0275fac=function(n){return new(n||i)(k(ee),k(de),k(be),k(It),k(Vt),k("APP_CONFIG"))}}static{this.\u0275cmp=z({type:i,selectors:[["lib-patient-video-call-participants"]],features:[Ni],decls:3,vars:2,consts:[["list",""],[1,"participant-list",3,"hidden","ngClass"],[1,"video-call-video-player-wrapper"]],template:function(n,r){n&1&&(T(0,"div",1),D(1,"div",2,0),S()),n&2&&y("hidden",r.videoCallParticipantService.isLocalParticipantAlone)("ngClass",r.refreshParticipantListClass())},dependencies:[Ie,vd],styles:["[_nghost-%COMP%]{display:block;height:100%;width:100%}.participant-list[_ngcontent-%COMP%]{height:100%}.video-call-video-player-wrapper[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;justify-content:center;align-content:center;align-items:center;height:100%}.video-call-video-player-wrapper[_ngcontent-%COMP%] .video-call-video-player[_ngcontent-%COMP%]{display:flex;flex-direction:column;justify-content:center;align-items:center}.video-call-video-player-wrapper[_ngcontent-%COMP%] .video-call-video-player[_ngcontent-%COMP%] .video-call-wrapper[_ngcontent-%COMP%]{display:inline-block;position:relative;margin:0 auto;width:100%;height:auto}.video-call-video-player-wrapper[_ngcontent-%COMP%] .video-call-video-player[_ngcontent-%COMP%] .video-call-wrapper[_ngcontent-%COMP%] video[_ngcontent-%COMP%]{width:100%;height:auto;display:block}.video-call-video-player-wrapper[_ngcontent-%COMP%] .video-call-video-player[_ngcontent-%COMP%] .video-call-cover[_ngcontent-%COMP%]{background:#000;position:absolute;inset:0;z-index:2}.video-call-video-player-wrapper[_ngcontent-%COMP%] .video-call-video-player.enabled[_ngcontent-%COMP%] .video-call-cover[_ngcontent-%COMP%]{display:none}.video-call-video-player-wrapper[_ngcontent-%COMP%] .video-call-video-player.disabled[_ngcontent-%COMP%] .video-call-cover[_ngcontent-%COMP%]{display:block}@media only screen and (min-width:428px)and (max-width:926px)and (orientation:landscape),only screen and (max-width:768px){.video-call-video-player-wrapper[_ngcontent-%COMP%]{display:flex;flex-wrap:nowrap;flex-direction:column;justify-content:center;align-content:center}.video-call-2-participants[_ngcontent-%COMP%] .video-call-video-player[_ngcontent-%COMP%], .video-call-3-participants[_ngcontent-%COMP%] .video-call-video-player[_ngcontent-%COMP%], .video-call-4-participants[_ngcontent-%COMP%] .video-call-video-player[_ngcontent-%COMP%]{width:100%}.video-call-2-participants[_ngcontent-%COMP%] .video-call-video-player[_ngcontent-%COMP%]{max-height:50%}.video-call-3-participants[_ngcontent-%COMP%] .video-call-video-player[_ngcontent-%COMP%]{max-height:33%}.video-call-4-participants[_ngcontent-%COMP%] .video-call-video-player[_ngcontent-%COMP%]{max-height:25%}.video-call-2-participants[_ngcontent-%COMP%] .video-call-video-player-wrapper[_ngcontent-%COMP%] .video-call-video-player[_ngcontent-%COMP%] .video-call-wrapper.portrait[_ngcontent-%COMP%], .video-call-3-participants[_ngcontent-%COMP%] .video-call-video-player-wrapper[_ngcontent-%COMP%] .video-call-video-player[_ngcontent-%COMP%] .video-call-wrapper.portrait[_ngcontent-%COMP%], .video-call-4-participants[_ngcontent-%COMP%] .video-call-video-player-wrapper[_ngcontent-%COMP%] .video-call-video-player[_ngcontent-%COMP%] .video-call-wrapper.portrait[_ngcontent-%COMP%]{height:100%;width:auto}.video-call-2-participants[_ngcontent-%COMP%] .video-call-video-player-wrapper[_ngcontent-%COMP%] .video-call-video-player[_ngcontent-%COMP%] .video-call-wrapper.portrait[_ngcontent-%COMP%] video[_ngcontent-%COMP%], .video-call-3-participants[_ngcontent-%COMP%] .video-call-video-player-wrapper[_ngcontent-%COMP%] .video-call-video-player[_ngcontent-%COMP%] .video-call-wrapper.portrait[_ngcontent-%COMP%] video[_ngcontent-%COMP%], .video-call-4-participants[_ngcontent-%COMP%] .video-call-video-player-wrapper[_ngcontent-%COMP%] .video-call-video-player[_ngcontent-%COMP%] .video-call-wrapper.portrait[_ngcontent-%COMP%] video[_ngcontent-%COMP%]{width:auto;height:100%}}"]})}}return i})();Te();var Yt=Di(Yl());var FL=["messageContainerEl"],BL=()=>({name:"paper-plane",color:"#fff"});function UL(i,e){if(i&1&&(T(0,"li",13)(1,"h5",14),V(2),S(),T(3,"div",15),V(4),S()()),i&2){let t=e.$implicit,n=e.index,r=A(2);ue("own",r.currentUserId===t.participantId)("same-author",t.participantId===(r.messages[n-1]==null?null:r.messages[n-1].participantId)),v(2),ie(t.participantName),v(2),ie(t.text)}}function $L(i,e){if(i&1&&(T(0,"ul",11,1),$(2,UL,5,6,"li",12),L(3,"trackByProp"),S()),i&2){let t=A();v(2),y("ngForOf",t.messages)("ngForTrackBy",x(3,2,"messageId"))}}var B_=(()=>{class i{constructor(){this.messages=[],this.sendMessageClick=new fd}ngAfterViewInit(){this.scrollMessageContainerToBottom()}sendMessage(t){this.isMessageEmpty(t.value)||(this.sendMessageClick.emit(t.value),t.value="")}scrollMessageContainerToBottom(){this.messageContainerEl?.nativeElement&&(this.messageContainerEl.nativeElement.scrollTop=this.messageContainerEl.nativeElement.scrollHeight)}isMessageEmpty(t){return!t.trim()}static{this.\u0275fac=function(n){return new(n||i)}}static{this.\u0275cmp=z({type:i,selectors:[["lib-video-call-chat"]],viewQuery:function(n,r){if(n&1&&xe(FL,5),n&2){let s;ce(s=le())&&(r.messageContainerEl=s.first)}},inputs:{messages:"messages",currentUserId:"currentUserId"},outputs:{sendMessageClick:"sendMessageClick"},decls:14,vars:16,consts:[["messageTextField",""],["messageContainerEl",""],[1,"chat-wrapper"],[1,"messages-container"],["class","messages",4,"ngIf"],[1,"controls-container"],[1,"message-field-wrapper"],[1,"message-field",3,"keydown.control.enter","placeholder"],[1,"buttons-wrapper"],["type","button",1,"send-message-button",3,"click","matTooltip","disabled"],[3,"params"],[1,"messages"],["class","message-item",3,"own","same-author",4,"ngFor","ngForOf","ngForTrackBy"],[1,"message-item"],[1,"message-author"],[1,"message-wrapper"]],template:function(n,r){if(n&1){let s=te();T(0,"div",2)(1,"div",3),$(2,$L,4,4,"ul",4),S(),T(3,"div",5)(4,"div",6)(5,"textarea",7,0),L(7,"translate"),L(8,"translate"),H("keydown.control.enter",function(){X(s);let a=Me(6);return Z(r.sendMessage(a))}),S()(),T(9,"div",8)(10,"button",9),L(11,"translate"),L(12,"translate"),H("click",function(){X(s);let a=Me(6);return Z(r.sendMessage(a))}),D(13,"lib-svg-icon",10),S()()()()}if(n&2){let s=Me(6);v(2),y("ngIf",r.messages==null?null:r.messages.length),v(3),y("placeholder",x(7,7,"Type your message...")),ke("aria-label",x(8,9,"Type your message...")),v(5),y("matTooltip",x(11,11,"Send message"))("disabled",r.isMessageEmpty(s.value)),ke("aria-label",x(12,13,"Send message")),v(3),y("params",W(15,BL))}},dependencies:[Ie,qt,et,Gi,zi,Ae,Id,ve],styles:['.chat-wrapper[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%;width:100%;background-color:#fff}.chat-wrapper[_ngcontent-%COMP%] .messages-container[_ngcontent-%COMP%]{flex:1;padding:16px 0;overflow:hidden}.chat-wrapper[_ngcontent-%COMP%] .messages[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%;justify-content:flex-start;overflow:auto;margin-top:auto}.chat-wrapper[_ngcontent-%COMP%] .message-item[_ngcontent-%COMP%]:first-child{margin-top:auto}.chat-wrapper[_ngcontent-%COMP%] .message-item[_ngcontent-%COMP%]{margin-bottom:5px}.chat-wrapper[_ngcontent-%COMP%] .message-item.own[_ngcontent-%COMP%] .message-wrapper[_ngcontent-%COMP%]{background-color:#03c5e533;border-radius:8px 0 8px 8px}.chat-wrapper[_ngcontent-%COMP%] .message-item.own[_ngcontent-%COMP%] .message-wrapper[_ngcontent-%COMP%]:after{border-width:5px 5px 0 0;border-color:rgba(3,197,229,.2) transparent transparent transparent;right:-5px;left:auto}.chat-wrapper[_ngcontent-%COMP%] .message-item.same-author[_ngcontent-%COMP%] .message-author[_ngcontent-%COMP%]{display:none;padding-top:5px}.chat-wrapper[_ngcontent-%COMP%] .message-item.same-author[_ngcontent-%COMP%] .message-wrapper[_ngcontent-%COMP%]{border-radius:8px}.chat-wrapper[_ngcontent-%COMP%] .message-item.same-author[_ngcontent-%COMP%] .message-wrapper[_ngcontent-%COMP%]:after{display:none}.chat-wrapper[_ngcontent-%COMP%] .message-author[_ngcontent-%COMP%]{line-height:18px;font-size:10px;font-weight:700;color:#064060;opacity:.5;letter-spacing:.3px;text-align:center}.chat-wrapper[_ngcontent-%COMP%] .message-wrapper[_ngcontent-%COMP%]{color:#505050;padding:8px;margin:0 27px;position:relative;display:flex;justify-content:flex-start;background-color:#5050501a;border-radius:0 8px 8px;font-size:12px;letter-spacing:.4px;text-align:start;word-break:break-all;-webkit-user-select:text;user-select:text;white-space:pre-wrap}.chat-wrapper[_ngcontent-%COMP%] .message-wrapper[_ngcontent-%COMP%]:after{content:"";width:0;height:0;border-style:solid;position:absolute;top:0;border-width:0 5px 5px 0;border-color:transparent rgba(80,80,80,.1) transparent transparent;left:-5px}.chat-wrapper[_ngcontent-%COMP%] .controls-container[_ngcontent-%COMP%]{height:109px;border-top:1px solid rgba(151,151,151,.2);display:flex;flex-direction:column}.chat-wrapper[_ngcontent-%COMP%] .message-field-wrapper[_ngcontent-%COMP%]{flex:1}.chat-wrapper[_ngcontent-%COMP%] .message-field[_ngcontent-%COMP%]{height:100%;width:100%;padding:8px 10px;box-sizing:border-box}.chat-wrapper[_ngcontent-%COMP%] .message-field[_ngcontent-%COMP%], .chat-wrapper[_ngcontent-%COMP%] .message-field[_ngcontent-%COMP%]::placeholder{font-size:16px;color:#505050;letter-spacing:.4px}.chat-wrapper[_ngcontent-%COMP%] .buttons-wrapper[_ngcontent-%COMP%]{padding:10px;height:50px;box-sizing:border-box;display:flex;justify-content:flex-end}.chat-wrapper[_ngcontent-%COMP%] .send-message-button[_ngcontent-%COMP%]{height:30px;width:30px;border-radius:8px;background-color:#064060;cursor:pointer;display:flex;align-items:center;justify-content:center}.chat-wrapper[_ngcontent-%COMP%] .send-message-button[disabled][_ngcontent-%COMP%]{background-color:#d8d8d8;cursor:default}']})}}return i})();var U_=(()=>{class i{constructor(t){this.httpClient=t}sendCallAction(t,n,r){return this.httpClient.post(`/api/voice-call/${t}`,Ed({action:n,value:r}))}endVoiceCall(t){return this.sendCallAction(t,"complete")}createVoiceCall(t,n){return this.httpClient.post("/api/voice-call",{roomIdentity:t,numberTo:n}).pipe(ud("id"))}sendDigit(t,n){return this.sendCallAction(t,"sendDigits",n)}getFullVoiceCall(t){return this.httpClient.get(`/api/voice-call/${t}`)}getSimpleVoiceCall(t){return this.httpClient.get(`/api/voice-call/${t}/simple`)}getPublicSimpleVoiceCall(t){return this.httpClient.get(`/public/voice-call/${t}/simple`)}static{this.\u0275fac=function(n){return new(n||i)(yt(Cd))}}static{this.\u0275prov=Ye({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})();
76var Ce=(()=>{class i{constructor(t,n){this.voiceCallApiService=t,this.authorizationService=n,this.MIN_END_CALL_TIMEOUT=2e3,this.voiceCallListSubject=new Ai([]),this.newVoiceCallParticipantSubject=new bt,this.endedVoiceCallIdSubject=new bt,this.END_CALL_TIMEOUT=this.MIN_END_CALL_TIMEOUT}getEndedVoiceCallId(){return this.endedVoiceCallIdSubject.asObservable()}get isVoiceCallListEmpty(){return this.voiceCallListValue.length===0}get voiceCallListValue(){return this.voiceCallListSubject.getValue()}getVoiceCallList(){return this.voiceCallListSubject.asObservable()}setVoiceCallList(t){this.voiceCallListSubject.next(t)}clearVoiceCallList(){this.setVoiceCallList([])}removeCallFromList(t){let n=this.voiceCallListValue.filter(r=>r.id!==t);this.setVoiceCallList(n)}addCall(t){this.newVoiceCallParticipantSubject.next(t)}isVoiceCall({identity:t}){return t.startsWith(ei.VOICE_CALL)}getVoiceCallId({identity:t}){return+t.replace(/\D/g,"")}getNewVoiceCallId(){return this.newVoiceCallParticipantSubject.pipe(Xt(t=>this.getVoiceCallId(t)))}removeCall(t){let n=this.getVoiceCallId(t);return ji(this.getNewVoiceCallId(),cd(this.END_CALL_TIMEOUT)).pipe(J(()=>this.END_CALL_TIMEOUT=this.MIN_END_CALL_TIMEOUT),Je(),xt(r=>r!==n),J(()=>this.removeCallFromList(n)),J(()=>this.endedVoiceCallIdSubject.next(n)))}createCall(t,n){return this.getVoiceCallList().pipe(Je(r=>!r.some(s=>s.phone===n)),Q(()=>this.voiceCallApiService.createVoiceCall(t,"1"+n)))}answerCall(t){return this.newVoiceCallParticipantSubject.pipe(Je(n=>this.getVoiceCallId(n)===t.id),J(n=>{this.updateAudioTrack(t,n),this.addVoiceCallToList(t)}))}addVoiceCallToList(t){this.setVoiceCallList([...this.voiceCallListValue,t])}endCall(t){return this.voiceCallApiService.endVoiceCall(t).pipe(J(()=>this.removeCallFromList(t)))}endAllCalls(){return ns(this.voiceCallListValue.map(({id:t})=>this.endCall(t)))}sendDigits(t,n){return this.END_CALL_TIMEOUT=this.MIN_END_CALL_TIMEOUT+(n.length-1)*400,this.getVoiceCallList().pipe(Xt(r=>r.find(s=>s.id===t)),Je(Boolean),Q(r=>this.voiceCallApiService.sendDigit(t,n).pipe(J(()=>r.digits=`${r.digits??""}${n}`),Q(()=>this.newVoiceCallParticipantSubject),Je(),J(s=>this.updateAudioTrack(r,s)))))}getAudioTrack(t){return[...t.audioTracks.values()][0]}getFullCall(t){return this.voiceCallApiService.getFullVoiceCall(this.getVoiceCallId(t)).pipe(Xt(({numberTo:n,digits:r,id:s,roomType:o,roomId:a})=>({digits:r,id:s,phone:n.slice(2),roomName:`${o}-${a}`,audioTrackSubject:new Ai(this.getAudioTrack(t))})))}getSimpleCall(t,n){let r=this.getVoiceCallId(t);return this.authorizationService.isAuthorized().pipe(Q(s=>s?this.voiceCallApiService.getSimpleVoiceCall(r):this.voiceCallApiService.getPublicSimpleVoiceCall(r)),Xt(({numberTo:s})=>({id:r,phone:s,roomName:n,digits:"",audioTrackSubject:new Ai(this.getAudioTrack(t))})))}updateVoiceCallList(t,n,r=!1){let s=t.filter(o=>this.isVoiceCall(o)).map(o=>this.updateVoiceCall(o,n,r));return ns(s)}updateVoiceCall(t,n,r=!1){let s=this.getVoiceCallId(t),o=this.voiceCallListValue.find(a=>a.id===s);return o?(this.updateAudioTrack(o,t),Be(o)):Lt(()=>r,this.getFullCall(t),this.getSimpleCall(t,n)).pipe(J(a=>this.addVoiceCallToList(a)))}updateAudioTrack(t,n){t.audioTrackSubject.next(this.getAudioTrack(n))}static{this.\u0275fac=function(n){return new(n||i)(yt(U_),yt(De))}}static{this.\u0275prov=Ye({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})();var zL=["participants"],GL=["localVideoBlock"],QL=["localVideoCover"],KL=["videoCallChatEl"],es=class Zl{constructor(e,t,n,r,s,o,a,c,l,d,u,m,f,h,_,b,R,E){this.appConfig=e,this.activatedRoute=t,this.appointmentApiService=n,this.renderer=r,this.clinicApiService=s,this.clinicPublicApiService=o,this.authorizationService=a,this.voiceCallService=c,this.currentUserService=l,this.videoCallService=d,this.videoCallParticipantService=u,this.clinicModuleActiveService=m,this.messagingApiService=f,this.location=h,this.deviceService=_,this.modalWindowService=b,this.document=R,this.loaderService=E,this.localTrackOptions={audio:{workaroundWebKitBug180748:!0},video:{width:this.appConfig.videoCallOptions.width,height:this.appConfig.videoCallOptions.height,frameRate:24}},this.isFacingModeAvailable=!0,this.isProvider=!1,this.videoDeviceList=[],this.showLocalVideoCover=!1,this.blockStartCallButton=!0,this.isAuthorized$=this.authorizationService.isAuthorized(),this.voiceCallList$=this.voiceCallService.getVoiceCallList(),this.messages=[],this.hasUnreadMessages=!1,this.isChatOpen=!1,this.chatMessageSubject$=new bt,this.htmlElClassList=["video-call-layout"],this.VIDEO_INITIALIZATION_TIMEOUT=30,this.VIDEO_INITIALIZATION_LOADER_KEY="video-call-initialization",this.SHORT_TIME_INTERVAL=30*1e3,this.CHAT_MESSAGE_DEBOUNCE_TIME=300,this.defaultTarget=this.deviceService.isCordovaApp()?cs.SYSTEM:cs.BLANK,this.onRoomDisconnected=(C,U)=>{this.unpublishLocalParticipantTracks(C.localParticipant)},this.onRoomParticipantConnected=C=>{if(!this.voiceCallService.isVoiceCall(C)){this.participants.add(C);return}this.isProvider||this.voiceCallService.updateVoiceCall(C,this.videoCallService.videoCallRoom.name,this.isProvider).subscribe(),this.voiceCallService.addCall(C)},this.onRoomTrackSubscribed=C=>{C.kind==="data"&&C.on("message",()=>this.chatMessageSubject$.next())},this.onRoomParticipantDisconnected=C=>{this.voiceCallService.isVoiceCall(C)?this.voiceCallService.removeCall(C).subscribe():this.participants.remove(C)}}ngOnInit(){this.onInitializationStarted(),this.deviceService.isDesktopBrowser()&&this.htmlElClassList.push("desktop-browser"),this.document.documentElement.classList.add(...this.htmlElClassList);let{params:{appointmentId:e},queryParams:{uuid:t},data:{target:n}}=this.activatedRoute.snapshot;this.getExternalUrl(e,t).pipe(J(r=>this.onExternalUrlLoaded(r,n)),xt(r=>r?(this.onInitializationFinished(),!1):!0),Q(()=>this.getAppointmentData(e,t)),J(r=>this.videoCallService.appointmentData=r),Q(({clinicUuid:r})=>this.getClinicData(r)),J(r=>this.videoCallService.clinicData=r),Q(({clinicUuid:r})=>this.getTelehealthChatModuleActivity(r)),J(r=>this.isTelehealthChatModuleActive=r),Q(()=>this.getCurrentUserData()),Vi(r=>(this.onInitializationFinished(),ad(()=>r)))).subscribe(r=>this.onUserDataLoaded(r))}ngOnDestroy(){this.stopVideoCall().then(()=>this.videoCallService.clearAppointmentData()),this.document.documentElement.classList.remove(...this.htmlElClassList)}onExternalUrlLoaded(e,t=this.defaultTarget){if(!e)return;t===this.defaultTarget&&this.location.back();let n=window.open(e,t);(!n||n.closed||typeof n.closed>"u")&&setTimeout(()=>{this.modalWindowService.info("Please be sure to allow pop-ups under your browser settings and attempt the call again","Pop-up window blocked")},300)}onInitializationStarted(){this.loaderTimer=this.loaderService.start(this.VIDEO_INITIALIZATION_LOADER_KEY,!1,this.VIDEO_INITIALIZATION_TIMEOUT*1e3)}onInitializationFinished(){this.loaderService.finish(this.VIDEO_INITIALIZATION_LOADER_KEY,!1,this.loaderTimer)}onUserDataLoaded(r){return Le(this,arguments,function*({memberId:e,memberType:t,name:n}){this.isProvider=t===ei.DOCTOR,this.currentUserId=e,this.currentUserName=n;let{twilioAccessToken:s,twilioVideoRoom:o}=this.videoCallService.appointmentData;if(!s||!o){this.onInitializationFinished();return}yield this.initializeData();let{videoAccess:a,audioAccess:c}=this.videoCallService;if(!a||!c){this.onInitializationFinished();return}this.attachLocalVideoTrack(),yield this.startVideoCall(),this.updateVideoOptions()})}get isParticipantListEmpty(){return this.videoCallParticipantService.isLocalParticipantAlone&&this.voiceCallService.isVoiceCallListEmpty}isTelehealthChatAvailable(){return this.isTelehealthChatModuleActive}get appointmentId(){return this.activatedRoute.snapshot.params.appointmentId}getExternalUrl(e,t){return this.isAuthorized$.pipe(Q(n=>n?this.appointmentApiService.getExternalVideoCallUrl(e):t?this.appointmentApiService.getExternalVideoCallUrlPublic(t):Be(null)))}getClinicData(e){return this.isAuthorized$.pipe(Q(t=>Lt(()=>t,this.clinicApiService.getClinicSettings(e),this.clinicPublicApiService.getClinicByUuid(e))))}getAppointmentData(e,t){return this.isAuthorized$.pipe(Q(n=>Lt(()=>n,this.appointmentApiService.get(e),this.appointmentApiService.getAppointmentPublic(t||e))))}getTelehealthChatModuleActivity(e){return this.isAuthorized$.pipe(Q(t=>Lt(()=>t,this.clinicModuleActiveService.isModuleActive(e,Ld.TELEHEALTH_CHAT),Be(!1))))}getCurrentUserData(){return this.isAuthorized$.pipe(Q(e=>e?this.currentUserService.getAccountData():Be({memberId:0,memberType:ei.EMPTY,name:""})))}initVideoDeviceList(){return Le(this,null,function*(){this.videoDeviceList=[];try{let t=(yield navigator.mediaDevices?.enumerateDevices()).filter(n=>n.kind==="videoinput");if(t.length>1){let n=t.filter(s=>s.label.includes("front")),r=t.filter(s=>s.label.includes("back"));n.length>1&&r.length>1?(this.isFacingModeAvailable=!1,this.videoDeviceList.push(n[0]),this.videoDeviceList.push(r[r.length-1])):this.isFacingModeAvailable=!0}this.videoDeviceList.length===0&&(this.videoDeviceList=t)}catch(e){console.error("No access to video/audio device list: ",e)}})}updateVideoOptions(){if(this.videoDeviceList.length<=1)this.currentVideoOptions=void 0,this.updatedVideoOptions=void 0;else{let e=this.videoCallService.videoTrack?.mediaStreamTrack?.getSettings();this.isFacingModeAvailable&&e?.facingMode?(this.currentVideoOptions={facingMode:e.facingMode},this.updatedVideoOptions={facingMode:e.facingMode==="user"?"environment":"user"}):e?.deviceId&&(this.currentVideoOptions={deviceId:e.deviceId},this.updatedVideoOptions={deviceId:this.getNextVideoDevice().deviceId})}}initializeData(){return Le(this,null,function*(){this.videoCallService.videoTrack=yield this.createLocalTrack("video",this.currentVideoOptions),this.videoCallService.audioTrack=yield this.createLocalTrack("audio"),this.isTelehealthChatAvailable()&&(this.videoCallService.dataTrack=new Yt.LocalDataTrack),this.videoCallService.videoAccess=!!this.videoCallService.videoTrack,this.videoCallService.audioAccess=!!this.videoCallService.audioTrack,yield this.initVideoDeviceList()})}logAudioVideoError(e){switch(e.name){case"PermissionDeniedError":case"MediaStreamError":case"TrackStartError":console.log("No access to video/audio");break;default:console.error("No access to video/audio: ",e);break}}createLocalTrack(e,t){return Le(this,null,function*(){let n=this.localTrackOptions[e]??!0;t&&(n=Mi(n===!0?{}:Mi({},n),t));try{return(yield(0,Yt.createLocalTracks)({[e]:n})).find(({kind:s})=>s===e)??null}catch(r){return this.logAudioVideoError(r),null}})}startVideoCall(){return Le(this,null,function*(){if(this.videoCallService.videoCallRoom=yield this.joinOrCreateRoom(this.videoCallService.videoTrack,this.videoCallService.audioTrack,this.videoCallService.dataTrack),this.videoCallService.videoCallRoom){let e=[...this.videoCallService.videoCallRoom.participants.entries()];this.participants.initialize(new Map(e.filter(([,t])=>!this.voiceCallService.isVoiceCall(t)))),this.voiceCallService.updateVoiceCallList(e.map(([,t])=>t),this.videoCallService.videoCallRoom.name,this.isProvider).subscribe(),this.registerRoomEvents(),this.isRoomDisconnected=!1}this.onInitializationFinished(),this.showLocalVideoCover=!1,this.blockStartCallButton=!1})}attachLocalVideoTrack(){let e=this.videoCallService.videoTrack.attach();this.renderer.setStyle(e,"width","100%"),this.renderer.setStyle(e,"display","block"),this.renderer.setStyle(e,"border-radius",".25rem"),this.renderer.appendChild(this.localVideoBlock.nativeElement,e)}joinOrCreateRoom(e,t,n){return Le(this,null,function*(){let r=null;try{r=yield(0,Yt.connect)(this.videoCallService.appointmentData.twilioAccessToken,{name:this.videoCallService.appointmentData.twilioVideoRoom,tracks:[e,t,n].filter(
76Boolean),dominantSpeaker:!0,preferredVideoCodecs:["VP8"]}),this.isTelehealthChatAvailable()&&this.messagingApiService.getMessageListBySource(this.appointmentId).subscribe(s=>{s&&(this.messages=this.getMessageList(s),this.checkHasUnreadMessages())})}catch(s){console.error(`joinOrCreateRoom error: ${s.message}`),setTimeout(()=>this.joinCall(),this.SHORT_TIME_INTERVAL)}return r})}registerRoomEvents(){this.videoCallService.videoCallRoom.on("disconnected",this.onRoomDisconnected).on("participantConnected",this.onRoomParticipantConnected).on("participantDisconnected",this.onRoomParticipantDisconnected).on("dominantSpeakerChanged",e=>{}),this.isTelehealthChatAvailable()&&(this.chatMessageSubject$.pipe(Mt(this.CHAT_MESSAGE_DEBOUNCE_TIME),Ue(this)).subscribe(()=>this.onDataTrackMessageReceived()),this.videoCallService.videoCallRoom.on("trackSubscribed",this.onRoomTrackSubscribed))}onDataTrackMessageReceived(){let e=this.messages.slice(-1)[0]?.messageId;this.messagingApiService.getMessageListBySource(this.appointmentId,Od({lastMessageId:e})).subscribe(t=>{let n=this.messages.map(({messageId:s})=>s),r=this.getMessageList(t).filter(({messageId:s})=>!n.includes(s));this.messages=this.messages.concat(r),this.isChatOpen&&this.scrollVideoCallChatToBottom(),this.checkHasUnreadMessages()})}getMessageList(e){return e.messageList.map(({messageId:t,partThreadId:n,text:r})=>{let s=e.participantList.find(({participantId:o})=>o===n);return{messageId:t,participantId:n,participantName:s.name,text:r}})}checkHasUnreadMessages(){this.messages.length&&!this.isChatOpen&&(this.hasUnreadMessages=!0)}reconnectOnError({code:e}){this.isRoomDisconnected=!0,od(this.leaveCall()).pipe(Q(()=>[20104,20156].includes(e)?this.getAppointmentData(this.appointmentId):Be(this.videoCallService.appointmentData)),J(t=>this.videoCallService.appointmentData=t),dd(this.SHORT_TIME_INTERVAL)).subscribe(()=>this.joinCall())}unpublishLocalParticipantTracks(e){e.tracks.forEach(t=>{this.detachLocalTrack(t.track),e.unpublishTrack(t.track)})}detachLocalTrack(e){this.isTrackDetachable(e)&&(e.stop(),e.detach().forEach(t=>t.remove()))}isTrackDetachable(e){return!!e&&(e.detach!==void 0||e.detach!==void 0)}stopVideoCall(){return Le(this,null,function*(){this.isProvider?yield this.voiceCallService.endAllCalls().toPromise():this.voiceCallService.clearVoiceCallList(),this.videoCallService.leaveVideoCallRoom(),this.videoCallParticipantService.clearParticipants(),this.videoDeviceList=[],this.clearLocalTracks()})}clearLocalTracks(){this.videoCallService.videoTrack&&this.detachLocalTrack(this.videoCallService.videoTrack),this.videoCallService.audioTrack&&this.detachLocalTrack(this.videoCallService.audioTrack),this.videoCallService.clearLocalTracks()}isSwitchCameraAvailable(){return this.videoDeviceList?.length>1}switchCamera(){this.isSwitchCameraAvailable()&&this.createLocalTrack("video",this.updatedVideoOptions).then(e=>{this.stopLocalVideo(),this.startLocalVideo(e)}).catch(e=>{console.error("Error while creating new video stream: ",this.updatedVideoOptions,e)})}getNextVideoDevice(){let e;if(!this.currentVideoOptions?.deviceId)e=this.videoDeviceList[1];else{let t=this.videoDeviceList.findIndex(n=>n.deviceId===this.currentVideoOptions.deviceId);e=this.videoDeviceList[t+1]??this.videoDeviceList[0]}return e}stopLocalVideo(){try{this.videoCallService.videoCallRoom.localParticipant.unpublishTrack(this.videoCallService.videoTrack),this.detachLocalTrack(this.videoCallService.videoTrack)}catch(e){throw console.error("Error while stopping local video track/preview: ",e),e}}startLocalVideo(e){this.videoCallService.videoTrack=e;try{this.videoCallService.videoCallRoom.localParticipant.publishTrack(this.videoCallService.videoTrack),this.attachLocalVideoTrack(),this.updateVideoOptions()}catch(t){throw console.error("Error while starting local video track/preview: ",t),t}}onCameraDisabled(){this.showLocalVideoCover=!0}onCameraEnabled(){this.showLocalVideoCover=!1}toggleCamera(){this.videoCallService.videoTrack.isEnabled?(this.videoCallService.videoTrack.disable(),this.onCameraDisabled()):(this.videoCallService.videoTrack.enable(),this.onCameraEnabled())}toggleSound(){this.videoCallService.audioTrack.isEnabled?this.videoCallService.audioTrack.disable():this.videoCallService.audioTrack.enable()}joinCall(){return Le(this,null,function*(){this.blockStartCallButton=!0,this.onInitializationStarted(),this.videoCallService.videoAccess&&this.videoCallService.audioAccess&&(yield this.startVideoCall())})}leaveCall(){return Le(this,null,function*(){yield this.stopVideoCall(),yield this.initializeData(),this.videoCallService.videoAccess&&this.videoCallService.audioAccess&&this.attachLocalVideoTrack()})}toggleChat(){this.isChatOpen=!this.isChatOpen,this.isChatOpen&&(this.hasUnreadMessages=!1)}scrollVideoCallChatToBottom(){setTimeout(()=>this.videoCallChatEl?.scrollMessageContainerToBottom(),100)}sendMessage(e){this.messagingApiService.createMessageBySource(this.appointmentId,{text:e}).subscribe(t=>this.handleMessageCreation(t,e),t=>console.error(t))}get appointmentData(){return this.videoCallService.appointmentData}handleMessageCreation(e,t){let n={messageId:e,text:t,participantId:this.currentUserId,participantName:this.currentUserName};this.messages=[...this.messages,n],this.videoCallService.dataTrack.send(JSON.stringify({messageId:e})),this.scrollVideoCallChatToBottom()}static{this.\u0275fac=function(t){return new(t||Zl)(k("APP_CONFIG"),k(tt),k(ct),k(ee),k(it),k(at),k(De),k(Ce),k(st),k(de),k(be),k(nt),k(lt),k(Ze),k(dt),k(rt),k(It),k(ot))}}static{this.\u0275cmp=z({type:Zl,selectors:[["ng-component"]],viewQuery:function(t,n){if(t&1&&xe(zL,5)(GL,5)(QL,5)(KL,5),t&2){let r;ce(r=le())&&(n.participants=r.first),ce(r=le())&&(n.localVideoBlock=r.first),ce(r=le())&&(n.localVideoCover=r.first),ce(r=le())&&(n.videoCallChatEl=r.first)}},decls:0,vars:0,template:function(t,n){},encapsulation:2})}};es=Qe([ut(),Ke("design:paramtypes",[Object,tt,ct,ee,it,at,De,Ce,st,de,be,nt,lt,Ze,dt,rt,Document,ot])],es);Te();Te();var Ee=(function(i){return i[i.ENTERING_NUMBER=0]="ENTERING_NUMBER",i[i.DIALING=1]="DIALING",i[i.ACTIVE=2]="ACTIVE",i})(Ee||{});var YL=["phoneInput"],XL=["digitsInput"],ZL=()=>({name:"cancel-sign-bold",color:"#a7a7a7"}),ex=()=>({name:"collapse",color:"#a7a7a7"}),tx=()=>({name:"arrow-left",color:"#a7a7a7"}),ix=()=>({name:"call-regular",color:"#74cc7e"}),nx=()=>({name:"end-call",color:"#d70218"});function rx(i,e){if(i&1){let t=te();T(0,"button",16)(1,"lib-svg-icon",5),H("click",function(){X(t);let r=A();return Z(r.close())}),S()()}i&2&&(v(),y("params",W(1,ex)))}function sx(i,e){if(i&1){let t=te();T(0,"button",17),H("click",function(){X(t);let r=A();return Z(r.popSymbol())}),D(1,"lib-svg-icon",18),S()}i&2&&(v(),y("params",W(1,tx)))}function ox(i,e){if(i&1){let t=te();T(0,"div",19)(1,"button",20),H("click",function(){let r=X(t).$implicit,s=A();return Z(s.appendSymbol(r))}),V(2),S()()}if(i&2){let t=e.$implicit,n=A();v(),y("disabled",n.isSymbolDisabled(t)),v(),Y(" ",t," ")}}function ax(i,e){i&1&&D(0,"lib-svg-icon",21),i&2&&y("params",W(1,ix))}function cx(i,e){i&1&&D(0,"lib-svg-icon",22),i&2&&y("params",W(1,nx))}var ts=class ed{constructor(e,t,n,r){this.voiceCall=e,this.dialogRef=t,this.voiceCallService=n,this.cdr=r,this.PHONE_NUMBER_LENGTH=10,this.numberControl=new as(this.voiceCall.phone,[os.required,os.minLength(this.PHONE_NUMBER_LENGTH)]),this.digitsControl=new as(this.voiceCall.digits),this.status=this.voiceCall.id?Ee.ACTIVE:Ee.ENTERING_NUMBER,this.buttonSymbol
76s=["1","2","3","4","5","6","7","8","9","*","0","#"],this.areAllSymbolsDisabled=!1,this.sendDigitsSubject=new bt}ngOnInit(){this.voiceCallService.getEndedVoiceCallId().pipe(Je(e=>e===this.voiceCall.id),Ue(this)).subscribe(()=>this.onCallEnd()),this.sendDigitsSubject.pipe(pd((e,t)=>t&&`${e}${t}`),Mt(2e3),xt(Boolean),J(()=>this.sendDigitsSubject.next("")),Q(e=>this.voiceCallService.sendDigits(this.voiceCall.id,e).pipe(ld(!1),Vi(()=>Be(!1)),hd(!0))),Ue(this)).subscribe(e=>{this.areAllSymbolsDisabled=e,this.cdr.markForCheck()})}get isActive(){return this.status===Ee.ACTIVE}get isDialing(){return this.status===Ee.DIALING}get isEnteringNumber(){return this.status===Ee.ENTERING_NUMBER}get activeControl(){return this.isEnteringNumber?this.numberControl:this.digitsControl}get statusTitle(){return this.isEnteringNumber?"":this.isDialing?"DIALING...":"ACTIVE"}onKeyDown(e){let{key:t}=e;t==="Backspace"?this.popSymbol():t==="Enter"&&this.isEnteringNumber&&this.numberControl.valid?this.sendCall():t==="Escape"&&this.isActive?(this.endCall(),e.stopPropagation()):this.buttonSymbols.includes(t)&&!this.isSymbolDisabled(t)&&this.appendSymbol(t),this.focusActiveInput()}endCallAndClose(){this.isEnteringNumber||this.endCall(),this.close()}close(){this.dialogRef.close()}handleCallAction(){this.isEnteringNumber?this.sendCall():this.endCall()}isSymbolDisabled(e){return this.areAllSymbolsDisabled||this.isDialing||this.activeControl===this.numberControl&&this.numberControl.valid||this.isEnteringNumber&&["*","#"].includes(e)}appendSymbol(e){this.activeControl.setValue(this.activeControl.value+e),this.activeControl===this.digitsControl&&this.sendDigitsSubject.next(e)}popSymbol(){this.activeControl.setValue(this.activeControl.value.slice(0,-1))}focusActiveInput(){setTimeout(()=>(this.isEnteringNumber?this.phoneInput:this.digitsInput).nativeElement.focus())}sendCall(){this.setStatus(Ee.DIALING);let{value:e}=this.numberControl,{value:t}=this.digitsControl,{roomName:n}=this.voiceCall,r=new sd(1);this.voiceCallService.createCall(n,e).pipe(J(s=>this.voiceCall={roomName:n,id:s,phone:e,digits:t,audioTrackSubject:r}),Q(()=>this.voiceCallService.answerCall(this.voiceCall))).subscribe(()=>this.setStatus(Ee.ACTIVE),()=>this.setStatus(Ee.ENTERING_NUMBER))}endCall(){this.voiceCallService.endCall(this.voiceCall.id).subscribe(()=>this.onCallEnd())}onCallEnd(){this.setStatus(Ee.ENTERING_NUMBER),this.digitsControl.setValue("")}setStatus(e){this.status=e,this.cdr.markForCheck()}static{this.\u0275fac=function(t){return new(t||ed)(k(Rd),k(Wi),k(Ce),k(Vt))}}static{this.\u0275cmp=z({type:ed,selectors:[["lib-dialer-pad-dialog"]],viewQuery:function(t,n){if(t&1&&xe(YL,5)(XL,5),t&2){let r;ce(r=le())&&(n.phoneInput=r.first),ce(r=le())&&(n.digitsInput=r.first)}},hostVars:2,hostBindings:function(t,n){t&1&&H("keydown",function(s){return n.onKeyDown(s)}),t&2&&ue("active-call",n.isActive)},decls:19,vars:14,consts:[["phoneInput",""],["digitsInput",""],["endCallIconTemplate",""],[1,"close-collapse-buttons"],["type","button",1,"button-symbol","close-button"],[3,"click","params"],["type","button","class","button-symbol collapse-button",4,"ngIf"],[1,"status"],[1,"number-area-wrapper"],["type","tel","readonly","","mask","(000)000-0000",1,"number-input",3,"formControl"],["type","tel","readonly","",1,"number-input",3,"ngModel"],["type","button","class","button-symbol backspace-symbol",3,"click",4,"ngIf"],[1,"button-symbols-wrapper"],["class","button-symbol-wrapper",4,"ngFor","ngForOf"],["type","button",1,"action-button",3,"click","disabled"],["class","call-icon",3,"params",4,"ngIf","ngIfElse"],["type","button",1,"button-symbol","collapse-button"],["type","button",1,"button-symbol","backspace-symbol",3,"click"],[3,"params"],[1,"button-symbol-wrapper"],["type","button",1,"button-symbol",3,"click","disabled"],[1,"call-icon",3,"params"],[1,"end-call-icon",3,"params"]],template:function(t,n){if(t&1&&(T(0,"div",3)(1,"button",4)(2,"lib-svg-icon",5),H("click",function(){return n.endCallAndClose()}),S()(),$(3,rx,2,2,"button",6),S(),T(4,"p",7),V(5),S(),T(6,"div",8),D(7,"input",9,0)(9,"input",10,1),L(11,"slice"),$(12,sx,2,2,"button",11),S(),T(13,"div",12),$(14,ox,3,2,"div",13),S(),T(15,"button",14),H("click",function(){return n.handleCallAction()}),$(16,ax,1,2,"lib-svg-icon",15)(17,cx,1,2,"ng-template",null,2,$i),S()),t&2){let r=Me(18);v(2),y("params",W(13,ZL)),v(),y("ngIf",!n.isEnteringNumber),v(2),ie(n.statusTitle),v(2),y("formControl",n.numberControl),v(2),y("ngModel",St(11,
7610,n.digitsControl.value,-n.PHONE_NUMBER_LENGTH)),v(3),y("ngIf",n.activeControl.value.length),v(2),y("ngForOf",n.buttonSymbols),v(),y("disabled",n.numberControl.invalid),v(),y("ngIf",n.isEnteringNumber)("ngIfElse",r)}},dependencies:[Ie,qt,et,Pd,yd,Sd,Td,wd,kd,Ae,bd],styles:["[_nghost-%COMP%]{position:relative;display:flex;flex-direction:column;align-items:center;padding:1rem;font-size:1.375rem;text-align:center}[_nghost-%COMP%] button[_ngcontent-%COMP%]:not(:disabled){cursor:pointer}.active-call[_nghost-%COMP%]{outline:2px solid #74cc7e;outline-offset:22px}.active-call[_nghost-%COMP%] .backspace-symbol[_ngcontent-%COMP%]{top:1.875rem}.active-call[_nghost-%COMP%] .status[_ngcontent-%COMP%]{color:#74cc7e}.number-area-wrapper[_ngcontent-%COMP%]{position:relative;display:flex;flex-direction:column;margin:1rem 2rem 2rem}.button-symbols-wrapper[_ngcontent-%COMP%]{display:flex;flex-direction:row;flex-wrap:wrap;width:11.5rem}.button-symbol-wrapper[_ngcontent-%COMP%]{width:33.3333333333%;box-sizing:border-box;padding:.5rem;text-align:center}.button-symbol[_ngcontent-%COMP%]{padding:.75rem 1rem;background-color:#f3f3f3;border-radius:.25rem;color:#505050}.button-symbol.backspace-symbol[_ngcontent-%COMP%]{position:absolute;right:-3rem;top:-.125rem;padding:.25rem 0 .25rem .5rem}.button-symbol[_ngcontent-%COMP%]:not(:disabled):hover{font-weight:700;color:#064060;background-color:#d0dce5}.button-symbol[_ngcontent-%COMP%] svg{width:1.4rem;height:1.4rem}.action-button[_ngcontent-%COMP%]{margin-top:1rem;background:none}.action-button[_ngcontent-%COMP%]:disabled, .button-symbol[_ngcontent-%COMP%]:disabled{opacity:.5}.number-input[_ngcontent-%COMP%]{height:2rem;width:11.5rem;overflow:hidden;text-align:center;line-height:1.2;font-size:1.75rem;color:#505050}.close-collapse-buttons[_ngcontent-%COMP%] .button-symbol[_ngcontent-%COMP%]{position:absolute;top:-1.25rem;padding:.25rem;background:none}.close-collapse-buttons[_ngcontent-%COMP%] .button-symbol.close-button[_ngcontent-%COMP%]{left:-1rem}.close-collapse-buttons[_ngcontent-%COMP%] .button-symbol.collapse-button[_ngcontent-%COMP%]{right:-1rem}.close-collapse-buttons[_ngcontent-%COMP%] .button-symbol[_ngcontent-%COMP%] svg{width:1rem;height:1rem}.close-collapse-buttons[_ngcontent-%COMP%] .button-symbol.collapse-button[_ngcontent-%COMP%] svg{width:.75rem;height:.75rem}.status[_ngcontent-%COMP%]{min-height:1rem;font-weight:700;font-size:.875rem;color:#064060}.call-icon[_ngcontent-%COMP%], .end-call-icon[_ngcontent-%COMP%]{display:inline-block}.end-call-icon[_ngcontent-%COMP%]{margin:.525rem}"],changeDetection:0})}};ts=Qe([ut(),Ke("design:paramtypes",[Object,Wi,Ce,Vt])],ts);var lx=()=>({name:"expand"}),is=class td{constructor(e,t,n){this.renderer=e,this.elementRef=t,this.dialog=n,this.appendAttachedAudioElement=r=>{this.renderer.appendChild(this.elementRef.nativeElement,r.attach())}}ngOnInit(){this.maskedPhone=`***-***-${this.voiceCall.phone.slice(-4)}`,this.registerEventsOnTrackChange()}onClick(){this.isExpandable&&this.dialog.open(ts,{data:this.voiceCall})}registerEventsOnTrackChange(){this.voiceCall.audioTrackSubject.pipe(Ue(this)).subscribe(e=>this.registerTrackEvents(e))}registerTrackEvents(e){e&&(e.track?this.appendAttachedAudioElement(e.track):e.on("subscribed",this.appendAttachedAudioElement),e.on("unsubscribed",t=>{t.detach().forEach(n=>n.remove())}))}static{this.\u0275fac=function(t){return new(t||td)(k(ee),k(qi),k(Hi))}}static{this.\u0275cmp=z({type:td,selectors:[["lib-active-voice-call"]],hostBindings:function(t,n){t&1&&H("click",function(){return n.onClick()})},inputs:{voiceCall:"voiceCall",isExpandable:"isExpandable"},decls:7,vars:8,consts:[[1,"voice-call"],[1,"phone"],[1,"status"],[1,"expand-icon",3,"params"]],template:function(t,n){t&1&&(T(0,"div",0)(1,"p",1),V(2),S(),T(3,"p",2),V(4),L(5,"translate"),S(),D(6,"lib-svg-icon",3),S()),t&2&&(ue("expandable",n.isExpandable),v(2),ie(n.maskedPhone),v(2),ie(x(5,5,"ACTIVE")),v(2),y("params",W(7,lx)))},dependencies:[Ae,ve],styles:["[_nghost-%COMP%]{display:block}@media(max-width:768px){[_nghost-%COMP%]:not(:only-child) .voice-call[_ngcontent-%COMP%]{padding:1.25rem .625rem}}.voice-call[_ngcontent-%COMP%]{position:relative;padding:1.25rem;background-color:#fff;outline:2px solid #74cc7e;
76color:#505050;border-radius:.25rem;text-align:center}.voice-call.expandable[_ngcontent-%COMP%]{cursor:pointer}.voice-call.expandable[_ngcontent-%COMP%] .expand-icon[_ngcontent-%COMP%]{display:initial}.voice-call[_ngcontent-%COMP%] .status[_ngcontent-%COMP%]{margin-top:.5rem;color:#74cc7e;font-family:Roboto-bold,sans-serif}.voice-call[_ngcontent-%COMP%] .expand-icon[_ngcontent-%COMP%]{position:absolute;right:.5rem;top:.25rem;display:none}"],changeDetection:0})}};is=Qe([ut(),Ke("design:paramtypes",[ee,qi,Hi])],is);var W_=(()=>{class i{static{this.\u0275fac=function(n){return new(n||i)}}static{this.\u0275cmp=z({type:i,selectors:[["lib-patient-video-call-newsfeed"]],decls:7,vars:5,consts:[["newsListComponent",""],[1,"news-wrapper"],[1,"wrapper"],[1,"news-page-title"]],template:function(n,r){if(n&1&&(T(0,"div",1)(1,"div",2)(2,"h2",3),V(3),L(4,"translate"),S(),D(5,"lib-news-list",null,0),S()()),n&2){let s=Me(6);ue("hidden",!(s.newsList!=null&&s.newsList.length)),v(3),Y(" ",x(4,3,"Practice News")," ")}},dependencies:[Ad,Dd,ve],styles:[".news-page-title[_ngcontent-%COMP%]{font-size:2rem;color:#064060;margin:0;padding:.75rem 0 1.75rem;border-bottom:1px solid #dcdddf}.news-wrapper[_ngcontent-%COMP%]{border-radius:8px;background-color:#fff;height:100%;text-align:left;margin-top:2rem;position:relative;overflow:hidden}.news-wrapper.hidden[_ngcontent-%COMP%]{display:none}.news-wrapper[_ngcontent-%COMP%] lib-news-list[_ngcontent-%COMP%]{display:block;height:calc(100% - 4.625rem);overflow-y:hidden}.news-wrapper[_ngcontent-%COMP%] lib-news-list[_ngcontent-%COMP%] .wrapper .item{width:auto;margin:0;border-bottom:1px solid rgba(128,128,128,.2);border-radius:0}.wrapper[_ngcontent-%COMP%]{box-sizing:border-box;height:100%;width:100%;overflow-y:hidden;position:absolute;padding:1rem 2rem}"]})}}return i})();var dx=()=>({name:"camera-with-background-on",color:"#064060"}),ux=()=>({name:"mic-with-background-on",color:"#064060"});function px(i,e){i&1&&(T(0,"div",5),D(1,"lib-svg-icon",6),T(2,"div",7)(3,"div",8),V(4),L(5,"translate"),S(),T(6,"div",9)(7,"a",10),V(8),L(9,"translate"),S()()()()),i&2&&(v(),y("params",W(7,dx)),v(3),ie(x(5,3,"Your camera is off.")),v(4),Y(" ",x(9,5,"Click here for help on how to turn it on")," "))}function hx(i,e){i&1&&(T(0,"div",5),D(1,"lib-svg-icon",6),T(2,"div",7)(3,"div",8),V(4),L(5,"translate"),S(),T(6,"div",9)(7,"a",10),V(8),L(9,"translate"),S()()()()),i&2&&(v(),y("params",W(7,ux)),v(3),Y(" ",x(5,3,"Your microphone is off.")," "),v(4),Y(" ",x(9,5,"Click here for help on how to turn it on")," "))}function fx(i,e){if(i&1&&(Bi(0),T(1,"p",1),V(2),L(3,"translate"),S(),T(4,"p",2),V(5),L(6,"translate"),S(),T(7,"div",3),$(8,px,10,8,"div",4)(9,hx,10,8,"div",4),S(),Ui()),i&2){let t=A();v(2),Y(" ",x(3,4,"Hi there! You\u2019re almost ready for your Virtual Visit.")," "),v(3),Y(" ",x(6,6,"Please allow this browser to use your camera and microphone in order to proceed.")," "),v(3),y("ngIf",!t.videoAccess),v(),y("ngIf",!t.audioAccess)}}var H_=(()=>{class i{constructor(){this.videoAccess=!1,this.audioAccess=!1}static{this.\u0275fac=function(n){return new(n||i)}}static{this.\u0275cmp=z({type:i,selectors:[["lib-video-call-permissions-info"]],inputs:{videoAccess:"videoAccess",audioAccess:"audioAccess"},decls:1,vars:1,consts:[[4,"ngIf"],[1,"no-access-title"],[1,"no-access-sub-title"],[1,"disable-device-access-message-wrapper"],["class","block",4,"ngIf"],[1,"block"],[3,"params"],[1,"block-access-text"],[1,"text"],[1,"sub-text"],["href","https://www.mycareplan.info/telehealth-allow-for-camera","target","_blank"]],template:function(n,r){n&1&&$(0,fx,10,8,"ng-container",0),n&2&&y("ngIf",!r.videoAccess||!r.audioAccess)},dependencies:[Ie,et,Ae,ve],styles:["[_nghost-%COMP%]{display:flex;flex-direction:column}.disable-device-access-message-wrapper[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;height:fit-content;justify-content:center}.no-access-title[_ngcontent-%COMP%]{font-size:1.125rem;color:#064060;font-family:Roboto-bold,sans-serif;margin:1rem 0;text-align:center;letter-spacing:.52px}.no-access-sub-title[_ngcontent-%COMP%]{text-align:center;letter-spacing:.44px}.block[_ngcontent-%COMP%]{background-color:#0640601a;border-radius:8px;display:flex;justify-content:center;align-items:center;margin:1rem;padding:1.25rem}.block[_ngcontent-%COMP%] .block-access-text[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:12rem;color:#064060;font-family:Roboto-bold,sans-serif}.block[_ngcontent-%COMP%] .block-access-text[_ngcontent-%COMP%] .text[_ngcontent-%COMP%]{line-height:2rem;letter-spacing:.44px}.block[_ngcontent-%COMP%] .block-access-text[_ngcontent-%COMP%] .sub-text[_ngcontent-%COMP%]{text-decoration:underline;line-height:1.25rem;font-size:.875rem;display:flex;letter-spacing:.44px}.block[_ngcontent-%COMP%] lib-svg-icon[_ngcontent-%COMP%]{margin-right:.625rem}.block[_ngcontent-%COMP%] lib-svg-icon[_ngcontent-%COMP%] svg{height:2.5rem;width:2.5rem}"]})}}return i})();var z_=(()=>
76{class i{static{this.\u0275fac=function(n){return new(n||i)}}static{this.\u0275cmp=z({type:i,selectors:[["lib-patient-video-call-tips"]],decls:20,vars:12,consts:[[1,"wrapper"],[1,"title"],[1,"tips"],[1,"tip"],["src","assets/img/video-call-tips/1.png","alt","WiFi"],[1,"text"],["src","assets/img/video-call-tips/2.png","alt","Apps"],["src","assets/img/video-call-tips/3.png","alt","Browser"]],template:function(n,r){n&1&&(Xe(0,"div",0)(1,"h3",1),V(2),L(3,"translate"),Zt(),Xe(4,"ul",2)(5,"li",3),Fi(6,"img",4),Xe(7,"p",5),V(8),L(9,"translate"),Zt()(),Xe(10,"li",3),Fi(11,"img",6),Xe(12,"p",5),V(13),L(14,"translate"),Zt()(),Xe(15,"li",3),Fi(16,"img",7),Xe(17,"p",5),V(18),L(19,"translate"),Zt()()()()),n&2&&(v(2),ie(x(3,4,"Some tips for a great video call\u2026")),v(6),Y(" ",x(9,6,"Make sure your WiFi connection is strong, or even use an ethernet cable")," "),v(5),Y(" ",x(14,8,"Close all your unused programs, or even try restarting your device")," "),v(5),Y(" ",x(19,10,"Make sure your browser is updated to the latest version")," "))},dependencies:[ve],styles:[".wrapper[_ngcontent-%COMP%]{margin:2rem 1rem}.title[_ngcontent-%COMP%]{font-family:Roboto-bold,sans-serif;color:#064060;margin-bottom:1rem;font-size:.875rem;letter-spacing:.52px}.tip[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center}img[_ngcontent-%COMP%]{width:7rem;margin-top:1rem}.text[_ngcontent-%COMP%]{margin-top:.625rem;font-size:.75rem;letter-spacing:.044px;line-height:.875rem}"]})}}return i})();var mx=["participants"],gx=()=>({name:"live",color:"#00A85A"}),vx=()=>({name:"qure4u-logo-new"}),_x=()=>({name:"schedule-error",color:"#064060",fillingColor:"#FF000F"}),bx=()=>({name:"stop-with-background",color:"#FC0013"}),Cx=()=>({name:"camera-with-background-on",color:"#00A85A"}),yx=()=>({name:"camera-with-background-off",color:"#FC0013"}),Sx=()=>({name:"mic-with-background-on",color:"#00A85A"}),Tx=()=>({name:"mic-with-background-off",color:"#FC0013"}),kx=()=>({name:"switch-camera",color:"#00A85A"}),Px=()=>({name:"toggle-chat",color:"#0D9DC5"});function wx(i,e){i&1&&(D(0,"lib-svg-icon",17),T(1,"span",18),V(2),L(3,"translate"),S()),i&2&&(y("params",W(4,gx)),v(2),ie(x(3,2,"LIVE")))}function Ex(i,e){if(i&1&&D(0,"img",21),i&2){let t=A().ngIf;y("src",t.logo,md)}}function Ox(i,e){i&1&&D(0,"lib-svg-icon",17),i&2&&y("params",W(1,vx))}function Rx(i,e){if(i&1&&(T(0,"div",19),$(1,Ex,1,1,"img",20)(2,Ox,1,2,"ng-template",null,0,$i),S()),i&2){let t=e.ngIf,n=Me(3);v(),y("ngIf",t.logo)("ngIfElse",n)}}function Lx(i,e){i&1&&(T(0,"div",14)(1,"h1"),V(2),L(3,"translate"),S(),T(4,"div",22),D(5,"lib-svg-icon",17),S(),T(6,"p"),V(7),L(8,"translate"),S()()),i&2&&(v(2),ie(x(3,3,"We are sorry ...")),v(3),y("params",W(7,_x)),v(2),ie(x(8,5,"This appointment has been canceled.")))}function xx(i,e){if(i&1&&D(0,"lib-active-voice-call",33),i&2){let t=e.$implicit;y("voiceCall",t)("isExpandable",!1)}}function Mx(i,e){if(i&1){let t=te();T(0,"button",41),H("click",function(){X(t);let r=A(5);return Z(r.joinCall())}),V(1),L(2,"translate"),S()}if(i&2){let t=A(5);y("disabled",t.isRoomDisconnected),v(),Y(" ",x(2,2,t.isRoomDisconnected?"Reconnecting ...":"Join Call")," ")}}function Ix(i,e){i&1&&(T(0,"h2",42),V(1),L(2,"translate"),S()),i&2&&(v(),Y(" ",x(2,1,"Your provider is here. Click above to join the call again.")," "))}function Dx(i,e){if(i&1&&(T(0,"div",38),$(1,Mx,3,4,"button",39)(2,Ix,3,3,"h2",40),S()),i&2){let t=A(4);v(),y("ngIf",!t.blockStartCallButton),v(),y("ngIf",!t.isRoomDisconnected)}}function Ax(i,e){if(i&1&&(Bi(0),T(1,"p",43),V(2),L(3,"translate"),S(),T(4,"p",44),V(5),L(6,"translate"),L(7,"translate"),S(),Ui()),i&2){let t=A(3).ngIf;v(2),Y(" ",x(3,4,"Welcome to the waiting room!")," "),v(3),gd(" ",x(6,6,"Your call will start when "),"",t.doctorName,"",x(7,8," arrives.")," ")}}function jx(i,e){if(i&1&&(T(0,"p",45),V(1),L(2,"applyTimezone"),L(3,"c4uDate"),S()),i&2){let t=A(3).ngIf;v(),ss(" ",t.doctorName," \xA0 ",St(3,5,St(2,2,t.startAt,t.timezone),"todo_full")," ")}}function Vx(i,e){if(i&1&&(T(0,"div",34),$(1,Dx,3,2,"div",35)(2,Ax,8,10,"ng-container",36)(3,jx,4,8,"p",37),S()),i&2){let t=A(3);v(),y("ngIf",!t.videoCallService.videoCallRoom&&t.videoCallService.videoAccess&&t.videoCallService.audioAccess),v(),y("ngIf",t.videoCallService.videoCallRoom&&t.videoCallParticipantService.isLocalParticipantAlone),v(),y("ngIf",t.videoCallParticipantService.isLocalParticipantAlone)}}function qx(i,e){if(i&1&&(T(0,"div",46),D(1,"lib-patient-video-call-newsfeed"),S()),i&2){let t=A(3);jt("display",t.videoCallParticipantService.isLocalParticipantAlone&&t.videoCallService.videoAccess&&t.videoCallService.audioAccess?"block":"none")}}function Nx(i,e){if(i&1&&D(0,"lib-video-call-permissions-info",31),i&2){let t=A(3);y("audioAccess",t.videoCallService.audioAccess)("videoAccess",t.videoCallService.videoAccess)}}function Fx(i,e){if(i&1){let t=te();T(0,"button",50),L(1,"translate"),L(2,"translate"),H("click",function(){X(t);let r=A(4);return Z(r.toggleCamera())}),D(3,"lib-svg-icon",17),S()}i&2&&(y("matTooltip",x(1,3,"Turn off video")),ke("aria-label",x(2,5,"Turn off video")),v(3),y("params",W(7,Cx)))}function Bx(i,e){if(i&1){let t=te();T(0,"button",50),L(1,"translate"),L(2,"translate"),H("click",function(){X(t);let r=A(4);return Z(r.toggleCamera())}),D(3,"lib-svg-icon",17),S()}i&2&&(y("matTooltip",x(1,3,"Turn on video")),ke("aria-label",x(2,5,"Turn on video")),v(3),y("params",W(7,yx)))}function Ux(i,e){if(i&1){let t=te();T(0,"button",50),L(1,"translate"),L(2,"translate"),H("click",function(){X(t);let r=A(4);return Z(r.toggleSound())}),D(3,"lib-svg-icon",17),S()}i&2&&(y("matTooltip",x(1,3,"Mute microphone")),ke("aria-label",x(2,5,"Mute microphone")),v(3),y("params",W(7,Sx)))}function $x(i,e){if(i&1){let t=te();T(0,"button",50),L(1,"translate"),L(2,"translate"),H("click",function(){X(t);let r=A(4);return Z(r.toggleSound())}),D(3,"lib-svg-icon",17),S()}i&2&&(y("matTooltip",x(1,3,"Unmute microphone")),ke("aria-label",x(2,5,"Unmute microphone")),v(3),y("params",W(7,Tx)))}function Wx(i,e){if(i&1){let t=te();T(0,"li",48)(1,"button",50),L(2,"translate"),L(3,"translate"),H("click",function(){X(t);let r=A(4);return Z(r.switchCamera())}),D(4,"lib-svg-icon",17),S()()}i&2&&(v(),y("matTooltip",x(2,3,"Swap camera")),ke("aria-label",x(3,5,"Swap camera")),v(3),y("params",W(7,kx)))}function Hx(i,e){if(i&1){let t=te();T(0,"li",48)(1,"button",52),L(2,"translate"),L(3,"translate"),H("click",function(){X(t);let r=A(4);return Z(r.toggleChat())}),D(4,"lib-svg-icon",17),S()()}if(i&2){let t=A(4);v(),ue("has-unread-icon",t.hasUnreadMessages),y("matTooltip",x(2,5,(t.isChatOpen?"Close":"Open")+" chat")),ke("aria-label",x(3,7,(t.isChatOpen?"Close":"Open")+" chat")),v(3),y("params",W(9,Px))}}function zx(i,e){if(i&1){let t=te();T(0,"ul",47)(1,"li",48),Dt(2,Fx,4,8,"button",49)(3,Bx,4,8,"button",49),S(),T(4,"li",48),Dt(5,Ux,4,8,"button",49)(6,$x,4,8,"button",49),S(),T(7,"li",48)(8,"button",50),L(9,"translate"),L(10,"translate"),H("click",function(){X(t);let r=A(3);return Z(r.leaveCall())}),D(11,"lib-svg-icon",17),S()(),$(12,Wx,5,8,"li",51)(13,Hx,5,10,"li",51),S()}if(i&2){let t=A(3);v(2),At(t.videoCallService.videoTrack.isEnabled?2:3),v(3),At(t.videoCallService.audioTrack.isEnabled?5:6),v(3),y("matTooltip",x(9,7,"End visit")),ke("aria-label",x(10,9,"End visit")),v(3),y("params",W(11,bx)),v(),y("ngIf",t.isSwitchCameraAvailable()),v(),y("ngIf",t.isTelehealthChatAvailable())}}function Gx(i,e){if(i&1&&(T(0,"div",23)(1,"div",24)(2,"div",25),$(3,xx,1,2,"lib-active-voice-call",26),L(4,"async"),S(),$(5,Vx,4,3,"div",27),T(6,"div",28)(7,"div",29),D(8,"lib-patient-video-call-participants",null,1),S()(),$(10,qx,2,2,"div",30),L(11,"async"),Dt(12,Nx,1,2,"lib-video-call-permissions-info",31),$(13,zx,14,12,"ul",32),S()()),i&2){let t=A(2);ue("during-active-call",t.videoCallService.videoCallRoom&&!t.videoCallParticipantService.isLocalParticipantAlone),v(3),y("ngForOf",x(4,11,t.voiceCallList$)),v(2),y("ngIf",t.loaderService.isDataLoaded()),v(),jt("display",t.videoCallParticipantService.isLocalParticipantAlone?"none":"block"),v(),jt("display",t.videoCallService.videoCallRoom?"block":"none"),v(3),y("ngIf",!t.isCheckInApp&&x(11,13,t.isAuthorized$)),v(2),At(t.videoCallService.audioAccess!==void 0&&t.videoCallService.videoAccess!==void 0?12:-1),v(),y("ngIf",!t.videoCallParticipantService.isLocalParticipantAlone)}}function Qx(i,e){i&1&&D(0,"lib-patient-video-call-tips")}function Kx(i,e){if(i&1){let t=te();T(0,"lib-video-call-chat",58,4),H("sendMessageClick",function(r){X(t);let s=A(3);return Z(s.sendMessage(r))}),S()}if(i&2){let t=A(3);y("messages",t.messages)("currentUserId",t.currentUserId)}}function Jx(i,e){if(i&1&&(T(0,"div",53)(1,"div",54)(2,"div",55),D(3,"div",null,2)(5,"div",56,3),S(),$(7,Qx,1,0,"lib-patient-video-call-tips",36),S(),$(8,Kx,2,2,"lib-video-call-chat",57),S()),i&2){let t=A(2);ue("visible",!t.videoCallParticipantService.isLocalParticipantAlone),v(3),jt("display",t.videoCallService.videoTrack?"block":"none"),v(2),jt("display",t.showLocalVideoCover&&t.videoCallService.videoCallRoom&&t.videoCallService.videoTrack?"block":"none"),v(2),y("ngIf",!t.isChatOpen),v(),y("ngIf",t.isChatOpen&&!t.videoCallParticipantService.isLocalParticipantAlone)}}function Yx(i,e){if(i&1&&(T(0,"div",6)(1,"div",7)(2,"div",8),Dt(3,wx,4,5),T(4,"span",9),V(5),L(6,"applyTimezone"),L(7,"c4uDate"),S()(),$(8,Rx,4,2,"div",10),L(9,"async"),D(10,"div",11),S(),T(11,"div",12)(12,"div",13),Dt(13,Lx,9,8,"div",14)(14,Gx,14,15,"div",15),S(),$(15,Jx,9,8,"div",16),S()()),i&2){let t=e.ngIf,n=A();
76ue("chat-open",n.isChatOpen),v(3),At(t.twilioStatus!=="canceled"?3:-1),v(2),ss(" ",t.doctorName," @ ",St(7,11,St(6,8,t.startAt,t.timezone),"hours")," "),v(3),y("ngIf",x(9,14,n.brandingService.getCustomization())),v(5),At(t.twilioStatus==="canceled"?13:14),v(2),y("ngIf",!n.isCheckInApp&&t.twilioStatus!=="canceled")}}var G_=class id extends es{constructor(e,t,n,r,s,o,a,c,l,d,u,m,f,h,_,b,R,E,C){super(C.getAppConfig(),e,t,n,r,s,o,a,c,u,m,b,R,f,h,_,l,E),this.activatedRoute=e,this.appointmentApiService=t,this.renderer=n,this.clinicApiService=r,this.clinicPublicApiService=s,this.authorizationService=o,this.voiceCallService=a,this.currentUserService=c,this.document=l,this.brandingService=d,this.videoCallService=u,this.videoCallParticipantService=m,this.location=f,this.deviceService=h,this.modalWindowService=_,this.clinicModuleActiveService=b,this.messagingApiService=R,this.loaderService=E,this.configService=C,this.isCheckInApp=this.configService.isCheckInApp()}ngOnInit(){super.ngOnInit(),this.document.body.clientWidth>this.appConfig.viewport?.medium&&this.brandingService.loadCustomization()}ngAfterViewInit(){ji(rs(window,"orientationchange"),rs(window,"resize")).pipe(Mt(150),Ue(this)).subscribe(()=>this.participants?.updateDimensionsInVideoPlayerList())}static{this.\u0275fac=function(t){return new(t||id)(k(tt),k(ct),k(ee),k(it),k(at),k(De),k(Ce),k(st),k(It),k(Ki),k(de),k(be),k(Ze),k(dt),k(rt),k(nt),k(lt),k(ot),k(Qi))}}static{this.\u0275cmp=z({type:id,selectors:[["lib-patient-video-call-layout"]],viewQuery:function(t,n){if(t&1&&xe(mx,5),t&2){let r;ce(r=le())&&(n.participants=r.first)}},features:[Ni],decls:1,vars:1,consts:[["defaultLogoImageTpl",""],["participants",""],["localVideoBlock",""],["localVideoCover",""],["videoCallChatEl",""],["class","wrapper",3,"chat-open",4,"ngIf"],[1,"wrapper"],[1,"header"],[1,"live"],[1,"doctor-time-header"],["class","logo-image",4,"ngIf"],[1,"header-empty-block"],[1,"main-block-wrapper"],[1,"page"],[1,"appointment-canceled"],[1,"video-call-wrapper",3,"during-active-call"],["class","right-menu",3,"visible",4,"ngIf"],[3,"params"],[1,"live-text"],[1,"logo-image"],["alt","Clinic logo",3,"src",4,"ngIf","ngIfElse"],["alt","Clinic logo",3,"src"],[1,"error-page-icon"],[1,"video-call-wrapper"],[1,"center-blocks"],[1,"voice-call-wrapper"],[3,"voiceCall","isExpandable",4,"ngFor","ngForOf"],["class","video-call-info-wrapper",4,"ngIf"],[1,"block-participants"],[1,"video-call-participants-wrapper"],["class","news-block",3,"display",4,"ngIf"],[3,"audioAccess","videoAccess"],["class","video-call-buttons",4,"ngIf"],[3,"voiceCall","isExpandable"],[1,"video-call-info-wrapper"],["class","start-call-block",4,"ngIf"],[4,"ngIf"],["class","doctor-time",4,"ngIf"],[1,"start-call-block"],["class","join-call-button","type","button",3,"disabled","click",4,"ngIf"],["class","start-call-block-message",4,"ngIf"],["type","button",1,"join-call-button",3,"click","disabled"],[1,"start-call-block-message"],[1,"title"],[1,"sub-title"],[1,"doctor-time"],[1,"news-block"],[1,"video-call-buttons"],[1,"video-call-button-item"],["type","button",1,"video-call-button",3,"matTooltip"],["type","button",1,"video-call-button",3,"click","matTooltip"],["class","video-call-button-item",4,"ngIf"],["type","button",1,"video-call-button","toggle-chat-button",3,"click","matTooltip"],[1,"right-menu"],[1,"right-menu-inside-block"],[1,"video-preview"],[1,"local-video-cover"],[3,"messages","currentUserId","sendMessageClick",4,"ngIf"],[3,"sendMessageClick","messages","currentUserId"]],template:function(t,n){t&1&&$(0,Yx,16,16,"div",5),t&2&&y("ngIf",n.appointmentData)},dependencies:[is,Ie,qt,et,Gi,zi,W_,F_,z_,Ae,B_,H_,xd,Md,_d,ve],styles:['.wrapper[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%}.header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;height:110px;min-height:110px;padding:0 35px;position:relative;background:#fff;box-shadow:0 2px 4px #0000001a;z-index:1}.header[_ngcontent-%COMP%] .live[_ngcontent-%COMP%]{letter-spacing:.44px}.header[_ngcontent-%COMP%] .live[_ngcontent-%COMP%], .header[_ngcontent-%COMP%] .logo-image[_ngcontent-%COMP%], .header[_ngcontent-%COMP%] .header-empty-block[_ngcontent-%COMP%]{flex:1}.logo-image[_ngcontent-%COMP%]{display:flex;justify-content:center}.logo-image[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{max-width:14rem;margin:1rem 0}.logo-image[_ngcontent-%COMP%] lib-svg-icon[_ngcontent-%COMP%] svg{height:25px;width:120px}.main-block-wrapper[_ngcontent-%COMP%]{display:flex;flex:1;min-height:0;position:relative}.page[_ngcontent-%COMP%]{flex:1;position:relative}.appointment-canceled[_ngcontent-%COMP%]{display:flex;flex-direction:column;justify-content:flex-start;align-items:center;margin:3rem;gap:2rem}.appointment-canceled[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{color:#064060;font-size:1.25rem;font-family:Roboto-bold,sans-serif;text-align:center;letter-spacing:.0325rem}.appointment-canceled[_ngcontent-%COMP%] .error-page-icon[_ngcontent-%COMP%]{border-radius:50%;height:10.3125rem;width:10.3125rem;background-color:#f5f5f5;display:flex;justify-content:center;align-items:center}.appointment-canceled[_ngcontent-%COMP%] .error-page-icon[_ngcontent-%COMP%] lib-svg-icon[_ngcontent-%COMP%]{margin-left:10%;margin-bottom:3%}.appointment-canceled[_ngcontent-%COMP%] .error-page-icon[_ngcontent-%COMP%] svg{width:3.75rem;height:3.75rem}.appointment-canceled[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:1rem;text-align:center;color:#505050;line-height:1.25rem;letter-spacing:.0275rem}.right-menu[_ngcontent-%COMP%]{height:100%;width:300px;text-align:center;position:relative;overflow:hidden;overflow-y:scroll}.right-menu-inside-block[_ngcontent-%COMP%]{position:absolute}.right-menu-inside-block[_ngcontent-%COMP%] .video-preview[_ngcontent-%COMP%]{position:relative;z-index:3}.right-menu-inside-block[_ngcontent-%COMP%] .video-preview[_ngcontent-%COMP%] .local-video-cover[_ngcontent-%COMP%]{background:#000;position:absolute;inset:0}@media only screen and (min-width:428px)and (max-width:926px)and (orientation:landscape),only screen and (max-width:992px){.logo-image[_ngcontent-%COMP%]{display:none}.right-menu[_ngcontent-%COMP%]{position:absolute;right:0;top:0;height:auto;width:10rem;overflow:initial;overflow-y:initial;display:none}.right-menu.visible[_ngcontent-%COMP%]{display:block}.right-menu-inside-block[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]:not(.video-preview){display:none}.wrapper[_ngcontent-%COMP%] .header[_ngcontent-%COMP%]{height:50px;min-height:50px;padding:0 16px}.wrapper[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .live[_ngcontent-%COMP%]{font-size:12px}.wrapper[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .live-text[_ngcontent-%COMP%]{margin-left:8px}.wrapper[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .doctor-time-header[_ngcontent-%COMP%]{margin-left:20px}.wrapper[_ngcontent-%COMP%] .live[_ngcontent-%COMP%] svg{width:20px;height:20px}.wrapper[_ngcontent-%COMP%] .live[_ngcontent-%COMP%] .doctor-time-header[_ngcontent-%COMP%]{font-size:1rem}.wrapper[_ngcontent-%COMP%] .video-call-info-wrapper[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{padding:3rem 1rem 1rem;line-height:1.5rem;font-size:1.25rem}.wrapper[_ngcontent-%COMP%] .video-call-info-wrapper[_ngcontent-%COMP%] .sub-title[_ngcontent-%COMP%]{padding:0 1rem 1rem}.wrapper[_ngcontent-%COMP%] .news-block[_ngcontent-%COMP%]{width:auto;height:67%;padding:0 1rem;margin-bottom:0}.wrapper[_ngcontent-%COMP%] .news-block[_ngcontent-%COMP%] .news-wrapper{margin-top:1rem}.wrapper[_ngcontent-%COMP%] .video-call-buttons[_ngcontent-%COMP%]{right:0}.wrapper.chat-open[_ngcontent-%COMP%] .page[_ngcontent-%COMP%]{margin-bottom:230px}.wrapper.chat-open[_ngcontent-%COMP%] .video-call-buttons[_ngcontent-%COMP%]{bottom:230px}
76.wrapper.chat-open[_ngcontent-%COMP%] lib-video-call-chat[_ngcontent-%COMP%]{position:fixed;width:100%;bottom:0;padding-top:0;right:0;left:0;height:230px}}.live[_ngcontent-%COMP%]{display:flex;align-items:center;font-family:Roboto-bold,sans-serif;font-size:1rem;min-width:300px}.live[_ngcontent-%COMP%] svg{width:20px;height:20px}.live[_ngcontent-%COMP%] .live-text[_ngcontent-%COMP%]{color:#00884a;margin-left:10px}.live[_ngcontent-%COMP%] .doctor-time-header[_ngcontent-%COMP%]{color:#064060;margin-left:28px;font-family:Roboto-bold,sans-serif}.video-call-wrapper[_ngcontent-%COMP%]{height:100%;background-color:#80808014;text-align:center}.video-call-info-wrapper[_ngcontent-%COMP%]{display:flex;flex-direction:column;color:#064060;font-family:Roboto-bold,sans-serif}.video-call-info-wrapper[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{font-size:1.5rem;padding:4rem 0 .5rem;letter-spacing:.52px}.video-call-info-wrapper[_ngcontent-%COMP%] .sub-title[_ngcontent-%COMP%]{font-size:1rem;padding-bottom:1rem;letter-spacing:.44px}.video-call-info-wrapper[_ngcontent-%COMP%] .sub-title[_ngcontent-%COMP%] + .doctor-time[_ngcontent-%COMP%]{margin-top:0}.video-call-info-wrapper[_ngcontent-%COMP%] .doctor-time[_ngcontent-%COMP%]{font-family:Roboto-bold,sans-serif;color:#064060;opacity:.8;margin-top:2rem;font-size:.875rem;letter-spacing:.44px}.center-blocks[_ngcontent-%COMP%]{position:relative;height:100%}.block-participants[_ngcontent-%COMP%]{width:100%;height:100%}.video-call-buttons[_ngcontent-%COMP%]{position:fixed;z-index:3;bottom:0;background-color:#000c;left:0;right:300px;display:flex;height:70px;align-items:center;justify-content:center}.video-call-buttons[_ngcontent-%COMP%] .video-call-button-item[_ngcontent-%COMP%]{display:flex;margin:0 7px}.video-call-buttons[_ngcontent-%COMP%] .video-call-button[_ngcontent-%COMP%]{background-color:transparent;cursor:pointer}.video-call-buttons[_ngcontent-%COMP%] .video-call-button[_ngcontent-%COMP%]:hover{transform:scale(1.1)}.video-call-buttons[_ngcontent-%COMP%] .video-call-button[_ngcontent-%COMP%] ng-component{display:flex;justify-content:center;align-items:center}.video-call-buttons[_ngcontent-%COMP%] .video-call-button[_ngcontent-%COMP%] svg{height:42px;width:42px}.video-call-buttons[_ngcontent-%COMP%] .video-call-button.toggle-chat-button[_ngcontent-%COMP%]{height:42px;width:42px;background:#0d9dc5;border-radius:50%;position:relative;--svg-size: 42px}.video-call-buttons[_ngcontent-%COMP%] .video-call-button.toggle-chat-button[_ngcontent-%COMP%] [_ngcontent-%COMP%]:after{content:"";display:block;background-color:#fc0013;height:0;width:0;box-sizing:border-box;border:0 solid #fff;border-radius:50%;position:absolute;right:0;top:0;transition:width .5s,height .5s,border-width .5s}.video-call-buttons[_ngcontent-%COMP%] .video-call-button.toggle-chat-button.has-unread-icon[_ngcontent-%COMP%] [_ngcontent-%COMP%]:after{width:12px;height:12px;border-width:2px}@media only screen and (min-width:428px)and (max-width:926px)and (orientation:landscape),only screen and (max-width:768px){.video-call-buttons[_ngcontent-%COMP%]{right:0}.video-call-wrapper.during-active-call[_ngcontent-%COMP%]{background:#064060}}.news-block[_ngcontent-%COMP%]{width:70%;margin:0 auto 3rem;height:65%}.disable-device-access-message-wrapper[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;height:fit-content;justify-content:center}.start-call-block[_ngcontent-%COMP%]{display:flex;align-items:center;flex-direction:column}.start-call-block[_ngcontent-%COMP%] .join-call-button[_ngcontent-%COMP%]{margin-top:2rem;width:fit-content!important;line-height:1.5rem;display:flex;color:#fff;justify-content:center;padding:.5rem 1rem;background-color:#064060;border-radius:8px;width:100%;box-sizing:border-box;font-family:Roboto-bold,sans-serif;align-items:center;cursor:pointer}.start-call-block[_ngcontent-%COMP%] .join-call-button[_ngcontent-%COMP%]:hover{opacity:.8}.start-call-block[_ngcontent-%COMP%] .join-call-button[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{width:2rem;height:2rem;margin-right:.5rem}.start-call-block[_ngcontent-%COMP%] .join-call-button[_ngcontent-%COMP%] lib-svg-icon[_ngcontent-%COMP%]{--svg-width: 2rem;--svg-height: 2rem;margin-right:.5rem}.start-call-block[_ngcontent-%COMP%] .join-call-button[disabled][_ngcontent-%COMP%]{cursor:default}.start-call-block[_ngcontent-%COMP%] .start-call-block-message[_ngcontent-%COMP%]{font-size:1.5rem;color:#064060;font-family:Roboto-bold,sans-serif;margin-bottom:1rem;margin-top:4rem}
76.start-call-block[_ngcontent-%COMP%] + .doctor-time[_ngcontent-%COMP%]{margin-top:0}.start-call-block[_ngcontent-%COMP%] .join-call-button[_ngcontent-%COMP%] + .start-call-block-message[_ngcontent-%COMP%]{margin-top:1rem}.video-call-participants-wrapper[_ngcontent-%COMP%]{height:100%}.voice-call-wrapper[_ngcontent-%COMP%]{position:absolute;right:10rem;z-index:1;display:flex}@media only screen and (min-width:992px){.voice-call-wrapper[_ngcontent-%COMP%]{right:0}}.voice-call-wrapper[_ngcontent-%COMP%] lib-active-voice-call[_ngcontent-%COMP%]{margin:.5rem .75rem}lib-video-call-chat[_ngcontent-%COMP%]{width:100%;height:calc(100vh - 110px);display:block;padding-top:190px;box-sizing:border-box}@media all and (min-width:1200px){[_nghost-%COMP%] .video-call-video-player-wrapper .video-call-video-player .video-call-wrapper video{max-height:calc(100vh - 110px)}}']})}};G_=Qe([ut(),Ke("design:paramtypes",[tt,ct,ee,it,at,De,Ce,st,Document,Ki,de,be,Ze,dt,rt,nt,lt,ot,Qi])],G_);export{G_ as PatientVideoCallLayoutComponent};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.