mistserver/embed/players/webrtc.js
2018-12-19 15:34:26 +01:00

1 line
No EOL
85 KiB
JavaScript

var WebRTCBrowserEqualizerLoaded=true;(function(e){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=e()}else if(typeof define==="function"&&define.amd){define([],e)}else{var t;if(typeof window!=="undefined"){t=window}else if(typeof global!=="undefined"){t=global}else if(typeof self!=="undefined"){t=self}else{t=this}t.adapter=e()}})(function(){var e,t,r;return function e(t,r,n){function i(o,s){if(!r[o]){if(!t[o]){var c=typeof require=="function"&&require;if(!s&&c)return c(o,!0);if(a)return a(o,!0);var d=new Error("Cannot find module '"+o+"'");throw d.code="MODULE_NOT_FOUND",d}var p=r[o]={exports:{}};t[o][0].call(p.exports,function(e){var r=t[o][1][e];return i(r?r:e)},p,p.exports,e,t,r,n)}return r[o].exports}var a=typeof require=="function"&&require;for(var o=0;o<n.length;o++)i(n[o]);return i}({1:[function(e,t,r){"use strict";var n=e("sdp");function i(e){return{inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[e.type]||e.type}function a(e,t,r,i,a){var o=n.writeRtpDescription(e.kind,t);o+=n.writeIceParameters(e.iceGatherer.getLocalParameters());o+=n.writeDtlsParameters(e.dtlsTransport.getLocalParameters(),r==="offer"?"actpass":a||"active");o+="a=mid:"+e.mid+"\r\n";if(e.rtpSender&&e.rtpReceiver){o+="a=sendrecv\r\n"}else if(e.rtpSender){o+="a=sendonly\r\n"}else if(e.rtpReceiver){o+="a=recvonly\r\n"}else{o+="a=inactive\r\n"}if(e.rtpSender){var s=e.rtpSender._initialTrackId||e.rtpSender.track.id;e.rtpSender._initialTrackId=s;var c="msid:"+(i?i.id:"-")+" "+s+"\r\n";o+="a="+c;o+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" "+c;if(e.sendEncodingParameters[0].rtx){o+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" "+c;o+="a=ssrc-group:FID "+e.sendEncodingParameters[0].ssrc+" "+e.sendEncodingParameters[0].rtx.ssrc+"\r\n"}}o+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" cname:"+n.localCName+"\r\n";if(e.rtpSender&&e.sendEncodingParameters[0].rtx){o+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" cname:"+n.localCName+"\r\n"}return o}function o(e,t){var r=false;e=JSON.parse(JSON.stringify(e));return e.filter(function(e){if(e&&(e.urls||e.url)){var n=e.urls||e.url;if(e.url&&!e.urls){console.warn("RTCIceServer.url is deprecated! Use urls instead.")}var i=typeof n==="string";if(i){n=[n]}n=n.filter(function(e){var n=e.indexOf("turn:")===0&&e.indexOf("transport=udp")!==-1&&e.indexOf("turn:[")===-1&&!r;if(n){r=true;return true}return e.indexOf("stun:")===0&&t>=14393&&e.indexOf("?transport=udp")===-1});delete e.url;e.urls=i?n[0]:n;return!!n.length}})}function s(e,t){var r={codecs:[],headerExtensions:[],fecMechanisms:[]};var n=function(e,t){e=parseInt(e,10);for(var r=0;r<t.length;r++){if(t[r].payloadType===e||t[r].preferredPayloadType===e){return t[r]}}};var i=function(e,t,r,i){var a=n(e.parameters.apt,r);var o=n(t.parameters.apt,i);return a&&o&&a.name.toLowerCase()===o.name.toLowerCase()};e.codecs.forEach(function(n){for(var a=0;a<t.codecs.length;a++){var o=t.codecs[a];if(n.name.toLowerCase()===o.name.toLowerCase()&&n.clockRate===o.clockRate){if(n.name.toLowerCase()==="rtx"&&n.parameters&&o.parameters.apt){if(!i(n,o,e.codecs,t.codecs)){continue}}o=JSON.parse(JSON.stringify(o));o.numChannels=Math.min(n.numChannels,o.numChannels);r.codecs.push(o);o.rtcpFeedback=o.rtcpFeedback.filter(function(e){for(var t=0;t<n.rtcpFeedback.length;t++){if(n.rtcpFeedback[t].type===e.type&&n.rtcpFeedback[t].parameter===e.parameter){return true}}return false});break}}});e.headerExtensions.forEach(function(e){for(var n=0;n<t.headerExtensions.length;n++){var i=t.headerExtensions[n];if(e.uri===i.uri){r.headerExtensions.push(i);break}}});return r}function c(e,t,r){return{offer:{setLocalDescription:["stable","have-local-offer"],setRemoteDescription:["stable","have-remote-offer"]},answer:{setLocalDescription:["have-remote-offer","have-local-pranswer"],setRemoteDescription:["have-local-offer","have-remote-pranswer"]}}[t][e].indexOf(r)!==-1}function d(e,t){var r=e.getRemoteCandidates().find(function(e){return t.foundation===e.foundation&&t.ip===e.ip&&t.port===e.port&&t.priority===e.priority&&t.protocol===e.protocol&&t.type===e.type});if(!r){e.addRemoteCandidate(t)}return!r}function p(e,t){var r=new Error(t);r.name=e;r.code={NotSupportedError:9,InvalidStateError:11,InvalidAccessError:15,TypeError:undefined,OperationError:undefined}[e];return r}t.exports=function(e,t){function r(t,r){r.addTrack(t);r.dispatchEvent(new e.MediaStreamTrackEvent("addtrack",{track:t}))}function f(t,r){r.removeTrack(t);r.dispatchEvent(new e.MediaStreamTrackEvent("removetrack",{track:t}))}function u(t,r,n,i){var a=new Event("track");a.track=r;a.receiver=n;a.transceiver={receiver:n};a.streams=i;e.setTimeout(function(){t._dispatchEvent("track",a)})}var l=function(r){var i=this;var a=document.createDocumentFragment();["addEventListener","removeEventListener","dispatchEvent"].forEach(function(e){i[e]=a[e].bind(a)});this.canTrickleIceCandidates=null;this.needNegotiation=false;this.localStreams=[];this.remoteStreams=[];this._localDescription=null;this._remoteDescription=null;this.signalingState="stable";this.iceConnectionState="new";this.connectionState="new";this.iceGatheringState="new";r=JSON.parse(JSON.stringify(r||{}));this.usingBundle=r.bundlePolicy==="max-bundle";if(r.rtcpMuxPolicy==="negotiate"){throw p("NotSupportedError","rtcpMuxPolicy 'negotiate' is not supported")}else if(!r.rtcpMuxPolicy){r.rtcpMuxPolicy="require"}switch(r.iceTransportPolicy){case"all":case"relay":break;default:r.iceTransportPolicy="all";break}switch(r.bundlePolicy){case"balanced":case"max-compat":case"max-bundle":break;default:r.bundlePolicy="balanced";break}r.iceServers=o(r.iceServers||[],t);this._iceGatherers=[];if(r.iceCandidatePoolSize){for(var s=r.iceCandidatePoolSize;s>0;s--){this._iceGatherers.push(new e.RTCIceGatherer({iceServers:r.iceServers,gatherPolicy:r.iceTransportPolicy}))}}else{r.iceCandidatePoolSize=0}this._config=r;this.transceivers=[];this._sdpSessionId=n.generateSessionId();this._sdpSessionVersion=0;this._dtlsRole=undefined;this._isClosed=false};Object.defineProperty(l.prototype,"localDescription",{configurable:true,get:function(){return this._localDescription}});Object.defineProperty(l.prototype,"remoteDescription",{configurable:true,get:function(){return this._remoteDescription}});l.prototype.onicecandidate=null;l.prototype.onaddstream=null;l.prototype.ontrack=null;l.prototype.onremovestream=null;l.prototype.onsignalingstatechange=null;l.prototype.oniceconnectionstatechange=null;l.prototype.onconnectionstatechange=null;l.prototype.onicegatheringstatechange=null;l.prototype.onnegotiationneeded=null;l.prototype.ondatachannel=null;l.prototype._dispatchEvent=function(e,t){if(this._isClosed){return}this.dispatchEvent(t);if(typeof this["on"+e]==="function"){this["on"+e](t)}};l.prototype._emitGatheringStateChange=function(){var e=new Event("icegatheringstatechange");this._dispatchEvent("icegatheringstatechange",e)};l.prototype.getConfiguration=function(){return this._config};l.prototype.getLocalStreams=function(){return this.localStreams};l.prototype.getRemoteStreams=function(){return this.remoteStreams};l.prototype._createTransceiver=function(e,t){var r=this.transceivers.length>0;var n={track:null,iceGatherer:null,iceTransport:null,dtlsTransport:null,localCapabilities:null,remoteCapabilities:null,rtpSender:null,rtpReceiver:null,kind:e,mid:null,sendEncodingParameters:null,recvEncodingParameters:null,stream:null,associatedRemoteMediaStreams:[],wantReceive:true};if(this.usingBundle&&r){n.iceTransport=this.transceivers[0].iceTransport;n.dtlsTransport=this.transceivers[0].dtlsTransport}else{var i=this._createIceAndDtlsTransports();n.iceTransport=i.iceTransport;n.dtlsTransport=i.dtlsTransport}if(!t){this.transceivers.push(n)}return n};l.prototype.addTrack=function(t,r){if(this._isClosed){throw p("InvalidStateError","Attempted to call addTrack on a closed peerconnection.")}var n=this.transceivers.find(function(e){return e.track===t});if(n){throw p("InvalidAccessError","Track already exists.")}var i;for(var a=0;a<this.transceivers.length;a++){if(!this.transceivers[a].track&&this.transceivers[a].kind===t.kind){i=this.transceivers[a]}}if(!i){i=this._createTransceiver(t.kind)}this._maybeFireNegotiationNeeded();if(this.localStreams.indexOf(r)===-1){this.localStreams.push(r)}i.track=t;i.stream=r;i.rtpSender=new e.RTCRtpSender(t,i.dtlsTransport);return i.rtpSender};l.prototype.addStream=function(e){var r=this;if(t>=15025){e.getTracks().forEach(function(t){r.addTrack(t,e)})}else{var n=e.clone();e.getTracks().forEach(function(e,t){var r=n.getTracks()[t];e.addEventListener("enabled",function(e){r.enabled=e.enabled})});n.getTracks().forEach(function(e){r.addTrack(e,n)})}};l.prototype.removeTrack=function(t){if(this._isClosed){throw p("InvalidStateError","Attempted to call removeTrack on a closed peerconnection.")}if(!(t instanceof e.RTCRtpSender)){throw new TypeError("Argument 1 of RTCPeerConnection.removeTrack "+"does not implement interface RTCRtpSender.")}var r=this.transceivers.find(function(e){return e.rtpSender===t});if(!r){throw p("InvalidAccessError","Sender was not created by this connection.")}var n=r.stream;r.rtpSender.stop();r.rtpSender=null;r.track=null;r.stream=null;var i=this.transceivers.map(function(e){return e.stream});if(i.indexOf(n)===-1&&this.localStreams.indexOf(n)>-1){this.localStreams.splice(this.localStreams.indexOf(n),1)}this._maybeFireNegotiationNeeded()};l.prototype.removeStream=function(e){var t=this;e.getTracks().forEach(function(e){var r=t.getSenders().find(function(t){return t.track===e});if(r){t.removeTrack(r)}})};l.prototype.getSenders=function(){return this.transceivers.filter(function(e){return!!e.rtpSender}).map(function(e){return e.rtpSender})};l.prototype.getReceivers=function(){return this.transceivers.filter(function(e){return!!e.rtpReceiver}).map(function(e){return e.rtpReceiver})};l.prototype._createIceGatherer=function(t,r){var n=this;if(r&&t>0){return this.transceivers[0].iceGatherer}else if(this._iceGatherers.length){return this._iceGatherers.shift()}var i=new e.RTCIceGatherer({iceServers:this._config.iceServers,gatherPolicy:this._config.iceTransportPolicy});Object.defineProperty(i,"state",{value:"new",writable:true});this.transceivers[t].bufferedCandidateEvents=[];this.transceivers[t].bufferCandidates=function(e){var r=!e.candidate||Object.keys(e.candidate).length===0;i.state=r?"completed":"gathering";if(n.transceivers[t].bufferedCandidateEvents!==null){n.transceivers[t].bufferedCandidateEvents.push(e)}};i.addEventListener("localcandidate",this.transceivers[t].bufferCandidates);return i};l.prototype._gather=function(t,r){var i=this;var a=this.transceivers[r].iceGatherer;if(a.onlocalcandidate){return}var o=this.transceivers[r].bufferedCandidateEvents;this.transceivers[r].bufferedCandidateEvents=null;a.removeEventListener("localcandidate",this.transceivers[r].bufferCandidates);a.onlocalcandidate=function(e){if(i.usingBundle&&r>0){return}var o=new Event("icecandidate");o.candidate={sdpMid:t,sdpMLineIndex:r};var s=e.candidate;var c=!s||Object.keys(s).length===0;if(c){if(a.state==="new"||a.state==="gathering"){a.state="completed"}}else{if(a.state==="new"){a.state="gathering"}s.component=1;s.ufrag=a.getLocalParameters().usernameFragment;var d=n.writeCandidate(s);o.candidate=Object.assign(o.candidate,n.parseCandidate(d));o.candidate.candidate=d;o.candidate.toJSON=function(){return{candidate:o.candidate.candidate,sdpMid:o.candidate.sdpMid,sdpMLineIndex:o.candidate.sdpMLineIndex,usernameFragment:o.candidate.usernameFragment}}}var p=n.getMediaSections(i._localDescription.sdp);if(!c){p[o.candidate.sdpMLineIndex]+="a="+o.candidate.candidate+"\r\n"}else{p[o.candidate.sdpMLineIndex]+="a=end-of-candidates\r\n"}i._localDescription.sdp=n.getDescription(i._localDescription.sdp)+p.join("");var f=i.transceivers.every(function(e){return e.iceGatherer&&e.iceGatherer.state==="completed"});if(i.iceGatheringState!=="gathering"){i.iceGatheringState="gathering";i._emitGatheringStateChange()}if(!c){i._dispatchEvent("icecandidate",o)}if(f){i._dispatchEvent("icecandidate",new Event("icecandidate"));i.iceGatheringState="complete";i._emitGatheringStateChange()}};e.setTimeout(function(){o.forEach(function(e){a.onlocalcandidate(e)})},0)};l.prototype._createIceAndDtlsTransports=function(){var t=this;var r=new e.RTCIceTransport(null);r.onicestatechange=function(){t._updateIceConnectionState();t._updateConnectionState()};var n=new e.RTCDtlsTransport(r);n.ondtlsstatechange=function(){t._updateConnectionState()};n.onerror=function(){Object.defineProperty(n,"state",{value:"failed",writable:true});t._updateConnectionState()};return{iceTransport:r,dtlsTransport:n}};l.prototype._disposeIceAndDtlsTransports=function(e){var t=this.transceivers[e].iceGatherer;if(t){delete t.onlocalcandidate;delete this.transceivers[e].iceGatherer}var r=this.transceivers[e].iceTransport;if(r){delete r.onicestatechange;delete this.transceivers[e].iceTransport}var n=this.transceivers[e].dtlsTransport;if(n){delete n.ondtlsstatechange;delete n.onerror;delete this.transceivers[e].dtlsTransport}};l.prototype._transceive=function(e,r,i){var a=s(e.localCapabilities,e.remoteCapabilities);if(r&&e.rtpSender){a.encodings=e.sendEncodingParameters;a.rtcp={cname:n.localCName,compound:e.rtcpParameters.compound};if(e.recvEncodingParameters.length){a.rtcp.ssrc=e.recvEncodingParameters[0].ssrc}e.rtpSender.send(a)}if(i&&e.rtpReceiver&&a.codecs.length>0){if(e.kind==="video"&&e.recvEncodingParameters&&t<15019){e.recvEncodingParameters.forEach(function(e){delete e.rtx})}if(e.recvEncodingParameters.length){a.encodings=e.recvEncodingParameters}else{a.encodings=[{}]}a.rtcp={compound:e.rtcpParameters.compound};if(e.rtcpParameters.cname){a.rtcp.cname=e.rtcpParameters.cname}if(e.sendEncodingParameters.length){a.rtcp.ssrc=e.sendEncodingParameters[0].ssrc}e.rtpReceiver.receive(a)}};l.prototype.setLocalDescription=function(e){var t=this;if(["offer","answer"].indexOf(e.type)===-1){return Promise.reject(p("TypeError",'Unsupported type "'+e.type+'"'))}if(!c("setLocalDescription",e.type,t.signalingState)||t._isClosed){return Promise.reject(p("InvalidStateError","Can not set local "+e.type+" in state "+t.signalingState))}var r;var i;if(e.type==="offer"){r=n.splitSections(e.sdp);i=r.shift();r.forEach(function(e,r){var i=n.parseRtpParameters(e);t.transceivers[r].localCapabilities=i});t.transceivers.forEach(function(e,r){t._gather(e.mid,r)})}else if(e.type==="answer"){r=n.splitSections(t._remoteDescription.sdp);i=r.shift();var a=n.matchPrefix(i,"a=ice-lite").length>0;r.forEach(function(e,r){var o=t.transceivers[r];var c=o.iceGatherer;var d=o.iceTransport;var p=o.dtlsTransport;var f=o.localCapabilities;var u=o.remoteCapabilities;var l=n.isRejected(e)&&n.matchPrefix(e,"a=bundle-only").length===0;if(!l&&!o.rejected){var v=n.getIceParameters(e,i);var m=n.getDtlsParameters(e,i);if(a){m.role="server"}if(!t.usingBundle||r===0){t._gather(o.mid,r);if(d.state==="new"){d.start(c,v,a?"controlling":"controlled")}if(p.state==="new"){p.start(m)}}var h=s(f,u);t._transceive(o,h.codecs.length>0,false)}})}t._localDescription={type:e.type,sdp:e.sdp};if(e.type==="offer"){t._updateSignalingState("have-local-offer")}else{t._updateSignalingState("stable")}return Promise.resolve()};l.prototype.setRemoteDescription=function(i){var a=this;if(["offer","answer"].indexOf(i.type)===-1){return Promise.reject(p("TypeError",'Unsupported type "'+i.type+'"'))}if(!c("setRemoteDescription",i.type,a.signalingState)||a._isClosed){return Promise.reject(p("InvalidStateError","Can not set remote "+i.type+" in state "+a.signalingState))}var o={};a.remoteStreams.forEach(function(e){o[e.id]=e});var s=[];var l=n.splitSections(i.sdp);var v=l.shift();var m=n.matchPrefix(v,"a=ice-lite").length>0;var h=n.matchPrefix(v,"a=group:BUNDLE ").length>0;a.usingBundle=h;var g=n.matchPrefix(v,"a=ice-options:")[0];if(g){a.canTrickleIceCandidates=g.substr(14).split(" ").indexOf("trickle")>=0}else{a.canTrickleIceCandidates=false}l.forEach(function(c,p){var u=n.splitLines(c);var l=n.getKind(c);var g=n.isRejected(c)&&n.matchPrefix(c,"a=bundle-only").length===0;var y=u[0].substr(2).split(" ")[2];var C=n.getDirection(c,v);var T=n.parseMsid(c);var S=n.getMid(c)||n.generateIdentifier();if(g||l==="application"&&(y==="DTLS/SCTP"||y==="UDP/DTLS/SCTP")){a.transceivers[p]={mid:S,kind:l,protocol:y,rejected:true};return}if(!g&&a.transceivers[p]&&a.transceivers[p].rejected){a.transceivers[p]=a._createTransceiver(l,true)}var R;var P;var E;var b;var k;var w;var _;var x;var O;var D=n.parseRtpParameters(c);var M;var I;if(!g){M=n.getIceParameters(c,v);I=n.getDtlsParameters(c,v);I.role="client"}_=n.parseRtpEncodingParameters(c);var L=n.parseRtcpParameters(c);var j=n.matchPrefix(c,"a=end-of-candidates",v).length>0;var N=n.matchPrefix(c,"a=candidate:").map(function(e){return n.parseCandidate(e)}).filter(function(e){return e.component===1});if((i.type==="offer"||i.type==="answer")&&!g&&h&&p>0&&a.transceivers[p]){a._disposeIceAndDtlsTransports(p);a.transceivers[p].iceGatherer=a.transceivers[0].iceGatherer;a.transceivers[p].iceTransport=a.transceivers[0].iceTransport;a.transceivers[p].dtlsTransport=a.transceivers[0].dtlsTransport;if(a.transceivers[p].rtpSender){a.transceivers[p].rtpSender.setTransport(a.transceivers[0].dtlsTransport)}if(a.transceivers[p].rtpReceiver){a.transceivers[p].rtpReceiver.setTransport(a.transceivers[0].dtlsTransport)}}if(i.type==="offer"&&!g){R=a.transceivers[p]||a._createTransceiver(l);R.mid=S;if(!R.iceGatherer){R.iceGatherer=a._createIceGatherer(p,h)}if(N.length&&R.iceTransport.state==="new"){if(j&&(!h||p===0)){R.iceTransport.setRemoteCandidates(N)}else{N.forEach(function(e){d(R.iceTransport,e)})}}x=e.RTCRtpReceiver.getCapabilities(l);if(t<15019){x.codecs=x.codecs.filter(function(e){return e.name!=="rtx"})}w=R.sendEncodingParameters||[{ssrc:(2*p+2)*1001}];var A=false;if(C==="sendrecv"||C==="sendonly"){A=!R.rtpReceiver;k=R.rtpReceiver||new e.RTCRtpReceiver(R.dtlsTransport,l);if(A){var U;O=k.track;if(T&&T.stream==="-"){}else if(T){if(!o[T.stream]){o[T.stream]=new e.MediaStream;Object.defineProperty(o[T.stream],"id",{get:function(){return T.stream}})}Object.defineProperty(O,"id",{get:function(){return T.track}});U=o[T.stream]}else{if(!o.default){o.default=new e.MediaStream}U=o.default}if(U){r(O,U);R.associatedRemoteMediaStreams.push(U)}s.push([O,k,U])}}else if(R.rtpReceiver&&R.rtpReceiver.track){R.associatedRemoteMediaStreams.forEach(function(e){var t=e.getTracks().find(function(e){return e.id===R.rtpReceiver.track.id});if(t){f(t,e)}});R.associatedRemoteMediaStreams=[]}R.localCapabilities=x;R.remoteCapabilities=D;R.rtpReceiver=k;R.rtcpParameters=L;R.sendEncodingParameters=w;R.recvEncodingParameters=_;a._transceive(a.transceivers[p],false,A)}else if(i.type==="answer"&&!g){R=a.transceivers[p];P=R.iceGatherer;E=R.iceTransport;b=R.dtlsTransport;k=R.rtpReceiver;w=R.sendEncodingParameters;x=R.localCapabilities;a.transceivers[p].recvEncodingParameters=_;a.transceivers[p].remoteCapabilities=D;a.transceivers[p].rtcpParameters=L;if(N.length&&E.state==="new"){if((m||j)&&(!h||p===0)){E.setRemoteCandidates(N)}else{N.forEach(function(e){d(R.iceTransport,e)})}}if(!h||p===0){if(E.state==="new"){E.start(P,M,"controlling")}if(b.state==="new"){b.start(I)}}a._transceive(R,C==="sendrecv"||C==="recvonly",C==="sendrecv"||C==="sendonly");if(k&&(C==="sendrecv"||C==="sendonly")){O=k.track;if(T){if(!o[T.stream]){o[T.stream]=new e.MediaStream}r(O,o[T.stream]);s.push([O,k,o[T.stream]])}else{if(!o.default){o.default=new e.MediaStream}r(O,o.default);s.push([O,k,o.default])}}else{delete R.rtpReceiver}}});if(a._dtlsRole===undefined){a._dtlsRole=i.type==="offer"?"active":"passive"}a._remoteDescription={type:i.type,sdp:i.sdp};if(i.type==="offer"){a._updateSignalingState("have-remote-offer")}else{a._updateSignalingState("stable")}Object.keys(o).forEach(function(t){var r=o[t];if(r.getTracks().length){if(a.remoteStreams.indexOf(r)===-1){a.remoteStreams.push(r);var n=new Event("addstream");n.stream=r;e.setTimeout(function(){a._dispatchEvent("addstream",n)})}s.forEach(function(e){var t=e[0];var n=e[1];if(r.id!==e[2].id){return}u(a,t,n,[r])})}});s.forEach(function(e){if(e[2]){return}u(a,e[0],e[1],[])});e.setTimeout(function(){if(!(a&&a.transceivers)){return}a.transceivers.forEach(function(e){if(e.iceTransport&&e.iceTransport.state==="new"&&e.iceTransport.getRemoteCandidates().length>0){console.warn("Timeout for addRemoteCandidate. Consider sending "+"an end-of-candidates notification");e.iceTransport.addRemoteCandidate({})}})},4e3);return Promise.resolve()};l.prototype.close=function(){this.transceivers.forEach(function(e){if(e.iceTransport){e.iceTransport.stop()}if(e.dtlsTransport){e.dtlsTransport.stop()}if(e.rtpSender){e.rtpSender.stop()}if(e.rtpReceiver){e.rtpReceiver.stop()}});this._isClosed=true;this._updateSignalingState("closed")};l.prototype._updateSignalingState=function(e){this.signalingState=e;var t=new Event("signalingstatechange");this._dispatchEvent("signalingstatechange",t)};l.prototype._maybeFireNegotiationNeeded=function(){var t=this;if(this.signalingState!=="stable"||this.needNegotiation===true){return}this.needNegotiation=true;e.setTimeout(function(){if(t.needNegotiation){t.needNegotiation=false;var e=new Event("negotiationneeded");t._dispatchEvent("negotiationneeded",e)}},0)};l.prototype._updateIceConnectionState=function(){var e;var t={new:0,closed:0,checking:0,connected:0,completed:0,disconnected:0,failed:0};this.transceivers.forEach(function(e){t[e.iceTransport.state]++});e="new";if(t.failed>0){e="failed"}else if(t.checking>0){e="checking"}else if(t.disconnected>0){e="disconnected"}else if(t.new>0){e="new"}else if(t.connected>0){e="connected"}else if(t.completed>0){e="completed"}if(e!==this.iceConnectionState){this.iceConnectionState=e;var r=new Event("iceconnectionstatechange");this._dispatchEvent("iceconnectionstatechange",r)}};l.prototype._updateConnectionState=function(){var e;var t={new:0,closed:0,connecting:0,connected:0,completed:0,disconnected:0,failed:0};this.transceivers.forEach(function(e){t[e.iceTransport.state]++;t[e.dtlsTransport.state]++});t.connected+=t.completed;e="new";if(t.failed>0){e="failed"}else if(t.connecting>0){e="connecting"}else if(t.disconnected>0){e="disconnected"}else if(t.new>0){e="new"}else if(t.connected>0){e="connected"}if(e!==this.connectionState){this.connectionState=e;var r=new Event("connectionstatechange");this._dispatchEvent("connectionstatechange",r)}};l.prototype.createOffer=function(){var r=this;if(r._isClosed){return Promise.reject(p("InvalidStateError","Can not call createOffer after close"))}var i=r.transceivers.filter(function(e){return e.kind==="audio"}).length;var o=r.transceivers.filter(function(e){return e.kind==="video"}).length;var s=arguments[0];if(s){if(s.mandatory||s.optional){throw new TypeError("Legacy mandatory/optional constraints not supported.")}if(s.offerToReceiveAudio!==undefined){if(s.offerToReceiveAudio===true){i=1}else if(s.offerToReceiveAudio===false){i=0}else{i=s.offerToReceiveAudio}}if(s.offerToReceiveVideo!==undefined){if(s.offerToReceiveVideo===true){o=1}else if(s.offerToReceiveVideo===false){o=0}else{o=s.offerToReceiveVideo}}}r.transceivers.forEach(function(e){if(e.kind==="audio"){i--;if(i<0){e.wantReceive=false}}else if(e.kind==="video"){o--;if(o<0){e.wantReceive=false}}});while(i>0||o>0){if(i>0){r._createTransceiver("audio");i--}if(o>0){r._createTransceiver("video");o--}}var c=n.writeSessionBoilerplate(r._sdpSessionId,r._sdpSessionVersion++);r.transceivers.forEach(function(i,a){var o=i.track;var s=i.kind;var c=i.mid||n.generateIdentifier();i.mid=c;if(!i.iceGatherer){i.iceGatherer=r._createIceGatherer(a,r.usingBundle)}var d=e.RTCRtpSender.getCapabilities(s);if(t<15019){d.codecs=d.codecs.filter(function(e){return e.name!=="rtx"})}d.codecs.forEach(function(e){if(e.name==="H264"&&e.parameters["level-asymmetry-allowed"]===undefined){e.parameters["level-asymmetry-allowed"]="1"}if(i.remoteCapabilities&&i.remoteCapabilities.codecs){i.remoteCapabilities.codecs.forEach(function(t){if(e.name.toLowerCase()===t.name.toLowerCase()&&e.clockRate===t.clockRate){e.preferredPayloadType=t.payloadType}})}});d.headerExtensions.forEach(function(e){var t=i.remoteCapabilities&&i.remoteCapabilities.headerExtensions||[];t.forEach(function(t){if(e.uri===t.uri){e.id=t.id}})});var p=i.sendEncodingParameters||[{ssrc:(2*a+1)*1001}];if(o){if(t>=15019&&s==="video"&&!p[0].rtx){p[0].rtx={ssrc:p[0].ssrc+1}}}if(i.wantReceive){i.rtpReceiver=new e.RTCRtpReceiver(i.dtlsTransport,s)}i.localCapabilities=d;i.sendEncodingParameters=p});if(r._config.bundlePolicy!=="max-compat"){c+="a=group:BUNDLE "+r.transceivers.map(function(e){return e.mid}).join(" ")+"\r\n"}c+="a=ice-options:trickle\r\n";r.transceivers.forEach(function(e,t){c+=a(e,e.localCapabilities,"offer",e.stream,r._dtlsRole);c+="a=rtcp-rsize\r\n";if(e.iceGatherer&&r.iceGatheringState!=="new"&&(t===0||!r.usingBundle)){e.iceGatherer.getLocalCandidates().forEach(function(e){e.component=1;c+="a="+n.writeCandidate(e)+"\r\n"});if(e.iceGatherer.state==="completed"){c+="a=end-of-candidates\r\n"}}});var d=new e.RTCSessionDescription({type:"offer",sdp:c});return Promise.resolve(d)};l.prototype.createAnswer=function(){var r=this;if(r._isClosed){return Promise.reject(p("InvalidStateError","Can not call createAnswer after close"))}if(!(r.signalingState==="have-remote-offer"||r.signalingState==="have-local-pranswer")){return Promise.reject(p("InvalidStateError","Can not call createAnswer in signalingState "+r.signalingState))}var i=n.writeSessionBoilerplate(r._sdpSessionId,r._sdpSessionVersion++);if(r.usingBundle){i+="a=group:BUNDLE "+r.transceivers.map(function(e){return e.mid}).join(" ")+"\r\n"}var o=n.getMediaSections(r._remoteDescription.sdp).length;r.transceivers.forEach(function(e,n){if(n+1>o){return}if(e.rejected){if(e.kind==="application"){if(e.protocol==="DTLS/SCTP"){i+="m=application 0 DTLS/SCTP 5000\r\n"}else{i+="m=application 0 "+e.protocol+" webrtc-datachannel\r\n"}}else if(e.kind==="audio"){i+="m=audio 0 UDP/TLS/RTP/SAVPF 0\r\n"+"a=rtpmap:0 PCMU/8000\r\n"}else if(e.kind==="video"){i+="m=video 0 UDP/TLS/RTP/SAVPF 120\r\n"+"a=rtpmap:120 VP8/90000\r\n"}i+="c=IN IP4 0.0.0.0\r\n"+"a=inactive\r\n"+"a=mid:"+e.mid+"\r\n";return}if(e.stream){var c;if(e.kind==="audio"){c=e.stream.getAudioTracks()[0]}else if(e.kind==="video"){c=e.stream.getVideoTracks()[0]}if(c){if(t>=15019&&e.kind==="video"&&!e.sendEncodingParameters[0].rtx){e.sendEncodingParameters[0].rtx={ssrc:e.sendEncodingParameters[0].ssrc+1}}}}var d=s(e.localCapabilities,e.remoteCapabilities);var p=d.codecs.filter(function(e){return e.name.toLowerCase()==="rtx"}).length;if(!p&&e.sendEncodingParameters[0].rtx){delete e.sendEncodingParameters[0].rtx}i+=a(e,d,"answer",e.stream,r._dtlsRole);if(e.rtcpParameters&&e.rtcpParameters.reducedSize){i+="a=rtcp-rsize\r\n"}});var c=new e.RTCSessionDescription({type:"answer",sdp:i});return Promise.resolve(c)};l.prototype.addIceCandidate=function(e){var t=this;var r;if(e&&!(e.sdpMLineIndex!==undefined||e.sdpMid)){return Promise.reject(new TypeError("sdpMLineIndex or sdpMid required"))}return new Promise(function(i,a){if(!t._remoteDescription){return a(p("InvalidStateError","Can not add ICE candidate without a remote description"))}else if(!e||e.candidate===""){for(var o=0;o<t.transceivers.length;o++){if(t.transceivers[o].rejected){continue}t.transceivers[o].iceTransport.addRemoteCandidate({});r=n.getMediaSections(t._remoteDescription.sdp);r[o]+="a=end-of-candidates\r\n";t._remoteDescription.sdp=n.getDescription(t._remoteDescription.sdp)+r.join("");if(t.usingBundle){break}}}else{var s=e.sdpMLineIndex;if(e.sdpMid){for(var c=0;c<t.transceivers.length;c++){if(t.transceivers[c].mid===e.sdpMid){s=c;break}}}var f=t.transceivers[s];if(f){if(f.rejected){return i()}var u=Object.keys(e.candidate).length>0?n.parseCandidate(e.candidate):{};if(u.protocol==="tcp"&&(u.port===0||u.port===9)){return i()}if(u.component&&u.component!==1){return i()}if(s===0||s>0&&f.iceTransport!==t.transceivers[0].iceTransport){if(!d(f.iceTransport,u)){return a(p("OperationError","Can not add ICE candidate"))}}var l=e.candidate.trim();if(l.indexOf("a=")===0){l=l.substr(2)}r=n.getMediaSections(t._remoteDescription.sdp);r[s]+="a="+(u.type?l:"end-of-candidates")+"\r\n";t._remoteDescription.sdp=n.getDescription(t._remoteDescription.sdp)+r.join("")}else{return a(p("OperationError","Can not add ICE candidate"))}}i()})};l.prototype.getStats=function(t){if(t&&t instanceof e.MediaStreamTrack){var r=null;this.transceivers.forEach(function(e){if(e.rtpSender&&e.rtpSender.track===t){r=e.rtpSender}else if(e.rtpReceiver&&e.rtpReceiver.track===t){r=e.rtpReceiver}});if(!r){throw p("InvalidAccessError","Invalid selector.")}return r.getStats()}var n=[];this.transceivers.forEach(function(e){["rtpSender","rtpReceiver","iceGatherer","iceTransport","dtlsTransport"].forEach(function(t){if(e[t]){n.push(e[t].getStats())}})});return Promise.all(n).then(function(e){var t=new Map;e.forEach(function(e){e.forEach(function(e){t.set(e.id,e)})});return t})};var v=["RTCRtpSender","RTCRtpReceiver","RTCIceGatherer","RTCIceTransport","RTCDtlsTransport"];v.forEach(function(t){var r=e[t];if(r&&r.prototype&&r.prototype.getStats){var n=r.prototype.getStats;r.prototype.getStats=function(){return n.apply(this).then(function(e){var t=new Map;Object.keys(e).forEach(function(r){e[r].type=i(e[r]);t.set(r,e[r])});return t})}}});var m=["createOffer","createAnswer"];m.forEach(function(e){var t=l.prototype[e];l.prototype[e]=function(){var e=arguments;if(typeof e[0]==="function"||typeof e[1]==="function"){return t.apply(this,[arguments[2]]).then(function(t){if(typeof e[0]==="function"){e[0].apply(null,[t])}},function(t){if(typeof e[1]==="function"){e[1].apply(null,[t])}})}return t.apply(this,arguments)}});m=["setLocalDescription","setRemoteDescription","addIceCandidate"];m.forEach(function(e){var t=l.prototype[e];l.prototype[e]=function(){var e=arguments;if(typeof e[1]==="function"||typeof e[2]==="function"){return t.apply(this,arguments).then(function(){if(typeof e[1]==="function"){e[1].apply(null)}},function(t){if(typeof e[2]==="function"){e[2].apply(null,[t])}})}return t.apply(this,arguments)}});["getStats"].forEach(function(e){var t=l.prototype[e];l.prototype[e]=function(){var e=arguments;if(typeof e[1]==="function"){return t.apply(this,arguments).then(function(){if(typeof e[1]==="function"){e[1].apply(null)}})}return t.apply(this,arguments)}});return l}},{sdp:2}],2:[function(e,t,r){"use strict";var n={};n.generateIdentifier=function(){return Math.random().toString(36).substr(2,10)};n.localCName=n.generateIdentifier();n.splitLines=function(e){return e.trim().split("\n").map(function(e){return e.trim()})};n.splitSections=function(e){var t=e.split("\nm=");return t.map(function(e,t){return(t>0?"m="+e:e).trim()+"\r\n"})};n.getDescription=function(e){var t=n.splitSections(e);return t&&t[0]};n.getMediaSections=function(e){var t=n.splitSections(e);t.shift();return t};n.matchPrefix=function(e,t){return n.splitLines(e).filter(function(e){return e.indexOf(t)===0})};n.parseCandidate=function(e){var t;if(e.indexOf("a=candidate:")===0){t=e.substring(12).split(" ")}else{t=e.substring(10).split(" ")}var r={foundation:t[0],component:parseInt(t[1],10),protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],port:parseInt(t[5],10),type:t[7]};for(var n=8;n<t.length;n+=2){switch(t[n]){case"raddr":r.relatedAddress=t[n+1];break;case"rport":r.relatedPort=parseInt(t[n+1],10);break;case"tcptype":r.tcpType=t[n+1];break;case"ufrag":r.ufrag=t[n+1];r.usernameFragment=t[n+1];break;default:r[t[n]]=t[n+1];break}}return r};n.writeCandidate=function(e){var t=[];t.push(e.foundation);t.push(e.component);t.push(e.protocol.toUpperCase());t.push(e.priority);t.push(e.ip);t.push(e.port);var r=e.type;t.push("typ");t.push(r);if(r!=="host"&&e.relatedAddress&&e.relatedPort){t.push("raddr");t.push(e.relatedAddress);t.push("rport");t.push(e.relatedPort)}if(e.tcpType&&e.protocol.toLowerCase()==="tcp"){t.push("tcptype");t.push(e.tcpType)}if(e.usernameFragment||e.ufrag){t.push("ufrag");t.push(e.usernameFragment||e.ufrag)}return"candidate:"+t.join(" ")};n.parseIceOptions=function(e){return e.substr(14).split(" ")};n.parseRtpMap=function(e){var t=e.substr(9).split(" ");var r={payloadType:parseInt(t.shift(),10)};t=t[0].split("/");r.name=t[0];r.clockRate=parseInt(t[1],10);r.channels=t.length===3?parseInt(t[2],10):1;r.numChannels=r.channels;return r};n.writeRtpMap=function(e){var t=e.payloadType;if(e.preferredPayloadType!==undefined){t=e.preferredPayloadType}var r=e.channels||e.numChannels||1;return"a=rtpmap:"+t+" "+e.name+"/"+e.clockRate+(r!==1?"/"+r:"")+"\r\n"};n.parseExtmap=function(e){var t=e.substr(9).split(" ");return{id:parseInt(t[0],10),direction:t[0].indexOf("/")>0?t[0].split("/")[1]:"sendrecv",uri:t[1]}};n.writeExtmap=function(e){return"a=extmap:"+(e.id||e.preferredId)+(e.direction&&e.direction!=="sendrecv"?"/"+e.direction:"")+" "+e.uri+"\r\n"};n.parseFmtp=function(e){var t={};var r;var n=e.substr(e.indexOf(" ")+1).split(";");for(var i=0;i<n.length;i++){r=n[i].trim().split("=");t[r[0].trim()]=r[1]}return t};n.writeFmtp=function(e){var t="";var r=e.payloadType;if(e.preferredPayloadType!==undefined){r=e.preferredPayloadType}if(e.parameters&&Object.keys(e.parameters).length){var n=[];Object.keys(e.parameters).forEach(function(t){if(e.parameters[t]){n.push(t+"="+e.parameters[t])}else{n.push(t)}});t+="a=fmtp:"+r+" "+n.join(";")+"\r\n"}return t};n.parseRtcpFb=function(e){var t=e.substr(e.indexOf(" ")+1).split(" ");return{type:t.shift(),parameter:t.join(" ")}};n.writeRtcpFb=function(e){var t="";var r=e.payloadType;if(e.preferredPayloadType!==undefined){r=e.preferredPayloadType}if(e.rtcpFeedback&&e.rtcpFeedback.length){e.rtcpFeedback.forEach(function(e){t+="a=rtcp-fb:"+r+" "+e.type+(e.parameter&&e.parameter.length?" "+e.parameter:"")+"\r\n"})}return t};n.parseSsrcMedia=function(e){var t=e.indexOf(" ");var r={ssrc:parseInt(e.substr(7,t-7),10)};var n=e.indexOf(":",t);if(n>-1){r.attribute=e.substr(t+1,n-t-1);r.value=e.substr(n+1)}else{r.attribute=e.substr(t+1)}return r};n.getMid=function(e){var t=n.matchPrefix(e,"a=mid:")[0];if(t){return t.substr(6)}};n.parseFingerprint=function(e){var t=e.substr(14).split(" ");return{algorithm:t[0].toLowerCase(),value:t[1]}};n.getDtlsParameters=function(e,t){var r=n.matchPrefix(e+t,"a=fingerprint:");return{role:"auto",fingerprints:r.map(n.parseFingerprint)}};n.writeDtlsParameters=function(e,t){var r="a=setup:"+t+"\r\n";e.fingerprints.forEach(function(e){r+="a=fingerprint:"+e.algorithm+" "+e.value+"\r\n"});return r};n.getIceParameters=function(e,t){var r=n.splitLines(e);r=r.concat(n.splitLines(t));var i={usernameFragment:r.filter(function(e){return e.indexOf("a=ice-ufrag:")===0})[0].substr(12),password:r.filter(function(e){return e.indexOf("a=ice-pwd:")===0})[0].substr(10)};return i};n.writeIceParameters=function(e){return"a=ice-ufrag:"+e.usernameFragment+"\r\n"+"a=ice-pwd:"+e.password+"\r\n"};n.parseRtpParameters=function(e){var t={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]};var r=n.splitLines(e);var i=r[0].split(" ");for(var a=3;a<i.length;a++){var o=i[a];var s=n.matchPrefix(e,"a=rtpmap:"+o+" ")[0];if(s){var c=n.parseRtpMap(s);var d=n.matchPrefix(e,"a=fmtp:"+o+" ");c.parameters=d.length?n.parseFmtp(d[0]):{};c.rtcpFeedback=n.matchPrefix(e,"a=rtcp-fb:"+o+" ").map(n.parseRtcpFb);t.codecs.push(c);switch(c.name.toUpperCase()){case"RED":case"ULPFEC":t.fecMechanisms.push(c.name.toUpperCase());break;default:break}}}n.matchPrefix(e,"a=extmap:").forEach(function(e){t.headerExtensions.push(n.parseExtmap(e))});return t};n.writeRtpDescription=function(e,t){var r="";r+="m="+e+" ";r+=t.codecs.length>0?"9":"0";r+=" UDP/TLS/RTP/SAVPF ";r+=t.codecs.map(function(e){if(e.preferredPayloadType!==undefined){return e.preferredPayloadType}return e.payloadType}).join(" ")+"\r\n";r+="c=IN IP4 0.0.0.0\r\n";r+="a=rtcp:9 IN IP4 0.0.0.0\r\n";t.codecs.forEach(function(e){r+=n.writeRtpMap(e);r+=n.writeFmtp(e);r+=n.writeRtcpFb(e)});var i=0;t.codecs.forEach(function(e){if(e.maxptime>i){i=e.maxptime}});if(i>0){r+="a=maxptime:"+i+"\r\n"}r+="a=rtcp-mux\r\n";if(t.headerExtensions){t.headerExtensions.forEach(function(e){r+=n.writeExtmap(e)})}return r};n.parseRtpEncodingParameters=function(e){var t=[];var r=n.parseRtpParameters(e);var i=r.fecMechanisms.indexOf("RED")!==-1;var a=r.fecMechanisms.indexOf("ULPFEC")!==-1;var o=n.matchPrefix(e,"a=ssrc:").map(function(e){return n.parseSsrcMedia(e)}).filter(function(e){return e.attribute==="cname"});var s=o.length>0&&o[0].ssrc;var c;var d=n.matchPrefix(e,"a=ssrc-group:FID").map(function(e){var t=e.substr(17).split(" ");return t.map(function(e){return parseInt(e,10)})});if(d.length>0&&d[0].length>1&&d[0][0]===s){c=d[0][1]}r.codecs.forEach(function(e){if(e.name.toUpperCase()==="RTX"&&e.parameters.apt){var r={ssrc:s,codecPayloadType:parseInt(e.parameters.apt,10)};if(s&&c){r.rtx={ssrc:c}}t.push(r);if(i){r=JSON.parse(JSON.stringify(r));r.fec={ssrc:c,mechanism:a?"red+ulpfec":"red"};t.push(r)}}});if(t.length===0&&s){t.push({ssrc:s})}var p=n.matchPrefix(e,"b=");if(p.length){if(p[0].indexOf("b=TIAS:")===0){p=parseInt(p[0].substr(7),10)}else if(p[0].indexOf("b=AS:")===0){p=parseInt(p[0].substr(5),10)*1e3*.95-50*40*8}else{p=undefined}t.forEach(function(e){e.maxBitrate=p})}return t};n.parseRtcpParameters=function(e){var t={};var r;var i=n.matchPrefix(e,"a=ssrc:").map(function(e){return n.parseSsrcMedia(e)}).filter(function(e){return e.attribute==="cname"})[0];if(i){t.cname=i.value;t.ssrc=i.ssrc}var a=n.matchPrefix(e,"a=rtcp-rsize");t.reducedSize=a.length>0;t.compound=a.length===0;var o=n.matchPrefix(e,"a=rtcp-mux");t.mux=o.length>0;return t};n.parseMsid=function(e){var t;var r=n.matchPrefix(e,"a=msid:");if(r.length===1){t=r[0].substr(7).split(" ");return{stream:t[0],track:t[1]}}var i=n.matchPrefix(e,"a=ssrc:").map(function(e){return n.parseSsrcMedia(e)}).filter(function(e){return e.attribute==="msid"});if(i.length>0){t=i[0].value.split(" ");return{stream:t[0],track:t[1]}}};n.generateSessionId=function(){return Math.random().toString().substr(2,21)};n.writeSessionBoilerplate=function(e,t){var r;var i=t!==undefined?t:2;if(e){r=e}else{r=n.generateSessionId()}return"v=0\r\n"+"o=thisisadapterortc "+r+" "+i+" IN IP4 127.0.0.1\r\n"+"s=-\r\n"+"t=0 0\r\n"};n.writeMediaSection=function(e,t,r,i){var a=n.writeRtpDescription(e.kind,t);a+=n.writeIceParameters(e.iceGatherer.getLocalParameters());a+=n.writeDtlsParameters(e.dtlsTransport.getLocalParameters(),r==="offer"?"actpass":"active");a+="a=mid:"+e.mid+"\r\n";if(e.direction){a+="a="+e.direction+"\r\n"}else if(e.rtpSender&&e.rtpReceiver){a+="a=sendrecv\r\n"}else if(e.rtpSender){a+="a=sendonly\r\n"}else if(e.rtpReceiver){a+="a=recvonly\r\n"}else{a+="a=inactive\r\n"}if(e.rtpSender){var o="msid:"+i.id+" "+e.rtpSender.track.id+"\r\n";a+="a="+o;a+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" "+o;if(e.sendEncodingParameters[0].rtx){a+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" "+o;a+="a=ssrc-group:FID "+e.sendEncodingParameters[0].ssrc+" "+e.sendEncodingParameters[0].rtx.ssrc+"\r\n"}}a+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" cname:"+n.localCName+"\r\n";if(e.rtpSender&&e.sendEncodingParameters[0].rtx){a+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" cname:"+n.localCName+"\r\n"}return a};n.getDirection=function(e,t){var r=n.splitLines(e);for(var i=0;i<r.length;i++){switch(r[i]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return r[i].substr(2);default:}}if(t){return n.getDirection(t)}return"sendrecv"};n.getKind=function(e){var t=n.splitLines(e);var r=t[0].split(" ");return r[0].substr(2)};n.isRejected=function(e){return e.split(" ",2)[1]==="0"};n.parseMLine=function(e){var t=n.splitLines(e);var r=t[0].substr(2).split(" ");return{kind:r[0],port:parseInt(r[1],10),protocol:r[2],fmt:r.slice(3).join(" ")}};n.parseOLine=function(e){var t=n.matchPrefix(e,"o=")[0];var r=t.substr(2).split(" ");return{username:r[0],sessionId:r[1],sessionVersion:parseInt(r[2],10),netType:r[3],addressType:r[4],address:r[5]}};if(typeof t==="object"){t.exports=n}},{}],3:[function(e,t,r){(function(r){"use strict";var n=e("./adapter_factory.js");t.exports=n({window:r.window})}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./adapter_factory.js":4}],4:[function(e,t,r){"use strict";var n=e("./utils");t.exports=function(t,r){var i=t&&t.window;var a={shimChrome:true,shimFirefox:true,shimEdge:true,shimSafari:true};for(var o in r){if(hasOwnProperty.call(r,o)){a[o]=r[o]}}var s=n.log;var c=n.detectBrowser(i);var d=e("./chrome/chrome_shim")||null;var p=e("./edge/edge_shim")||null;var f=e("./firefox/firefox_shim")||null;var u=e("./safari/safari_shim")||null;var l=e("./common_shim")||null;var v={browserDetails:c,commonShim:l,extractVersion:n.extractVersion,disableLog:n.disableLog,disableWarnings:n.disableWarnings};switch(c.browser){case"chrome":if(!d||!d.shimPeerConnection||!a.shimChrome){s("Chrome shim is not included in this adapter release.");return v}s("adapter.js shimming chrome.");v.browserShim=d;l.shimCreateObjectURL(i);d.shimGetUserMedia(i);d.shimMediaStream(i);d.shimSourceObject(i);d.shimPeerConnection(i);d.shimOnTrack(i);d.shimAddTrackRemoveTrack(i);d.shimGetSendersWithDtmf(i);d.shimSenderReceiverGetStats(i);d.fixNegotiationNeeded(i);l.shimRTCIceCandidate(i);l.shimMaxMessageSize(i);l.shimSendThrowTypeError(i);break;case"firefox":if(!f||!f.shimPeerConnection||!a.shimFirefox){s("Firefox shim is not included in this adapter release.");return v}s("adapter.js shimming firefox.");v.browserShim=f;l.shimCreateObjectURL(i);f.shimGetUserMedia(i);f.shimSourceObject(i);f.shimPeerConnection(i);f.shimOnTrack(i);f.shimRemoveStream(i);f.shimSenderGetStats(i);f.shimReceiverGetStats(i);f.shimRTCDataChannel(i);l.shimRTCIceCandidate(i);l.shimMaxMessageSize(i);l.shimSendThrowTypeError(i);break;case"edge":if(!p||!p.shimPeerConnection||!a.shimEdge){s("MS edge shim is not included in this adapter release.");return v}s("adapter.js shimming edge.");v.browserShim=p;l.shimCreateObjectURL(i);p.shimGetUserMedia(i);p.shimPeerConnection(i);p.shimReplaceTrack(i);l.shimMaxMessageSize(i);l.shimSendThrowTypeError(i);break;case"safari":if(!u||!a.shimSafari){s("Safari shim is not included in this adapter release.");return v}s("adapter.js shimming safari.");v.browserShim=u;l.shimCreateObjectURL(i);u.shimRTCIceServerUrls(i);u.shimCallbacksAPI(i);u.shimLocalStreamsAPI(i);u.shimRemoteStreamsAPI(i);u.shimTrackEventTransceiver(i);u.shimGetUserMedia(i);u.shimCreateOfferLegacy(i);l.shimRTCIceCandidate(i);l.shimMaxMessageSize(i);l.shimSendThrowTypeError(i);break;default:s("Unsupported browser!");break}return v}},{"./chrome/chrome_shim":5,"./common_shim":7,"./edge/edge_shim":8,"./firefox/firefox_shim":11,"./safari/safari_shim":13,"./utils":14}],5:[function(e,t,r){"use strict";var n=e("../utils.js");var i=n.log;function a(e,t,r){if(!t||r.has(t.id)){return}r.set(t.id,t);Object.keys(t).forEach(function(n){if(n.endsWith("Id")){a(e,e.get(t[n]),r)}else if(n.endsWith("Ids")){t[n].forEach(function(t){a(e,e.get(t),r)})}})}function o(e,t,r){var n=r?"outbound-rtp":"inbound-rtp";var i=new Map;if(t===null){return i}var o=[];e.forEach(function(e){if(e.type==="track"&&e.trackIdentifier===t.id){o.push(e)}});o.forEach(function(t){e.forEach(function(r){if(r.type===n&&r.trackId===t.id){a(e,r,i)}})});return i}t.exports={shimGetUserMedia:e("./getusermedia"),shimMediaStream:function(e){e.MediaStream=e.MediaStream||e.webkitMediaStream},shimOnTrack:function(e){if(typeof e==="object"&&e.RTCPeerConnection&&!("ontrack"in e.RTCPeerConnection.prototype)){Object.defineProperty(e.RTCPeerConnection.prototype,"ontrack",{get:function(){return this._ontrack},set:function(e){if(this._ontrack){this.removeEventListener("track",this._ontrack)}this.addEventListener("track",this._ontrack=e)},enumerable:true,configurable:true});var t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){var r=this;if(!r._ontrackpoly){r._ontrackpoly=function(t){t.stream.addEventListener("addtrack",function(n){var i;if(e.RTCPeerConnection.prototype.getReceivers){i=r.getReceivers().find(function(e){return e.track&&e.track.id===n.track.id})}else{i={track:n.track}}var a=new Event("track");a.track=n.track;a.receiver=i;a.transceiver={receiver:i};a.streams=[t.stream];r.dispatchEvent(a)});t.stream.getTracks().forEach(function(n){var i;if(e.RTCPeerConnection.prototype.getReceivers){i=r.getReceivers().find(function(e){return e.track&&e.track.id===n.id})}else{i={track:n}}var a=new Event("track");a.track=n;a.receiver=i;a.transceiver={receiver:i};a.streams=[t.stream];r.dispatchEvent(a)})};r.addEventListener("addstream",r._ontrackpoly)}return t.apply(r,arguments)}}else if(!("RTCRtpTransceiver"in e)){n.wrapPeerConnectionEvent(e,"track",function(e){if(!e.transceiver){e.transceiver={receiver:e.receiver}}return e})}},shimGetSendersWithDtmf:function(e){if(typeof e==="object"&&e.RTCPeerConnection&&!("getSenders"in e.RTCPeerConnection.prototype)&&"createDTMFSender"in e.RTCPeerConnection.prototype){var t=function(e,t){return{track:t,get dtmf(){if(this._dtmf===undefined){if(t.kind==="audio"){this._dtmf=e.createDTMFSender(t)}else{this._dtmf=null}}return this._dtmf},_pc:e}};if(!e.RTCPeerConnection.prototype.getSenders){e.RTCPeerConnection.prototype.getSenders=function(){this._senders=this._senders||[];return this._senders.slice()};var r=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,n){var i=this;var a=r.apply(i,arguments);if(!a){a=t(i,e);i._senders.push(a)}return a};var n=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){var t=this;n.apply(t,arguments);var r=t._senders.indexOf(e);if(r!==-1){t._senders.splice(r,1)}}}var i=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){var r=this;r._senders=r._senders||[];i.apply(r,[e]);e.getTracks().forEach(function(e){r._senders.push(t(r,e))})};var a=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){var t=this;t._senders=t._senders||[];a.apply(t,[e]);e.getTracks().forEach(function(e){var r=t._senders.find(function(t){return t.track===e});if(r){t._senders.splice(t._senders.indexOf(r),1)}})}}else if(typeof e==="object"&&e.RTCPeerConnection&&"getSenders"in e.RTCPeerConnection.prototype&&"createDTMFSender"in e.RTCPeerConnection.prototype&&e.RTCRtpSender&&!("dtmf"in e.RTCRtpSender.prototype)){var o=e.RTCPeerConnection.prototype.getSenders;e.RTCPeerConnection.prototype.getSenders=function(){var e=this;var t=o.apply(e,[]);t.forEach(function(t){t._pc=e});return t};Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get:function(){if(this._dtmf===undefined){if(this.track.kind==="audio"){this._dtmf=this._pc.createDTMFSender(this.track)}else{this._dtmf=null}}return this._dtmf}})}},shimSenderReceiverGetStats:function(e){if(!(typeof e==="object"&&e.RTCPeerConnection&&e.RTCRtpSender&&e.RTCRtpReceiver)){return}if(!("getStats"in e.RTCRtpSender.prototype)){var t=e.RTCPeerConnection.prototype.getSenders;if(t){e.RTCPeerConnection.prototype.getSenders=function(){var e=this;var r=t.apply(e,[]);r.forEach(function(t){t._pc=e});return r}}var r=e.RTCPeerConnection.prototype.addTrack;if(r){e.RTCPeerConnection.prototype.addTrack=function(){var e=r.apply(this,arguments);e._pc=this;return e}}e.RTCRtpSender.prototype.getStats=function(){var e=this;return this._pc.getStats().then(function(t){return o(t,e.track,true)})}}if(!("getStats"in e.RTCRtpReceiver.prototype)){var i=e.RTCPeerConnection.prototype.getReceivers;if(i){e.RTCPeerConnection.prototype.getReceivers=function(){var e=this;var t=i.apply(e,[]);t.forEach(function(t){t._pc=e});return t}}n.wrapPeerConnectionEvent(e,"track",function(e){e.receiver._pc=e.srcElement;return e});e.RTCRtpReceiver.prototype.getStats=function(){var e=this;return this._pc.getStats().then(function(t){return o(t,e.track,false)})}}if(!("getStats"in e.RTCRtpSender.prototype&&"getStats"in e.RTCRtpReceiver.prototype)){return}var a=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){var t=this;if(arguments.length>0&&arguments[0]instanceof e.MediaStreamTrack){var r=arguments[0];var n;var i;var o;t.getSenders().forEach(function(e){if(e.track===r){if(n){o=true}else{n=e}}});t.getReceivers().forEach(function(e){if(e.track===r){if(i){o=true}else{i=e}}return e.track===r});if(o||n&&i){return Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError"))}else if(n){return n.getStats()}else if(i){return i.getStats()}return Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return a.apply(t,arguments)}},shimSourceObject:function(e){var t=e&&e.URL;if(typeof e==="object"){if(e.HTMLMediaElement&&!("srcObject"in e.HTMLMediaElement.prototype)){Object.defineProperty(e.HTMLMediaElement.prototype,"srcObject",{get:function(){return this._srcObject},set:function(e){var r=this;this._srcObject=e;if(this.src){t.revokeObjectURL(this.src)}if(!e){this.src="";return undefined}this.src=t.createObjectURL(e);e.addEventListener("addtrack",function(){if(r.src){t.revokeObjectURL(r.src)}r.src=t.createObjectURL(e)});e.addEventListener("removetrack",function(){if(r.src){t.revokeObjectURL(r.src)}r.src=t.createObjectURL(e)})}})}}},shimAddTrackRemoveTrackWithNative:function(e){e.RTCPeerConnection.prototype.getLocalStreams=function(){var e=this;this._shimmedLocalStreams=this._shimmedLocalStreams||{};return Object.keys(this._shimmedLocalStreams).map(function(t){return e._shimmedLocalStreams[t][0]})};var t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,r){if(!r){return t.apply(this,arguments)}this._shimmedLocalStreams=this._shimmedLocalStreams||{};var n=t.apply(this,arguments);if(!this._shimmedLocalStreams[r.id]){this._shimmedLocalStreams[r.id]=[r,n]}else if(this._shimmedLocalStreams[r.id].indexOf(n)===-1){this._shimmedLocalStreams[r.id].push(n)}return n};var r=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){var t=this;this._shimmedLocalStreams=this._shimmedLocalStreams||{};e.getTracks().forEach(function(e){var r=t.getSenders().find(function(t){return t.track===e});if(r){throw new DOMException("Track already exists.","InvalidAccessError")}});var n=t.getSenders();r.apply(this,arguments);var i=t.getSenders().filter(function(e){return n.indexOf(e)===-1});this._shimmedLocalStreams[e.id]=[e].concat(i)};var n=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){this._shimmedLocalStreams=this._shimmedLocalStreams||{};delete this._shimmedLocalStreams[e.id];return n.apply(this,arguments)};var i=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){var t=this;this._shimmedLocalStreams=this._shimmedLocalStreams||{};if(e){Object.keys(this._shimmedLocalStreams).forEach(function(r){var n=t._shimmedLocalStreams[r].indexOf(e);if(n!==-1){t._shimmedLocalStreams[r].splice(n,1)}if(t._shimmedLocalStreams[r].length===1){delete t._shimmedLocalStreams[r]}})}return i.apply(this,arguments)}},shimAddTrackRemoveTrack:function(e){var t=n.detectBrowser(e);if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65){return this.shimAddTrackRemoveTrackWithNative(e)}var r=e.RTCPeerConnection.prototype.getLocalStreams;e.RTCPeerConnection.prototype.getLocalStreams=function(){var e=this;var t=r.apply(this);e._reverseStreams=e._reverseStreams||{};return t.map(function(t){return e._reverseStreams[t.id]})};var i=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(t){var r=this;r._streams=r._streams||{};r._reverseStreams=r._reverseStreams||{};t.getTracks().forEach(function(e){var t=r.getSenders().find(function(t){return t.track===e});if(t){throw new DOMException("Track already exists.","InvalidAccessError")}});if(!r._reverseStreams[t.id]){var n=new e.MediaStream(t.getTracks());r._streams[t.id]=n;r._reverseStreams[n.id]=t;t=n}i.apply(r,[t])};var a=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){var t=this;t._streams=t._streams||{};t._reverseStreams=t._reverseStreams||{};a.apply(t,[t._streams[e.id]||e]);delete t._reverseStreams[t._streams[e.id]?t._streams[e.id].id:e.id];delete t._streams[e.id]};e.RTCPeerConnection.prototype.addTrack=function(t,r){var n=this;if(n.signalingState==="closed"){throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError")}var i=[].slice.call(arguments,1);if(i.length!==1||!i[0].getTracks().find(function(e){return e===t})){throw new DOMException("The adapter.js addTrack polyfill only supports a single "+" stream which is associated with the specified track.","NotSupportedError")}var a=n.getSenders().find(function(e){return e.track===t});if(a){throw new DOMException("Track already exists.","InvalidAccessError")}n._streams=n._streams||{};n._reverseStreams=n._reverseStreams||{};var o=n._streams[r.id];if(o){o.addTrack(t);Promise.resolve().then(function(){n.dispatchEvent(new Event("negotiationneeded"))})}else{var s=new e.MediaStream([t]);n._streams[r.id]=s;n._reverseStreams[s.id]=r;n.addStream(s)}return n.getSenders().find(function(e){return e.track===t})};function o(e,t){var r=t.sdp;Object.keys(e._reverseStreams||[]).forEach(function(t){var n=e._reverseStreams[t];var i=e._streams[n.id];r=r.replace(new RegExp(i.id,"g"),n.id)});return new RTCSessionDescription({type:t.type,sdp:r})}function s(e,t){var r=t.sdp;Object.keys(e._reverseStreams||[]).forEach(function(t){var n=e._reverseStreams[t];var i=e._streams[n.id];r=r.replace(new RegExp(n.id,"g"),i.id)});return new RTCSessionDescription({type:t.type,sdp:r})}["createOffer","createAnswer"].forEach(function(t){var r=e.RTCPeerConnection.prototype[t];e.RTCPeerConnection.prototype[t]=function(){var e=this;var t=arguments;var n=arguments.length&&typeof arguments[0]==="function";if(n){return r.apply(e,[function(r){var n=o(e,r);t[0].apply(null,[n])},function(e){if(t[1]){t[1].apply(null,e)}},arguments[2]])}return r.apply(e,arguments).then(function(t){return o(e,t)})}});var c=e.RTCPeerConnection.prototype.setLocalDescription;e.RTCPeerConnection.prototype.setLocalDescription=function(){var e=this;if(!arguments.length||!arguments[0].type){return c.apply(e,arguments)}arguments[0]=s(e,arguments[0]);return c.apply(e,arguments)};var d=Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(e.RTCPeerConnection.prototype,"localDescription",{get:function(){var e=this;var t=d.get.apply(this);if(t.type===""){return t}return o(e,t)}});e.RTCPeerConnection.prototype.removeTrack=function(e){var t=this;if(t.signalingState==="closed"){throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError")}if(!e._pc){throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack "+"does not implement interface RTCRtpSender.","TypeError")}var r=e._pc===t;if(!r){throw new DOMException("Sender was not created by this connection.","InvalidAccessError")}t._streams=t._streams||{};var n;Object.keys(t._streams).forEach(function(r){var i=t._streams[r].getTracks().find(function(t){return e.track===t});if(i){n=t._streams[r]}});if(n){if(n.getTracks().length===1){t.removeStream(t._reverseStreams[n.id])}else{n.removeTrack(e.track)}t.dispatchEvent(new Event("negotiationneeded"))}}},shimPeerConnection:function(e){var t=n.detectBrowser(e);if(!e.RTCPeerConnection&&e.webkitRTCPeerConnection){e.RTCPeerConnection=function(t,r){i("PeerConnection");if(t&&t.iceTransportPolicy){t.iceTransports=t.iceTransportPolicy}return new e.webkitRTCPeerConnection(t,r)};e.RTCPeerConnection.prototype=e.webkitRTCPeerConnection.prototype;if(e.webkitRTCPeerConnection.generateCertificate){Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:function(){return e.webkitRTCPeerConnection.generateCertificate}})}}else{var r=e.RTCPeerConnection;e.RTCPeerConnection=function(e,t){if(e&&e.iceServers){var i=[];for(var a=0;a<e.iceServers.length;a++){var o=e.iceServers[a];if(!o.hasOwnProperty("urls")&&o.hasOwnProperty("url")){n.deprecated("RTCIceServer.url","RTCIceServer.urls");o=JSON.parse(JSON.stringify(o));o.urls=o.url;i.push(o)}else{i.push(e.iceServers[a])}}e.iceServers=i}return new r(e,t)};e.RTCPeerConnection.prototype=r.prototype;Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:function(){return r.generateCertificate}})}var a=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(e,t,r){var n=this;var i=arguments;if(arguments.length>0&&typeof e==="function"){return a.apply(this,arguments)}if(a.length===0&&(arguments.length===0||typeof arguments[0]!=="function")){return a.apply(this,[])}var o=function(e){var t={};var r=e.result();r.forEach(function(e){var r={id:e.id,timestamp:e.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[e.type]||e.type};e.names().forEach(function(t){r[t]=e.stat(t)});t[r.id]=r});return t};var s=function(e){return new Map(Object.keys(e).map(function(t){return[t,e[t]]}))};if(arguments.length>=2){var c=function(e){i[1](s(o(e)))};return a.apply(this,[c,arguments[0]])}return new Promise(function(e,t){a.apply(n,[function(t){e(s(o(t)))},t])}).then(t,r)};if(t.version<51){["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(t){var r=e.RTCPeerConnection.prototype[t];e.RTCPeerConnection.prototype[t]=function(){var e=arguments;var t=this;var n=new Promise(function(n,i){r.apply(t,[e[0],n,i])});if(e.length<2){return n}return n.then(function(){e[1].apply(null,[])},function(t){if(e.length>=3){e[2].apply(null,[t])}})}})}if(t.version<52){["createOffer","createAnswer"].forEach(function(t){var r=e.RTCPeerConnection.prototype[t];e.RTCPeerConnection.prototype[t]=function(){var e=this;if(arguments.length<1||arguments.length===1&&typeof arguments[0]==="object"){var t=arguments.length===1?arguments[0]:undefined;return new Promise(function(n,i){r.apply(e,[n,i,t])})}return r.apply(this,arguments)}})}["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(t){var r=e.RTCPeerConnection.prototype[t];e.RTCPeerConnection.prototype[t]=function(){arguments[0]=new(t==="addIceCandidate"?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]);return r.apply(this,arguments)}});var o=e.RTCPeerConnection.prototype.addIceCandidate;e.RTCPeerConnection.prototype.addIceCandidate=function(){if(!arguments[0]){if(arguments[1]){arguments[1].apply(null)}return Promise.resolve()}return o.apply(this,arguments)}},fixNegotiationNeeded:function(e){n.wrapPeerConnectionEvent(e,"negotiationneeded",function(e){var t=e.target;if(t.signalingState!=="stable"){return}return e})},shimGetDisplayMedia:function(e,t){if("getDisplayMedia"in e.navigator){return}if(typeof t!=="function"){console.error("shimGetDisplayMedia: getSourceId argument is not "+"a function");return}navigator.getDisplayMedia=function(e){return t(e).then(function(t){e.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:t,maxFrameRate:e.video.frameRate||3}};return navigator.mediaDevices.getUserMedia(e)})}}}},{"../utils.js":14,"./getusermedia":6}],6:[function(e,t,r){"use strict";var n=e("../utils.js");var i=n.log;t.exports=function(e){var t=n.detectBrowser(e);var r=e&&e.navigator;var a=function(e){if(typeof e!=="object"||e.mandatory||e.optional){return e}var t={};Object.keys(e).forEach(function(r){if(r==="require"||r==="advanced"||r==="mediaSource"){return}var n=typeof e[r]==="object"?e[r]:{ideal:e[r]};if(n.exact!==undefined&&typeof n.exact==="number"){n.min=n.max=n.exact}var i=function(e,t){if(e){return e+t.charAt(0).toUpperCase()+t.slice(1)}return t==="deviceId"?"sourceId":t};if(n.ideal!==undefined){t.optional=t.optional||[];var a={};if(typeof n.ideal==="number"){a[i("min",r)]=n.ideal;t.optional.push(a);a={};a[i("max",r)]=n.ideal;t.optional.push(a)}else{a[i("",r)]=n.ideal;t.optional.push(a)}}if(n.exact!==undefined&&typeof n.exact!=="number"){t.mandatory=t.mandatory||{};t.mandatory[i("",r)]=n.exact}else{["min","max"].forEach(function(e){if(n[e]!==undefined){t.mandatory=t.mandatory||{};t.mandatory[i(e,r)]=n[e]}})}});if(e.advanced){t.optional=(t.optional||[]).concat(e.advanced)}return t};var o=function(e,n){if(t.version>=61){return n(e)}e=JSON.parse(JSON.stringify(e));if(e&&typeof e.audio==="object"){var o=function(e,t,r){if(t in e&&!(r in e)){e[r]=e[t];delete e[t]}};e=JSON.parse(JSON.stringify(e));o(e.audio,"autoGainControl","googAutoGainControl");o(e.audio,"noiseSuppression","googNoiseSuppression");e.audio=a(e.audio)}if(e&&typeof e.video==="object"){var s=e.video.facingMode;s=s&&(typeof s==="object"?s:{ideal:s});var c=t.version<66;if(s&&(s.exact==="user"||s.exact==="environment"||s.ideal==="user"||s.ideal==="environment")&&!(r.mediaDevices.getSupportedConstraints&&r.mediaDevices.getSupportedConstraints().facingMode&&!c)){delete e.video.facingMode;var d;if(s.exact==="environment"||s.ideal==="environment"){d=["back","rear"]}else if(s.exact==="user"||s.ideal==="user"){d=["front"]}if(d){return r.mediaDevices.enumerateDevices().then(function(t){t=t.filter(function(e){return e.kind==="videoinput"});var r=t.find(function(e){return d.some(function(t){return e.label.toLowerCase().indexOf(t)!==-1})});if(!r&&t.length&&d.indexOf("back")!==-1){r=t[t.length-1]}if(r){e.video.deviceId=s.exact?{exact:r.deviceId}:{ideal:r.deviceId}}e.video=a(e.video);i("chrome: "+JSON.stringify(e));return n(e)})}}e.video=a(e.video)}i("chrome: "+JSON.stringify(e));return n(e)};var s=function(e){return{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[e.name]||e.name,message:e.message,constraint:e.constraint||e.constraintName,toString:function(){return this.name+(this.message&&": ")+this.message}}};var c=function(e,t,n){o(e,function(e){r.webkitGetUserMedia(e,t,function(e){if(n){n(s(e))}})})};r.getUserMedia=c;var d=function(e){return new Promise(function(t,n){r.getUserMedia(e,t,n)})};if(!r.mediaDevices){r.mediaDevices={getUserMedia:d,enumerateDevices:function(){return new Promise(function(t){var r={audio:"audioinput",video:"videoinput"};return e.MediaStreamTrack.getSources(function(e){t(e.map(function(e){return{label:e.label,kind:r[e.kind],deviceId:e.id,groupId:""}}))})})},getSupportedConstraints:function(){return{deviceId:true,echoCancellation:true,facingMode:true,frameRate:true,height:true,width:true}}}}if(!r.mediaDevices.getUserMedia){r.mediaDevices.getUserMedia=function(e){return d(e)}}else{var p=r.mediaDevices.getUserMedia.bind(r.mediaDevices);r.mediaDevices.getUserMedia=function(e){return o(e,function(e){return p(e).then(function(t){if(e.audio&&!t.getAudioTracks().length||e.video&&!t.getVideoTracks().length){t.getTracks().forEach(function(e){e.stop()});throw new DOMException("","NotFoundError")}return t},function(e){return Promise.reject(s(e))})})}}if(typeof r.mediaDevices.addEventListener==="undefined"){r.mediaDevices.addEventListener=function(){i("Dummy mediaDevices.addEventListener called.")}}if(typeof r.mediaDevices.removeEventListener==="undefined"){r.mediaDevices.removeEventListener=function(){i("Dummy mediaDevices.removeEventListener called.")}}}},{"../utils.js":14}],7:[function(e,t,r){"use strict";var n=e("sdp");var i=e("./utils");t.exports={shimRTCIceCandidate:function(e){if(!e.RTCIceCandidate||e.RTCIceCandidate&&"foundation"in e.RTCIceCandidate.prototype){return}var t=e.RTCIceCandidate;e.RTCIceCandidate=function(e){if(typeof e==="object"&&e.candidate&&e.candidate.indexOf("a=")===0){e=JSON.parse(JSON.stringify(e));e.candidate=e.candidate.substr(2)}if(e.candidate&&e.candidate.length){var r=new t(e);var i=n.parseCandidate(e.candidate);var a=Object.assign(r,i);a.toJSON=function(){return{candidate:a.candidate,sdpMid:a.sdpMid,sdpMLineIndex:a.sdpMLineIndex,usernameFragment:a.usernameFragment}};return a}return new t(e)};e.RTCIceCandidate.prototype=t.prototype;i.wrapPeerConnectionEvent(e,"icecandidate",function(t){if(t.candidate){Object.defineProperty(t,"candidate",{value:new e.RTCIceCandidate(t.candidate),writable:"false"})}return t})},shimCreateObjectURL:function(e){var t=e&&e.URL;if(!(typeof e==="object"&&e.HTMLMediaElement&&"srcObject"in e.HTMLMediaElement.prototype&&t.createObjectURL&&t.revokeObjectURL)){return undefined}var r=t.createObjectURL.bind(t);var n=t.revokeObjectURL.bind(t);var a=new Map,o=0;t.createObjectURL=function(e){if("getTracks"in e){var t="polyblob:"+ ++o;a.set(t,e);i.deprecated("URL.createObjectURL(stream)","elem.srcObject = stream");return t}return r(e)};t.revokeObjectURL=function(e){n(e);a.delete(e)};var s=Object.getOwnPropertyDescriptor(e.HTMLMediaElement.prototype,"src");Object.defineProperty(e.HTMLMediaElement.prototype,"src",{get:function(){return s.get.apply(this)},set:function(e){this.srcObject=a.get(e)||null;return s.set.apply(this,[e])}});var c=e.HTMLMediaElement.prototype.setAttribute;e.HTMLMediaElement.prototype.setAttribute=function(){if(arguments.length===2&&(""+arguments[0]).toLowerCase()==="src"){this.srcObject=a.get(arguments[1])||null}return c.apply(this,arguments)}},shimMaxMessageSize:function(e){if(e.RTCSctpTransport||!e.RTCPeerConnection){return}var t=i.detectBrowser(e);if(!("sctp"in e.RTCPeerConnection.prototype)){Object.defineProperty(e.RTCPeerConnection.prototype,"sctp",{get:function(){return typeof this._sctp==="undefined"?null:this._sctp}})}var r=function(e){var t=n.splitSections(e.sdp);t.shift();return t.some(function(e){var t=n.parseMLine(e);return t&&t.kind==="application"&&t.protocol.indexOf("SCTP")!==-1})};var a=function(e){var t=e.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(t===null||t.length<2){return-1}var r=parseInt(t[1],10);return r!==r?-1:r};var o=function(e){var r=65536;if(t.browser==="firefox"){if(t.version<57){if(e===-1){r=16384}else{r=2147483637}}else if(t.version<60){r=t.version===57?65535:65536}else{r=2147483637}}return r};var s=function(e,r){var i=65536;if(t.browser==="firefox"&&t.version===57){i=65535}var a=n.matchPrefix(e.sdp,"a=max-message-size:");if(a.length>0){i=parseInt(a[0].substr(19),10)}else if(t.browser==="firefox"&&r!==-1){i=2147483637}return i};var c=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){var e=this;e._sctp=null;if(r(arguments[0])){var t=a(arguments[0]);var n=o(t);var i=s(arguments[0],t);var d;if(n===0&&i===0){d=Number.POSITIVE_INFINITY}else if(n===0||i===0){d=Math.max(n,i)}else{d=Math.min(n,i)}var p={};Object.defineProperty(p,"maxMessageSize",{get:function(){return d}});e._sctp=p}return c.apply(e,arguments)}},shimSendThrowTypeError:function(e){if(!(e.RTCPeerConnection&&"createDataChannel"in e.RTCPeerConnection.prototype)){return}function t(e,t){var r=e.send;e.send=function(){var n=arguments[0];var i=n.length||n.size||n.byteLength;if(e.readyState==="open"&&t.sctp&&i>t.sctp.maxMessageSize){throw new TypeError("Message too large (can send a maximum of "+t.sctp.maxMessageSize+" bytes)")}return r.apply(e,arguments)}}var r=e.RTCPeerConnection.prototype.createDataChannel;e.RTCPeerConnection.prototype.createDataChannel=function(){var e=this;var n=r.apply(e,arguments);t(n,e);return n};i.wrapPeerConnectionEvent(e,"datachannel",function(e){t(e.channel,e.target);return e})}}},{"./utils":14,sdp:2}],8:[function(e,t,r){"use strict";var n=e("../utils");var i=e("./filtericeservers");var a=e("rtcpeerconnection-shim");t.exports={shimGetUserMedia:e("./getusermedia"),shimPeerConnection:function(e){var t=n.detectBrowser(e);if(e.RTCIceGatherer){if(!e.RTCIceCandidate){e.RTCIceCandidate=function(e){return e}}if(!e.RTCSessionDescription){e.RTCSessionDescription=function(e){return e}}if(t.version<15025){var r=Object.getOwnPropertyDescriptor(e.MediaStreamTrack.prototype,"enabled");Object.defineProperty(e.MediaStreamTrack.prototype,"enabled",{set:function(e){r.set.call(this,e);var t=new Event("enabled");t.enabled=e;this.dispatchEvent(t)}})}}if(e.RTCRtpSender&&!("dtmf"in e.RTCRtpSender.prototype)){Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get:function(){if(this._dtmf===undefined){if(this.track.kind==="audio"){this._dtmf=new e.RTCDtmfSender(this)}else if(this.track.kind==="video"){this._dtmf=null}}return this._dtmf}})}if(e.RTCDtmfSender&&!e.RTCDTMFSender){e.RTCDTMFSender=e.RTCDtmfSender}var o=a(e,t.version);e.RTCPeerConnection=function(e){if(e&&e.iceServers){e.iceServers=i(e.iceServers)}return new o(e)};e.RTCPeerConnection.prototype=o.prototype},shimReplaceTrack:function(e){if(e.RTCRtpSender&&!("replaceTrack"in e.RTCRtpSender.prototype)){e.RTCRtpSender.prototype.replaceTrack=e.RTCRtpSender.prototype.setTrack}}}},{"../utils":14,"./filtericeservers":9,"./getusermedia":10,"rtcpeerconnection-shim":1}],9:[function(e,t,r){"use strict";var n=e("../utils");t.exports=function(e,t){var r=false;e=JSON.parse(JSON.stringify(e));return e.filter(function(e){if(e&&(e.urls||e.url)){var i=e.urls||e.url;if(e.url&&!e.urls){n.deprecated("RTCIceServer.url","RTCIceServer.urls")}var a=typeof i==="string";if(a){i=[i]}i=i.filter(function(e){var n=e.indexOf("turn:")===0&&e.indexOf("transport=udp")!==-1&&e.indexOf("turn:[")===-1&&!r;if(n){r=true;return true}return e.indexOf("stun:")===0&&t>=14393&&e.indexOf("?transport=udp")===-1});delete e.url;e.urls=a?i[0]:i;return!!i.length}})}},{"../utils":14}],10:[function(e,t,r){"use strict";t.exports=function(e){var t=e&&e.navigator;var r=function(e){return{name:{PermissionDeniedError:"NotAllowedError"}[e.name]||e.name,message:e.message,constraint:e.constraint,toString:function(){return this.name}}};var n=t.mediaDevices.getUserMedia.bind(t.mediaDevices);t.mediaDevices.getUserMedia=function(e){return n(e).catch(function(e){return Promise.reject(r(e))})}}},{}],11:[function(e,t,r){"use strict";var n=e("../utils");t.exports={shimGetUserMedia:e("./getusermedia"),shimOnTrack:function(e){if(typeof e==="object"&&e.RTCPeerConnection&&!("ontrack"in e.RTCPeerConnection.prototype)){Object.defineProperty(e.RTCPeerConnection.prototype,"ontrack",{get:function(){return this._ontrack},set:function(e){if(this._ontrack){this.removeEventListener("track",this._ontrack);this.removeEventListener("addstream",this._ontrackpoly)}this.addEventListener("track",this._ontrack=e);this.addEventListener("addstream",this._ontrackpoly=function(e){e.stream.getTracks().forEach(function(t){var r=new Event("track");r.track=t;r.receiver={track:t};r.transceiver={receiver:r.receiver};r.streams=[e.stream];this.dispatchEvent(r)}.bind(this))}.bind(this))}})}if(typeof e==="object"&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)){Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get:function(){return{receiver:this.receiver}}})}},shimSourceObject:function(e){if(typeof e==="object"){if(e.HTMLMediaElement&&!("srcObject"in e.HTMLMediaElement.prototype)){Object.defineProperty(e.HTMLMediaElement.prototype,"srcObject",{get:function(){return this.mozSrcObject},set:function(e){this.mozSrcObject=e}})}}},shimPeerConnection:function(e){var t=n.detectBrowser(e);if(typeof e!=="object"||!(e.RTCPeerConnection||e.mozRTCPeerConnection)){return}if(!e.RTCPeerConnection){e.RTCPeerConnection=function(r,n){if(t.version<38){if(r&&r.iceServers){var i=[];for(var a=0;a<r.iceServers.length;a++){var o=r.iceServers[a];if(o.hasOwnProperty("urls")){for(var s=0;s<o.urls.length;s++){var c={url:o.urls[s]};if(o.urls[s].indexOf("turn")===0){c.username=o.username;c.credential=o.credential}i.push(c)}}else{i.push(r.iceServers[a])}}r.iceServers=i}}return new e.mozRTCPeerConnection(r,n)};e.RTCPeerConnection.prototype=e.mozRTCPeerConnection.prototype;if(e.mozRTCPeerConnection.generateCertificate){Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:function(){return e.mozRTCPeerConnection.generateCertificate}})}e.RTCSessionDescription=e.mozRTCSessionDescription;e.RTCIceCandidate=e.mozRTCIceCandidate}["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(t){var r=e.RTCPeerConnection.prototype[t];e.RTCPeerConnection.prototype[t]=function(){arguments[0]=new(t==="addIceCandidate"?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]);return r.apply(this,arguments)}});var r=e.RTCPeerConnection.prototype.addIceCandidate;e.RTCPeerConnection.prototype.addIceCandidate=function(){if(!arguments[0]){if(arguments[1]){arguments[1].apply(null)}return Promise.resolve()}return r.apply(this,arguments)};var i=function(e){var t=new Map;Object.keys(e).forEach(function(r){t.set(r,e[r]);t[r]=e[r]});return t};var a={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"};var o=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(e,r,n){return o.apply(this,[e||null]).then(function(e){if(t.version<48){e=i(e)}if(t.version<53&&!r){try{e.forEach(function(e){e.type=a[e.type]||e.type})}catch(t){if(t.name!=="TypeError"){throw t}e.forEach(function(t,r){e.set(r,Object.assign({},t,{type:a[t.type]||t.type}))})}}return e}).then(r,n)}},shimSenderGetStats:function(e){if(!(typeof e==="object"&&e.RTCPeerConnection&&e.RTCRtpSender)){return}if(e.RTCRtpSender&&"getStats"in e.RTCRtpSender.prototype){return}var t=e.RTCPeerConnection.prototype.getSenders;if(t){e.RTCPeerConnection.prototype.getSenders=function(){var e=this;var r=t.apply(e,[]);r.forEach(function(t){t._pc=e});return r}}var r=e.RTCPeerConnection.prototype.addTrack;if(r){e.RTCPeerConnection.prototype.addTrack=function(){var e=r.apply(this,arguments);e._pc=this;return e}}e.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}},shimReceiverGetStats:function(e){if(!(typeof e==="object"&&e.RTCPeerConnection&&e.RTCRtpSender)){return}if(e.RTCRtpSender&&"getStats"in e.RTCRtpReceiver.prototype){return}var t=e.RTCPeerConnection.prototype.getReceivers;if(t){e.RTCPeerConnection.prototype.getReceivers=function(){var e=this;var r=t.apply(e,[]);r.forEach(function(t){t._pc=e});return r}}n.wrapPeerConnectionEvent(e,"track",function(e){e.receiver._pc=e.srcElement;return e});e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}},shimRemoveStream:function(e){if(!e.RTCPeerConnection||"removeStream"in e.RTCPeerConnection.prototype){return}e.RTCPeerConnection.prototype.removeStream=function(e){var t=this;n.deprecated("removeStream","removeTrack");this.getSenders().forEach(function(r){if(r.track&&e.getTracks().indexOf(r.track)!==-1){t.removeTrack(r)}})}},shimRTCDataChannel:function(e){if(e.DataChannel&&!e.RTCDataChannel){e.RTCDataChannel=e.DataChannel}},shimGetDisplayMedia:function(e,t){if("getDisplayMedia"in e.navigator){return}navigator.getDisplayMedia=function(e){if(!(e&&e.video)){var r=new DOMException("getDisplayMedia without video "+"constraints is undefined");r.name="NotFoundError";r.code=8;return Promise.reject(r)}if(e.video===true){e.video={mediaSource:t}}else{e.video.mediaSource=t}return navigator.mediaDevices.getUserMedia(e)}}}},{"../utils":14,"./getusermedia":12}],12:[function(e,t,r){"use strict";var n=e("../utils");var i=n.log;t.exports=function(e){var t=n.detectBrowser(e);var r=e&&e.navigator;var a=e&&e.MediaStreamTrack;var o=function(e){return{name:{InternalError:"NotReadableError",NotSupportedError:"TypeError",PermissionDeniedError:"NotAllowedError",SecurityError:"NotAllowedError"}[e.name]||e.name,message:{"The operation is insecure.":"The request is not allowed by the "+"user agent or the platform in the current context."}[e.message]||e.message,constraint:e.constraint,toString:function(){return this.name+(this.message&&": ")+this.message}}};var s=function(e,n,a){var s=function(e){if(typeof e!=="object"||e.require){return e}var t=[];Object.keys(e).forEach(function(r){if(r==="require"||r==="advanced"||r==="mediaSource"){return}var n=e[r]=typeof e[r]==="object"?e[r]:{ideal:e[r]};if(n.min!==undefined||n.max!==undefined||n.exact!==undefined){t.push(r)}if(n.exact!==undefined){if(typeof n.exact==="number"){n.min=n.max=n.exact}else{e[r]=n.exact}delete n.exact}if(n.ideal!==undefined){e.advanced=e.advanced||[];var i={};if(typeof n.ideal==="number"){i[r]={min:n.ideal,max:n.ideal}}else{i[r]=n.ideal}e.advanced.push(i);delete n.ideal;if(!Object.keys(n).length){delete e[r]}}});if(t.length){e.require=t}return e};e=JSON.parse(JSON.stringify(e));if(t.version<38){i("spec: "+JSON.stringify(e));if(e.audio){e.audio=s(e.audio)}if(e.video){e.video=s(e.video)}i("ff37: "+JSON.stringify(e))}return r.mozGetUserMedia(e,n,function(e){a(o(e))})};var c=function(e){return new Promise(function(t,r){s(e,t,r)})};if(!r.mediaDevices){r.mediaDevices={getUserMedia:c,addEventListener:function(){},removeEventListener:function(){}}}r.mediaDevices.enumerateDevices=r.mediaDevices.enumerateDevices||function(){return new Promise(function(e){var t=[{kind:"audioinput",deviceId:"default",label:"",groupId:""},{kind:"videoinput",deviceId:"default",label:"",groupId:""}];e(t)})};if(t.version<41){var d=r.mediaDevices.enumerateDevices.bind(r.mediaDevices);r.mediaDevices.enumerateDevices=function(){return d().then(undefined,function(e){if(e.name==="NotFoundError"){return[]}throw e})}}if(t.version<49){var p=r.mediaDevices.getUserMedia.bind(r.mediaDevices);r.mediaDevices.getUserMedia=function(e){return p(e).then(function(t){if(e.audio&&!t.getAudioTracks().length||e.video&&!t.getVideoTracks().length){t.getTracks().forEach(function(e){e.stop()});throw new DOMException("The object can not be found here.","NotFoundError")}return t},function(e){return Promise.reject(o(e))})}}if(!(t.version>55&&"autoGainControl"in r.mediaDevices.getSupportedConstraints())){var f=function(e,t,r){if(t in e&&!(r in e)){e[r]=e[t];delete e[t]}};var u=r.mediaDevices.getUserMedia.bind(r.mediaDevices);r.mediaDevices.getUserMedia=function(e){if(typeof e==="object"&&typeof e.audio==="object"){e=JSON.parse(JSON.stringify(e));f(e.audio,"autoGainControl","mozAutoGainControl");f(e.audio,"noiseSuppression","mozNoiseSuppression")}return u(e)};if(a&&a.prototype.getSettings){var l=a.prototype.getSettings;a.prototype.getSettings=function(){var e=l.apply(this,arguments);f(e,"mozAutoGainControl","autoGainControl");f(e,"mozNoiseSuppression","noiseSuppression");return e}}if(a&&a.prototype.applyConstraints){var v=a.prototype.applyConstraints;a.prototype.applyConstraints=function(e){if(this.kind==="audio"&&typeof e==="object"){e=JSON.parse(JSON.stringify(e));f(e,"autoGainControl","mozAutoGainControl");f(e,"noiseSuppression","mozNoiseSuppression")}return v.apply(this,[e])}}}r.getUserMedia=function(e,i,a){if(t.version<44){return s(e,i,a)}n.deprecated("navigator.getUserMedia","navigator.mediaDevices.getUserMedia");r.mediaDevices.getUserMedia(e).then(i,a)}}},{"../utils":14}],13:[function(e,t,r){"use strict";var n=e("../utils");t.exports={shimLocalStreamsAPI:function(e){if(typeof e!=="object"||!e.RTCPeerConnection){return}if(!("getLocalStreams"in e.RTCPeerConnection.prototype)){e.RTCPeerConnection.prototype.getLocalStreams=function(){if(!this._localStreams){this._localStreams=[]}return this._localStreams}}if(!("getStreamById"in e.RTCPeerConnection.prototype)){e.RTCPeerConnection.prototype.getStreamById=function(e){var t=null;if(this._localStreams){this._localStreams.forEach(function(r){if(r.id===e){t=r}})}if(this._remoteStreams){this._remoteStreams.forEach(function(r){if(r.id===e){t=r}})}return t}}if(!("addStream"in e.RTCPeerConnection.prototype)){var t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addStream=function(e){if(!this._localStreams){this._localStreams=[]}if(this._localStreams.indexOf(e)===-1){this._localStreams.push(e)}var r=this;e.getTracks().forEach(function(n){t.call(r,n,e)})};e.RTCPeerConnection.prototype.addTrack=function(e,r){if(r){if(!this._localStreams){this._localStreams=[r]}else if(this._localStreams.indexOf(r)===-1){this._localStreams.push(r)}}return t.call(this,e,r)}}if(!("removeStream"in e.RTCPeerConnection.prototype)){e.RTCPeerConnection.prototype.removeStream=function(e){if(!this._localStreams){this._localStreams=[]}var t=this._localStreams.indexOf(e);if(t===-1){return}this._localStreams.splice(t,1);var r=this;var n=e.getTracks();this.getSenders().forEach(function(e){if(n.indexOf(e.track)!==-1){r.removeTrack(e)}})}}},shimRemoteStreamsAPI:function(e){if(typeof e!=="object"||!e.RTCPeerConnection){return}if(!("getRemoteStreams"in e.RTCPeerConnection.prototype)){e.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}}if(!("onaddstream"in e.RTCPeerConnection.prototype)){Object.defineProperty(e.RTCPeerConnection.prototype,"onaddstream",{get:function(){return this._onaddstream},set:function(e){var t=this;if(this._onaddstream){this.removeEventListener("addstream",this._onaddstream);this.removeEventListener("track",this._onaddstreampoly)}this.addEventListener("addstream",this._onaddstream=e);this.addEventListener("track",this._onaddstreampoly=function(e){e.streams.forEach(function(e){if(!t._remoteStreams){t._remoteStreams=[]}if(t._remoteStreams.indexOf(e)>=0){return}t._remoteStreams.push(e);var r=new Event("addstream");r.stream=e;t.dispatchEvent(r)})})}})}},shimCallbacksAPI:function(e){if(typeof e!=="object"||!e.RTCPeerConnection){return}var t=e.RTCPeerConnection.prototype;var r=t.createOffer;var n=t.createAnswer;var i=t.setLocalDescription;var a=t.setRemoteDescription;var o=t.addIceCandidate;t.createOffer=function(e,t){var n=arguments.length>=2?arguments[2]:arguments[0];var i=r.apply(this,[n]);if(!t){return i}i.then(e,t);return Promise.resolve()};t.createAnswer=function(e,t){var r=arguments.length>=2?arguments[2]:arguments[0];var i=n.apply(this,[r]);if(!t){return i}i.then(e,t);return Promise.resolve()};var s=function(e,t,r){var n=i.apply(this,[e]);if(!r){return n}n.then(t,r);return Promise.resolve()};t.setLocalDescription=s;s=function(e,t,r){var n=a.apply(this,[e]);if(!r){return n}n.then(t,r);return Promise.resolve()};t.setRemoteDescription=s;s=function(e,t,r){var n=o.apply(this,[e]);if(!r){return n}n.then(t,r);return Promise.resolve()};t.addIceCandidate=s},shimGetUserMedia:function(e){var t=e&&e.navigator;if(!t.getUserMedia){if(t.webkitGetUserMedia){t.getUserMedia=t.webkitGetUserMedia.bind(t)}else if(t.mediaDevices&&t.mediaDevices.getUserMedia){t.getUserMedia=function(e,r,n){t.mediaDevices.getUserMedia(e).then(r,n)}.bind(t)}}},shimRTCIceServerUrls:function(e){var t=e.RTCPeerConnection;e.RTCPeerConnection=function(e,r){if(e&&e.iceServers){var i=[];for(var a=0;a<e.iceServers.length;a++){var o=e.iceServers[a];if(!o.hasOwnProperty("urls")&&o.hasOwnProperty("url")){n.deprecated("RTCIceServer.url","RTCIceServer.urls");o=JSON.parse(JSON.stringify(o));o.urls=o.url;delete o.url;i.push(o)}else{i.push(e.iceServers[a])}}e.iceServers=i}return new t(e,r)};e.RTCPeerConnection.prototype=t.prototype;if("generateCertificate"in e.RTCPeerConnection){Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:function(){return t.generateCertificate}})}},shimTrackEventTransceiver:function(e){if(typeof e==="object"&&e.RTCPeerConnection&&"receiver"in e.RTCTrackEvent.prototype&&!e.RTCTransceiver){Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get:function(){return{receiver:this.receiver}}})}},shimCreateOfferLegacy:function(e){var t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(e){var r=this;if(e){if(typeof e.offerToReceiveAudio!=="undefined"){e.offerToReceiveAudio=!!e.offerToReceiveAudio}var n=r.getTransceivers().find(function(e){return e.sender.track&&e.sender.track.kind==="audio"});if(e.offerToReceiveAudio===false&&n){if(n.direction==="sendrecv"){if(n.setDirection){n.setDirection("sendonly")}else{n.direction="sendonly"}}else if(n.direction==="recvonly"){if(n.setDirection){n.setDirection("inactive")}else{n.direction="inactive"}}}else if(e.offerToReceiveAudio===true&&!n){r.addTransceiver("audio")}if(typeof e.offerToReceiveAudio!=="undefined"){e.offerToReceiveVideo=!!e.offerToReceiveVideo}var i=r.getTransceivers().find(function(e){return e.sender.track&&e.sender.track.kind==="video"});if(e.offerToReceiveVideo===false&&i){if(i.direction==="sendrecv"){i.setDirection("sendonly")}else if(i.direction==="recvonly"){i.setDirection("inactive")}}else if(e.offerToReceiveVideo===true&&!i){r.addTransceiver("video")}}return t.apply(r,arguments)}}}},{"../utils":14}],14:[function(e,t,r){"use strict";var n=true;var i=true;function a(e,t,r){var n=e.match(t);return n&&n.length>=r&&parseInt(n[r],10)}function o(e,t,r){if(!e.RTCPeerConnection){return}var n=e.RTCPeerConnection.prototype;var i=n.addEventListener;n.addEventListener=function(e,n){if(e!==t){return i.apply(this,arguments)}var a=function(e){var t=r(e);if(t){n(t)}};this._eventMap=this._eventMap||{};this._eventMap[n]=a;return i.apply(this,[e,a])};var a=n.removeEventListener;n.removeEventListener=function(e,r){if(e!==t||!this._eventMap||!this._eventMap[r]){return a.apply(this,arguments)}var n=this._eventMap[r];delete this._eventMap[r];return a.apply(this,[e,n])};Object.defineProperty(n,"on"+t,{get:function(){return this["_on"+t]},set:function(e){if(this["_on"+t]){this.removeEventListener(t,this["_on"+t]);delete this["_on"+t]}if(e){this.addEventListener(t,this["_on"+t]=e)}},enumerable:true,configurable:true})}t.exports={extractVersion:a,wrapPeerConnectionEvent:o,disableLog:function(e){if(typeof e!=="boolean"){return new Error("Argument type: "+typeof e+". Please use a boolean.")}n=e;return e?"adapter.js logging disabled":"adapter.js logging enabled"},disableWarnings:function(e){if(typeof e!=="boolean"){return new Error("Argument type: "+typeof e+". Please use a boolean.")}i=!e;return"adapter.js deprecation warnings "+(e?"disabled":"enabled")},log:function(){if(typeof window==="object"){if(n){return}if(typeof console!=="undefined"&&typeof console.log==="function"){console.log.apply(console,arguments)}}},deprecated:function(e,t){if(!i){return}console.warn(e+" is deprecated, please use "+t+" instead.")},detectBrowser:function(e){var t=e&&e.navigator;var r={};r.browser=null;r.version=null;if(typeof e==="undefined"||!e.navigator){r.browser="Not a browser.";return r}if(t.mozGetUserMedia){r.browser="firefox";r.version=a(t.userAgent,/Firefox\/(\d+)\./,1)}else if(t.webkitGetUserMedia){r.browser="chrome";r.version=a(t.userAgent,/Chrom(e|ium)\/(\d+)\./,2)}else if(t.mediaDevices&&t.userAgent.match(/Edge\/(\d+).(\d+)$/)){r.browser="edge";r.version=a(t.userAgent,/Edge\/(\d+).(\d+)$/,2)}else if(e.RTCPeerConnection&&t.userAgent.match(/AppleWebKit\/(\d+)\./)){r.browser="safari";r.version=a(t.userAgent,/AppleWebKit\/(\d+)\./,1)}else{r.browser="Not a supported browser.";return r}return r}}},{}]},{},[3])(3)});