@rongcloud/plugin-rtc 5.3.2 → 5.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +13 -8
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1 -1
- package/dist/index.umd.js +1 -1
- package/package.json +3 -3
package/dist/index.umd.js
CHANGED
|
@@ -12,4 +12,4 @@
|
|
|
12
12
|
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
13
13
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
14
14
|
PERFORMANCE OF THIS SOFTWARE.
|
|
15
|
-
***************************************************************************** */function r(e,t,r,i){return new(r||(r=Promise))((function(n,o){function s(e){try{c(i.next(e))}catch(e){o(e)}}function a(e){try{c(i.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}c((i=i.apply(e,t||[])).next())}))}const i=new t.Logger("RCRTC");var n,o;e.RCRTCCode=void 0,(n=e.RCRTCCode||(e.RCRTCCode={}))[n.SUCCESS=1e4]="SUCCESS",n[n.SIGNAL_DISCONNECTED=5e4]="SIGNAL_DISCONNECTED",n[n.PARAMS_ERROR=50001]="PARAMS_ERROR",n[n.REPERT_JOIN_ROOM=50002]="REPERT_JOIN_ROOM",n[n.NOT_IN_ROOM=50003]="NOT_IN_ROOM",n[n.SERVICE_INVALID=50004]="SERVICE_INVALID",n[n.RTC_TOKEN_INVALID=50006]="RTC_TOKEN_INVALID",n[n.SIGNAL_ERROR=53001]="SIGNAL_ERROR",n[n.CREATE_OFFER_FAILED=53003]="CREATE_OFFER_FAILED",n[n.REQUEST_FAILED=53004]="REQUEST_FAILED",n[n.MCU_SERVER_NOT_FOUND=53005]="MCU_SERVER_NOT_FOUND",n[n.BROADCAST_SUB_LIST_NOT_EMPTY=53007]="BROADCAST_SUB_LIST_NOT_EMPTY",n[n.ROOM_HAS_BEEN_DESTROYED=53008]="ROOM_HAS_BEEN_DESTROYED",n[n.NOT_OPEN_VIDEO_AUDIO_SERVER=53009]="NOT_OPEN_VIDEO_AUDIO_SERVER",n[n.GET_USER_MEDIA_FAILED=53010]="GET_USER_MEDIA_FAILED",n[n.GET_DISPLAY_MEDIA_FAILED=53011]="GET_DISPLAY_MEDIA_FAILED",n[n.PERMISSION_DENIED=53012]="PERMISSION_DENIED",n[n.CREATE_CUSTOM_TRACK_FAILED=53013]="CREATE_CUSTOM_TRACK_FAILED",n[n.INVALID_TAGS=53014]="INVALID_TAGS",n[n.INVALID_USER_ID=53015]="INVALID_USER_ID",n[n.CREATE_FILE_TRACK_FAILED=53016]="CREATE_FILE_TRACK_FAILED",n[n.INVALID_FILE_INSTANCE=53017]="INVALID_FILE_INSTANCE",n[n.SET_REMOTE_DESCRIPTION_FAILED=53018]="SET_REMOTE_DESCRIPTION_FAILED",n[n.BROWSER_NOT_SUPPORT=53019]="BROWSER_NOT_SUPPORT",n[n.TRACK_NOT_READY=53020]="TRACK_NOT_READY",n[n.VIDEO_TRACK_MISS_MEDIA_ELEMENT=53021]="VIDEO_TRACK_MISS_MEDIA_ELEMENT",n[n.TRACK_PLAY_ERROR=53022]="TRACK_PLAY_ERROR",n[n.SIGNAL_AUDIENCE_JOIN_ROOM_FAILED=53023]="SIGNAL_AUDIENCE_JOIN_ROOM_FAILED",n[n.SIGNAL_ROOM_CHANGE_IDENTITY_FAILED=53024]="SIGNAL_ROOM_CHANGE_IDENTITY_FAILED",n[n.PACKAGE_ENVIRONMENT_ERROR=53025]="PACKAGE_ENVIRONMENT_ERROR",n[n.PUBLISH_TRACK_LIMIT_EXCEEDED=53026]="PUBLISH_TRACK_LIMIT_EXCEEDED",n[n.CDN_RESOURCE_IS_EMPTY=53027]="CDN_RESOURCE_IS_EMPTY",n[n.SIGNAL_JOIN_RTC_ROOM_REFUSED=53028]="SIGNAL_JOIN_RTC_ROOM_REFUSED",n[n.NO_PERMISSION_TO_USE_REQUESTED_DEVICE=53029]="NO_PERMISSION_TO_USE_REQUESTED_DEVICE",n[n.THE_FUNCTION_IS_DISABLED_IN_PKROOM=53030]="THE_FUNCTION_IS_DISABLED_IN_PKROOM",function(e){e[e.JOIN_REFUSED=40032]="JOIN_REFUSED"}(o||(o={}));class s{constructor(){this.queue=[],this.locked=!1}checkToStart(){return r(this,void 0,void 0,(function*(){if(0===this.queue.length||this.locked)return;this.locked=!0;const{resolve:e,task:t,reject:r}=this.queue.shift();let i;try{i=yield t(),e(i)}catch(e){r(e)}this.locked=!1,this.checkToStart()}))}push(e){const t=new Promise(((t,r)=>{this.queue.push({resolve:t,task:e,reject:r})}));return this.checkToStart(),t}}const a=new s,c=e=>a.push(e);let d=!0,u=!0;function l(e,t,r){const i=e.match(t);return i&&i.length>=r&&parseInt(i[r],10)}function h(e,t,r){if(!e.RTCPeerConnection)return;const i=e.RTCPeerConnection.prototype,n=i.addEventListener;i.addEventListener=function(e,i){if(e!==t)return n.apply(this,arguments);const o=e=>{const t=r(e);t&&(i.handleEvent?i.handleEvent(t):i(t))};return this._eventMap=this._eventMap||{},this._eventMap[t]||(this._eventMap[t]=new Map),this._eventMap[t].set(i,o),n.apply(this,[e,o])};const o=i.removeEventListener;i.removeEventListener=function(e,r){if(e!==t||!this._eventMap||!this._eventMap[t])return o.apply(this,arguments);if(!this._eventMap[t].has(r))return o.apply(this,arguments);const i=this._eventMap[t].get(r);return this._eventMap[t].delete(r),0===this._eventMap[t].size&&delete this._eventMap[t],0===Object.keys(this._eventMap).length&&delete this._eventMap,o.apply(this,[e,i])},Object.defineProperty(i,"on"+t,{get(){return this["_on"+t]},set(e){this["_on"+t]&&(this.removeEventListener(t,this["_on"+t]),delete this["_on"+t]),e&&this.addEventListener(t,this["_on"+t]=e)},enumerable:!0,configurable:!0})}function p(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(d=e,e?"adapter.js logging disabled":"adapter.js logging enabled")}function m(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(u=!e,"adapter.js deprecation warnings "+(e?"disabled":"enabled"))}function _(){if("object"==typeof window){if(d)return;"undefined"!=typeof console&&"function"==typeof console.log&&console.log.apply(console,arguments)}}function R(e,t){u&&console.warn(e+" is deprecated, please use "+t+" instead.")}function C(e){return"[object Object]"===Object.prototype.toString.call(e)}function f(e){return C(e)?Object.keys(e).reduce((function(t,r){const i=C(e[r]),n=i?f(e[r]):e[r],o=i&&!Object.keys(n).length;return void 0===n||o?t:Object.assign(t,{[r]:n})}),{}):e}function v(e,t,r){t&&!r.has(t.id)&&(r.set(t.id,t),Object.keys(t).forEach((i=>{i.endsWith("Id")?v(e,e.get(t[i]),r):i.endsWith("Ids")&&t[i].forEach((t=>{v(e,e.get(t),r)}))})))}function T(e,t,r){const i=r?"outbound-rtp":"inbound-rtp",n=new Map;if(null===t)return n;const o=[];return e.forEach((e=>{"track"===e.type&&e.trackIdentifier===t.id&&o.push(e)})),o.forEach((t=>{e.forEach((r=>{r.type===i&&r.trackId===t.id&&v(e,r,n)}))})),n}const g=_;function S(e,t){const r=e&&e.navigator;if(!r.mediaDevices)return;const i=function(e){if("object"!=typeof e||e.mandatory||e.optional)return e;const t={};return Object.keys(e).forEach((r=>{if("require"===r||"advanced"===r||"mediaSource"===r)return;const i="object"==typeof e[r]?e[r]:{ideal:e[r]};void 0!==i.exact&&"number"==typeof i.exact&&(i.min=i.max=i.exact);const n=function(e,t){return e?e+t.charAt(0).toUpperCase()+t.slice(1):"deviceId"===t?"sourceId":t};if(void 0!==i.ideal){t.optional=t.optional||[];let e={};"number"==typeof i.ideal?(e[n("min",r)]=i.ideal,t.optional.push(e),e={},e[n("max",r)]=i.ideal,t.optional.push(e)):(e[n("",r)]=i.ideal,t.optional.push(e))}void 0!==i.exact&&"number"!=typeof i.exact?(t.mandatory=t.mandatory||{},t.mandatory[n("",r)]=i.exact):["min","max"].forEach((e=>{void 0!==i[e]&&(t.mandatory=t.mandatory||{},t.mandatory[n(e,r)]=i[e])}))})),e.advanced&&(t.optional=(t.optional||[]).concat(e.advanced)),t},n=function(e,n){if(t.version>=61)return n(e);if((e=JSON.parse(JSON.stringify(e)))&&"object"==typeof e.audio){const t=function(e,t,r){t in e&&!(r in e)&&(e[r]=e[t],delete e[t])};t((e=JSON.parse(JSON.stringify(e))).audio,"autoGainControl","googAutoGainControl"),t(e.audio,"noiseSuppression","googNoiseSuppression"),e.audio=i(e.audio)}if(e&&"object"==typeof e.video){let o=e.video.facingMode;o=o&&("object"==typeof o?o:{ideal:o});const s=t.version<66;if(o&&("user"===o.exact||"environment"===o.exact||"user"===o.ideal||"environment"===o.ideal)&&(!r.mediaDevices.getSupportedConstraints||!r.mediaDevices.getSupportedConstraints().facingMode||s)){let t;if(delete e.video.facingMode,"environment"===o.exact||"environment"===o.ideal?t=["back","rear"]:"user"!==o.exact&&"user"!==o.ideal||(t=["front"]),t)return r.mediaDevices.enumerateDevices().then((r=>{let s=(r=r.filter((e=>"videoinput"===e.kind))).find((e=>t.some((t=>e.label.toLowerCase().includes(t)))));return!s&&r.length&&t.includes("back")&&(s=r[r.length-1]),s&&(e.video.deviceId=o.exact?{exact:s.deviceId}:{ideal:s.deviceId}),e.video=i(e.video),g("chrome: "+JSON.stringify(e)),n(e)}))}e.video=i(e.video)}return g("chrome: "+JSON.stringify(e)),n(e)},o=function(e){return t.version>=64?e:{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(){return this.name+(this.message&&": ")+this.message}}};if(r.getUserMedia=function(e,t,i){n(e,(e=>{r.webkitGetUserMedia(e,t,(e=>{i&&i(o(e))}))}))}.bind(r),r.mediaDevices.getUserMedia){const e=r.mediaDevices.getUserMedia.bind(r.mediaDevices);r.mediaDevices.getUserMedia=function(t){return n(t,(t=>e(t).then((e=>{if(t.audio&&!e.getAudioTracks().length||t.video&&!e.getVideoTracks().length)throw e.getTracks().forEach((e=>{e.stop()})),new DOMException("","NotFoundError");return e}),(e=>Promise.reject(o(e))))))}}}function I(e){e.MediaStream=e.MediaStream||e.webkitMediaStream}function E(e){if("object"==typeof e&&e.RTCPeerConnection&&!("ontrack"in e.RTCPeerConnection.prototype)){Object.defineProperty(e.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack},set(e){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=e)},enumerable:!0,configurable:!0});const t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=t=>{t.stream.addEventListener("addtrack",(r=>{let i;i=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find((e=>e.track&&e.track.id===r.track.id)):{track:r.track};const n=new Event("track");n.track=r.track,n.receiver=i,n.transceiver={receiver:i},n.streams=[t.stream],this.dispatchEvent(n)})),t.stream.getTracks().forEach((r=>{let i;i=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find((e=>e.track&&e.track.id===r.id)):{track:r};const n=new Event("track");n.track=r,n.receiver=i,n.transceiver={receiver:i},n.streams=[t.stream],this.dispatchEvent(n)}))},this.addEventListener("addstream",this._ontrackpoly)),t.apply(this,arguments)}}else h(e,"track",(e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e)))}function y(e){if("object"==typeof e&&e.RTCPeerConnection&&!("getSenders"in e.RTCPeerConnection.prototype)&&"createDTMFSender"in e.RTCPeerConnection.prototype){const t=function(e,t){return{track:t,get dtmf(){return void 0===this._dtmf&&("audio"===t.kind?this._dtmf=e.createDTMFSender(t):this._dtmf=null),this._dtmf},_pc:e}};if(!e.RTCPeerConnection.prototype.getSenders){e.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};const r=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,i){let n=r.apply(this,arguments);return n||(n=t(this,e),this._senders.push(n)),n};const i=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){i.apply(this,arguments);const t=this._senders.indexOf(e);-1!==t&&this._senders.splice(t,1)}}const r=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._senders=this._senders||[],r.apply(this,[e]),e.getTracks().forEach((e=>{this._senders.push(t(this,e))}))};const i=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){this._senders=this._senders||[],i.apply(this,[e]),e.getTracks().forEach((e=>{const t=this._senders.find((t=>t.track===e));t&&this._senders.splice(this._senders.indexOf(t),1)}))}}else if("object"==typeof e&&e.RTCPeerConnection&&"getSenders"in e.RTCPeerConnection.prototype&&"createDTMFSender"in e.RTCPeerConnection.prototype&&e.RTCRtpSender&&!("dtmf"in e.RTCRtpSender.prototype)){const t=e.RTCPeerConnection.prototype.getSenders;e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e},Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function k(e){if(!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){const[e,r,i]=arguments;if(arguments.length>0&&"function"==typeof e)return t.apply(this,arguments);if(0===t.length&&(0===arguments.length||"function"!=typeof e))return t.apply(this,[]);const n=function(e){const t={};return e.result().forEach((e=>{const r={id:e.id,timestamp:e.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[e.type]||e.type};e.names().forEach((t=>{r[t]=e.stat(t)})),t[r.id]=r})),t},o=function(e){return new Map(Object.keys(e).map((t=>[t,e[t]])))};if(arguments.length>=2){const i=function(e){r(o(n(e)))};return t.apply(this,[i,e])}return new Promise(((e,r)=>{t.apply(this,[function(t){e(o(n(t)))},r])})).then(r,i)}}function b(e){if(!("object"==typeof e&&e.RTCPeerConnection&&e.RTCRtpSender&&e.RTCRtpReceiver))return;if(!("getStats"in e.RTCRtpSender.prototype)){const t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e});const r=e.RTCPeerConnection.prototype.addTrack;r&&(e.RTCPeerConnection.prototype.addTrack=function(){const e=r.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>T(t,e.track,!0)))}}if(!("getStats"in e.RTCRtpReceiver.prototype)){const t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e}),h(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>T(t,e.track,!1)))}}if(!("getStats"in e.RTCRtpSender.prototype)||!("getStats"in e.RTCRtpReceiver.prototype))return;const t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof e.MediaStreamTrack){const e=arguments[0];let t,r,i;return this.getSenders().forEach((r=>{r.track===e&&(t?i=!0:t=r)})),this.getReceivers().forEach((t=>(t.track===e&&(r?i=!0:r=t),t.track===e))),i||t&&r?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):t?t.getStats():r?r.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return t.apply(this,arguments)}}function P(e){e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map((e=>this._shimmedLocalStreams[e][0]))};const t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,r){if(!r)return t.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};const i=t.apply(this,arguments);return this._shimmedLocalStreams[r.id]?-1===this._shimmedLocalStreams[r.id].indexOf(i)&&this._shimmedLocalStreams[r.id].push(i):this._shimmedLocalStreams[r.id]=[r,i],i};const r=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._shimmedLocalStreams=this._shimmedLocalStreams||{},e.getTracks().forEach((e=>{if(this.getSenders().find((t=>t.track===e)))throw new DOMException("Track already exists.","InvalidAccessError")}));const t=this.getSenders();r.apply(this,arguments);const i=this.getSenders().filter((e=>-1===t.indexOf(e)));this._shimmedLocalStreams[e.id]=[e].concat(i)};const i=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[e.id],i.apply(this,arguments)};const n=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},e&&Object.keys(this._shimmedLocalStreams).forEach((t=>{const r=this._shimmedLocalStreams[t].indexOf(e);-1!==r&&this._shimmedLocalStreams[t].splice(r,1),1===this._shimmedLocalStreams[t].length&&delete this._shimmedLocalStreams[t]})),n.apply(this,arguments)}}function O(e,t){if(!e.RTCPeerConnection)return;if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65)return P(e);const r=e.RTCPeerConnection.prototype.getLocalStreams;e.RTCPeerConnection.prototype.getLocalStreams=function(){const e=r.apply(this);return this._reverseStreams=this._reverseStreams||{},e.map((e=>this._reverseStreams[e.id]))};const i=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(t){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},t.getTracks().forEach((e=>{if(this.getSenders().find((t=>t.track===e)))throw new DOMException("Track already exists.","InvalidAccessError")})),!this._reverseStreams[t.id]){const r=new e.MediaStream(t.getTracks());this._streams[t.id]=r,this._reverseStreams[r.id]=t,t=r}i.apply(this,[t])};const n=e.RTCPeerConnection.prototype.removeStream;function o(e,t){let r=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((t=>{const i=e._reverseStreams[t],n=e._streams[i.id];r=r.replace(new RegExp(n.id,"g"),i.id)})),new RTCSessionDescription({type:t.type,sdp:r})}function s(e,t){let r=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((t=>{const i=e._reverseStreams[t],n=e._streams[i.id];r=r.replace(new RegExp(i.id,"g"),n.id)})),new RTCSessionDescription({type:t.type,sdp:r})}e.RTCPeerConnection.prototype.removeStream=function(e){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},n.apply(this,[this._streams[e.id]||e]),delete this._reverseStreams[this._streams[e.id]?this._streams[e.id].id:e.id],delete this._streams[e.id]},e.RTCPeerConnection.prototype.addTrack=function(t,r){if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");const i=[].slice.call(arguments,1);if(1!==i.length||!i[0].getTracks().find((e=>e===t)))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");const n=this.getSenders().find((e=>e.track===t));if(n)throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};const o=this._streams[r.id];if(o)o.addTrack(t),Promise.resolve().then((()=>{this.dispatchEvent(new Event("negotiationneeded"))}));else{const i=new e.MediaStream([t]);this._streams[r.id]=i,this._reverseStreams[i.id]=r,this.addStream(i)}return this.getSenders().find((e=>e.track===t))},["createOffer","createAnswer"].forEach((function(t){const r=e.RTCPeerConnection.prototype[t],i={[t](){const e=arguments;return arguments.length&&"function"==typeof arguments[0]?r.apply(this,[t=>{const r=o(this,t);e[0].apply(null,[r])},t=>{e[1]&&e[1].apply(null,t)},arguments[2]]):r.apply(this,arguments).then((e=>o(this,e)))}};e.RTCPeerConnection.prototype[t]=i[t]}));const a=e.RTCPeerConnection.prototype.setLocalDescription;e.RTCPeerConnection.prototype.setLocalDescription=function(){return arguments.length&&arguments[0].type?(arguments[0]=s(this,arguments[0]),a.apply(this,arguments)):a.apply(this,arguments)};const c=Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(e.RTCPeerConnection.prototype,"localDescription",{get(){const e=c.get.apply(this);return""===e.type?e:o(this,e)}}),e.RTCPeerConnection.prototype.removeTrack=function(e){if("closed"===this.signalingState)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");if(!(e._pc===this))throw new DOMException("Sender was not created by this connection.","InvalidAccessError");let t;this._streams=this._streams||{},Object.keys(this._streams).forEach((r=>{this._streams[r].getTracks().find((t=>e.track===t))&&(t=this._streams[r])})),t&&(1===t.getTracks().length?this.removeStream(this._reverseStreams[t.id]):t.removeTrack(e.track),this.dispatchEvent(new Event("negotiationneeded")))}}function L(e,t){!e.RTCPeerConnection&&e.webkitRTCPeerConnection&&(e.RTCPeerConnection=e.webkitRTCPeerConnection),e.RTCPeerConnection&&t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){const r=e.RTCPeerConnection.prototype[t],i={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),r.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=i[t]}))}function N(e,t){h(e,"negotiationneeded",(e=>{const r=e.target;if(!(t.version<72||r.getConfiguration&&"plan-b"===r.getConfiguration().sdpSemantics)||"stable"===r.signalingState)return e}))}var A=Object.freeze({__proto__:null,shimMediaStream:I,shimOnTrack:E,shimGetSendersWithDtmf:y,shimGetStats:k,shimSenderReceiverGetStats:b,shimAddTrackRemoveTrackWithNative:P,shimAddTrackRemoveTrack:O,shimPeerConnection:L,fixNegotiationNeeded:N,shimGetUserMedia:S,shimGetDisplayMedia:function(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&("function"==typeof t?e.navigator.mediaDevices.getDisplayMedia=function(r){return t(r).then((t=>{const i=r.video&&r.video.width,n=r.video&&r.video.height,o=r.video&&r.video.frameRate;return r.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:t,maxFrameRate:o||3}},i&&(r.video.mandatory.maxWidth=i),n&&(r.video.mandatory.maxHeight=n),e.navigator.mediaDevices.getUserMedia(r)}))}:console.error("shimGetDisplayMedia: getSourceId argument is not a function"))}});var D=function(e){var t={exports:{}};return e(t,t.exports),t.exports}((function(e){var t={generateIdentifier:function(){return Math.random().toString(36).substr(2,10)}};t.localCName=t.generateIdentifier(),t.splitLines=function(e){return e.trim().split("\n").map((function(e){return e.trim()}))},t.splitSections=function(e){return e.split("\nm=").map((function(e,t){return(t>0?"m="+e:e).trim()+"\r\n"}))},t.getDescription=function(e){var r=t.splitSections(e);return r&&r[0]},t.getMediaSections=function(e){var r=t.splitSections(e);return r.shift(),r},t.matchPrefix=function(e,r){return t.splitLines(e).filter((function(e){return 0===e.indexOf(r)}))},t.parseCandidate=function(e){for(var t,r={foundation:(t=0===e.indexOf("a=candidate:")?e.substring(12).split(" "):e.substring(10).split(" "))[0],component:parseInt(t[1],10),protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],address:t[4],port:parseInt(t[5],10),type:t[7]},i=8;i<t.length;i+=2)switch(t[i]){case"raddr":r.relatedAddress=t[i+1];break;case"rport":r.relatedPort=parseInt(t[i+1],10);break;case"tcptype":r.tcpType=t[i+1];break;case"ufrag":r.ufrag=t[i+1],r.usernameFragment=t[i+1];break;default:r[t[i]]=t[i+1]}return r},t.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.address||e.ip),t.push(e.port);var r=e.type;return t.push("typ"),t.push(r),"host"!==r&&e.relatedAddress&&e.relatedPort&&(t.push("raddr"),t.push(e.relatedAddress),t.push("rport"),t.push(e.relatedPort)),e.tcpType&&"tcp"===e.protocol.toLowerCase()&&(t.push("tcptype"),t.push(e.tcpType)),(e.usernameFragment||e.ufrag)&&(t.push("ufrag"),t.push(e.usernameFragment||e.ufrag)),"candidate:"+t.join(" ")},t.parseIceOptions=function(e){return e.substr(14).split(" ")},t.parseRtpMap=function(e){var t=e.substr(9).split(" "),r={payloadType:parseInt(t.shift(),10)};return t=t[0].split("/"),r.name=t[0],r.clockRate=parseInt(t[1],10),r.channels=3===t.length?parseInt(t[2],10):1,r.numChannels=r.channels,r},t.writeRtpMap=function(e){var t=e.payloadType;void 0!==e.preferredPayloadType&&(t=e.preferredPayloadType);var r=e.channels||e.numChannels||1;return"a=rtpmap:"+t+" "+e.name+"/"+e.clockRate+(1!==r?"/"+r:"")+"\r\n"},t.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]}},t.writeExtmap=function(e){return"a=extmap:"+(e.id||e.preferredId)+(e.direction&&"sendrecv"!==e.direction?"/"+e.direction:"")+" "+e.uri+"\r\n"},t.parseFmtp=function(e){for(var t,r={},i=e.substr(e.indexOf(" ")+1).split(";"),n=0;n<i.length;n++)r[(t=i[n].trim().split("="))[0].trim()]=t[1];return r},t.writeFmtp=function(e){var t="",r=e.payloadType;if(void 0!==e.preferredPayloadType&&(r=e.preferredPayloadType),e.parameters&&Object.keys(e.parameters).length){var i=[];Object.keys(e.parameters).forEach((function(t){e.parameters[t]?i.push(t+"="+e.parameters[t]):i.push(t)})),t+="a=fmtp:"+r+" "+i.join(";")+"\r\n"}return t},t.parseRtcpFb=function(e){var t=e.substr(e.indexOf(" ")+1).split(" ");return{type:t.shift(),parameter:t.join(" ")}},t.writeRtcpFb=function(e){var t="",r=e.payloadType;return void 0!==e.preferredPayloadType&&(r=e.preferredPayloadType),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"})),t},t.parseSsrcMedia=function(e){var t=e.indexOf(" "),r={ssrc:parseInt(e.substr(7,t-7),10)},i=e.indexOf(":",t);return i>-1?(r.attribute=e.substr(t+1,i-t-1),r.value=e.substr(i+1)):r.attribute=e.substr(t+1),r},t.parseSsrcGroup=function(e){var t=e.substr(13).split(" ");return{semantics:t.shift(),ssrcs:t.map((function(e){return parseInt(e,10)}))}},t.getMid=function(e){var r=t.matchPrefix(e,"a=mid:")[0];if(r)return r.substr(6)},t.parseFingerprint=function(e){var t=e.substr(14).split(" ");return{algorithm:t[0].toLowerCase(),value:t[1]}},t.getDtlsParameters=function(e,r){return{role:"auto",fingerprints:t.matchPrefix(e+r,"a=fingerprint:").map(t.parseFingerprint)}},t.writeDtlsParameters=function(e,t){var r="a=setup:"+t+"\r\n";return e.fingerprints.forEach((function(e){r+="a=fingerprint:"+e.algorithm+" "+e.value+"\r\n"})),r},t.parseCryptoLine=function(e){var t=e.substr(9).split(" ");return{tag:parseInt(t[0],10),cryptoSuite:t[1],keyParams:t[2],sessionParams:t.slice(3)}},t.writeCryptoLine=function(e){return"a=crypto:"+e.tag+" "+e.cryptoSuite+" "+("object"==typeof e.keyParams?t.writeCryptoKeyParams(e.keyParams):e.keyParams)+(e.sessionParams?" "+e.sessionParams.join(" "):"")+"\r\n"},t.parseCryptoKeyParams=function(e){if(0!==e.indexOf("inline:"))return null;var t=e.substr(7).split("|");return{keyMethod:"inline",keySalt:t[0],lifeTime:t[1],mkiValue:t[2]?t[2].split(":")[0]:void 0,mkiLength:t[2]?t[2].split(":")[1]:void 0}},t.writeCryptoKeyParams=function(e){return e.keyMethod+":"+e.keySalt+(e.lifeTime?"|"+e.lifeTime:"")+(e.mkiValue&&e.mkiLength?"|"+e.mkiValue+":"+e.mkiLength:"")},t.getCryptoParameters=function(e,r){return t.matchPrefix(e+r,"a=crypto:").map(t.parseCryptoLine)},t.getIceParameters=function(e,r){var i=t.matchPrefix(e+r,"a=ice-ufrag:")[0],n=t.matchPrefix(e+r,"a=ice-pwd:")[0];return i&&n?{usernameFragment:i.substr(12),password:n.substr(10)}:null},t.writeIceParameters=function(e){return"a=ice-ufrag:"+e.usernameFragment+"\r\na=ice-pwd:"+e.password+"\r\n"},t.parseRtpParameters=function(e){for(var r={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},i=t.splitLines(e)[0].split(" "),n=3;n<i.length;n++){var o=i[n],s=t.matchPrefix(e,"a=rtpmap:"+o+" ")[0];if(s){var a=t.parseRtpMap(s),c=t.matchPrefix(e,"a=fmtp:"+o+" ");switch(a.parameters=c.length?t.parseFmtp(c[0]):{},a.rtcpFeedback=t.matchPrefix(e,"a=rtcp-fb:"+o+" ").map(t.parseRtcpFb),r.codecs.push(a),a.name.toUpperCase()){case"RED":case"ULPFEC":r.fecMechanisms.push(a.name.toUpperCase())}}}return t.matchPrefix(e,"a=extmap:").forEach((function(e){r.headerExtensions.push(t.parseExtmap(e))})),r},t.writeRtpDescription=function(e,r){var i="";i+="m="+e+" ",i+=r.codecs.length>0?"9":"0",i+=" UDP/TLS/RTP/SAVPF ",i+=r.codecs.map((function(e){return void 0!==e.preferredPayloadType?e.preferredPayloadType:e.payloadType})).join(" ")+"\r\n",i+="c=IN IP4 0.0.0.0\r\n",i+="a=rtcp:9 IN IP4 0.0.0.0\r\n",r.codecs.forEach((function(e){i+=t.writeRtpMap(e),i+=t.writeFmtp(e),i+=t.writeRtcpFb(e)}));var n=0;return r.codecs.forEach((function(e){e.maxptime>n&&(n=e.maxptime)})),n>0&&(i+="a=maxptime:"+n+"\r\n"),i+="a=rtcp-mux\r\n",r.headerExtensions&&r.headerExtensions.forEach((function(e){i+=t.writeExtmap(e)})),i},t.parseRtpEncodingParameters=function(e){var r,i=[],n=t.parseRtpParameters(e),o=-1!==n.fecMechanisms.indexOf("RED"),s=-1!==n.fecMechanisms.indexOf("ULPFEC"),a=t.matchPrefix(e,"a=ssrc:").map((function(e){return t.parseSsrcMedia(e)})).filter((function(e){return"cname"===e.attribute})),c=a.length>0&&a[0].ssrc,d=t.matchPrefix(e,"a=ssrc-group:FID").map((function(e){return e.substr(17).split(" ").map((function(e){return parseInt(e,10)}))}));d.length>0&&d[0].length>1&&d[0][0]===c&&(r=d[0][1]),n.codecs.forEach((function(e){if("RTX"===e.name.toUpperCase()&&e.parameters.apt){var t={ssrc:c,codecPayloadType:parseInt(e.parameters.apt,10)};c&&r&&(t.rtx={ssrc:r}),i.push(t),o&&((t=JSON.parse(JSON.stringify(t))).fec={ssrc:c,mechanism:s?"red+ulpfec":"red"},i.push(t))}})),0===i.length&&c&&i.push({ssrc:c});var u=t.matchPrefix(e,"b=");return u.length&&(u=0===u[0].indexOf("b=TIAS:")?parseInt(u[0].substr(7),10):0===u[0].indexOf("b=AS:")?1e3*parseInt(u[0].substr(5),10)*.95-16e3:void 0,i.forEach((function(e){e.maxBitrate=u}))),i},t.parseRtcpParameters=function(e){var r={},i=t.matchPrefix(e,"a=ssrc:").map((function(e){return t.parseSsrcMedia(e)})).filter((function(e){return"cname"===e.attribute}))[0];i&&(r.cname=i.value,r.ssrc=i.ssrc);var n=t.matchPrefix(e,"a=rtcp-rsize");r.reducedSize=n.length>0,r.compound=0===n.length;var o=t.matchPrefix(e,"a=rtcp-mux");return r.mux=o.length>0,r},t.parseMsid=function(e){var r,i=t.matchPrefix(e,"a=msid:");if(1===i.length)return{stream:(r=i[0].substr(7).split(" "))[0],track:r[1]};var n=t.matchPrefix(e,"a=ssrc:").map((function(e){return t.parseSsrcMedia(e)})).filter((function(e){return"msid"===e.attribute}));return n.length>0?{stream:(r=n[0].value.split(" "))[0],track:r[1]}:void 0},t.parseSctpDescription=function(e){var r,i=t.parseMLine(e),n=t.matchPrefix(e,"a=max-message-size:");n.length>0&&(r=parseInt(n[0].substr(19),10)),isNaN(r)&&(r=65536);var o=t.matchPrefix(e,"a=sctp-port:");if(o.length>0)return{port:parseInt(o[0].substr(12),10),protocol:i.fmt,maxMessageSize:r};if(t.matchPrefix(e,"a=sctpmap:").length>0){var s=t.matchPrefix(e,"a=sctpmap:")[0].substr(10).split(" ");return{port:parseInt(s[0],10),protocol:s[1],maxMessageSize:r}}},t.writeSctpDescription=function(e,t){var r=[];return r="DTLS/SCTP"!==e.protocol?["m="+e.kind+" 9 "+e.protocol+" "+t.protocol+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctp-port:"+t.port+"\r\n"]:["m="+e.kind+" 9 "+e.protocol+" "+t.port+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctpmap:"+t.port+" "+t.protocol+" 65535\r\n"],void 0!==t.maxMessageSize&&r.push("a=max-message-size:"+t.maxMessageSize+"\r\n"),r.join("")},t.generateSessionId=function(){return Math.random().toString().substr(2,21)},t.writeSessionBoilerplate=function(e,r,i){var n=void 0!==r?r:2;return"v=0\r\no="+(i||"thisisadapterortc")+" "+(e||t.generateSessionId())+" "+n+" IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},t.writeMediaSection=function(e,r,i,n){var o=t.writeRtpDescription(e.kind,r);if(o+=t.writeIceParameters(e.iceGatherer.getLocalParameters()),o+=t.writeDtlsParameters(e.dtlsTransport.getLocalParameters(),"offer"===i?"actpass":"active"),o+="a=mid:"+e.mid+"\r\n",e.direction?o+="a="+e.direction+"\r\n":e.rtpSender&&e.rtpReceiver?o+="a=sendrecv\r\n":e.rtpSender?o+="a=sendonly\r\n":e.rtpReceiver?o+="a=recvonly\r\n":o+="a=inactive\r\n",e.rtpSender){var s="msid:"+n.id+" "+e.rtpSender.track.id+"\r\n";o+="a="+s,o+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" "+s,e.sendEncodingParameters[0].rtx&&(o+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" "+s,o+="a=ssrc-group:FID "+e.sendEncodingParameters[0].ssrc+" "+e.sendEncodingParameters[0].rtx.ssrc+"\r\n")}return o+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" cname:"+t.localCName+"\r\n",e.rtpSender&&e.sendEncodingParameters[0].rtx&&(o+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" cname:"+t.localCName+"\r\n"),o},t.getDirection=function(e,r){for(var i=t.splitLines(e),n=0;n<i.length;n++)switch(i[n]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return i[n].substr(2)}return r?t.getDirection(r):"sendrecv"},t.getKind=function(e){return t.splitLines(e)[0].split(" ")[0].substr(2)},t.isRejected=function(e){return"0"===e.split(" ",2)[1]},t.parseMLine=function(e){var r=t.splitLines(e)[0].substr(2).split(" ");return{kind:r[0],port:parseInt(r[1],10),protocol:r[2],fmt:r.slice(3).join(" ")}},t.parseOLine=function(e){var r=t.matchPrefix(e,"o=")[0].substr(2).split(" ");return{username:r[0],sessionId:r[1],sessionVersion:parseInt(r[2],10),netType:r[3],addressType:r[4],address:r[5]}},t.isValidSDP=function(e){if("string"!=typeof e||0===e.length)return!1;for(var r=t.splitLines(e),i=0;i<r.length;i++)if(r[i].length<2||"="!==r[i].charAt(1))return!1;return!0},e.exports=t}));function M(e,t,r,i,n){var o=D.writeRtpDescription(e.kind,t);if(o+=D.writeIceParameters(e.iceGatherer.getLocalParameters()),o+=D.writeDtlsParameters(e.dtlsTransport.getLocalParameters(),"offer"===r?"actpass":n||"active"),o+="a=mid:"+e.mid+"\r\n",e.rtpSender&&e.rtpReceiver?o+="a=sendrecv\r\n":e.rtpSender?o+="a=sendonly\r\n":e.rtpReceiver?o+="a=recvonly\r\n":o+="a=inactive\r\n",e.rtpSender){var s=e.rtpSender._initialTrackId||e.rtpSender.track.id;e.rtpSender._initialTrackId=s;var a="msid:"+(i?i.id:"-")+" "+s+"\r\n";o+="a="+a,o+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" "+a,e.sendEncodingParameters[0].rtx&&(o+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" "+a,o+="a=ssrc-group:FID "+e.sendEncodingParameters[0].ssrc+" "+e.sendEncodingParameters[0].rtx.ssrc+"\r\n")}return o+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" cname:"+D.localCName+"\r\n",e.rtpSender&&e.sendEncodingParameters[0].rtx&&(o+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" cname:"+D.localCName+"\r\n"),o}function x(e,t){var r={codecs:[],headerExtensions:[],fecMechanisms:[]},i=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]},n=function(e,t,r,n){var o=i(e.parameters.apt,r),s=i(t.parameters.apt,n);return o&&s&&o.name.toLowerCase()===s.name.toLowerCase()};return e.codecs.forEach((function(i){for(var o=0;o<t.codecs.length;o++){var s=t.codecs[o];if(i.name.toLowerCase()===s.name.toLowerCase()&&i.clockRate===s.clockRate){if("rtx"===i.name.toLowerCase()&&i.parameters&&s.parameters.apt&&!n(i,s,e.codecs,t.codecs))continue;(s=JSON.parse(JSON.stringify(s))).numChannels=Math.min(i.numChannels,s.numChannels),r.codecs.push(s),s.rtcpFeedback=s.rtcpFeedback.filter((function(e){for(var t=0;t<i.rtcpFeedback.length;t++)if(i.rtcpFeedback[t].type===e.type&&i.rtcpFeedback[t].parameter===e.parameter)return!0;return!1}));break}}})),e.headerExtensions.forEach((function(e){for(var i=0;i<t.headerExtensions.length;i++){var n=t.headerExtensions[i];if(e.uri===n.uri){r.headerExtensions.push(n);break}}})),r}function U(e,t,r){return-1!=={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)}function w(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}));return r||e.addRemoteCandidate(t),!r}function $(e,t){var r=new Error(t);return r.name=e,r.code={NotSupportedError:9,InvalidStateError:11,InvalidAccessError:15,TypeError:void 0,OperationError:void 0}[e],r}var j=function(e,t){function r(t,r){r.addTrack(t),r.dispatchEvent(new e.MediaStreamTrackEvent("addtrack",{track:t}))}function i(t,r,i,n){var o=new Event("track");o.track=r,o.receiver=i,o.transceiver={receiver:i},o.streams=n,e.setTimeout((function(){t._dispatchEvent("track",o)}))}var n=function(r){var i=this,n=document.createDocumentFragment();if(["addEventListener","removeEventListener","dispatchEvent"].forEach((function(e){i[e]=n[e].bind(n)})),this.canTrickleIceCandidates=null,this.needNegotiation=!1,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="max-bundle"===r.bundlePolicy,"negotiate"===r.rtcpMuxPolicy)throw $("NotSupportedError","rtcpMuxPolicy 'negotiate' is not supported");switch(r.rtcpMuxPolicy||(r.rtcpMuxPolicy="require"),r.iceTransportPolicy){case"all":case"relay":break;default:r.iceTransportPolicy="all"}switch(r.bundlePolicy){case"balanced":case"max-compat":case"max-bundle":break;default:r.bundlePolicy="balanced"}if(r.iceServers=function(e,t){var r=!1;return(e=JSON.parse(JSON.stringify(e))).filter((function(e){if(e&&(e.urls||e.url)){var i=e.urls||e.url;e.url&&!e.urls&&console.warn("RTCIceServer.url is deprecated! Use urls instead.");var n="string"==typeof i;return n&&(i=[i]),i=i.filter((function(e){return 0!==e.indexOf("turn:")||-1===e.indexOf("transport=udp")||-1!==e.indexOf("turn:[")||r?0===e.indexOf("stun:")&&t>=14393&&-1===e.indexOf("?transport=udp"):(r=!0,!0)})),delete e.url,e.urls=n?i[0]:i,!!i.length}}))}(r.iceServers||[],t),this._iceGatherers=[],r.iceCandidatePoolSize)for(var o=r.iceCandidatePoolSize;o>0;o--)this._iceGatherers.push(new e.RTCIceGatherer({iceServers:r.iceServers,gatherPolicy:r.iceTransportPolicy}));else r.iceCandidatePoolSize=0;this._config=r,this.transceivers=[],this._sdpSessionId=D.generateSessionId(),this._sdpSessionVersion=0,this._dtlsRole=void 0,this._isClosed=!1};Object.defineProperty(n.prototype,"localDescription",{configurable:!0,get:function(){return this._localDescription}}),Object.defineProperty(n.prototype,"remoteDescription",{configurable:!0,get:function(){return this._remoteDescription}}),n.prototype.onicecandidate=null,n.prototype.onaddstream=null,n.prototype.ontrack=null,n.prototype.onremovestream=null,n.prototype.onsignalingstatechange=null,n.prototype.oniceconnectionstatechange=null,n.prototype.onconnectionstatechange=null,n.prototype.onicegatheringstatechange=null,n.prototype.onnegotiationneeded=null,n.prototype.ondatachannel=null,n.prototype._dispatchEvent=function(e,t){this._isClosed||(this.dispatchEvent(t),"function"==typeof this["on"+e]&&this["on"+e](t))},n.prototype._emitGatheringStateChange=function(){var e=new Event("icegatheringstatechange");this._dispatchEvent("icegatheringstatechange",e)},n.prototype.getConfiguration=function(){return this._config},n.prototype.getLocalStreams=function(){return this.localStreams},n.prototype.getRemoteStreams=function(){return this.remoteStreams},n.prototype._createTransceiver=function(e,t){var r=this.transceivers.length>0,i={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:!0};if(this.usingBundle&&r)i.iceTransport=this.transceivers[0].iceTransport,i.dtlsTransport=this.transceivers[0].dtlsTransport;else{var n=this._createIceAndDtlsTransports();i.iceTransport=n.iceTransport,i.dtlsTransport=n.dtlsTransport}return t||this.transceivers.push(i),i},n.prototype.addTrack=function(t,r){if(this._isClosed)throw $("InvalidStateError","Attempted to call addTrack on a closed peerconnection.");var i;if(this.transceivers.find((function(e){return e.track===t})))throw $("InvalidAccessError","Track already exists.");for(var n=0;n<this.transceivers.length;n++)this.transceivers[n].track||this.transceivers[n].kind!==t.kind||(i=this.transceivers[n]);return i||(i=this._createTransceiver(t.kind)),this._maybeFireNegotiationNeeded(),-1===this.localStreams.indexOf(r)&&this.localStreams.push(r),i.track=t,i.stream=r,i.rtpSender=new e.RTCRtpSender(t,i.dtlsTransport),i.rtpSender},n.prototype.addStream=function(e){var r=this;if(t>=15025)e.getTracks().forEach((function(t){r.addTrack(t,e)}));else{var i=e.clone();e.getTracks().forEach((function(e,t){var r=i.getTracks()[t];e.addEventListener("enabled",(function(e){r.enabled=e.enabled}))})),i.getTracks().forEach((function(e){r.addTrack(e,i)}))}},n.prototype.removeTrack=function(t){if(this._isClosed)throw $("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 $("InvalidAccessError","Sender was not created by this connection.");var i=r.stream;r.rtpSender.stop(),r.rtpSender=null,r.track=null,r.stream=null,-1===this.transceivers.map((function(e){return e.stream})).indexOf(i)&&this.localStreams.indexOf(i)>-1&&this.localStreams.splice(this.localStreams.indexOf(i),1),this._maybeFireNegotiationNeeded()},n.prototype.removeStream=function(e){var t=this;e.getTracks().forEach((function(e){var r=t.getSenders().find((function(t){return t.track===e}));r&&t.removeTrack(r)}))},n.prototype.getSenders=function(){return this.transceivers.filter((function(e){return!!e.rtpSender})).map((function(e){return e.rtpSender}))},n.prototype.getReceivers=function(){return this.transceivers.filter((function(e){return!!e.rtpReceiver})).map((function(e){return e.rtpReceiver}))},n.prototype._createIceGatherer=function(t,r){var i=this;if(r&&t>0)return this.transceivers[0].iceGatherer;if(this._iceGatherers.length)return this._iceGatherers.shift();var n=new e.RTCIceGatherer({iceServers:this._config.iceServers,gatherPolicy:this._config.iceTransportPolicy});return Object.defineProperty(n,"state",{value:"new",writable:!0}),this.transceivers[t].bufferedCandidateEvents=[],this.transceivers[t].bufferCandidates=function(e){var r=!e.candidate||0===Object.keys(e.candidate).length;n.state=r?"completed":"gathering",null!==i.transceivers[t].bufferedCandidateEvents&&i.transceivers[t].bufferedCandidateEvents.push(e)},n.addEventListener("localcandidate",this.transceivers[t].bufferCandidates),n},n.prototype._gather=function(t,r){var i=this,n=this.transceivers[r].iceGatherer;if(!n.onlocalcandidate){var o=this.transceivers[r].bufferedCandidateEvents;this.transceivers[r].bufferedCandidateEvents=null,n.removeEventListener("localcandidate",this.transceivers[r].bufferCandidates),n.onlocalcandidate=function(e){if(!(i.usingBundle&&r>0)){var o=new Event("icecandidate");o.candidate={sdpMid:t,sdpMLineIndex:r};var s=e.candidate,a=!s||0===Object.keys(s).length;if(a)"new"!==n.state&&"gathering"!==n.state||(n.state="completed");else{"new"===n.state&&(n.state="gathering"),s.component=1,s.ufrag=n.getLocalParameters().usernameFragment;var c=D.writeCandidate(s);o.candidate=Object.assign(o.candidate,D.parseCandidate(c)),o.candidate.candidate=c,o.candidate.toJSON=function(){return{candidate:o.candidate.candidate,sdpMid:o.candidate.sdpMid,sdpMLineIndex:o.candidate.sdpMLineIndex,usernameFragment:o.candidate.usernameFragment}}}var d=D.getMediaSections(i._localDescription.sdp);d[o.candidate.sdpMLineIndex]+=a?"a=end-of-candidates\r\n":"a="+o.candidate.candidate+"\r\n",i._localDescription.sdp=D.getDescription(i._localDescription.sdp)+d.join("");var u=i.transceivers.every((function(e){return e.iceGatherer&&"completed"===e.iceGatherer.state}));"gathering"!==i.iceGatheringState&&(i.iceGatheringState="gathering",i._emitGatheringStateChange()),a||i._dispatchEvent("icecandidate",o),u&&(i._dispatchEvent("icecandidate",new Event("icecandidate")),i.iceGatheringState="complete",i._emitGatheringStateChange())}},e.setTimeout((function(){o.forEach((function(e){n.onlocalcandidate(e)}))}),0)}},n.prototype._createIceAndDtlsTransports=function(){var t=this,r=new e.RTCIceTransport(null);r.onicestatechange=function(){t._updateIceConnectionState(),t._updateConnectionState()};var i=new e.RTCDtlsTransport(r);return i.ondtlsstatechange=function(){t._updateConnectionState()},i.onerror=function(){Object.defineProperty(i,"state",{value:"failed",writable:!0}),t._updateConnectionState()},{iceTransport:r,dtlsTransport:i}},n.prototype._disposeIceAndDtlsTransports=function(e){var t=this.transceivers[e].iceGatherer;t&&(delete t.onlocalcandidate,delete this.transceivers[e].iceGatherer);var r=this.transceivers[e].iceTransport;r&&(delete r.onicestatechange,delete this.transceivers[e].iceTransport);var i=this.transceivers[e].dtlsTransport;i&&(delete i.ondtlsstatechange,delete i.onerror,delete this.transceivers[e].dtlsTransport)},n.prototype._transceive=function(e,r,i){var n=x(e.localCapabilities,e.remoteCapabilities);r&&e.rtpSender&&(n.encodings=e.sendEncodingParameters,n.rtcp={cname:D.localCName,compound:e.rtcpParameters.compound},e.recvEncodingParameters.length&&(n.rtcp.ssrc=e.recvEncodingParameters[0].ssrc),e.rtpSender.send(n)),i&&e.rtpReceiver&&n.codecs.length>0&&("video"===e.kind&&e.recvEncodingParameters&&t<15019&&e.recvEncodingParameters.forEach((function(e){delete e.rtx})),e.recvEncodingParameters.length?n.encodings=e.recvEncodingParameters:n.encodings=[{}],n.rtcp={compound:e.rtcpParameters.compound},e.rtcpParameters.cname&&(n.rtcp.cname=e.rtcpParameters.cname),e.sendEncodingParameters.length&&(n.rtcp.ssrc=e.sendEncodingParameters[0].ssrc),e.rtpReceiver.receive(n))},n.prototype.setLocalDescription=function(e){var t,r,i=this;if(-1===["offer","answer"].indexOf(e.type))return Promise.reject($("TypeError",'Unsupported type "'+e.type+'"'));if(!U("setLocalDescription",e.type,i.signalingState)||i._isClosed)return Promise.reject($("InvalidStateError","Can not set local "+e.type+" in state "+i.signalingState));if("offer"===e.type)t=D.splitSections(e.sdp),r=t.shift(),t.forEach((function(e,t){var r=D.parseRtpParameters(e);i.transceivers[t].localCapabilities=r})),i.transceivers.forEach((function(e,t){i._gather(e.mid,t)}));else if("answer"===e.type){t=D.splitSections(i._remoteDescription.sdp),r=t.shift();var n=D.matchPrefix(r,"a=ice-lite").length>0;t.forEach((function(e,t){var o=i.transceivers[t],s=o.iceGatherer,a=o.iceTransport,c=o.dtlsTransport,d=o.localCapabilities,u=o.remoteCapabilities;if(!(D.isRejected(e)&&0===D.matchPrefix(e,"a=bundle-only").length)&&!o.rejected){var l=D.getIceParameters(e,r),h=D.getDtlsParameters(e,r);n&&(h.role="server"),i.usingBundle&&0!==t||(i._gather(o.mid,t),"new"===a.state&&a.start(s,l,n?"controlling":"controlled"),"new"===c.state&&c.start(h));var p=x(d,u);i._transceive(o,p.codecs.length>0,!1)}}))}return i._localDescription={type:e.type,sdp:e.sdp},"offer"===e.type?i._updateSignalingState("have-local-offer"):i._updateSignalingState("stable"),Promise.resolve()},n.prototype.setRemoteDescription=function(n){var o=this;if(-1===["offer","answer"].indexOf(n.type))return Promise.reject($("TypeError",'Unsupported type "'+n.type+'"'));if(!U("setRemoteDescription",n.type,o.signalingState)||o._isClosed)return Promise.reject($("InvalidStateError","Can not set remote "+n.type+" in state "+o.signalingState));var s={};o.remoteStreams.forEach((function(e){s[e.id]=e}));var a=[],c=D.splitSections(n.sdp),d=c.shift(),u=D.matchPrefix(d,"a=ice-lite").length>0,l=D.matchPrefix(d,"a=group:BUNDLE ").length>0;o.usingBundle=l;var h=D.matchPrefix(d,"a=ice-options:")[0];return o.canTrickleIceCandidates=!!h&&h.substr(14).split(" ").indexOf("trickle")>=0,c.forEach((function(i,c){var h=D.splitLines(i),p=D.getKind(i),m=D.isRejected(i)&&0===D.matchPrefix(i,"a=bundle-only").length,_=h[0].substr(2).split(" ")[2],R=D.getDirection(i,d),C=D.parseMsid(i),f=D.getMid(i)||D.generateIdentifier();if(m||"application"===p&&("DTLS/SCTP"===_||"UDP/DTLS/SCTP"===_))o.transceivers[c]={mid:f,kind:p,protocol:_,rejected:!0};else{var v,T,g,S,I,E,y,k,b;!m&&o.transceivers[c]&&o.transceivers[c].rejected&&(o.transceivers[c]=o._createTransceiver(p,!0));var P,O,L=D.parseRtpParameters(i);m||(P=D.getIceParameters(i,d),(O=D.getDtlsParameters(i,d)).role="client"),y=D.parseRtpEncodingParameters(i);var N=D.parseRtcpParameters(i),A=D.matchPrefix(i,"a=end-of-candidates",d).length>0,M=D.matchPrefix(i,"a=candidate:").map((function(e){return D.parseCandidate(e)})).filter((function(e){return 1===e.component}));if(("offer"===n.type||"answer"===n.type)&&!m&&l&&c>0&&o.transceivers[c]&&(o._disposeIceAndDtlsTransports(c),o.transceivers[c].iceGatherer=o.transceivers[0].iceGatherer,o.transceivers[c].iceTransport=o.transceivers[0].iceTransport,o.transceivers[c].dtlsTransport=o.transceivers[0].dtlsTransport,o.transceivers[c].rtpSender&&o.transceivers[c].rtpSender.setTransport(o.transceivers[0].dtlsTransport),o.transceivers[c].rtpReceiver&&o.transceivers[c].rtpReceiver.setTransport(o.transceivers[0].dtlsTransport)),"offer"!==n.type||m){if("answer"===n.type&&!m){T=(v=o.transceivers[c]).iceGatherer,g=v.iceTransport,S=v.dtlsTransport,I=v.rtpReceiver,E=v.sendEncodingParameters,k=v.localCapabilities,o.transceivers[c].recvEncodingParameters=y,o.transceivers[c].remoteCapabilities=L,o.transceivers[c].rtcpParameters=N,M.length&&"new"===g.state&&(!u&&!A||l&&0!==c?M.forEach((function(e){w(v.iceTransport,e)})):g.setRemoteCandidates(M)),l&&0!==c||("new"===g.state&&g.start(T,P,"controlling"),"new"===S.state&&S.start(O)),!x(v.localCapabilities,v.remoteCapabilities).codecs.filter((function(e){return"rtx"===e.name.toLowerCase()})).length&&v.sendEncodingParameters[0].rtx&&delete v.sendEncodingParameters[0].rtx,o._transceive(v,"sendrecv"===R||"recvonly"===R,"sendrecv"===R||"sendonly"===R),!I||"sendrecv"!==R&&"sendonly"!==R?delete v.rtpReceiver:(b=I.track,C?(s[C.stream]||(s[C.stream]=new e.MediaStream),r(b,s[C.stream]),a.push([b,I,s[C.stream]])):(s.default||(s.default=new e.MediaStream),r(b,s.default),a.push([b,I,s.default])))}}else{(v=o.transceivers[c]||o._createTransceiver(p)).mid=f,v.iceGatherer||(v.iceGatherer=o._createIceGatherer(c,l)),M.length&&"new"===v.iceTransport.state&&(!A||l&&0!==c?M.forEach((function(e){w(v.iceTransport,e)})):v.iceTransport.setRemoteCandidates(M)),k=e.RTCRtpReceiver.getCapabilities(p),t<15019&&(k.codecs=k.codecs.filter((function(e){return"rtx"!==e.name}))),E=v.sendEncodingParameters||[{ssrc:1001*(2*c+2)}];var U,$=!1;if("sendrecv"===R||"sendonly"===R){if($=!v.rtpReceiver,I=v.rtpReceiver||new e.RTCRtpReceiver(v.dtlsTransport,p),$)b=I.track,C&&"-"===C.stream||(C?(s[C.stream]||(s[C.stream]=new e.MediaStream,Object.defineProperty(s[C.stream],"id",{get:function(){return C.stream}})),Object.defineProperty(b,"id",{get:function(){return C.track}}),U=s[C.stream]):(s.default||(s.default=new e.MediaStream),U=s.default)),U&&(r(b,U),v.associatedRemoteMediaStreams.push(U)),a.push([b,I,U])}else v.rtpReceiver&&v.rtpReceiver.track&&(v.associatedRemoteMediaStreams.forEach((function(t){var r=t.getTracks().find((function(e){return e.id===v.rtpReceiver.track.id}));r&&function(t,r){r.removeTrack(t),r.dispatchEvent(new e.MediaStreamTrackEvent("removetrack",{track:t}))}(r,t)})),v.associatedRemoteMediaStreams=[]);v.localCapabilities=k,v.remoteCapabilities=L,v.rtpReceiver=I,v.rtcpParameters=N,v.sendEncodingParameters=E,v.recvEncodingParameters=y,o._transceive(o.transceivers[c],!1,$)}}})),void 0===o._dtlsRole&&(o._dtlsRole="offer"===n.type?"active":"passive"),o._remoteDescription={type:n.type,sdp:n.sdp},"offer"===n.type?o._updateSignalingState("have-remote-offer"):o._updateSignalingState("stable"),Object.keys(s).forEach((function(t){var r=s[t];if(r.getTracks().length){if(-1===o.remoteStreams.indexOf(r)){o.remoteStreams.push(r);var n=new Event("addstream");n.stream=r,e.setTimeout((function(){o._dispatchEvent("addstream",n)}))}a.forEach((function(e){var t=e[0],n=e[1];r.id===e[2].id&&i(o,t,n,[r])}))}})),a.forEach((function(e){e[2]||i(o,e[0],e[1],[])})),e.setTimeout((function(){o&&o.transceivers&&o.transceivers.forEach((function(e){e.iceTransport&&"new"===e.iceTransport.state&&e.iceTransport.getRemoteCandidates().length>0&&(console.warn("Timeout for addRemoteCandidate. Consider sending an end-of-candidates notification"),e.iceTransport.addRemoteCandidate({}))}))}),4e3),Promise.resolve()},n.prototype.close=function(){this.transceivers.forEach((function(e){e.iceTransport&&e.iceTransport.stop(),e.dtlsTransport&&e.dtlsTransport.stop(),e.rtpSender&&e.rtpSender.stop(),e.rtpReceiver&&e.rtpReceiver.stop()})),this._isClosed=!0,this._updateSignalingState("closed")},n.prototype._updateSignalingState=function(e){this.signalingState=e;var t=new Event("signalingstatechange");this._dispatchEvent("signalingstatechange",t)},n.prototype._maybeFireNegotiationNeeded=function(){var t=this;"stable"===this.signalingState&&!0!==this.needNegotiation&&(this.needNegotiation=!0,e.setTimeout((function(){if(t.needNegotiation){t.needNegotiation=!1;var e=new Event("negotiationneeded");t._dispatchEvent("negotiationneeded",e)}}),0))},n.prototype._updateIceConnectionState=function(){var e,t={new:0,closed:0,checking:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach((function(e){e.iceTransport&&!e.rejected&&t[e.iceTransport.state]++})),e="new",t.failed>0?e="failed":t.checking>0?e="checking":t.disconnected>0?e="disconnected":t.new>0?e="new":t.connected>0?e="connected":t.completed>0&&(e="completed"),e!==this.iceConnectionState){this.iceConnectionState=e;var r=new Event("iceconnectionstatechange");this._dispatchEvent("iceconnectionstatechange",r)}},n.prototype._updateConnectionState=function(){var e,t={new:0,closed:0,connecting:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach((function(e){e.iceTransport&&e.dtlsTransport&&!e.rejected&&(t[e.iceTransport.state]++,t[e.dtlsTransport.state]++)})),t.connected+=t.completed,e="new",t.failed>0?e="failed":t.connecting>0?e="connecting":t.disconnected>0?e="disconnected":t.new>0?e="new":t.connected>0&&(e="connected"),e!==this.connectionState){this.connectionState=e;var r=new Event("connectionstatechange");this._dispatchEvent("connectionstatechange",r)}},n.prototype.createOffer=function(){var r=this;if(r._isClosed)return Promise.reject($("InvalidStateError","Can not call createOffer after close"));var i=r.transceivers.filter((function(e){return"audio"===e.kind})).length,n=r.transceivers.filter((function(e){return"video"===e.kind})).length,o=arguments[0];if(o){if(o.mandatory||o.optional)throw new TypeError("Legacy mandatory/optional constraints not supported.");void 0!==o.offerToReceiveAudio&&(i=!0===o.offerToReceiveAudio?1:!1===o.offerToReceiveAudio?0:o.offerToReceiveAudio),void 0!==o.offerToReceiveVideo&&(n=!0===o.offerToReceiveVideo?1:!1===o.offerToReceiveVideo?0:o.offerToReceiveVideo)}for(r.transceivers.forEach((function(e){"audio"===e.kind?--i<0&&(e.wantReceive=!1):"video"===e.kind&&--n<0&&(e.wantReceive=!1)}));i>0||n>0;)i>0&&(r._createTransceiver("audio"),i--),n>0&&(r._createTransceiver("video"),n--);var s=D.writeSessionBoilerplate(r._sdpSessionId,r._sdpSessionVersion++);r.transceivers.forEach((function(i,n){var o=i.track,s=i.kind,a=i.mid||D.generateIdentifier();i.mid=a,i.iceGatherer||(i.iceGatherer=r._createIceGatherer(n,r.usingBundle));var c=e.RTCRtpSender.getCapabilities(s);t<15019&&(c.codecs=c.codecs.filter((function(e){return"rtx"!==e.name}))),c.codecs.forEach((function(e){"H264"===e.name&&void 0===e.parameters["level-asymmetry-allowed"]&&(e.parameters["level-asymmetry-allowed"]="1"),i.remoteCapabilities&&i.remoteCapabilities.codecs&&i.remoteCapabilities.codecs.forEach((function(t){e.name.toLowerCase()===t.name.toLowerCase()&&e.clockRate===t.clockRate&&(e.preferredPayloadType=t.payloadType)}))})),c.headerExtensions.forEach((function(e){(i.remoteCapabilities&&i.remoteCapabilities.headerExtensions||[]).forEach((function(t){e.uri===t.uri&&(e.id=t.id)}))}));var d=i.sendEncodingParameters||[{ssrc:1001*(2*n+1)}];o&&t>=15019&&"video"===s&&!d[0].rtx&&(d[0].rtx={ssrc:d[0].ssrc+1}),i.wantReceive&&(i.rtpReceiver=new e.RTCRtpReceiver(i.dtlsTransport,s)),i.localCapabilities=c,i.sendEncodingParameters=d})),"max-compat"!==r._config.bundlePolicy&&(s+="a=group:BUNDLE "+r.transceivers.map((function(e){return e.mid})).join(" ")+"\r\n"),s+="a=ice-options:trickle\r\n",r.transceivers.forEach((function(e,t){s+=M(e,e.localCapabilities,"offer",e.stream,r._dtlsRole),s+="a=rtcp-rsize\r\n",!e.iceGatherer||"new"===r.iceGatheringState||0!==t&&r.usingBundle||(e.iceGatherer.getLocalCandidates().forEach((function(e){e.component=1,s+="a="+D.writeCandidate(e)+"\r\n"})),"completed"===e.iceGatherer.state&&(s+="a=end-of-candidates\r\n"))}));var a=new e.RTCSessionDescription({type:"offer",sdp:s});return Promise.resolve(a)},n.prototype.createAnswer=function(){var r=this;if(r._isClosed)return Promise.reject($("InvalidStateError","Can not call createAnswer after close"));if("have-remote-offer"!==r.signalingState&&"have-local-pranswer"!==r.signalingState)return Promise.reject($("InvalidStateError","Can not call createAnswer in signalingState "+r.signalingState));var i=D.writeSessionBoilerplate(r._sdpSessionId,r._sdpSessionVersion++);r.usingBundle&&(i+="a=group:BUNDLE "+r.transceivers.map((function(e){return e.mid})).join(" ")+"\r\n"),i+="a=ice-options:trickle\r\n";var n=D.getMediaSections(r._remoteDescription.sdp).length;r.transceivers.forEach((function(e,o){if(!(o+1>n)){if(e.rejected)return"application"===e.kind?"DTLS/SCTP"===e.protocol?i+="m=application 0 DTLS/SCTP 5000\r\n":i+="m=application 0 "+e.protocol+" webrtc-datachannel\r\n":"audio"===e.kind?i+="m=audio 0 UDP/TLS/RTP/SAVPF 0\r\na=rtpmap:0 PCMU/8000\r\n":"video"===e.kind&&(i+="m=video 0 UDP/TLS/RTP/SAVPF 120\r\na=rtpmap:120 VP8/90000\r\n"),void(i+="c=IN IP4 0.0.0.0\r\na=inactive\r\na=mid:"+e.mid+"\r\n");var s;if(e.stream)"audio"===e.kind?s=e.stream.getAudioTracks()[0]:"video"===e.kind&&(s=e.stream.getVideoTracks()[0]),s&&t>=15019&&"video"===e.kind&&!e.sendEncodingParameters[0].rtx&&(e.sendEncodingParameters[0].rtx={ssrc:e.sendEncodingParameters[0].ssrc+1});var a=x(e.localCapabilities,e.remoteCapabilities);!a.codecs.filter((function(e){return"rtx"===e.name.toLowerCase()})).length&&e.sendEncodingParameters[0].rtx&&delete e.sendEncodingParameters[0].rtx,i+=M(e,a,"answer",e.stream,r._dtlsRole),e.rtcpParameters&&e.rtcpParameters.reducedSize&&(i+="a=rtcp-rsize\r\n")}}));var o=new e.RTCSessionDescription({type:"answer",sdp:i});return Promise.resolve(o)},n.prototype.addIceCandidate=function(e){var t,r=this;return e&&void 0===e.sdpMLineIndex&&!e.sdpMid?Promise.reject(new TypeError("sdpMLineIndex or sdpMid required")):new Promise((function(i,n){if(!r._remoteDescription)return n($("InvalidStateError","Can not add ICE candidate without a remote description"));if(e&&""!==e.candidate){var o=e.sdpMLineIndex;if(e.sdpMid)for(var s=0;s<r.transceivers.length;s++)if(r.transceivers[s].mid===e.sdpMid){o=s;break}var a=r.transceivers[o];if(!a)return n($("OperationError","Can not add ICE candidate"));if(a.rejected)return i();var c=Object.keys(e.candidate).length>0?D.parseCandidate(e.candidate):{};if("tcp"===c.protocol&&(0===c.port||9===c.port))return i();if(c.component&&1!==c.component)return i();if((0===o||o>0&&a.iceTransport!==r.transceivers[0].iceTransport)&&!w(a.iceTransport,c))return n($("OperationError","Can not add ICE candidate"));var d=e.candidate.trim();0===d.indexOf("a=")&&(d=d.substr(2)),(t=D.getMediaSections(r._remoteDescription.sdp))[o]+="a="+(c.type?d:"end-of-candidates")+"\r\n",r._remoteDescription.sdp=D.getDescription(r._remoteDescription.sdp)+t.join("")}else for(var u=0;u<r.transceivers.length&&(r.transceivers[u].rejected||(r.transceivers[u].iceTransport.addRemoteCandidate({}),(t=D.getMediaSections(r._remoteDescription.sdp))[u]+="a=end-of-candidates\r\n",r._remoteDescription.sdp=D.getDescription(r._remoteDescription.sdp)+t.join(""),!r.usingBundle));u++);i()}))},n.prototype.getStats=function(t){if(t&&t instanceof e.MediaStreamTrack){var r=null;if(this.transceivers.forEach((function(e){e.rtpSender&&e.rtpSender.track===t?r=e.rtpSender:e.rtpReceiver&&e.rtpReceiver.track===t&&(r=e.rtpReceiver)})),!r)throw $("InvalidAccessError","Invalid selector.");return r.getStats()}var i=[];return this.transceivers.forEach((function(e){["rtpSender","rtpReceiver","iceGatherer","iceTransport","dtlsTransport"].forEach((function(t){e[t]&&i.push(e[t].getStats())}))})),Promise.all(i).then((function(e){var t=new Map;return e.forEach((function(e){e.forEach((function(e){t.set(e.id,e)}))})),t}))};["RTCRtpSender","RTCRtpReceiver","RTCIceGatherer","RTCIceTransport","RTCDtlsTransport"].forEach((function(t){var r=e[t];if(r&&r.prototype&&r.prototype.getStats){var i=r.prototype.getStats;r.prototype.getStats=function(){return i.apply(this).then((function(e){var t=new Map;return Object.keys(e).forEach((function(r){var i;e[r].type={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[(i=e[r]).type]||i.type,t.set(r,e[r])})),t}))}}}));var o=["createOffer","createAnswer"];return o.forEach((function(e){var t=n.prototype[e];n.prototype[e]=function(){var e=arguments;return"function"==typeof e[0]||"function"==typeof e[1]?t.apply(this,[arguments[2]]).then((function(t){"function"==typeof e[0]&&e[0].apply(null,[t])}),(function(t){"function"==typeof e[1]&&e[1].apply(null,[t])})):t.apply(this,arguments)}})),(o=["setLocalDescription","setRemoteDescription","addIceCandidate"]).forEach((function(e){var t=n.prototype[e];n.prototype[e]=function(){var e=arguments;return"function"==typeof e[1]||"function"==typeof e[2]?t.apply(this,arguments).then((function(){"function"==typeof e[1]&&e[1].apply(null)}),(function(t){"function"==typeof e[2]&&e[2].apply(null,[t])})):t.apply(this,arguments)}})),["getStats"].forEach((function(e){var t=n.prototype[e];n.prototype[e]=function(){var e=arguments;return"function"==typeof e[1]?t.apply(this,arguments).then((function(){"function"==typeof e[1]&&e[1].apply(null)})):t.apply(this,arguments)}})),n};function V(e){const t=e&&e.navigator,r=t.mediaDevices.getUserMedia.bind(t.mediaDevices);t.mediaDevices.getUserMedia=function(e){return r(e).catch((e=>Promise.reject(function(e){return{name:{PermissionDeniedError:"NotAllowedError"}[e.name]||e.name,message:e.message,constraint:e.constraint,toString(){return this.name}}}(e))))}}function H(e){"getDisplayMedia"in e.navigator&&e.navigator.mediaDevices&&(e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||(e.navigator.mediaDevices.getDisplayMedia=e.navigator.getDisplayMedia.bind(e.navigator)))}function B(e,t){if(e.RTCIceGatherer&&(e.RTCIceCandidate||(e.RTCIceCandidate=function(e){return e}),e.RTCSessionDescription||(e.RTCSessionDescription=function(e){return e}),t.version<15025)){const t=Object.getOwnPropertyDescriptor(e.MediaStreamTrack.prototype,"enabled");Object.defineProperty(e.MediaStreamTrack.prototype,"enabled",{set(e){t.set.call(this,e);const r=new Event("enabled");r.enabled=e,this.dispatchEvent(r)}})}e.RTCRtpSender&&!("dtmf"in e.RTCRtpSender.prototype)&&Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=new e.RTCDtmfSender(this):"video"===this.track.kind&&(this._dtmf=null)),this._dtmf}}),e.RTCDtmfSender&&!e.RTCDTMFSender&&(e.RTCDTMFSender=e.RTCDtmfSender);const r=j(e,t.version);e.RTCPeerConnection=function(e){return e&&e.iceServers&&(e.iceServers=function(e,t){let r=!1;return(e=JSON.parse(JSON.stringify(e))).filter((e=>{if(e&&(e.urls||e.url)){let t=e.urls||e.url;e.url&&!e.urls&&R("RTCIceServer.url","RTCIceServer.urls");const i="string"==typeof t;return i&&(t=[t]),t=t.filter((e=>{if(0===e.indexOf("stun:"))return!1;const t=e.startsWith("turn")&&!e.startsWith("turn:[")&&e.includes("transport=udp");return t&&!r?(r=!0,!0):t&&!r})),delete e.url,e.urls=i?t[0]:t,!!t.length}}))}(e.iceServers,t.version),_("ICE servers after filtering:",e.iceServers)),new r(e)},e.RTCPeerConnection.prototype=r.prototype}function F(e){e.RTCRtpSender&&!("replaceTrack"in e.RTCRtpSender.prototype)&&(e.RTCRtpSender.prototype.replaceTrack=e.RTCRtpSender.prototype.setTrack)}var K=Object.freeze({__proto__:null,shimPeerConnection:B,shimReplaceTrack:F,shimGetUserMedia:V,shimGetDisplayMedia:H});function G(e,t){const r=e&&e.navigator,i=e&&e.MediaStreamTrack;if(r.getUserMedia=function(e,t,i){R("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),r.mediaDevices.getUserMedia(e).then(t,i)},!(t.version>55&&"autoGainControl"in r.mediaDevices.getSupportedConstraints())){const e=function(e,t,r){t in e&&!(r in e)&&(e[r]=e[t],delete e[t])},t=r.mediaDevices.getUserMedia.bind(r.mediaDevices);if(r.mediaDevices.getUserMedia=function(r){return"object"==typeof r&&"object"==typeof r.audio&&(r=JSON.parse(JSON.stringify(r)),e(r.audio,"autoGainControl","mozAutoGainControl"),e(r.audio,"noiseSuppression","mozNoiseSuppression")),t(r)},i&&i.prototype.getSettings){const t=i.prototype.getSettings;i.prototype.getSettings=function(){const r=t.apply(this,arguments);return e(r,"mozAutoGainControl","autoGainControl"),e(r,"mozNoiseSuppression","noiseSuppression"),r}}if(i&&i.prototype.applyConstraints){const t=i.prototype.applyConstraints;i.prototype.applyConstraints=function(r){return"audio"===this.kind&&"object"==typeof r&&(r=JSON.parse(JSON.stringify(r)),e(r,"autoGainControl","mozAutoGainControl"),e(r,"noiseSuppression","mozNoiseSuppression")),t.apply(this,[r])}}}}function J(e){"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function W(e,t){if("object"!=typeof e||!e.RTCPeerConnection&&!e.mozRTCPeerConnection)return;!e.RTCPeerConnection&&e.mozRTCPeerConnection&&(e.RTCPeerConnection=e.mozRTCPeerConnection),t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){const r=e.RTCPeerConnection.prototype[t],i={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),r.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=i[t]}));const r={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},i=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){const[e,n,o]=arguments;return i.apply(this,[e||null]).then((e=>{if(t.version<53&&!n)try{e.forEach((e=>{e.type=r[e.type]||e.type}))}catch(t){if("TypeError"!==t.name)throw t;e.forEach(((t,i)=>{e.set(i,Object.assign({},t,{type:r[t.type]||t.type}))}))}return e})).then(n,o)}}function Y(e){if("object"!=typeof e||!e.RTCPeerConnection||!e.RTCRtpSender)return;if(e.RTCRtpSender&&"getStats"in e.RTCRtpSender.prototype)return;const t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e});const r=e.RTCPeerConnection.prototype.addTrack;r&&(e.RTCPeerConnection.prototype.addTrack=function(){const e=r.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function q(e){if("object"!=typeof e||!e.RTCPeerConnection||!e.RTCRtpSender)return;if(e.RTCRtpSender&&"getStats"in e.RTCRtpReceiver.prototype)return;const t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e}),h(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function z(e){e.RTCPeerConnection&&!("removeStream"in e.RTCPeerConnection.prototype)&&(e.RTCPeerConnection.prototype.removeStream=function(e){R("removeStream","removeTrack"),this.getSenders().forEach((t=>{t.track&&e.getTracks().includes(t.track)&&this.removeTrack(t)}))})}function Q(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)}function X(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.addTransceiver;t&&(e.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];const e=arguments[1],r=e&&"sendEncodings"in e;r&&e.sendEncodings.forEach((e=>{if("rid"in e){if(!/^[a-z0-9]{0,16}$/i.test(e.rid))throw new TypeError("Invalid RID value provided.")}if("scaleResolutionDownBy"in e&&!(parseFloat(e.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in e&&!(parseFloat(e.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")}));const i=t.apply(this,arguments);if(r){const{sender:t}=i,r=t.getParameters();(!("encodings"in r)||1===r.encodings.length&&0===Object.keys(r.encodings[0]).length)&&(r.encodings=e.sendEncodings,t.sendEncodings=e.sendEncodings,this.setParametersPromises.push(t.setParameters(r).then((()=>{delete t.sendEncodings})).catch((()=>{delete t.sendEncodings}))))}return i})}function Z(e){if("object"!=typeof e||!e.RTCRtpSender)return;const t=e.RTCRtpSender.prototype.getParameters;t&&(e.RTCRtpSender.prototype.getParameters=function(){const e=t.apply(this,arguments);return"encodings"in e||(e.encodings=[].concat(this.sendEncodings||[{}])),e})}function ee(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.createOffer;e.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 te(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.createAnswer;e.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 re=Object.freeze({__proto__:null,shimOnTrack:J,shimPeerConnection:W,shimSenderGetStats:Y,shimReceiverGetStats:q,shimRemoveStream:z,shimRTCDataChannel:Q,shimAddTransceiver:X,shimGetParameters:Z,shimCreateOffer:ee,shimCreateAnswer:te,shimGetUserMedia:G,shimGetDisplayMedia:function(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&(e.navigator.mediaDevices.getDisplayMedia=function(r){if(!r||!r.video){const e=new DOMException("getDisplayMedia without video constraints is undefined");return e.name="NotFoundError",e.code=8,Promise.reject(e)}return!0===r.video?r.video={mediaSource:t}:r.video.mediaSource=t,e.navigator.mediaDevices.getUserMedia(r)})}});function ie(e){if("object"==typeof e&&e.RTCPeerConnection){if("getLocalStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in e.RTCPeerConnection.prototype)){const t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addStream=function(e){this._localStreams||(this._localStreams=[]),this._localStreams.includes(e)||this._localStreams.push(e),e.getAudioTracks().forEach((r=>t.call(this,r,e))),e.getVideoTracks().forEach((r=>t.call(this,r,e)))},e.RTCPeerConnection.prototype.addTrack=function(e,...r){return r&&r.forEach((e=>{this._localStreams?this._localStreams.includes(e)||this._localStreams.push(e):this._localStreams=[e]})),t.apply(this,arguments)}}"removeStream"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.removeStream=function(e){this._localStreams||(this._localStreams=[]);const t=this._localStreams.indexOf(e);if(-1===t)return;this._localStreams.splice(t,1);const r=e.getTracks();this.getSenders().forEach((e=>{r.includes(e.track)&&this.removeTrack(e)}))})}}function ne(e){if("object"==typeof e&&e.RTCPeerConnection&&("getRemoteStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in e.RTCPeerConnection.prototype))){Object.defineProperty(e.RTCPeerConnection.prototype,"onaddstream",{get(){return this._onaddstream},set(e){this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=e),this.addEventListener("track",this._onaddstreampoly=e=>{e.streams.forEach((e=>{if(this._remoteStreams||(this._remoteStreams=[]),this._remoteStreams.includes(e))return;this._remoteStreams.push(e);const t=new Event("addstream");t.stream=e,this.dispatchEvent(t)}))})}});const t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){const e=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(t){t.streams.forEach((t=>{if(e._remoteStreams||(e._remoteStreams=[]),e._remoteStreams.indexOf(t)>=0)return;e._remoteStreams.push(t);const r=new Event("addstream");r.stream=t,e.dispatchEvent(r)}))}),t.apply(e,arguments)}}}function oe(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype,r=t.createOffer,i=t.createAnswer,n=t.setLocalDescription,o=t.setRemoteDescription,s=t.addIceCandidate;t.createOffer=function(e,t){const i=arguments.length>=2?arguments[2]:arguments[0],n=r.apply(this,[i]);return t?(n.then(e,t),Promise.resolve()):n},t.createAnswer=function(e,t){const r=arguments.length>=2?arguments[2]:arguments[0],n=i.apply(this,[r]);return t?(n.then(e,t),Promise.resolve()):n};let a=function(e,t,r){const i=n.apply(this,[e]);return r?(i.then(t,r),Promise.resolve()):i};t.setLocalDescription=a,a=function(e,t,r){const i=o.apply(this,[e]);return r?(i.then(t,r),Promise.resolve()):i},t.setRemoteDescription=a,a=function(e,t,r){const i=s.apply(this,[e]);return r?(i.then(t,r),Promise.resolve()):i},t.addIceCandidate=a}function se(e){const t=e&&e.navigator;if(t.mediaDevices&&t.mediaDevices.getUserMedia){const e=t.mediaDevices,r=e.getUserMedia.bind(e);t.mediaDevices.getUserMedia=e=>r(ae(e))}!t.getUserMedia&&t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=function(e,r,i){t.mediaDevices.getUserMedia(e).then(r,i)}.bind(t))}function ae(e){return e&&void 0!==e.video?Object.assign({},e,{video:f(e.video)}):e}function ce(e){if(!e.RTCPeerConnection)return;const t=e.RTCPeerConnection;e.RTCPeerConnection=function(e,r){if(e&&e.iceServers){const t=[];for(let r=0;r<e.iceServers.length;r++){let i=e.iceServers[r];!i.hasOwnProperty("urls")&&i.hasOwnProperty("url")?(R("RTCIceServer.url","RTCIceServer.urls"),i=JSON.parse(JSON.stringify(i)),i.urls=i.url,delete i.url,t.push(i)):t.push(e.iceServers[r])}e.iceServers=t}return new t(e,r)},e.RTCPeerConnection.prototype=t.prototype,"generateCertificate"in t&&Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:()=>t.generateCertificate})}function de(e){"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function ue(e){const t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(e){if(e){void 0!==e.offerToReceiveAudio&&(e.offerToReceiveAudio=!!e.offerToReceiveAudio);const t=this.getTransceivers().find((e=>"audio"===e.receiver.track.kind));!1===e.offerToReceiveAudio&&t?"sendrecv"===t.direction?t.setDirection?t.setDirection("sendonly"):t.direction="sendonly":"recvonly"===t.direction&&(t.setDirection?t.setDirection("inactive"):t.direction="inactive"):!0!==e.offerToReceiveAudio||t||this.addTransceiver("audio"),void 0!==e.offerToReceiveVideo&&(e.offerToReceiveVideo=!!e.offerToReceiveVideo);const r=this.getTransceivers().find((e=>"video"===e.receiver.track.kind));!1===e.offerToReceiveVideo&&r?"sendrecv"===r.direction?r.setDirection?r.setDirection("sendonly"):r.direction="sendonly":"recvonly"===r.direction&&(r.setDirection?r.setDirection("inactive"):r.direction="inactive"):!0!==e.offerToReceiveVideo||r||this.addTransceiver("video")}return t.apply(this,arguments)}}function le(e){"object"!=typeof e||e.AudioContext||(e.AudioContext=e.webkitAudioContext)}var he=Object.freeze({__proto__:null,shimLocalStreamsAPI:ie,shimRemoteStreamsAPI:ne,shimCallbacksAPI:oe,shimGetUserMedia:se,shimConstraints:ae,shimRTCIceServerUrls:ce,shimTrackEventTransceiver:de,shimCreateOfferLegacy:ue,shimAudioContext:le});function pe(e){if(!e.RTCIceCandidate||e.RTCIceCandidate&&"foundation"in e.RTCIceCandidate.prototype)return;const t=e.RTCIceCandidate;e.RTCIceCandidate=function(e){if("object"==typeof e&&e.candidate&&0===e.candidate.indexOf("a=")&&((e=JSON.parse(JSON.stringify(e))).candidate=e.candidate.substr(2)),e.candidate&&e.candidate.length){const r=new t(e),i=D.parseCandidate(e.candidate),n=Object.assign(r,i);return n.toJSON=function(){return{candidate:n.candidate,sdpMid:n.sdpMid,sdpMLineIndex:n.sdpMLineIndex,usernameFragment:n.usernameFragment}},n}return new t(e)},e.RTCIceCandidate.prototype=t.prototype,h(e,"icecandidate",(t=>(t.candidate&&Object.defineProperty(t,"candidate",{value:new e.RTCIceCandidate(t.candidate),writable:"false"}),t)))}function me(e,t){if(!e.RTCPeerConnection)return;"sctp"in e.RTCPeerConnection.prototype||Object.defineProperty(e.RTCPeerConnection.prototype,"sctp",{get(){return void 0===this._sctp?null:this._sctp}});const r=function(e){if(!e||!e.sdp)return!1;const t=D.splitSections(e.sdp);return t.shift(),t.some((e=>{const t=D.parseMLine(e);return t&&"application"===t.kind&&-1!==t.protocol.indexOf("SCTP")}))},i=function(e){const t=e.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(null===t||t.length<2)return-1;const r=parseInt(t[1],10);return r!=r?-1:r},n=function(e){let r=65536;return"firefox"===t.browser&&(r=t.version<57?-1===e?16384:2147483637:t.version<60?57===t.version?65535:65536:2147483637),r},o=function(e,r){let i=65536;"firefox"===t.browser&&57===t.version&&(i=65535);const n=D.matchPrefix(e.sdp,"a=max-message-size:");return n.length>0?i=parseInt(n[0].substr(19),10):"firefox"===t.browser&&-1!==r&&(i=2147483637),i},s=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,"chrome"===t.browser&&t.version>=76){const{sdpSemantics:e}=this.getConfiguration();"plan-b"===e&&Object.defineProperty(this,"sctp",{get(){return void 0===this._sctp?null:this._sctp},enumerable:!0,configurable:!0})}if(r(arguments[0])){const e=i(arguments[0]),t=n(e),r=o(arguments[0],e);let s;s=0===t&&0===r?Number.POSITIVE_INFINITY:0===t||0===r?Math.max(t,r):Math.min(t,r);const a={};Object.defineProperty(a,"maxMessageSize",{get:()=>s}),this._sctp=a}return s.apply(this,arguments)}}function _e(e){if(!e.RTCPeerConnection||!("createDataChannel"in e.RTCPeerConnection.prototype))return;function t(e,t){const r=e.send;e.send=function(){const i=arguments[0],n=i.length||i.size||i.byteLength;if("open"===e.readyState&&t.sctp&&n>t.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+t.sctp.maxMessageSize+" bytes)");return r.apply(e,arguments)}}const r=e.RTCPeerConnection.prototype.createDataChannel;e.RTCPeerConnection.prototype.createDataChannel=function(){const e=r.apply(this,arguments);return t(e,this),e},h(e,"datachannel",(e=>(t(e.channel,e.target),e)))}function Re(e){if(!e.RTCPeerConnection||"connectionState"in e.RTCPeerConnection.prototype)return;const t=e.RTCPeerConnection.prototype;Object.defineProperty(t,"connectionState",{get(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(t,"onconnectionstatechange",{get(){return this._onconnectionstatechange||null},set(e){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),e&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=e)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach((e=>{const r=t[e];t[e]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=e=>{const t=e.target;if(t._lastConnectionState!==t.connectionState){t._lastConnectionState=t.connectionState;const r=new Event("connectionstatechange",e);t.dispatchEvent(r)}return e},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),r.apply(this,arguments)}}))}function Ce(e,t){if(!e.RTCPeerConnection)return;if("chrome"===t.browser&&t.version>=71)return;if("safari"===t.browser&&t.version>=605)return;const r=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(t){if(t&&t.sdp&&-1!==t.sdp.indexOf("\na=extmap-allow-mixed")){const r=t.sdp.split("\n").filter((e=>"a=extmap-allow-mixed"!==e.trim())).join("\n");e.RTCSessionDescription&&t instanceof e.RTCSessionDescription?arguments[0]=new e.RTCSessionDescription({type:t.type,sdp:r}):t.sdp=r}return r.apply(this,arguments)}}function fe(e,t){if(!e.RTCPeerConnection||!e.RTCPeerConnection.prototype)return;const r=e.RTCPeerConnection.prototype.addIceCandidate;r&&0!==r.length&&(e.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?("chrome"===t.browser&&t.version<78||"firefox"===t.browser&&t.version<68||"safari"===t.browser)&&arguments[0]&&""===arguments[0].candidate?Promise.resolve():r.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}var ve=Object.freeze({__proto__:null,shimRTCIceCandidate:pe,shimMaxMessageSize:me,shimSendThrowTypeError:_e,shimConnectionState:Re,removeExtmapAllowMixed:Ce,shimAddIceCandidateNullOrEmpty:fe});const Te=function({window:e}={},t={shimChrome:!0,shimFirefox:!0,shimEdge:!0,shimSafari:!0}){const r=_,i=function(e){const t={browser:null,version:null};if(void 0===e||!e.navigator)return t.browser="Not a browser.",t;const{navigator:r}=e;if(r.mozGetUserMedia)t.browser="firefox",t.version=l(r.userAgent,/Firefox\/(\d+)\./,1);else if(r.webkitGetUserMedia||!1===e.isSecureContext&&e.webkitRTCPeerConnection&&!e.RTCIceGatherer)t.browser="chrome",t.version=l(r.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else if(r.mediaDevices&&r.userAgent.match(/Edge\/(\d+).(\d+)$/))t.browser="edge",t.version=l(r.userAgent,/Edge\/(\d+).(\d+)$/,2);else{if(!e.RTCPeerConnection||!r.userAgent.match(/AppleWebKit\/(\d+)\./))return t.browser="Not a supported browser.",t;t.browser="safari",t.version=l(r.userAgent,/AppleWebKit\/(\d+)\./,1),t.supportsUnifiedPlan=e.RTCRtpTransceiver&&"currentDirection"in e.RTCRtpTransceiver.prototype}return t}(e),n={browserDetails:i,commonShim:ve,extractVersion:l,disableLog:p,disableWarnings:m};switch(i.browser){case"chrome":if(!A||!L||!t.shimChrome)return r("Chrome shim is not included in this adapter release."),n;if(null===i.version)return r("Chrome shim can not determine version, not shimming."),n;r("adapter.js shimming chrome."),n.browserShim=A,fe(e,i),S(e,i),I(e),L(e,i),E(e),O(e,i),y(e),k(e),b(e),N(e,i),pe(e),Re(e),me(e,i),_e(e),Ce(e,i);break;case"firefox":if(!re||!W||!t.shimFirefox)return r("Firefox shim is not included in this adapter release."),n;r("adapter.js shimming firefox."),n.browserShim=re,fe(e,i),G(e,i),W(e,i),J(e),z(e),Y(e),q(e),Q(e),X(e),Z(e),ee(e),te(e),pe(e),Re(e),me(e,i),_e(e);break;case"edge":if(!K||!B||!t.shimEdge)return r("MS edge shim is not included in this adapter release."),n;r("adapter.js shimming edge."),n.browserShim=K,V(e),H(e),B(e,i),F(e),me(e,i),_e(e);break;case"safari":if(!he||!t.shimSafari)return r("Safari shim is not included in this adapter release."),n;r("adapter.js shimming safari."),n.browserShim=he,fe(e,i),ce(e),ue(e),oe(e),ie(e),ne(e),de(e),se(e),le(e),pe(e),me(e,i),_e(e),Ce(e,i);break;default:r("Unsupported browser!")}return n}({window:"undefined"==typeof window?void 0:window});var ge,Se,Ie;e.RCFrameRate=void 0,(ge=e.RCFrameRate||(e.RCFrameRate={})).FPS_10="FPS_10",ge.FPS_15="FPS_15",ge.FPS_24="FPS_24",ge.FPS_30="FPS_30",e.RCResolution=void 0,(Se=e.RCResolution||(e.RCResolution={})).W176_H132="W176_H132",Se.W176_H144="W176_H144",Se.W256_H144="W256_H144",Se.W320_H180="W320_H180",Se.W240_H240="W240_H240",Se.W320_H240="W320_H240",Se.W480_H360="W480_H360",Se.W640_H360="W640_H360",Se.W480_H480="W480_H480",Se.W640_H480="W640_H480",Se.W720_H480="W720_H480",Se.W1280_H720="W1280_H720",Se.W1920_H1080="W1920_H1080",e.RCMediaType=void 0,(Ie=e.RCMediaType||(e.RCMediaType={}))[Ie.AUDIO_ONLY=0]="AUDIO_ONLY",Ie[Ie.VIDEO_ONLY=1]="VIDEO_ONLY",Ie[Ie.AUDIO_VIDEO=2]="AUDIO_VIDEO";const Ee={[e.RCResolution.W176_H132]:{width:176,height:132,maxBitrate:150,minBitrate:80},[e.RCResolution.W176_H144]:{width:176,height:144,maxBitrate:160,minBitrate:80},[e.RCResolution.W256_H144]:{width:256,height:144,maxBitrate:240,minBitrate:120},[e.RCResolution.W320_H180]:{width:320,height:180,maxBitrate:280,minBitrate:120},[e.RCResolution.W240_H240]:{width:240,height:240,maxBitrate:280,minBitrate:120},[e.RCResolution.W320_H240]:{width:320,height:240,maxBitrate:400,minBitrate:120},[e.RCResolution.W480_H360]:{width:480,height:360,maxBitrate:650,minBitrate:150},[e.RCResolution.W640_H360]:{width:640,height:360,maxBitrate:800,minBitrate:180},[e.RCResolution.W480_H480]:{width:480,height:480,maxBitrate:800,minBitrate:180},[e.RCResolution.W640_H480]:{width:640,height:480,maxBitrate:900,minBitrate:200},[e.RCResolution.W720_H480]:{width:720,height:480,maxBitrate:1e3,minBitrate:200},[e.RCResolution.W1280_H720]:{width:1280,height:720,maxBitrate:2200,minBitrate:250},[e.RCResolution.W1920_H1080]:{width:1920,height:1080,maxBitrate:4e3,minBitrate:400}},ye=(e,t)=>{const r=e*t;let i=Number.MAX_VALUE,n=null;for(const e in Ee){const t=Ee[e],o=Math.abs(t.width*t.height-r);o<i&&(n=t,i=o)}return n},ke={10:1,15:1,24:1.5,30:1.5},be=e=>{let t=Number.MAX_VALUE,r=1;for(const i in ke){const n=Math.abs(e-parseInt(i));n<t&&(t=n,r=ke[i])}return r},Pe={getCameras:()=>r(void 0,void 0,void 0,(function*(){return(yield navigator.mediaDevices.enumerateDevices()).filter((e=>"videoinput"===e.kind))})),getMicrophones:()=>r(void 0,void 0,void 0,(function*(){return(yield navigator.mediaDevices.enumerateDevices()).filter((e=>"audioinput"===e.kind))})),getSpeakers:()=>r(void 0,void 0,void 0,(function*(){return(yield navigator.mediaDevices.enumerateDevices()).filter((e=>"audiooutput"===e.kind))}))};class Oe extends t.EventEmitter{constructor(e,t,r,i,n){super(),this._tag=e,this._userId=t,this._kind=r,this._isLocalTrack=i,this._roomId=n,this._localMuted=!1,this._remoteMuted=!1,this._streamId=[this._userId||this._roomId,this._tag].join("_"),this._id=[this._streamId,this.isAudioTrack()?0:1].join("_")}getStreamId(){return this._streamId}getTrackId(){return this._id}getUserId(){return this._userId}__innerGetMediaStreamTrack(){return this._msTrack}getTag(){return this._tag}isLocalTrack(){return this._isLocalTrack}isVideoTrack(){return"video"===this._kind}isAudioTrack(){return"audio"===this._kind}isReady(){var e;return"live"===(null===(e=this._msTrack)||void 0===e?void 0:e.readyState)}__innerSetMediaStreamTrack(e){this._msTrack=e,this._setLocalMuted(this._localMuted);const t=this._msStream=this._msStream||new MediaStream,r=t.getTracks()[0];r&&t.removeTrack(r),e?t.addTrack(e):this._element&&(this._element.pause(),this._element.srcObject=null)}_setLocalMuted(e){this._msTrack&&(this._msTrack.enabled=!e),this._localMuted=e}mute(){i.info(`set ${this._id} enabled: false`),this._setLocalMuted(!0)}unmute(){i.info(`set ${this._id} enabled: true`),this._setLocalMuted(!1)}isLocalMuted(){return this._localMuted}isMCUTrack(){return Boolean(this._roomId)}isOwnerMuted(){return this._remoteMuted}play(n,o){return r(this,void 0,void 0,(function*(){if(!this._msTrack)return i.warn(`the track is not ready to play -> id: ${this._id}`),{code:e.RCRTCCode.TRACK_NOT_READY};if("ended"===this._msTrack.readyState&&i.warn(`the track's readyState is 'ended' -> id: ${this._id}`),null==o?void 0:o.volume){if(!t.isNumber(null==o?void 0:o.volume))return i.error(`${null==o?void 0:o.volume} is not a number, the valid range of options.volume is 0-100`),{code:e.RCRTCCode.PARAMS_ERROR};(null==o?void 0:o.volume)<0&&(o.volume=0,i.warn("the valid range of options.volume is 0-100, the value of volume has been set 0")),(null==o?void 0:o.volume)>100&&(o.volume=100,i.warn("the valid range of options.volume is 0-100, the value of volume has been set 100"))}if(null==o?void 0:o.audioDeviceId){if(!(yield Pe.getSpeakers()).map((e=>e.deviceId)).includes(o.audioDeviceId))return i.error(`the options.audioDeviceId is invalid --\x3e ${o.audioDeviceId}`),{code:e.RCRTCCode.PARAMS_ERROR}}const r=this.isVideoTrack();if(r&&(!n||!(n instanceof HTMLVideoElement)))return i.error(`the video track need an <video> to play -> id: ${this._id}`),{code:e.RCRTCCode.VIDEO_TRACK_MISS_MEDIA_ELEMENT};this._element=r?n:this._element||new Audio,this._localMuted&&this._setLocalMuted(!1),this._element.srcObject&&this._element.srcObject===this._msStream||this._element.pause(),this._element.onloadstart=e=>{var t;i.debug(`HTMLMediaElement onloadstart -> id: ${null===(t=e.target)||void 0===t?void 0:t.id}, trackId: ${this._id}`)},this._element.ondurationchange=e=>{var t;i.debug(`HTMLMediaElement ondurationchange -> id: ${null===(t=e.target)||void 0===t?void 0:t.id}, trackId: ${this._id}`)},this._element.onloadedmetadata=e=>{var t;i.debug(`HTMLMediaElement onloadedmetadata -> id: ${null===(t=e.target)||void 0===t?void 0:t.id}, trackId: ${this._id}`)},this._element.onloadeddata=e=>{var t;i.debug(`HTMLMediaElement onloadeddata -> id: ${null===(t=e.target)||void 0===t?void 0:t.id}, trackId: ${this._id}`)},this._element.onabort=e=>{var t;i.info(`HTMLMediaElement onabort -> id: ${null===(t=e.target)||void 0===t?void 0:t.id}, trackId: ${this._id}`)},this._element.oncanplay=e=>{var t;i.info(`HTMLMediaElement oncanplay -> id: ${null===(t=e.target)||void 0===t?void 0:t.id}, trackId: ${this._id}`)},this._element.onvolumechange=e=>{var t;const r=Math.floor(100*(null===(t=e.target)||void 0===t?void 0:t.volume));i.info(`HTMLMediaElement onvolumechange -> volume: ${r}, trackId: ${this._id}`)},this._element.srcObject=this._msStream,this._element.autoplay=!0,r&&(this._element.playsInline=!0,this._element.x5PlaysInline=!0,this._element.webkitPlaysInline=!0),r||!(null==o?void 0:o.volume)&&0!==(null==o?void 0:o.volume)||(this._element.volume=(null==o?void 0:o.volume)/100);try{(null==o?void 0:o.audioDeviceId)&&!r?yield this._element.setSinkId(o.audioDeviceId):this._element.play()}catch(t){return"No permission to use requested device"===t.message?(i.error(`setSinkId failed -> ${t.message}`),{code:e.RCRTCCode.NO_PERMISSION_TO_USE_REQUESTED_DEVICE}):(i.error(t),{code:e.RCRTCCode.TRACK_PLAY_ERROR})}return{code:e.RCRTCCode.SUCCESS}}))}__innerDestroy(){this.__innerSetMediaStreamTrack(void 0)}__releaseMediaElement(){this._element&&(this._element.remove(),this._element.srcObject=null)}}class Le extends Oe{constructor(e,t,r,i){super(e,t,r,!0),this._isPublished=!1,this.__innerSetMediaStreamTrack(i),i.onended=()=>{i.onended=null,this.emit(Le.EVENT_LOCAL_TRACK_END,this),this.removeAll(Le.EVENT_LOCAL_TRACK_END)}}_setLocalMuted(e){const t=this._localMuted!==e;super._setLocalMuted(e),this._remoteMuted=this._localMuted,t&&this.emit(Le.__INNER_EVENT_MUTED_CHANGE__,this)}__innerSetPublished(e){this._isPublished=e}isPublished(){return this._isPublished}destroy(){var e;i.info(`track is destroyed -> trackId: ${this.getTrackId()}`),null===(e=this._msTrack)||void 0===e||e.stop(),super.__innerDestroy(),this.isAudioTrack()&&super.__releaseMediaElement(),this.emit(Le.__INNER_EVENT_DESTROY__,this)}setBitrate(e=0,r=0,n=0){!t.isNumber(e)||!t.isNumber(r)||!t.isNumber(n)||e<=0||r<=0||e<r?i.error("setBitrate params error ->"):this._bitrateInfo={max:e,min:r,start:n}}getBitrate(){var e,t;const{min:r,max:i}=this._msTrack?Ye(this._msTrack):{min:0,max:0};return{min:(null===(e=this._bitrateInfo)||void 0===e?void 0:e.min)||r,max:(null===(t=this._bitrateInfo)||void 0===t?void 0:t.max)||i}}}Le.EVENT_LOCAL_TRACK_END="local-track-end",Le.__INNER_EVENT_MUTED_CHANGE__="inner-muted-change",Le.__INNER_EVENT_DESTROY__="inner-destroy";class Ne extends Le{constructor(e,t,r){super(e,t,"audio",r)}setBitrate(e,t,r){i.warn("`setBitrate` invalid for audio track")}getBitrate(){return{start:32,max:32,min:32}}}class Ae extends Le{constructor(e,t,r,i=!1){super(e,t,"video",r),this._isTiny=i}__isTiny(){return this._isTiny}getStreamId(){const e=super.getStreamId();return this._isTiny?`${e}_tiny`:e}getTrackId(){const e=super.getTrackId();return this._isTiny?`${e}_tiny`:e}}class De extends Le{constructor(e,t,r,i,n){super(e,t,r,i),this._resource=n,De.__innerSetMapping(this.getTrackId(),n)}static __innerSetMapping(e,t){const r=this._mapping.get(t)||[];r.push(e),this._mapping.set(t,r)}static __innerRemoveMapping(e,t){var r,i;const n=null===(r=this._mapping.get(t))||void 0===r?void 0:r.filter((t=>t!==e));n&&n.length>0?this._mapping.set(t,n):(this._mapping.delete(t),t.pause(),t.src="",null===(i=t.parentNode)||void 0===i||i.removeChild(t))}destroy(){this.isAudioTrack()&&this.mute(),De.__innerRemoveMapping(this.getTrackId(),this._resource),super.destroy()}}De._mapping=new Map;class Me extends De{constructor(e,t,r,i){super(e,t,"video",r,i)}}class xe extends De{constructor(e,t,r,i){super(e,t,"audio",r,i)}_setLocalMuted(e){this._resource&&(this._resource.muted=e),super._setLocalMuted(e)}play(){return this._setLocalMuted(!1),Promise.resolve({code:e.RCRTCCode.SUCCESS})}}class Ue extends Ne{}class we extends Ae{}class $e extends Ae{}class je extends Oe{constructor(e,t,r,i){super(e,t,r,!1,i),this._isSubscribed=!1}__innerSetRemoteMuted(e){this._remoteMuted=e}__innerSetSubscribed(e){this._isSubscribed=e}isSubscribed(){return this._isSubscribed}}class Ve extends je{constructor(e,t,r){super(e,t,"audio",r)}}class He extends je{constructor(e,t,r){super(e,t,"video",r)}}const Be=(e,t)=>({name:e,content:JSON.stringify({uris:t,ignore:!0})}),Fe=e=>JSON.stringify(e),Ke=e=>/^[a-zA-Z\d-=]+$/g.test(e),Ge="http:"!==location.protocol||["localhost","127.0.0.1"].includes(location.hostname),Je=e=>{if(void 0===e)return 0;if(t.isNumber(e))return e;const r=e;return r.exact||r.ideal||r.max||0},We=e=>{const t=e.getConstraints();return{width:Je(t.width),height:Je(t.height),frameRate:Je(t.frameRate)}},Ye=e=>{const{width:t,height:r,frameRate:i}=We(e),n=ye(t,r),o=be(i);return{min:n.minBitrate*o,max:n.maxBitrate*o}},qe=e=>[e.msid,e.mediaType].join("_"),ze=e=>{const t=e.split("_");return{mediaType:parseInt(t.pop()),tag:t.pop(),userId:t.join("_")}},Qe=(e,t)=>[e,t].join("_"),Xe=e=>e.map((e=>Object.assign({},e))),Ze=(e,t,r=!1)=>{e=e.slice();const i=[],n=[],o=[];return t.forEach((t=>{const n=qe(t);let s=e.findIndex((e=>qe(e)===n));if(r&&(s=e.findIndex((e=>e.uri===t.uri))),-1===s)return void i.push(t);const a=e[s];a.uri!==t.uri?i.push(t):a.state!==t.state&&o.push(t),e.splice(s,1)})),n.push(...e),{publishedList:i,unpublishedList:n,modifiedList:o}},et=()=>{let e="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}));return e=e.replace(/-/g,"")+"0",e=parseInt(e,16),e=(e=>{const t="0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ+/".split(""),r=t.length+1;let i=+e;const n=[];do{const e=i%r;i=(i-e)/r,n.unshift(t[e])}while(i);return n.join("")})(e),e.length>22&&(e=e.slice(0,22)),e},tt=e=>{const[t,r]=e.split("_").map((e=>parseInt(e.replace(/[^\d]/g,""))));return{width:t,height:r}},rt=t=>!!e.RCResolution[t],it=t=>!!e.RCFrameRate[t],nt=e=>parseInt(e.replace("FPS_","")),ot=(()=>{const{browser:e,version:t,supportsUnifiedPlan:r}=Te.browserDetails;return{browser:e,version:t,supportsUnifiedPlan:!1!==r}})();function st(){return"captureStream"in HTMLMediaElement.prototype||"mozCaptureStream"in HTMLMediaElement.prototype}function at(){return"mediaDevices"in navigator&&"getDisplayMedia"in navigator.mediaDevices}const ct=e=>"[object Null]"===Object.prototype.toString.call(e),dt=e=>1===e.type,ut=(e,t)=>{const r={},n=Object.keys(e.users);return n.length&&n.forEach((n=>{const o=[],s=e.users[n];if(s.extra){const e=JSON.parse(s.extra).roomId;if(t!==e)return}if(s.uris)try{o.push(...JSON.parse(s.uris))}catch(e){i.warn(`invalid user data -> userId: ${n}, userData: ${s}`)}r[n]=o})),r};var lt,ht;!function(e){e.PUBLISH="RCRTC:PublishResource",e.UNPUBLISH="RCRTC:UnpublishResource",e.MODIFY="RCRTC:ModifyResource",e.TOTAL_CONTENT_RESOURCE="RCRTC:TotalContentResources",e.STATE="RCRTC:state",e.ROOM_NOTIFY="RCRTC:RoomNtf",e.USER_NOTIFY="RCRTC:UserNtf",e.KICK="RCRTC:kick",e.PK_INVITE="RCRTC:invite",e.PK_INVITE_TIMEOUT="RCRTC:inviteTimeout",e.PK_CANCEL_INVITE="RCRTC:cancelInvite",e.PK_INVITE_ANSWER="RCRTC:answerInvite",e.PK_END="RCRTC:endInvite",e.OTHER_ROOM_OFFLINE="RCRTC:otherRoomOffline"}(lt||(lt={})),e.RCRTCPingResult=void 0,(ht=e.RCRTCPingResult||(e.RCRTCPingResult={})).SUCCESS="Success",ht.FAIL="Fail";class pt{constructor(e,t,r,i=1e4){this._roomId=e,this._roomMode=t,this._context=r,this._gap=i,this._latestTimestamp=Date.now(),this._timer=null}start(){return r(this,void 0,void 0,(function*(){this._timer||(this._timer=setInterval(this._loop.bind(this),this._gap))}))}_loop(){var n,o,s;return r(this,void 0,void 0,(function*(){const r=yield new Promise((e=>{this._context.rtcPing(this._roomId,this._roomMode).then(e).catch((r=>{i.error(`rtcping receive unknown error -> ${r}`),e(t.ErrorCode.UNKNOWN)})),setTimeout(e,1e4,t.ErrorCode.TIMEOUT)})),a=Date.now();if(r===t.ErrorCode.SUCCESS)return this._latestTimestamp=a,void(null===(n=this.onPingResult)||void 0===n||n.call(this,e.RCRTCPingResult.SUCCESS));null===(o=this.onPingResult)||void 0===o||o.call(this,e.RCRTCPingResult.FAIL),i.warn(`rtcping failed -> code: ${r}`),(40003===r||a-this._latestTimestamp>6e4)&&(this.stop(),null===(s=this.onFailed)||void 0===s||s.call(this,40003===r))}))}stop(){this._timer&&(clearInterval(this._timer),this._timer=null)}}var mt;!function(e){e[e.NORMAL=1]="NORMAL",e[e.TINY=2]="TINY"}(mt||(mt={}));const _t=-1,Rt=(e,t)=>Math.round(8*t/e),Ct=(e,t=2)=>{const r=10**t;return Math.round(e*r)/r},ft=(e,t=2)=>{e>1&&(e/=32767);const r=10**t;return Math.ceil(e*r)},vt=(e,t,r,i)=>{if(0===t)return 0;if(!r||!i)return Ct(e/t,3);const n=t-i;if(0===n)return 0;const o=e-r;return o<0||n<0?0:Ct(o/n,3)},Tt=e=>{const{jitter:t,rtt:r,packetsLostRate:i}=e;return!ct(t)||!ct(r)||0!==i};class gt{constructor(e,t){this._rtcPeerConn=e,this._sdpSemantics=t,this._latestPacketsSent={},this._latestBytesSent={},this._latestBytesRecv={},this._latestPacketsRecv={}}updateBytesSent(e,t,r){let i,n;if(this._latestBytesSent[e]&&t<this._latestBytesSent[e].bytesSent&&this.clearLatestpacketsSent([e]),this._latestBytesSent[e]){const{bytesSent:o,timestamp:s}=this._latestBytesSent[e];i=t-o,n=r-s,this._latestBytesSent[e]={bytesSent:t,timestamp:r}}else i=t,n=1e3,this._latestBytesSent[e]={bytesSent:t,timestamp:r};return Rt(n,i)}updateBytesRecv(e,t,r){let i,n;if(this._latestBytesRecv[e]&&t<this._latestBytesRecv[e].bytesRecv&&this.clearLatestPacketsRecv([e]),this._latestBytesRecv[e]){const{bytesRecv:o,timestamp:s}=this._latestBytesRecv[e];i=t-o,n=r-s,this._latestBytesRecv[e]={bytesRecv:t,timestamp:r}}else i=t,n=1e3,this._latestBytesRecv[e]={bytesRecv:t,timestamp:r};return Rt(n,i)}updateSenderPacketsLost(e,t,r){let i;if(Object.prototype.hasOwnProperty.call(this._latestPacketsSent[e],"packetsSent")){const{packetsLost:n,packetsSent:o}=this._latestPacketsSent[e];i=vt(t,r,n,o),this._latestPacketsSent[e].packetsLost=t,this._latestPacketsSent[e].packetsSent=n===t?o:r}else i=vt(t,r),this._latestPacketsSent[e].packetsLost=t,this._latestPacketsSent[e].packetsSent=r;return i}updateReceiverPacketsLost(e,t,r){let i;if(this._latestPacketsRecv[e]){const{packetsLost:n,packetsRecv:o}=this._latestPacketsRecv[e];i=vt(t,r+t,n,o+n)}else i=vt(t,r);return this._latestPacketsRecv[e]={packetsLost:t,packetsRecv:r},i}clearLatestpacketsSent(t){t.forEach((t=>{if(parseInt(t.split("_").pop())===e.RCMediaType.VIDEO_ONLY){const e=`${t}_tiny`;delete this._latestPacketsSent[e],delete this._latestBytesSent[e]}delete this._latestPacketsSent[t],delete this._latestBytesSent[t]}))}clearLatestPacketsRecv(e){e.forEach((e=>{delete this._latestPacketsRecv[e],delete this._latestBytesRecv[e]}))}parseRTCStatsReport(e){const t=e.keys(),r={};let i=t.next();for(;!i.done;){const n=i.value,o=e.get(n);/^RTCCodec_/.test(n)||(r[n]=o),i=t.next()}return r}formatRCRTCStateReport(e){return{senders:[],receivers:[]}}getAudioLevelList(e){return[]}getResourceIdByParseSdp(e){var t,r;const i=e.ssrc,n=e.kind||e.mediaType,o=null===(t=this._rtcPeerConn.currentLocalDescription)||void 0===t?void 0:t.sdp,s=null===(r=this._rtcPeerConn.currentRemoteDescription)||void 0===r?void 0:r.sdp;let a;a="unified-plan"===this._sdpSemantics?new RegExp("a=msid:(.*?) "):new RegExp(`a=ssrc:${i} msid:(.*?) `);const c=null==o?void 0:o.split("\r\nm="),d=null==c?void 0:c.filter((e=>e.includes(`a=ssrc:${i}`)))[0],u=null==d?void 0:d.match(a);let l=u?u[1]:"";if(l)return`${l}_${"video"===n?1:0}`;const h=null==s?void 0:s.split("\r\nm="),p=null==h?void 0:h.filter((e=>e.includes(`a=ssrc:${i}`)))[0],m=null==p?void 0:p.match(a);return l=m?m[1]:"",`${l}_${"video"===n?1:0}`}isValidSender(e){var t;const r=null===(t=this._rtcPeerConn.currentLocalDescription)||void 0===t?void 0:t.sdp,{ssrc:i}=e;return!(null==r?void 0:r.split("\r\nm=").some((e=>e.includes(i)&&e.includes("a=inactive"))))}isValidReceiver(e){var t;const r=null===(t=this._rtcPeerConn.currentRemoteDescription)||void 0===t?void 0:t.sdp,{ssrc:i}=e;return!(null==r?void 0:r.split("\r\nm=").some((e=>e.includes(i)&&e.includes("a=inactive"))))}}class St extends gt{formatRCRTCStateReport(e){const t={senders:[],receivers:[]},r=Math.floor(e.RTCPeerConnection.timestamp);t.timestamp=r;const i=Object.keys(e);let n=0,o=0;i.filter((e=>/^RTCOutboundRTP(Video|Audio)Stream_/.test(e))).forEach((i=>{const s=e[i];if("unified-plan"===this._sdpSemantics&&!this.isValidSender(s))return;const{id:a,kind:c,transportId:d,mediaSourceId:u,remoteId:l,packetsSent:h,bytesSent:p,trackId:m,encoderImplementation:_,pliCount:R,nackCount:C,firCount:f}=s;if(!m)return;let{framesPerSecond:v,frameWidth:T,frameHeight:g}=s;"video"!==c||T||g||v||(T=e[m].frameWidth,g=e[m].frameHeight,v=u?e[u].framesPerSecond:null);const S=e[l];let I=null,E=null,y=0;S&&(I=S.jitter,E=S.roundTripTime,y=S.packetsLost),n+=y;const k=this.getResourceIdByParseSdp(s),b=u?e[u].audioLevel:e[m].audioLevel;let P=null;!this._latestPacketsSent[k]&&(this._latestPacketsSent[k]={}),S?P=this.updateSenderPacketsLost(k,y,h):this._latestPacketsSent[k].crtPacketsSent=h;let O=this.updateBytesSent(k,p,r);O<0&&(O=0),o+=O,t.senders.push({id:a,trackId:k,kind:c,packetsLostRate:P,remoteResource:!1,audioLevel:b||0===b?ft(b):null,frameWidth:T,frameHeight:g,frameRate:v,bitrate:O,jitter:I?Math.round(1e3*I):I,rtt:E,encoderImplementation:_,pliCount:R,nackCount:C,googFirsSent:_t,samplingRate:_t,googRenderDelayMs:_t,trackState:_t})}));i.filter((e=>/RTCRemoteInboundRtp(Video|Audio)Stream_/.test(e))).forEach((r=>{const{localId:i,jitter:n,roundTripTime:o,packetsLost:s}=e[r],a=t.senders.filter((e=>e.id===i))[0];if(a&&!Tt(a)){const t=this.getResourceIdByParseSdp(e[a.id]);a.jitter=Math.round(1e3*n),a.rtt=o;const r=this._latestPacketsSent[t].crtPacketsSent;a.packetsLostRate=this.updateSenderPacketsLost(t,s,r)}}));let s=0;i.filter((e=>/^RTCInboundRTP(Video|Audio)Stream_/.test(e))).forEach((i=>{const o=e[i];if("unified-plan"===this._sdpSemantics&&!this.isValidReceiver(o))return;const{trackId:a,packetsLost:c,packetsReceived:d,jitter:u,bytesReceived:l,framesPerSecond:h,kind:p,codecImplementationName:m,nackCount:_,pliCount:R}=o;if(!a)return;let{frameWidth:C,frameHeight:f,audioLevel:v}=o;"video"===p?C||f||(C=e[a].frameWidth,f=e[a].frameHeight):v||(v=e[a].audioLevel),n+=c;const T=this.getResourceIdByParseSdp(o),g=this.updateReceiverPacketsLost(T,c,d);let S=this.updateBytesRecv(T,l,r);S<0&&(S=0),s+=S,t.receivers.push({trackId:T,kind:p,packetsLostRate:g,remoteResource:!0,audioLevel:v||0===v?ft(v):null,frameWidth:C,frameHeight:f,frameRate:h,bitrate:S,jitter:u?Math.round(1e3*u):0,codecImplementationName:m,nackCount:_,pliCount:R,rtt:null,samplingRate:_t,googFirsReceived:_t,googRenderDelayMs:_t,trackState:_t})}));const a=i.filter((e=>/^RTCTransport_/.test(e)))[0];if(a){const r=e[a],{selectedCandidatePairId:i}=r;if(i){const r=e[i],{availableOutgoingBitrate:a,availableIncomingBitrate:c,currentRoundTripTime:d,localCandidateId:u,remoteCandidateId:l}=r,h=e[u],{ip:p,port:m,networkType:_}=h,R=e[l],{ip:C,port:f,protocol:v}=R;t.iceCandidatePair={IP:p,port:m,networkType:_,remoteIP:C,remotePort:f,protocol:v,bitrateRecv:s,bitrateSend:o,rtt:1e3*d,availableOutgoingBitrate:a,availableIncomingBitrate:c,totalPacketsLost:n},t.receivers.forEach((e=>{e.rtt=d}))}}return t}getAudioLevelList(e){const t=[],r=Object.keys(e);r.filter((e=>/^RTCOutboundRTPAudioStream_/.test(e))).forEach((r=>{var i;const n=e[r];if("unified-plan"===this._sdpSemantics&&!this.isValidSender(n))return;const{mediaSourceId:o,trackId:s}=n,a=this.getResourceIdByParseSdp(n),c=o&&e[o]?e[o].audioLevel:(null===(i=e[s])||void 0===i?void 0:i.audioLevel)||null;t.push({trackId:a,audioLevel:c||0===c?ft(c):null})}));return r.filter((e=>/^RTCInboundRTPAudioStream_/.test(e))).forEach((r=>{const i=e[r];if("unified-plan"===this._sdpSemantics&&!this.isValidReceiver(i))return;const{trackId:n}=i,o=i.audioLevel||e[n].audioLevel,s=this.getResourceIdByParseSdp(i);t.push({trackId:s,audioLevel:o||0===o?ft(o):null})})),t}}class It extends gt{formatRCRTCStateReport(e){const t=+new Date,r={senders:[],receivers:[],timestamp:t};let i=0,n=0,o=0;for(const s in e){const a=e[s],c=a.type;if("outbound-rtp"===c){if("unified-plan"===this._sdpSemantics&&!this.isValidSender(a))continue;const{id:o,kind:s,bytesSent:c,packetsSent:d,bitrateMean:u,framerateMean:l,nackCount:h,pliCount:p,remoteId:m}=a,{jitter:_,roundTripTime:R,packetsLost:C}=m?e[m]:{jitter:null,roundTripTime:null,packetsLost:0},f=this.getResourceIdByParseSdp(a);i+=C;let v=null;!this._latestPacketsSent[f]&&(this._latestPacketsSent[f]={}),m?v=this.updateSenderPacketsLost(f,C,d):this._latestPacketsSent[f].crtPacketsSent=d;let T=0;"video"===s?u&&(T=Math.floor(u/1e3)):T=this.updateBytesSent(f,c,t),T<0&&(T=0),n+=T,r.senders.push({trackId:f,kind:s,packetsLostRate:v,remoteResource:!1,audioLevel:null,frameWidth:null,frameHeight:null,frameRate:Math.floor(l),bitrate:T,jitter:_?Math.round(1e3*_):null,rtt:R,encoderImplementation:null,pliCount:p,nackCount:h,googFirsSent:_t,samplingRate:_t,googRenderDelayMs:_t,trackState:_t})}if("remote-inbound-rtp"===c){const{localId:t}=a,i=this.getResourceIdByParseSdp(e[t]),n=r.senders.filter((e=>e.trackId===i))[0];n&&Tt(n)&&(n.jitter=Math.round(1e3*a.jitter),n.rtt=a.rtt,n.packetsLostRate=this.updateSenderPacketsLost(i,a.packetsLost,this._latestPacketsSent[i].crtPacketsSent))}if("inbound-rtp"===c){if("unified-plan"===this._sdpSemantics&&!this.isValidReceiver(a))continue;const{id:e,packetsLost:n,bytesReceived:s,packetsReceived:c,jitter:d,framerateMean:u,kind:l,bitrateMean:h,nackCount:p,pliCount:m}=a,_=this.getResourceIdByParseSdp(a);i+=n;const R=this.updateReceiverPacketsLost(_,n,c);let C=0;"video"===l?h&&(C=Math.floor(h/1e3)):C=this.updateBytesRecv(_,s,t),C<0&&(C=0),o+=C,r.receivers.push({trackId:_,kind:l,packetsLostRate:R,remoteResource:!0,audioLevel:null,frameWidth:null,frameHeight:null,frameRate:Math.floor(u),bitrate:C,jitter:d?Math.round(1e3*d):null,codecImplementationName:null,nackCount:p,pliCount:m,rtt:null,samplingRate:_t,googFirsReceived:_t,googRenderDelayMs:_t,trackState:_t})}if("candidate-pair"===c&&"succeeded"===a.state){const t=e[a.localCandidateId],{address:s,port:c}=t,d=e[a.remoteCandidateId],{address:u,port:l,protocol:h}=d;r.iceCandidatePair={IP:s,port:c,networkType:null,remoteIP:u,remotePort:l,protocol:h,bitrateRecv:o,bitrateSend:n,rtt:null,availableOutgoingBitrate:null,availableIncomingBitrate:null,totalPacketsLost:i}}}return r.iceCandidatePair&&(r.iceCandidatePair.bitrateSend=n),r.iceCandidatePair&&(r.iceCandidatePair.bitrateRecv=o),r}getAudioLevelList(e){const t=[];for(const r in e){const i=e[r],n=i.type;if("outbound-rtp"===n){if("unified-plan"===this._sdpSemantics&&!this.isValidSender(i))continue;const{kind:e}=i;if("video"===e)continue;const r=this.getResourceIdByParseSdp(i);t.push({trackId:r,audioLevel:null})}if("inbound-rtp"===n){if("unified-plan"===this._sdpSemantics&&!this.isValidReceiver(i))continue;const{kind:e}=i;if("video"===e)continue;const r=this.getResourceIdByParseSdp(i);t.push({trackId:r,audioLevel:null})}}return t}}class Et extends gt{formatRCRTCStateReport(e){const t={senders:[],receivers:[]},r=Math.floor(e.RTCPeerConnection.timestamp);t.timestamp=r;const i=Object.keys(e);let n=0,o=0;i.filter((e=>/^RTCOutboundRTP(Video|Audio)Stream_/.test(e))).forEach((i=>{const n=e[i];if("unified-plan"===this._sdpSemantics&&!this.isValidSender(n))return;const s=this.getResourceIdByParseSdp(n),{mediaType:a,transportId:c,remoteId:d,packetsSent:u,bytesSent:l,trackId:h,encoderImplementation:p,pliCount:m,nackCount:_,firCount:R}=n;if(!h)return;const{audioLevel:C,frameHeight:f,frameWidth:v}=e[h];let T=this.updateBytesSent(s,l,r);T<0&&(T=0),o+=T,t.senders.push({trackId:s,kind:a,packetsLostRate:null,remoteResource:!1,audioLevel:C||0===C?ft(C):null,frameWidth:v,frameHeight:f,frameRate:null,bitrate:T,jitter:null,rtt:null,encoderImplementation:p,pliCount:m,nackCount:_,googFirsSent:_t,samplingRate:_t,googRenderDelayMs:_t,trackState:_t})}));let s=0;i.filter((e=>/^RTCInboundRTP(Video|Audio)Stream_/.test(e))).forEach((i=>{const o=e[i];if("unified-plan"===this._sdpSemantics&&!this.isValidReceiver(o))return;const{trackId:a,packetsLost:c,packetsReceived:d,jitter:u,bytesReceived:l,mediaType:h,nackCount:p,pliCount:m}=o,_=this.getResourceIdByParseSdp(o);if(!a)return;const{frameHeight:R,frameWidth:C,audioLevel:f}=e[a];n+=c;const v=this.updateReceiverPacketsLost(_,c,d);let T=this.updateBytesRecv(_,l,r);T<0&&(T=0),s+=T,t.receivers.push({trackId:_,kind:h,packetsLostRate:v,remoteResource:!0,audioLevel:f||0===f?ft(f):null,frameWidth:C,frameHeight:R,frameRate:null,bitrate:T,jitter:u,codecImplementationName:null,nackCount:p,pliCount:m,rtt:null,samplingRate:_t,googFirsReceived:_t,googRenderDelayMs:_t,trackState:_t})}));const a=i.filter((e=>/^RTCTransport_/.test(e)))[0];if(a){const r=e[a],{selectedCandidatePairId:i}=r;if(i){const r=e[i],{availableOutgoingBitrate:a,availableIncomingBitrate:c,currentRoundTripTime:d,localCandidateId:u,remoteCandidateId:l}=r,h=e[u],{address:p,port:m}=h,_=e[l],{address:R,port:C,protocol:f}=_;t.iceCandidatePair={IP:p||null,port:m,networkType:null,remoteIP:R,remotePort:C,protocol:f,bitrateRecv:s,bitrateSend:o,rtt:1e3*d,availableOutgoingBitrate:a,availableIncomingBitrate:c,totalPacketsLost:n},t.receivers.forEach((e=>{e.rtt=d}))}}return t}getAudioLevelList(e){const t=[],r=Object.keys(e);r.filter((e=>/^RTCOutboundRTP(Video|Audio)Stream_/.test(e))).forEach((r=>{const i=e[r];if("unified-plan"===this._sdpSemantics&&!this.isValidSender(i))return;const{trackId:n,mediaType:o}=i;if("video"===o)return;const s=this.getResourceIdByParseSdp(i),a=e[n];t.push({trackId:s,audioLevel:a||0===a?ft(a):null})}));return r.filter((e=>/^RTCInboundRTP(Video|Audio)Stream_/.test(e))).forEach((r=>{const i=e[r];if("unified-plan"===this._sdpSemantics&&!this.isValidReceiver(i))return;const{trackId:n,mediaType:o}=i;if(!n||"video"===o)return;const{audioLevel:s}=e[n],a=this.getResourceIdByParseSdp(i);t.push({trackId:a,audioLevel:s||0===s?ft(s):null})})),t}}class yt{constructor(e){this._peer=e,this._outboundStreams={}}static setSdpSemantics(e){const{browser:t,version:r,supportsUnifiedPlan:i}=ot;i?/chrome/i.test(t)?this._sdpSemantics=r>92?"unified-plan":r<72?"plan-b":e:/firefox/i.test(t)?this._sdpSemantics="unified-plan":/safari/i.test(t)?this._sdpSemantics=r<12?"plan-b":"unified-plan":this._sdpSemantics="unified-plan":this._sdpSemantics="plan-b"}static getSdpSemantics(){return yt._sdpSemantics}getOutboundVideoInfo(){const e=[];for(const t in this._outboundStreams){const r=this._outboundStreams[t].getVideoTracks()[0];if(!r)continue;const i=/_tiny$/.test(t),{width:n,height:o}=We(r);e.push({trackId:r.id,simulcast:i?mt.TINY:mt.NORMAL,resolution:`${n}x${o}`})}return e}setRemoteAnswer(t){return r(this,void 0,void 0,(function*(){t=t.replace(/\s+\r\n/g,"\r\n");try{yield this._peer.setRemoteDescription({type:"answer",sdp:t})}catch(t){return i.error(t),e.RCRTCCode.SET_REMOTE_DESCRIPTION_FAILED}return e.RCRTCCode.SUCCESS}))}getStatParsr(e,t){return/chrome/i.test(ot.browser)?new St(e,t):/Firefox/i.test(ot.browser)?new It(e,t):/Safari/i.test(ot.browser)?new Et(e,t):null}}class kt extends yt{constructor(){super(...arguments),this.senders={},this._localTracks=[]}addLocalTrack(e){this._localTracks.includes(e)||this._localTracks.push(e);const t=e.getStreamId(),r=e.__innerGetMediaStreamTrack(),i=this._outboundStreams[t]||(this._outboundStreams[t]=new MediaStream);i.getTracks().forEach((e=>{e.kind===r.kind&&i.removeTrack(e)})),i.addTrack(r);const n=e.getTrackId(),o=this.senders[n];o?o.replaceTrack(r):this.senders[n]=this._peer.addTrack(r,i)}removeLocalTrack(e){const t=this._localTracks.findIndex((t=>t===e));t>=0&&this._localTracks.splice(t,1);const r=e.getTrackId(),i=this.senders[r];i&&(i.replaceTrack(null),this._peer.removeTrack(i),delete this.senders[r])}updateSubRemoteTracks(e){}updateRecvTransceiverMap(e,t){}setBitrate(e,t,r){this._maxBitrate=e,this._minBitrate=t,this._startBitrate=r||.7*e}createOffer(e){return r(this,void 0,void 0,(function*(){const t=yield this._peer.createOffer({iceRestart:e,offerToReceiveAudio:!0,offerToReceiveVideo:!0});for(const e in this._outboundStreams){const r=this._outboundStreams[e].id;t.sdp=t.sdp.replace(new RegExp(r,"g"),e)}return yield this._peer.setLocalDescription(t),{type:"offer",semantics:"plan-b",sdp:t.sdp}}))}setRemoteAnswer(e){let t=0,r=0;this._localTracks.forEach((e=>{const{min:i,max:n}=e.getBitrate();r+=i,t+=n})),t=this._maxBitrate&&this._maxBitrate>0?Math.min(t,this._maxBitrate):t,r=this._minBitrate&&this._minBitrate>0?Math.max(r,this._minBitrate):r;const i=this._startBitrate||Math.round(.7*t),n=`b=AS:${t}`;e=e.replace(/[\r\n]+m=video[^\r\n]+/,(e=>`${e}\r\n${n}`));const o=[`;x-google-min-bitrate=${r}`,`;x-google-max-bitrate=${t}`,`;x-google-start-bitrate=${i}`].join("");return e=e.replace(/[\r\n]+[^\r\n]+profile-level-id[^\r\n]+/g,(e=>e+o)),super.setRemoteAnswer(e)}}class bt extends yt{constructor(){super(...arguments),this._sendTransceiver={},this._localTracks={},this._recvAudio=[],this._recvVideo=[],this._recvTransceiver={},this._subedTracks=[]}setBitrate(e,t,r){i.warn("the interface named `setBitrate` is invalid while sdpSemantics value is `unified-plan`")}addLocalTrack(e){const t=e.getTrackId(),r=e.getStreamId(),i=e.__innerGetMediaStreamTrack();this._localTracks[t]=e;const n=this._outboundStreams[r]||(this._outboundStreams[r]=new MediaStream);n.getTracks().forEach((e=>{e.kind===i.kind&&n.removeTrack(e)})),n.addTrack(i);const o=this._sendTransceiver[t];o?(o.sender.replaceTrack(i),o.direction="sendonly"):this._sendTransceiver[t]=this._peer.addTransceiver(i,{direction:"sendonly",streams:[n]})}removeLocalTrack(e){const t=e.getTrackId(),r=e.getStreamId();e.__innerGetMediaStreamTrack(),delete this._localTracks[t];const i=this._sendTransceiver[t];if(!i)return;i.direction="inactive",this._peer.removeTrack(i.sender),i.sender.replaceTrack(null);const n=this._outboundStreams[r];(e.isAudioTrack()?n.getAudioTracks():n.getVideoTracks()).forEach((e=>n.removeTrack(e)));const o=this._sendTransceiver[`${t}_tiny`];if(!o||"inactive"===o.direction)return;o.direction="inactive";const s=o.sender,a=s.track;this._peer.removeTrack(s),s.replaceTrack(null);this._outboundStreams[`${r}_tiny`].removeTrack(a),a.stop()}updateRecvTransceiverMap(t,r){const{mediaType:i}=ze(t);this._recvTransceiver[t]=r;const n=i===e.RCMediaType.AUDIO_ONLY?this._recvAudio:this._recvVideo,o=n.findIndex((e=>e===r));o>=0&&n.splice(o,1)}updateSubRemoteTracks(e){const t=e.slice(),r=this._subedTracks.slice();this._subedTracks=e.slice();for(let e=t.length-1;e>=0;e-=1){const i=t[e],n=r.findIndex((e=>e===i));n>=0&&(t.splice(e,1),r.splice(n,1))}r.length&&r.forEach((e=>{const t=e.getTrackId();e.__innerSetMediaStreamTrack(void 0);const r=this._recvTransceiver[t];r&&(r.direction="inactive")}));const i={audio:0,video:0};t.length&&t.forEach((e=>{const t=e.isAudioTrack()?"audio":"video",r=this._recvTransceiver[e.getTrackId()];r?r.direction="recvonly":i[t]+=1}));for(let e=this._recvAudio.length;e<i.audio;e+=1)this._recvAudio.push(this._peer.addTransceiver("audio",{direction:"recvonly"}));for(let e=this._recvVideo.length;e<i.video;e+=1)this._recvVideo.push(this._peer.addTransceiver("video",{direction:"recvonly"}))}createOffer(e){return r(this,void 0,void 0,(function*(){const t=yield this._peer.createOffer({iceRestart:e});let r=t.sdp;for(const e in this._outboundStreams){const t=this._outboundStreams[e].id;r=r.replace(new RegExp(t,"g"),e)}return r=(e=>e.split(/\r\n(?=m=)/).map((e=>(e=>/a=(recvonly|inactive)/.test(e)?e.replace(/\r\na=(ssrc|msid)[^\r\n]+/g,""):e)(e))).join("\r\n"))(r),r=r.replace(/a=ice-options:trickle/g,"a=ice-options:trickle\r\na=ice-options:renomination"),t.sdp=r,yield this._peer.setLocalDescription(t),{type:"offer",semantics:"unified-plan",sdp:r}}))}setRemoteAnswer(e){e=e.split(/\r\n(?=m=)/).map((e=>{var t;const r=e.match(/a=mid:[^\s]+/);if(!r)return e;const i=r[0].replace("a=mid:","");let n="";for(const e in this._sendTransceiver){if(this._sendTransceiver[e].mid===i){n=e;break}}if(!n)return e;const o=null===(t=this._localTracks[n])||void 0===t?void 0:t.getBitrate();if(!o)return e;const{max:s,min:a}=o,c=s&&s>0?o.start||.7*s:0,d=[];if(s&&s>0&&d.push(`;x-google-max-bitrate=${s}`),a&&a>0&&d.push(`;x-google-min-bitrate=${a}`),c>0&&d.push(`;x-google-start-bitrate=${c}`),0===d.length)return e;const u=d.join("");return e.replace(/[\r\n]+[^\r\n]+profile-level-id[^\r\n]+/g,(e=>e+u))})).join("\r\n");const t=/[\r\n]+\r\n[\r\n]+/g;return t.test(e)&&(i.warn(`answer sdp invalid -> ${JSON.stringify(e)}`),e=e.replace(t,"\r\n")),super.setRemoteAnswer(e)}}class Pt extends t.EventEmitter{constructor(e,t){super(),this._reTryExchange=e,this._polarisReport=t,this.pubLocalTracks={},this._reTryExchangeTimer=null,this._reportStatsTimer=null,this._reportListener=null;const r=yt.getSdpSemantics(),i=this._rtcPeerConn=new RTCPeerConnection({sdpSemantics:r});this._sdpStrategy="plan-b"===r?new kt(i):new bt(i),this._rtcPeerConn.oniceconnectionstatechange=this._onICEConnectionStateChange.bind(this),this._rtcPeerConn.onconnectionstatechange=this._onConnectionStateChange.bind(this),this._rtcPeerConn.ontrack=this._onTrackReady.bind(this),this.reportParser=this._sdpStrategy.getStatParsr(this._rtcPeerConn,r)}getLocalTracks(){return Object.values(this.pubLocalTracks)}_onConnectionStateChange(){i.info(`onconnectionstatechange -> ${this._rtcPeerConn.connectionState}`)}_onICEConnectionStateChange(){var e,t;i.info(`oniceconnectionstatechange -> ${this._rtcPeerConn.iceConnectionState}`),"connected"===this._rtcPeerConn.iceConnectionState&&(this._reportStatsTimer&&clearInterval(this._reportStatsTimer),this._reportStatsTimer=setInterval(this._reportHandle.bind(this),1e3)),"failed"!==this._rtcPeerConn.iceConnectionState&&"disconnected"!==this._rtcPeerConn.iceConnectionState||(i.warn("iceconenction state is `failed`, exchange SDP to try again."),this._reTryExchange(),this._reTryExchangeTimer=setInterval(this._reTryExchange,15e3));try{null===(t=null===(e=this._reportListener)||void 0===e?void 0:e.onICEConnectionStateChange)||void 0===t||t.call(e,this._rtcPeerConn.iceConnectionState)}catch(e){i.error("onICEConnectionStateChange error",e)}}_onTrackReady(t){if(!t.streams.length)return;const r=[t.streams[0].id,"audio"===t.receiver.track.kind?e.RCMediaType.AUDIO_ONLY:e.RCMediaType.VIDEO_ONLY].join("_");this._updateRecvTransceiverMap(r,t.transceiver),this.emit(Pt.__INNER_EVENT_TRACK_READY__,t)}setBitrate(e,t,i){return r(this,void 0,void 0,(function*(){this._sdpStrategy.setBitrate(e,t,i)}))}createOffer(e){return r(this,void 0,void 0,(function*(){const t=yield this._sdpStrategy.createOffer(e);return i.debug(`offer -> ${JSON.stringify(t.sdp)}`),t}))}setRemoteAnswer(e){return r(this,void 0,void 0,(function*(){return i.debug(`answer -> ${JSON.stringify(e)}`),this._sdpStrategy.setRemoteAnswer(e)}))}getLocalTrack(e){return this.pubLocalTracks[e]||null}addLocalTrack(e){this.pubLocalTracks[e.getTrackId()]=e,this._sdpStrategy.addLocalTrack(e),e.off(Le.__INNER_EVENT_MUTED_CHANGE__,this._onLocalTrackMuted,this),e.off(Le.__INNER_EVENT_DESTROY__,this._onLocalTrackDestroied,this),e.on(Le.__INNER_EVENT_MUTED_CHANGE__,this._onLocalTrackMuted,this),e.on(Le.__INNER_EVENT_DESTROY__,this._onLocalTrackDestroied,this)}removeLocalTrackById(e){const t=this.getLocalTrack(e);t&&this.removeLocalTrack(t)}removeAllLocalTrack(){Object.keys(this.pubLocalTracks).forEach((e=>{/_tiny$/.test(e)||this.removeLocalTrackById(e)}))}removeLocalTrack(e){const t=e.getTrackId();delete this.pubLocalTracks[t],this._sdpStrategy.removeLocalTrack(e),e.__innerSetPublished(!1),e.off(Le.__INNER_EVENT_MUTED_CHANGE__,this._onLocalTrackMuted,this),e.off(Le.__INNER_EVENT_DESTROY__,this._onLocalTrackDestroied,this);const r=`${t}_tiny`,i=this.getLocalTrack(r);i&&(this._sdpStrategy.removeLocalTrack(i),delete this.pubLocalTracks[r],i.destroy())}_updateRecvTransceiverMap(e,t){this._sdpStrategy.updateRecvTransceiverMap(e,t)}updateSubRemoteTracks(e){this._sdpStrategy.updateSubRemoteTracks(e)}getOutboundVideoInfo(){return this._sdpStrategy.getOutboundVideoInfo()}_onLocalTrackMuted(e){const t=this.getLocalTrack(`${e.getTrackId()}_tiny`);t&&(t.__innerGetMediaStreamTrack().enabled=!e.isLocalMuted()),this.emit(Le.__INNER_EVENT_MUTED_CHANGE__,e)}_onLocalTrackDestroied(e){this.emit(Le.__INNER_EVENT_DESTROY__,e)}registerReportListener(e){this._reportListener=e}_createRCRTCStateReport(e){const{timestamp:t,iceCandidatePair:r,senders:i,receivers:n}=JSON.parse(JSON.stringify(e));null==r||delete r.totalPacketsLost;for(const e in r)ct(r[e])&&delete r[e];return{timestamp:t,iceCandidatePair:r,senders:i.map((e=>{const t={};return e.trackId&&(t.trackId=e.trackId),e.kind&&(t.kind=e.kind),(e.packetsLostRate||0===e.packetsLostRate)&&(t.packetsLostRate=e.packetsLostRate),t.remoteResource=e.remoteResource,(e.audioLevel||0===e.audioLevel)&&(t.audioLevel=e.audioLevel),e.frameWidth&&(t.frameWidth=e.frameWidth),e.frameHeight&&(t.frameHeight=e.frameHeight),e.frameRate&&(t.frameRate=e.frameRate),(e.bitrate||0===e.bitrate)&&(t.bitrate=e.bitrate),e.jitter&&(t.jitter=e.jitter),t})),receivers:n.map((e=>{const t={};return e.trackId&&(t.trackId=e.trackId),e.kind&&(t.kind=e.kind),(e.packetsLostRate||0===e.packetsLostRate)&&(t.packetsLostRate=e.packetsLostRate),t.remoteResource=e.remoteResource,(e.audioLevel||0===e.audioLevel)&&(t.audioLevel=e.audioLevel),e.frameWidth&&(t.frameWidth=e.frameWidth),e.frameHeight&&(t.frameHeight=e.frameHeight),e.frameRate&&(t.frameRate=e.frameRate),(e.bitrate||0===e.bitrate)&&(t.bitrate=e.bitrate),e.jitter&&(t.jitter=e.jitter),t}))}}_getStatsData(){var e,t;return r(this,void 0,void 0,(function*(){const r=yield this._rtcPeerConn.getStats(),i=null===(e=this.reportParser)||void 0===e?void 0:e.parseRTCStatsReport(r);return null===(t=this.reportParser)||void 0===t?void 0:t.formatRCRTCStateReport(i)}))}getAudioLevelReportData(){var e,t;return r(this,void 0,void 0,(function*(){const r=yield this._rtcPeerConn.getStats(),i=null===(e=this.reportParser)||void 0===e?void 0:e.parseRTCStatsReport(r);if(!i)return[];return null===(t=this.reportParser)||void 0===t?void 0:t.getAudioLevelList(i)}))}_reportHandle(){var e,t,i;return r(this,void 0,void 0,(function*(){const r=yield this._getStatsData();if(!r)return;(r.senders.length||r.receivers.length)&&(null===(e=this._polarisReport)||void 0===e||e.sendR3R4Data(r));const n=this._createRCRTCStateReport(r);null===(i=null===(t=this._reportListener)||void 0===t?void 0:t.onStateReport)||void 0===i||i.call(t,n)}))}getRTCPeerConn(){return this._rtcPeerConn}destroy(){this.clear(),this.clearReTryExchangeTimer(),this._reportStatsTimer&&(clearInterval(this._reportStatsTimer),this._reportStatsTimer=null),this.registerReportListener(null),this._rtcPeerConn.close(),this.reportParser=null}clearReTryExchangeTimer(){clearInterval(this._reTryExchangeTimer),this._reTryExchangeTimer=null}}var Ot,Lt,Nt,At,Dt;Pt.__INNER_EVENT_TRACK_READY__="inner-track-ready",function(e){e[e.DISABLE=0]="DISABLE",e[e.ENABLE=1]="ENABLE"}(Ot||(Ot={})),function(e){e[e.MeetingOrAnchor=1]="MeetingOrAnchor",e[e.Audience=2]="Audience"}(Lt||(Lt={}));class Mt{constructor(e,t,r,i,n=Lt.MeetingOrAnchor){this._context=e,this._runtime=t,this._roomId=r,this._crtRTCRoom=i,this._userRole=n}_send(e){this._context.getConnectionStatus()===t.ConnectionStatus.CONNECTED&&this._context.setRTCState(this._roomId,e)}_getClientID(){const e="uuid";let t=this._runtime.localStorage.getItem(e);return t||(t=et(),this._runtime.localStorage.setItem(e,t)),t}_getRealResourceId(e){let t=e;const r=e.indexOf("_tiny");return r>-1&&(t=e.slice(0,r)),t}_getPolarisTrackId(t){let r="";const i=t.split("_");if(t.includes("_tiny")){const t=i.pop(),n=parseInt(i.pop())===e.RCMediaType.AUDIO_ONLY?"audio":"video",o=i.pop();r=[i.join("_"),o,t,n].join("_")}else{const t=parseInt(i.pop())===e.RCMediaType.AUDIO_ONLY?"audio":"video",n=i.pop();r=[i.join("_"),n,t].join("_")}return r}sendR3R4Data(e){const{iceCandidatePair:t,senders:r,receivers:i}=e,n=(null==t?void 0:t.bitrateSend)||_t,o=(null==t?void 0:t.bitrateRecv)||_t,s=(null==t?void 0:t.networkType)||"unknown",a=(null==t?void 0:t.rtt)||_t,c=`${(null==t?void 0:t.IP)||_t}:${null==t?void 0:t.port}`,d=(null==t||t.remoteIP,null==t||t.remotePort,(null==t?void 0:t.availableIncomingBitrate)||_t),u=(null==t?void 0:t.availableOutgoingBitrate)||_t,l=(null==t?void 0:t.totalPacketsLost)||_t,h=this._context.getCurrentId();let p=`R3\t${n}\t-1\t-1\t-1\t${s}\t${a}\t${c}\t${d}\t${u}\t${l}\t${h}\r`,m=`R4\t${o}\t-1\t-1\t-1\t${s}\t${a}\t${c}\t${d}\t${u}\t${l}\t${h}\r`;const _=r.map((e=>{var t;const{trackId:r,audioLevel:i,samplingRate:n,bitrate:o,packetsLostRate:s,frameRate:a,frameWidth:c,frameHeight:d,googRenderDelayMs:u,jitter:l,nackCount:h,pliCount:p,rtt:m,googFirsSent:_,encoderImplementation:R}=e,C=this._getPolarisTrackId(r),f=this._getRealResourceId(r);return{trackId:C,googCodecName:R||String(_t),audioLevel:i||0===i?i:_t,bitrate:o||0===o?o:_t,packetsLostRate:s||0===s?s:_t,frameRate:a||_t,resolution:c&&d?`${c} * ${d}`:"-1",jitter:l||_t,nackCount:h||0===h?h:_t,pliCount:p||0===p?p:_t,rtt:m||_t,googFirsSent:_,samplingRate:n,googRenderDelayMs:u,encoderImplementation:R||String(_t),trackState:(null===(t=this._crtRTCRoom.getLocalTrack(f))||void 0===t?void 0:t.isLocalMuted())?Ot.DISABLE:Ot.ENABLE}})),R=i.filter((e=>!!e.trackId)).map((e=>{var t;const{trackId:r,audioLevel:i,samplingRate:n,bitrate:o,packetsLostRate:s,frameRate:a,frameWidth:c,frameHeight:d,googRenderDelayMs:u,jitter:l,nackCount:h,pliCount:p,rtt:m,googFirsReceived:_,codecImplementationName:R}=e,C=this._getPolarisTrackId(r),f=this._getRealResourceId(r);return{trackId:C,googCodecName:R||String(_t),audioLevel:i||0===i?i:_t,bitrate:o||0===o?o:_t,packetsLostRate:s||0===s?s:_t,frameRate:a||_t,resolution:c&&d?`${c} * ${d}`:"-1",jitter:l||_t,nackCount:h||0===h?h:_t,pliCount:p||0===p?p:_t,rtt:m||_t,googFirsReceived:_,samplingRate:n,googRenderDelayMs:u,codecImplementationName:R||String(_t),trackState:(null===(t=this._crtRTCRoom.getRemoteTrack(f))||void 0===t?void 0:t.isLocalMuted())?Ot.DISABLE:Ot.ENABLE}}));p+=_.map((e=>`${e.trackId}\t${e.googCodecName}\t${e.audioLevel}\t${e.samplingRate}\t${e.bitrate}\t${e.packetsLostRate}\t${e.frameRate}\t${e.resolution}\t${e.googRenderDelayMs}\t${e.jitter}\t${e.nackCount}\t${e.pliCount}\t${e.rtt}\t${e.googFirsSent}\t${e.encoderImplementation}\t${e.trackState}`)).join("\n"),e.senders.length&&this._send(p+`\r${this._userRole}`),m+=R.map((e=>`${e.trackId}\t${e.googCodecName}\t${e.audioLevel}\t${e.samplingRate}\t${e.bitrate}\t${e.packetsLostRate}\t${e.frameRate}\t${e.resolution}\t${e.googRenderDelayMs}\t${e.jitter}\t${e.nackCount}\t${e.pliCount}\t${e.rtt}\t${e.googFirsReceived}\t${e.codecImplementationName}\t${e.trackState}`)).join("\n"),e.receivers.length&&this._send(m+`\r${this._userRole}`)}sendR1(){const e=this._context.getCoreVersion(),t=navigator.platform,r=`R1\t5.3.2\t${e}\tweb\t${t}\t-1\t${ot.browser}\t${ot.version}\t${this._getClientID()}\t${this._userRole}`;this._send(r)}sendR2(e,t,r){const i=`R2\t${e}\t${t}\t${this._getClientID()}\r${r.join("\t")}\r${this._userRole}`;this._send(i)}}!function(e){e.PUBLISH="publish",e.SUBSCRIBE="subscribe"}(Nt||(Nt={})),function(e){e.BEGIN="begin",e.END="end"}(At||(At={}));class xt{constructor(e){this._room=e,this._audioLevelChangeHandler=null,this._timer=null,this._pc=this._room.__getPC()}_audioLevelReport(){return r(this,void 0,void 0,(function*(){if("new"===this._pc.getRTCPeerConn().iceConnectionState||!this._audioLevelChangeHandler)return;const e=(yield this._pc.getAudioLevelReportData()).map((e=>{const{userId:t}=cr.parseTrackId(e.trackId);return{track:this._room.getCrtUserId()===t?this._room.getLocalTrack(e.trackId):this._room.getRemoteTrack(e.trackId),audioLevel:e.audioLevel||0}})).filter((e=>e.track));this._audioLevelChangeHandler(e)}))}onAudioLevelChange(e,t){t<300||t>1e3?i.error('the valid range of onAudioLevelChange params "gap" is: > 300 && < 1000'):e?(this._audioLevelChangeHandler=e,this._timer=setInterval(this._audioLevelReport.bind(this),t)):this._audioLevelChangeHandler=null}clearAudioLevelReportTimer(){this._timer&&(clearInterval(this._timer),this._timer=null)}}e.RCRTCLiveRole=void 0,(Dt=e.RCRTCLiveRole||(e.RCRTCLiveRole={}))[Dt.ANCHOR=1]="ANCHOR",Dt[Dt.AUDIENCE=2]="AUDIENCE";const Ut=e=>e instanceof Oe?e.getTrackId():e.track.getTrackId();class wt{constructor(e,t,r,n,o,a,d,u,l,h){this._context=e,this._runtime=t,this._roomId=r,this._roomMode=o,this._service=a,this._initOptions=d,this._ntfClearRoomItem=u,this._isMainRoom=h,this._remoteTracks={},this._subscribedList=[],this._destroyed=!1,this.msgTaskQueue=new s,this._appListener=null,this._onRecvPKMsg=null,this._token=n.token,this._sessionId=n.sessionId,this._roomResources=l?{}:ut(n,this._roomId),this._initRemoteTracks();const p=this._context.getCurrentId(),m=this._roomResources[p]=this._roomResources[p]||[];i.debug(`room data -> ${JSON.stringify(this._roomResources)}`),m.length>0&&c((()=>this._unpublishPrev(m))),l&&this._afterChangedRole(n),this._pinger=new pt(r,this._roomMode,e,this._initOptions.pingGap),this._pinger.onFailed=this._kickoff.bind(this),this._pinger.onPingResult=this._handlePingResult.bind(this),this._pinger.start(),this._polarisReport=new Mt(this._context,this._runtime,this._roomId,this),this._polarisReport.sendR1(),this._pc=new Pt(this._reTryExchange.bind(this),this._polarisReport),this._pc.on(Pt.__INNER_EVENT_TRACK_READY__,this._onTrackReady,this),this._pc.on(Le.__INNER_EVENT_MUTED_CHANGE__,this._onLocalTrackMuted,this),this._pc.on(Le.__INNER_EVENT_DESTROY__,this._onLocalTrackDestroied,this)}_initRemoteTracks(){const t=this._context.getCurrentId();for(const r in this._roomResources){const i=this._roomResources[r];r!==t&&0!==i.length&&i.forEach((t=>{const r=qe(t),{tag:i,userId:n,mediaType:o}=ze(r),s=o===e.RCMediaType.AUDIO_ONLY?new Ve(i,n):new He(i,n);s.__innerSetRemoteMuted(0===t.state),this._remoteTracks[r]=s}))}}_handlePingResult(e){this._callAppListener("onPing",e)}setBitrate(e,r,n){i.warn("`RCAbstractRoom.setBitrate` will be deprecated, use `RCLocalTrack.setBitrate` instead."),t.assert("max",e,(e=>t.isNumber(e)&&e>Math.max(r||1,200)),!0),t.assert("min",r,(r=>t.isNumber(r)&&r>=1&&(!t.isNumber(e)||r<e)),!0),t.assert("start",n,(i=>t.isNumber(i)&&i>r&&i<=e)),this._pc.setBitrate(e,r,n)}_onTrackReady(t){const r=t.streams[0].id,n=t.receiver.track,o=[r,"audio"===n.kind?e.RCMediaType.AUDIO_ONLY:e.RCMediaType.VIDEO_ONLY].join("_"),s=this._remoteTracks[o];s?(s.__innerSetMediaStreamTrack(n),this._callAppListener("onTrackReady",s)):i.warn(`cannot found remote track ${n.id}`)}_callAppListener(e,...t){var r;const n=null===(r=this._appListener)||void 0===r?void 0:r[e];if(n)try{n(...t)}catch(e){i.error(e)}}_onUserUnpublish(e){return r(this,void 0,void 0,(function*(){yield this.unsubscribe(e),e.forEach((e=>{e.__innerDestroy(),delete this._remoteTracks[e.getTrackId()]})),this._onTrackUnpublish(e)}))}_onTrackUnpublish(e){this._callAppListener("onTrackUnpublish",e)}_unpublishPrev(e){return r(this,void 0,void 0,(function*(){const r=e.slice();e.length=0,i.info(`unpublish uris prev login: ${JSON.stringify(r)}`);const n=yield this._context.setRTCTotalRes(this._roomId,Be(lt.UNPUBLISH,r),Fe([]),lt.TOTAL_CONTENT_RESOURCE,Fe([]));n!==t.ErrorCode.SUCCESS?i.error(`unpublish prev uris failed -> code: ${n}`):i.debug("unpublish uris prev login succeed")}))}__parseInnerMessage(e){const{targetId:r,conversationType:n}=e;if(n!==t.ConversationType.RTC_ROOM)return!1;if(r!==this._roomId)return!0;i.info(`recv inner msg -> message: ${JSON.stringify(e)} | roomid: ${this._roomId}`);const o=e.content;switch(e.messageType){case lt.KICK:this._kickoff(!0,o);break;case lt.STATE:this.msgTaskQueue.push((()=>this._stateHandle(o)));break;case lt.MODIFY:case lt.PUBLISH:case lt.UNPUBLISH:case lt.TOTAL_CONTENT_RESOURCE:this.msgTaskQueue.push((()=>this._resourceHandle(o,e.messageType,e.senderUserId)));break;case lt.ROOM_NOTIFY:this._callAppListener("onRoomAttributeChange",e.messageType,e.content);break;case lt.USER_NOTIFY:i.warn(`TODO: ${lt.USER_NOTIFY}`);break;case lt.PK_INVITE:case lt.PK_CANCEL_INVITE:case lt.PK_INVITE_TIMEOUT:case lt.PK_INVITE_ANSWER:case lt.PK_END:this._onRecvPKMsg&&this._onRecvPKMsg(e);break;case lt.OTHER_ROOM_OFFLINE:break;default:this._callAppListener("onMessageReceive",e.messageType,e.content,e.senderUserId,e.messageUId)}return!0}_kickoff(e,t){let r;i.warn(`onKickOff -> byServer: ${e}`),this._ntfClearRoomItem(),this._leaveHandle(!e),e&&((null==t?void 0:t.users)||[]).forEach((e=>{e.userId===this._context.getCurrentId()&&(r=e.type)})),this._callAppListener("onKickOff",e,r)}_rtcpeerClosed(){this._ntfClearRoomItem(),this._leaveHandle(!0),this._callAppListener("onRTCPeerConnectionCloseByException")}_resourceHandle(t,n,o){return r(this,void 0,void 0,(function*(){if(this._assertRoomDestroyed())return void i.warn(`room has been destroyed. -> roomId: ${this._roomId}`);const{uris:r,ignore:s}=t;if(s||!r)return;const a=[],d=[],u=[];let l;const h=this._roomResources[o]||(this._roomResources[o]=[]);switch(n){case lt.MODIFY:u.push(...r);break;case lt.PUBLISH:a.push(...r);break;case lt.UNPUBLISH:d.push(...r);break;case lt.TOTAL_CONTENT_RESOURCE:l=Ze(h,r),a.push(...l.publishedList),d.push(...l.unpublishedList),u.push(...l.modifiedList)}if(a.length>0){const t=h.map(qe),r=[],n=[];if(a.forEach((i=>{const o=qe(i),s=t.indexOf(o),{userId:a,tag:c,mediaType:d}=ze(o);s>-1?h[s]=i:h.push(i);let u=this._remoteTracks[o];u?u.isSubscribed()&&r.push(u):(u=d===e.RCMediaType.AUDIO_ONLY?new Ve(c,a):new He(c,a),this._remoteTracks[o]=u,n.push(u)),u.__innerSetRemoteMuted(0===i.state)})),r.length){const t=r.map((e=>e.getTrackId()));i.debug(`resub tracks -> ${JSON.stringify(t)}`);const{code:n}=yield c((()=>this.__subscribe(r,!0)));n!==e.RCRTCCode.SUCCESS&&i.error(`resub tracks failed -> code: ${n}, ids: ${JSON.stringify(t)}`)}this._onTrackPublish(n)}if(d.length>0){const e=d.map(qe);for(let t=h.length-1;t>=0;t-=1){const r=h[t];e.includes(qe(r))&&h.splice(t,1)}const t=d.map((e=>{const t=qe(e);return this._remoteTracks[t]}));yield this._onUserUnpublish(t)}if(u.length>0){const e=h.map(qe);for(let t=0;t<u.length;t+=1){const r=u[t],i=qe(r),n=e.indexOf(i);h[n].state=r.state;const o=this._remoteTracks[i];o.__innerSetRemoteMuted(0===r.state),o.isAudioTrack()?this._onAudioMuteChange(o):this._onVideoMuteChange(o)}}}))}_onTrackPublish(e){this._callAppListener("onTrackPublish",e)}_stateHandle(t){var n;return r(this,void 0,void 0,(function*(){const{users:r}=t;if(0===r.length)return;for(let e=0;e<r.length;e++){const t=r[e];if(t.extra&&t.extra.roomId!==this._roomId)return;if(1==+t.state&&!this.getRemoteUserIds().includes(t.userId))return}const o=[],s=[],a=[],c=[];r.forEach((e=>{0==+e.state?(i.debug(`user joined -> ${e.userId}`),this._roomResources[e.userId]||(e.switchRoleType?a.push(e.userId):o.push(e.userId)),this._roomResources[e.userId]=this._roomResources[e.userId]||[]):(i.debug(`user left -> ${e.userId}`),e.switchRoleType?c.push(e.userId):s.push(e.userId))}));const d=[...o,...a],u=[...s,...c];if(u.length){const e=[],t=[];u.forEach((r=>{e.push(...this.getRemoteTracksByUserId(r)),t.push(r)})),e.length&&(yield this.unsubscribe(e),e.forEach((e=>delete this._remoteTracks[e.getTrackId()]))),t.length&&t.forEach((e=>delete this._roomResources[e]))}if(null===(n=this._appListener)||void 0===n?void 0:n.onSwitchRole)return a.length&&a.forEach((t=>this._callAppListener("onSwitchRole",t,e.RCRTCLiveRole.ANCHOR))),c.length&&c.forEach((t=>this._callAppListener("onSwitchRole",t,e.RCRTCLiveRole.AUDIENCE))),o.length&&this._callAppListener("onUserJoin",o),void(s.length&&this._callAppListener("onUserLeave",s));d.length&&this._callAppListener("onUserJoin",d),u.length&&this._callAppListener("onUserLeave",u)}))}getRoomId(){return this._roomId}getCrtUserId(){return this._context.getCurrentId()}__getPC(){return this._pc}getRemoteUserIds(){const e=this._context.getCurrentId();return Object.keys(this._roomResources).filter((t=>t!==e))}getRemoteTracks(){const e=[];return this.getRemoteUserIds().forEach((t=>{e.push(...this.getRemoteTracksByUserId(t))})),e}getRemoteTracksByUserId(e){const t=[];for(const r in this._remoteTracks){const i=this._remoteTracks[r];i.getUserId()===e&&t.push(i)}return t}getSessionId(){return this._sessionId}sendMessage(n,o){return r(this,void 0,void 0,(function*(){const{code:r}=yield this._context.sendMessage(t.ConversationType.RTC_ROOM,this._roomId,{messageType:n,content:o,isStatusMessage:!0});return r!==t.ErrorCode.SUCCESS?(i.error(`send message failed -> code: ${r}`),{code:e.RCRTCCode.SIGNAL_ERROR}):{code:e.RCRTCCode.SUCCESS}}))}setRoomAttribute(n,o,s,a=!1){return r(this,void 0,void 0,(function*(){const r=yield this._context.setRTCData(this._roomId,n,o,a,t.RTCApiType.ROOM,s);return r!==t.ErrorCode.SUCCESS?(i.error(`SetRoomAttributeValue Failed: ${r}`),{code:e.RCRTCCode.SIGNAL_ERROR}):{code:e.RCRTCCode.SUCCESS}}))}deleteRoomAttributes(n,o,s=!1){return r(this,void 0,void 0,(function*(){const r=yield this._context.removeRTCData(this._roomId,n,s,t.RTCApiType.ROOM,o);return r!==t.ErrorCode.SUCCESS?(i.error(`DeleteRoomAttribute Failed: ${r}`),{code:e.RCRTCCode.SIGNAL_ERROR}):{code:e.RCRTCCode.SUCCESS}}))}getRoomAttributes(n=[],o=!1){return r(this,void 0,void 0,(function*(){const{code:r,data:s}=yield this._context.getRTCData(this._roomId,n,o,t.RTCApiType.ROOM);return r!==t.ErrorCode.SUCCESS?(i.error(`GetRoomAttributes Failed: ${r}`),{code:e.RCRTCCode.SIGNAL_ERROR}):{code:e.RCRTCCode.SUCCESS,data:s}}))}_setUserAttributeValue(e,r,i){return this._context.setRTCData(this._roomId,e,r,!1,t.RTCApiType.PERSON,i)}_deleteUserAttributes(e,r){return this._context.removeRTCData(this._roomId,e,!1,t.RTCApiType.PERSON,r)}_getUserAttributes(e){return this._context.getRTCData(this._roomId,e,!1,t.RTCApiType.PERSON)}isDestroyed(){return this._destroyed}__destroy(e){return this._leaveHandle(e)}_leaveHandle(e){var t;return r(this,void 0,void 0,(function*(){this._destroyed||(this._destroyed=!0,null===(t=this._audioLevelReport)||void 0===t||t.clearAudioLevelReportTimer(),e&&(yield this._context.quitRTCRoom(this._roomId)),this._isMainRoom&&this._quitAllPKRoom(),this._pc.removeAllLocalTrack(),this._pinger.stop(),this._isMainRoom&&(yield this._service.exit(this._getRTCReqestHeaders())),this._pc.destroy(),this._polarisReport=null,this._removeRemoteTracks())}))}_onLocalTrackDestroied(e){e instanceof Ae&&e.__isTiny()||this.unpublish([e])}_onLocalTrackMuted(e){return r(this,void 0,void 0,(function*(){const r=e.getTrackId(),n=this._context.getCurrentId(),o=[{resourceId:r,enabled:!e.isLocalMuted()}],s=this._roomResources[n]||[],a=[];for(let e=0;e<s.length;e+=1){const t=s[e],r=qe(t),i=o.findIndex((e=>e.resourceId===r));if(i>=0){const{enabled:e}=o[i];t.state=e?1:0,a.push(t);break}}const d=yield c((()=>this._context.setRTCTotalRes(this._roomId,Be(lt.MODIFY,a),Fe(s),lt.TOTAL_CONTENT_RESOURCE)));d!==t.ErrorCode.SUCCESS&&i.error("notice `track.enabled` change failed -> code: "+d)}))}_removePubFailedTracks(e){e.forEach((e=>{const t=e instanceof Le?e:e.track;i.debug(`remove pub failed track from peerconnection -> trackId: ${t.getTrackId()}`),this._pc.removeLocalTrackById(t.getTrackId())}))}publish(e){return r(this,void 0,void 0,(function*(){return c((()=>this.__publish(e)))}))}__publish(n){return r(this,void 0,void 0,(function*(){if(!this._isMainRoom&&this instanceof qt)return i.error("the `publish` is disabled in PK room"),{code:e.RCRTCCode.THE_FUNCTION_IS_DISABLED_IN_PKROOM};if(this._assertRoomDestroyed())return i.error(`publish failed, room has been destroyed. -> roomId: ${this._roomId}`),{code:e.RCRTCCode.ROOM_HAS_BEEN_DESTROYED};if(!t.validate("tracks",n,(()=>t.isArray(n)&&n.length>0&&n.every((e=>e instanceof Le||e.track instanceof Le))),!0))return i.error(`publish failed, tracks is invalid -> roomId: ${this._roomId}`),{code:e.RCRTCCode.PARAMS_ERROR};const r=this._context.getCurrentId();if(this._pc.getLocalTracks().length+(e=>{let t=0;return e.forEach((e=>{e instanceof Le?t++:e.pubTiny&&e.track.isVideoTrack()?t+=2:t++})),t})(n)>10)return i.error(`publish failed, tracks limit exceeded -> roomId: ${this._roomId}`),{code:e.RCRTCCode.PUBLISH_TRACK_LIMIT_EXCEEDED};i.debug(`publish tracks -> roomId: ${this._roomId}, tracks: ${n.map(Ut)}`),n.forEach((t=>{const{track:r,pubTiny:n}=t instanceof Le?{pubTiny:!1,track:t}:t;if(this._pc.addLocalTrack(r),r.isVideoTrack()&&n){let t;try{t=r.__innerGetMediaStreamTrack().clone();const i=n.frameRate||e.RCFrameRate.FPS_15,o=n.resolution||e.RCResolution.W176_H144,{width:s,height:a}=tt(o),c=nt(i);t.applyConstraints({width:s,height:a,frameRate:c})}catch(e){return null==t||t.stop(),void i.warn(`pubTiny failed -> id: ${r.getTrackId()}, msg: ${e.message}`)}this._pc.addLocalTrack(new Ae(r.getTag(),r.getUserId(),t,!0))}})),this._pc.clearReTryExchangeTimer();const o=yield this._createExchangeParams(this._subscribedList,!1),s=this._getPushOtherRoomsParams();s&&(o.pushOtherRooms=s);const a=yield this._exchangeHandle(o);if(a.code!==e.RCRTCCode.SUCCESS)return i.error(`publish failed -> roomId: ${this._roomId}, code: ${a.code}`),this._removePubFailedTracks(n),{code:a.code};const{publishList:c,sdp:d,resultCode:u,message:l,urls:h,mcuPublishList:p}=a.data;if(u!==e.RCRTCCode.SUCCESS)return i.error(`publish failed -> roomId: ${this._roomId}, code: ${u}, msg: ${l}`),this._removePubFailedTracks(n),{code:u};const m=yield this._pc.setRemoteAnswer(d.sdp);if(m!==e.RCRTCCode.SUCCESS)return{code:m};const _=this._roomResources[r],R=c.map((e=>Object.assign({tag:e.msid.split("_").pop(),state:this._getResourceState(qe(e))},e))),{publishedList:C}=Ze(_,R),f=(null==p?void 0:p.map((e=>Object.assign({tag:e.msid.split("_").pop(),state:1},e))))||[],v=yield this._context.setRTCTotalRes(this._roomId,Be(lt.PUBLISH,C),Fe(R),lt.TOTAL_CONTENT_RESOURCE,Fe(f));if(v!==t.ErrorCode.SUCCESS)return i.error(`send publish streams notification failed: ${v}`),{code:e.RCRTCCode.SIGNAL_ERROR};this._roomResources[r]=R;const T=C.map((e=>qe(e)));return this._polarisReport&&this._polarisReport.sendR2(Nt.PUBLISH,At.BEGIN,T),n.forEach((e=>{const{track:t}=e instanceof Le?{track:e}:e;t.__innerSetPublished(!0)})),i.debug(`publish success: ${T.join(",")}`),this._roomMode===t.RTCMode.LIVE?{code:e.RCRTCCode.SUCCESS,liveUrl:null==h?void 0:h.liveUrl}:{code:e.RCRTCCode.SUCCESS}}))}_getPushOtherRoomsParams(){if(this instanceof qt){const{code:t,roomPKHandler:r}=this.getRoomPKHandler(),i=[];if(t===e.RCRTCCode.SUCCESS&&r){const e=r.getJoinedPKRooms();for(const t in e){const n=e[t].getSessionId(),o=r.getPKInfo(t);if(!o)return;const{inviterUserAutoMix:s,inviteeUserAutoMix:a,inviterUserId:c}=o,d=this._context.getCurrentId()===c;i.push({roomId:t,sessionId:n,autoMix:d?!!s:!!a})}}return i}}_reTryExchange(){return r(this,void 0,void 0,(function*(){c((()=>r(this,void 0,void 0,(function*(){const t=yield this._createExchangeParams(this._subscribedList,!0),r=this._getPushOtherRoomsParams();r&&(t.pushOtherRooms=r);const n=yield this._exchangeHandle(t);if(n.code!==e.RCRTCCode.SUCCESS)return i.error(`reTryExchange failed: ${n.code}`),{code:n.code};const{sdp:o,resultCode:s}=n.data;if(s!==e.RCRTCCode.SUCCESS)return i.error(`reTryExchange failed: ${s}`),{code:s};this._pc.clearReTryExchangeTimer();const a=yield this._pc.setRemoteAnswer(o.sdp);return a!==e.RCRTCCode.SUCCESS?{code:a}:void 0}))))}))}_exchangeHandle(e){return this._service.exchange(this._getRTCReqestHeaders(),e)}_getRTCReqestHeaders(){return{"App-Key":this._context.getAppkey(),RoomId:this._roomId,Token:this._token,RoomType:this._roomMode,UserId:this._context.getCurrentId()}}_createExchangeParams(e,t){return r(this,void 0,void 0,(function*(){return{sdp:yield this._pc.createOffer(t),extend:JSON.stringify({resolutionInfo:this._pc.getOutboundVideoInfo()}),subscribeList:e.filter((e=>{const t=e.track.getTrackId(),{userId:r}=ze(t);if(!this._roomResources[r])return!1;const i=this._roomResources[r].filter((e=>t===`${e.msid}_${e.mediaType}`)).length;return i})).map((e=>({simulcast:e.subTiny?mt.TINY:mt.NORMAL,resolution:"",uri:this._getResourceById(e.track.getTrackId()).uri}))),switchstream:!1}}))}_getResourceState(e){var t;return(null===(t=this.getLocalTrack(e))||void 0===t?void 0:t.isLocalMuted())?0:1}unpublish(e){return r(this,void 0,void 0,(function*(){return c((()=>this.__unpublish(e)))}))}__unpublish(n){var o;return r(this,void 0,void 0,(function*(){if(!this._isMainRoom&&this instanceof qt)return i.error("the `unpublish` is disabled in PK room"),{code:e.RCRTCCode.THE_FUNCTION_IS_DISABLED_IN_PKROOM};if(this._assertRoomDestroyed())return i.warn(`room has been destroyed, no need to unpublish tracks -> roomId: ${this._roomId}`),{code:e.RCRTCCode.SUCCESS};const r=this._context.getCurrentId();if(!t.validate("tracks",n,(()=>n.every((e=>e.getUserId()===r&&e instanceof Le))),!0))return i.warn(`unpublish failed, tracks is invalid -> roomId: ${this._roomId}, tracks: ${n.map(Ut)}`),{code:e.RCRTCCode.PARAMS_ERROR};const s=n.map((e=>e.getTrackId())),a=s.map(this._getResourceById.bind(this)).filter((e=>!!e));if(0===a.length)return{code:e.RCRTCCode.SUCCESS};const c=this._roomResources[r].filter((e=>!a.includes(e)));s.forEach((e=>this._pc.removeLocalTrackById(e))),null===(o=this._polarisReport)||void 0===o||o.sendR2(Nt.PUBLISH,At.END,s),this._pc.clearReTryExchangeTimer();const d=yield this._createExchangeParams(this._subscribedList,!1),u=this._getPushOtherRoomsParams();u&&(d.pushOtherRooms=u);const l=yield this._exchangeHandle(d);if(l.code!==e.RCRTCCode.SUCCESS)return i.error(`exchange failed -> code: ${l.code}`),{code:l.code};const{publishList:h,sdp:p,resultCode:m,message:_,mcuPublishList:R}=l.data;m!==e.RCRTCCode.SUCCESS&&i.error(`unpublish streams failed -> code: ${m}, msg: ${_}`);const C=R?R.map((e=>Object.assign({tag:e.msid.split("_").pop(),state:1},e))):[],f=yield this._context.setRTCTotalRes(this._roomId,Be(lt.UNPUBLISH,a),Fe(c),lt.TOTAL_CONTENT_RESOURCE,Fe(C));if(f!==t.ErrorCode.SUCCESS)return i.error("send unpublish notification failed:",f),{code:e.RCRTCCode.SIGNAL_ERROR};i.debug(`unpublish success -> tracks: ${s.join(",")}`);const v=yield this._pc.setRemoteAnswer(p.sdp);if(v!==e.RCRTCCode.SUCCESS)return{code:v};const T=h.map((e=>Object.assign({tag:e.msid.split("_").pop(),state:this._getResourceState(qe(e))},e)));return this._roomResources[r]=T,{code:e.RCRTCCode.SUCCESS}}))}_getResourceById(e){const{userId:t}=ze(e);return this._roomResources[t].find((t=>qe(t)===e))}_isValidResourceId(e){var t;const{userId:r}=ze(e);return!!(null===(t=this._roomResources[r])||void 0===t?void 0:t.find((t=>qe(t)===e)))}subscribe(e){return r(this,void 0,void 0,(function*(){return c((()=>this.__subscribe(e,!1)))}))}__subscribe(n,o=!1){var s;return r(this,void 0,void 0,(function*(){if(this._assertRoomDestroyed())return i.error(`subscribe failed, room has been destroyed -> roomId: ${this._roomId}`),{code:e.RCRTCCode.ROOM_HAS_BEEN_DESTROYED};if(!t.validate("tracks",n,(()=>t.isArray(n)&&n.length>0&&n.every((e=>e instanceof je||e.track instanceof je))),!0))return i.error(`subscribe failed, tracks is invalid -> roomId: ${this._roomId}`),{code:e.RCRTCCode.PARAMS_ERROR};i.info(`subscribe -> roomId: ${this._roomId}, tracks: ${n.map(Ut)}`);const r=this._subscribedList.map((e=>Object.assign({},e))),a=n.map((e=>e instanceof je?{track:e}:e));let c=!1;const d=[];return a.forEach((e=>{const t=e.track.getTrackId();d.push(t);const i=r.find((e=>e.track.getTrackId()===t));i&&i.subTiny===e.subTiny||(i?i.subTiny=e.subTiny:r.push(e),c=!0)})),c||o?(null===(s=this._polarisReport)||void 0===s||s.sendR2(Nt.SUBSCRIBE,At.BEGIN,d),this._updateSubListHandle(r,!0)):{code:e.RCRTCCode.SUCCESS}}))}unsubscribe(e){return r(this,void 0,void 0,(function*(){return c((()=>this.__unsubscribe(e)))}))}__unsubscribe(n){var o;return r(this,void 0,void 0,(function*(){if(this._assertRoomDestroyed())return i.warn(`room has beed destroyed, no need to unsubscribe tracks -> roomId: ${this._roomId}`),{code:e.RCRTCCode.SUCCESS};if(!t.validate("tracks",n,(()=>t.isArray(n)&&n.length>0&&n.every((e=>e instanceof je))),!0))return i.error(`unsubscribe failed, tracks is invalid -> roomId: ${this._roomId}`),{code:e.RCRTCCode.PARAMS_ERROR};i.info(`unsubscribe -> roomId: ${this._roomId}, tracks: ${n.map(Ut)}`);const r=this._subscribedList.map((e=>Object.assign({},e))).filter((e=>!n.includes(e.track)));return null===(o=this._polarisReport)||void 0===o||o.sendR2(Nt.SUBSCRIBE,At.END,n.map((e=>e.getTrackId()))),this._updateSubListHandle(r,!1)}))}_assertRoomDestroyed(){if(this._destroyed){const t="This room has been destroyed. Please use `RCRTCClient.joinRTCRoom` or `RCRTCClient.joinLivingRoom` to catch another instance.";return i.warn(t),e.RCRTCCode.ROOM_HAS_BEEN_DESTROYED}}getLocalTrack(e){return this._pc.getLocalTrack(e)}getLocalTracks(){return this._pc.getLocalTracks()}getRemoteTrack(e){return this._remoteTracks[e]||null}updateSubList(e){return r(this,void 0,void 0,(function*(){return c((()=>this._updateSubListHandle(e,!1)))}))}_updateSubListHandle(n,o=!1){return r(this,void 0,void 0,(function*(){if(this._assertRoomDestroyed())return{code:e.RCRTCCode.ROOM_HAS_BEEN_DESTROYED};if(!t.validate("resources",n,(()=>t.isArray(n)&&n.every((e=>e instanceof je||e.track instanceof je))),!0))return i.error(`update sublist failed, tracks is invalid -> roomId: ${this._roomId}`),{code:e.RCRTCCode.PARAMS_ERROR};i.info(`update subscribe list -> roomId: ${this._roomId}, forceReq: ${o}, tracks: ${n.map(Ut)}`);let r=n.map((e=>e instanceof je?{track:e}:Object.assign({},e)));const s={};r=r.filter((e=>{const t=e.track.getTrackId();return this._remoteTracks[t]?!s[t]&&(s[t]=!0):(i.warn(`track cannot found in room -> trackId: ${t}`),!1)})).map((e=>Object.assign({},e)));const a=this._subscribedList.map((e=>Object.assign({},e)));if(!o){let t=!1;if(r.forEach((e=>{const r=a.findIndex((t=>t.track===e.track));if(-1===r)return void(t=!0);a.splice(r,1)[0].subTiny!==e.subTiny&&(t=!0)})),a.length&&(t=!0),!t)return{code:e.RCRTCCode.SUCCESS}}this._pc.clearReTryExchangeTimer(),this._pc.updateSubRemoteTracks(r.map((e=>e.track)));const c=yield this._createExchangeParams(r,!1),d=this._getPushOtherRoomsParams();d&&(c.pushOtherRooms=d);const u=yield this._exchangeHandle(c),l=r.map((e=>e.track.getTrackId()));if(u.code!==e.RCRTCCode.SUCCESS)return{code:u.code};const{sdp:h,resultCode:p,message:m,subscribedList:_}=u.data;if(p!==e.RCRTCCode.SUCCESS)return i.error(`change subscribe list failed: ${p}`),{code:p};i.debug(`subscribe success: ${l.join(",")}`);const R=yield this._pc.setRemoteAnswer(h.sdp);if(R!==e.RCRTCCode.SUCCESS)return{code:R};const C=null==_?void 0:_.map((e=>`${e.msid}_${e.mediaType}`)),f=r.filter((e=>null==C?void 0:C.includes(e.track.getTrackId()))),v=r.filter((e=>!(null==C?void 0:C.includes(e.track.getTrackId()))));for(const e in this._remoteTracks){const t=f.some((t=>t.track.getTrackId()===e));this._remoteTracks[e].__innerSetSubscribed(t)}return this._subscribedList.splice(0,this._subscribedList.length,...f),v.length?{code:e.RCRTCCode.SUCCESS,failedList:v}:{code:e.RCRTCCode.SUCCESS}}))}registerRoomEventListener(e){this._appListener=e}registerReportListener(e){this._pc.registerReportListener(e)}onAudioLevelChange(e,t){var r;null===(r=this._audioLevelReport)||void 0===r||r.clearAudioLevelReportTimer(),this._audioLevelReport=new xt(this),this._audioLevelReport.onAudioLevelChange(e,t||1e3)}__onReconnected(n){return r(this,void 0,void 0,(function*(){if("closed"===this._pc.getRTCPeerConn().connectionState)return i.warn("RTCPeerConnection closed. Please rejoin room to restore services."),void this._rtcpeerClosed();const{code:r,data:o}=yield this._context.joinRTCRoom(this._roomId,this._roomMode,n);if(r!==t.ErrorCode.SUCCESS)return void i.error(`RTC __onReconnected getRTCRoomInfo failed: ${r}`);i.debug(`RTC __onReconnected getRTCRoomInfo success: ${JSON.stringify(o)}`);const s=[],a={},c={},d={},u=ut(o,this._roomId),l=Object.keys(u),h=Object.keys(this._roomResources);for(let e=l.length-1;e>=0;e-=1){const t=l[e],r=h.indexOf(t);if(-1===r){s.push(t),a[t]=Xe(u[t]);continue}const i=this._roomResources[t],n=u[t],{publishedList:o,modifiedList:p,unpublishedList:m}=Ze(i,n,!0);a[t]=Xe(o),c[t]=Xe(m),d[t]=Xe(p),h.splice(r,1)}h.length&&h.forEach((e=>{delete this._roomResources[e]})),Object.assign(this._roomResources,u),h.length&&this._callAppListener("onUserLeave",h),s.length&&this._callAppListener("onUserJoin",s);for(const e in c){const t=c[e];if(t.length){const e=t.map((e=>this._remoteTracks[qe(e)]));yield this._onUserUnpublish(e)}}return Object.keys(a).forEach((t=>{const r=a[t];if(0===r.length)return;const i=r.map((t=>{const r=qe(t),{userId:i,tag:n,mediaType:o}=ze(r),s=this._remoteTracks[r]=o===e.RCMediaType.AUDIO_ONLY?new Ve(n,i):new He(n,i);return s.__innerSetRemoteMuted(0===t.state),s}));this._onTrackPublish(i)})),Object.keys(d).forEach((e=>{d[e].forEach((e=>{const t=qe(e),r=this._remoteTracks[t];r.__innerSetRemoteMuted(0===e.state),r.isAudioTrack()?this._onAudioMuteChange(r):this._onVideoMuteChange(r)}))})),{data:o}}))}_onAudioMuteChange(e){this._callAppListener("onAudioMuteChange",e)}_onVideoMuteChange(e){this._callAppListener("onVideoMuteChange",e)}_afterChangedRole(e){}_removeRemoteTracks(){const e=Object.values(this._remoteTracks);e.length&&(e.forEach((e=>{e.isAudioTrack()&&e.__releaseMediaElement()})),this._remoteTracks={})}_registerPKMsgListener(e){this._onRecvPKMsg=e}_quitAllPKRoom(){}}var $t,jt,Vt;e.BackgroundPictureFillMode=void 0,($t=e.BackgroundPictureFillMode||(e.BackgroundPictureFillMode={}))[$t.CROP=1]="CROP",$t[$t.WHOLE=2]="WHOLE",e.MixLayoutMode=void 0,(jt=e.MixLayoutMode||(e.MixLayoutMode={}))[jt.CUSTOMIZE=1]="CUSTOMIZE",jt[jt.SUSPENSION=2]="SUSPENSION",jt[jt.ADAPTATION=3]="ADAPTATION",e.MixVideoRenderMode=void 0,(Vt=e.MixVideoRenderMode||(e.MixVideoRenderMode={}))[Vt.CROP=1]="CROP",Vt[Vt.WHOLE=2]="WHOLE";const Ht=()=>({version:1,mode:e.MixLayoutMode.SUSPENSION});class Bt{constructor(e,t,r){this._onFlush=e,this._isValidTrackId=t,this._sendCDNInfoSignal=r,this._values=Ht()}setHostVideoTrack(t){if(!this._isValidTrackId(t))return i.error(`setHostVideoTrack failed: videoTrackId is invalid -> ${t}`),this;const{mediaType:r,tag:n,userId:o}=ze(t);return r!==e.RCMediaType.VIDEO_ONLY?(i.error(`setHostVideoTrack failed: kind of resource is not 'video' -> ${t}`),this):(this._values.host_stream_id=Qe(o,n),this)}setMixLayoutMode(t){return[e.MixLayoutMode.CUSTOMIZE,e.MixLayoutMode.SUSPENSION,e.MixLayoutMode.ADAPTATION].includes(t)?(this._values.mode=t,this):(i.error(`layout mode is invalid: ${t}`),this)}_addOutputValue(t,r,i="normal"){const n=this._values.output||(this._values.output={video:{normal:{width:640,height:480}}});if("cdn"===t)return void(n.cdn=r);if("audio"===t)return void(n.audio={bitrate:r});const o=n.video;if("normal"!==i&&"tiny"!==i)if("backgroundColor"!==i)if("exparams"!==i){if("backgroundPicture"===i){const t=o.backgroundPicture||(o.backgroundPicture={fillMode:e.BackgroundPictureFillMode.CROP,picture:[]});Object.assign(t,r)}}else o.exparams={renderMode:r};else o.backgroundColor=r;else{const e=o[i]||(o[i]={});Object.assign(e,r)}}setOutputVideoResolution(e){if(!rt(e))return i.warn("setOutputVideoResolution failed: `resolution` is invalid"),this;const{width:t,height:r}=tt(e);return this._addOutputValue("video",{width:t,height:r},"normal"),this}setOutputVideoFPS(e){if(!it(e))return i.warn("setOutputVideoFPS failed: `fps` is invalid"),this;const t=nt(e);return this._addOutputValue("video",{fps:t},"normal"),this}setOutputVideoBitrate(e){return!t.isNumber(e)||e<=0?i.error(`bitrate is invalid: ${e}`):this._addOutputValue("video",{bitrate:e},"normal"),this}setOutputTinyVideoResolution(e){if(!rt(e))return i.warn("setOutputTinyVideoResolution failed: `resolution` is invalid"),this;const{width:t,height:r}=tt(e);return this._addOutputValue("video",{width:t,height:r},"tiny"),this}setOutputTinyVideoFPS(e){if(!it(e))return i.warn("setOutputTinyVideoFPS failed: `fps` is invalid"),this;const t=nt(e);return this._addOutputValue("video",{fps:t},"tiny"),this}setOutputTinyVideoBitrate(e){return!t.isNumber(e)||e<=0?i.error(`bitrate is invalid: ${e}`):this._addOutputValue("video",{bitrate:e},"tiny"),this}setOutputVideoRenderMode(t){return[e.MixVideoRenderMode.CROP,e.MixVideoRenderMode.WHOLE].includes(t)?this._addOutputValue("video",t,"exparams"):i.error(`renderMode is invalid: ${t}`),this}setOutputAudioBitrate(e){return t.isNumber(e)&&e>0?this._addOutputValue("audio",e):i.error(`bitrate is invalid: ${e}`),this}setOutputBackgroundColor(e){return/^0x[a-fA-F0-9]{6}$/.test(e)?this._addOutputValue("video",e,"backgroundColor"):i.error(`color is invalid: ${e}`),this}addOutputBackgroundPicture(e,r,n,o,s){var a,c,d;if(!t.isHttpUrl(e))return i.error(`uri is invalid: ${e}`),this;if([r,n,o,s].some((e=>!t.isNumber(e)||e<0||e>1)))return i.error(`some attrs of (x, y, w, h) is invalid: ${r}, ${n}, ${o}, ${s}`),this;const u=(null===(d=null===(c=null===(a=this._values.output)||void 0===a?void 0:a.video)||void 0===c?void 0:c.backgroundPicture)||void 0===d?void 0:d.picture)||[];return u.push({uri:e,w:o,h:s,x:r,y:n}),this._addOutputValue("video",{picture:u},"backgroundPicture"),this}removeOutputBackgroundPicture(e){var r,n,o;if(!t.isHttpUrl(e))return i.error(`uri is invalid: ${e}`),this;let s=null===(o=null===(n=null===(r=this._values.output)||void 0===r?void 0:r.video)||void 0===n?void 0:n.backgroundPicture)||void 0===o?void 0:o.picture;return s&&(s=s.filter((t=>t.uri!==e)),this._addOutputValue("video",{pictures:s},"backgroundPicture")),this}clearOutputBackgroundPicture(){return this._addOutputValue("video",{pictures:[]},"backgroundPicture"),this}setOutputBackgroundPictureFillMode(t){return[e.BackgroundPictureFillMode.CROP,e.BackgroundPictureFillMode.WHOLE].includes(t)?this._addOutputValue("video",{fillMode:t},"backgroundPicture"):i.error(`fillMode is invalid: ${t}`),this}addPublishStreamUrls(e){var r,n;const o=/^rtmp:\/\/.+/;if(!t.isArray(e)||0===e.length||e.some((e=>!o.test(e))))return i.error(`urls is invalid: ${e}`),this;const s=(null===(n=null===(r=this._values.output)||void 0===r?void 0:r.cdn)||void 0===n?void 0:n.concat())||[];let a=!1;return e.forEach((e=>{s.some((t=>t.pushurl===e))||(a=!0,s.push({pushurl:e}))})),s.length>5?(i.error("publish stream url no more than 5"),this):(a&&this._addOutputValue("cdn",s),this)}removePublishStreamUrls(e){var r,n;const o=/^rtmp:\/\/.+/;if(!t.isArray(e)||0===e.length||e.some((e=>!o.test(e))))return i.error(`urls is invalid: ${e}`),this;const s=(null===(n=null===(r=this._values.output)||void 0===r?void 0:r.cdn)||void 0===n?void 0:n.concat())||[];for(let t=s.length-1;t>=0;t-=1){const{pushurl:r}=s[t],i=e.indexOf(r);i>=0&&(e.splice(i,1),s.splice(t,1))}return this._addOutputValue("cdn",s),this}clearPublishStreamUrls(){return this._addOutputValue("cdn",[]),this}addCustomizeLayoutVideo(r,n,o,s,a){if(!this._isValidTrackId(r))return i.error(`trackId is invalid: ${r}`),this;if(!t.isNumber(n)||!t.isNumber(o))return i.error(`some attrs of (x, y) is invalid: ${n}, ${o}`),this;if([s,a].some((e=>!t.isNumber(e)||e<0)))return i.error(`some attrs of (width, height) is invalid: ${s}, ${a}`),this;const{userId:c,tag:d,mediaType:u}=ze(r);if(u!==e.RCMediaType.VIDEO_ONLY)return i.error(`kind of resource is not 'video': ${r}`),this;const l=Qe(c,d);return(this._values.input||(this._values.input={video:[]})).video.push({user_id:c,stream_id:l,x:n,y:o,width:s,height:a}),this}removeCustomizeLayoutVideo(t){if(!this._isValidTrackId(t))return i.error(`trackId is invalid: ${t}`),this;const{userId:r,tag:n,mediaType:o}=ze(t);if(o!==e.RCMediaType.VIDEO_ONLY)return i.error(`kind of resource is not 'video': ${t}`),this;const s=Qe(r,n),a=this._values.input||(this._values.input={video:[]});return a.video=a.video.filter((e=>e.stream_id===s)),this}clearCustomizeLayoutVideo(){return(this._values.input||(this._values.input={video:[]})).video=[],this}flush(){var t,i,n,o;return r(this,void 0,void 0,(function*(){const r=JSON.parse(JSON.stringify(this._values)),{code:s}=yield this._onFlush(r);return s===e.RCRTCCode.SUCCESS&&((null===(i=null===(t=this._values.output)||void 0===t?void 0:t.video.normal)||void 0===i?void 0:i.width)||(null===(o=null===(n=this._values.output)||void 0===n?void 0:n.video.normal)||void 0===o?void 0:o.fps))&&this._sendCDNInfoSignal(),this._values=Ht(),{code:s}}))}}var Ft,Kt,Gt,Jt;!function(e){e[e.OPEN=1]="OPEN",e[e.STOP=2]="STOP"}(Ft||(Ft={})),function(e){e[e.SPREAD=0]="SPREAD",e[e.NO_SPREAD=-1]="NO_SPREAD"}(Kt||(Kt={})),function(e){e[e.AUTOMATIC=0]="AUTOMATIC",e[e.MANUAL=1]="MANUAL"}(Gt||(Gt={})),e.RCLivingType=void 0,(Jt=e.RCLivingType||(e.RCLivingType={}))[Jt.VIDEO=0]="VIDEO",Jt[Jt.AUDIO=1]="AUDIO";const Wt=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}));class Yt{constructor(e,t,r,i,n,o,s,a,c){this._PKInfo=e,this._context=t,this._runtime=r,this._service=i,this._initOptions=n,this._mainLivingRoom=o,this._registerPKMsgListener=s,this._onJoinedPKRoom=a,this._onLeavePKRoom=c,this._inviteTimeout=30,this._appListener=null,this._joinedPKRooms={},this._registerPKMsgListener(this._onRecvPKMsg.bind(this)),this._mainRoomId=this._mainLivingRoom.getRoomId()}_callAppListener(e,...t){var r;const n=null===(r=this._appListener)||void 0===r?void 0:r[e];if(n)try{n(...t)}catch(e){i.error(e)}}_onInvite(e){const t=e.inviteInfo||{},{inviterRoomId:r,inviterUserId:i,extra:n}=t,o={inviterRoomId:r,inviterUserId:i};n&&Object.assign(o,{extra:n}),this._PKInfo[r]=t,this._callAppListener("onRequestJoinOtherRoom",o)}_onCancelInvite(e){const{inviterRoomId:t,inviterUserId:r,extra:i}=e.inviteInfo||{},n={inviterRoomId:t,inviterUserId:r};i&&Object.assign(n,{extra:i}),delete this._PKInfo[t],this._callAppListener("onCancelRequestOtherRoom",n)}_onInviteTimeout(e){}_onInviteAnswer(e){const{answerCode:t,inviteContent:r}=e,{inviteSessionId:i,inviterUserId:n,inviterRoomId:o,inviteeUserId:s,inviterUserAutoMix:a,inviteeUserAutoMix:c,inviteeRoomId:d,extra:u}=r,l={agree:1===t,inviterRoomId:o,inviterUserId:n,inviteeRoomId:d,inviteeUserId:s};this._PKInfo[d]=this._PKInfo[d]||{inviteSessionId:i,inviterRoomId:o,inviterUserId:n,inviterUserAutoMix:a,inviteeRoomId:d},this._PKInfo[d].inviteeUserAutoMix=c,this._callAppListener("onResponseJoinOtherRoom",l)}_onPKEnd(e){return r(this,void 0,void 0,(function*(){const{inviteeRoomId:t,inviterRoomId:r,userId:i}=e.inviteInfo,n=r===this._mainRoomId?t:r,o={endRoomId:n,endUserId:i};this._joinedPKRooms[n]&&(yield this.leaveOtherRoom(this._joinedPKRooms[n])),delete this._PKInfo[n],this._callAppListener("onFinishOtherRoom",o)}))}_onRecvPKMsg(e){const{targetId:t,content:r,messageType:i}=e;switch(i){case lt.PK_INVITE:this._onInvite(r);break;case lt.PK_CANCEL_INVITE:this._onCancelInvite(r);break;case lt.PK_INVITE_TIMEOUT:this._onInviteTimeout(r);break;case lt.PK_INVITE_ANSWER:this._onInviteAnswer(r);break;case lt.PK_END:this._onPKEnd(r)}}registerRoomPKEventListener(e){this._appListener=e}requestJoinOtherRoom(n,o,s){return r(this,void 0,void 0,(function*(){if(!t.validate("inviteeRoomId",n,t.notEmptyString,!0)||!t.validate("inviteeUserId",o,t.notEmptyString,!0))return{code:e.RCRTCCode.PARAMS_ERROR};i.info(`requestRoomPK -> inviteeRoomId: ${n}; inviteeUserId: ${o}; options: ${JSON.stringify(s||{})}`);const r=Wt(),a=!t.isBoolean(null==s?void 0:s.autoMix)||(null==s?void 0:s.autoMix),c={inviteSessionId:r,inviterRoomId:this._mainRoomId,inviterUserId:this._context.getCurrentId(),inviterUserAutoMix:a,inviteeRoomId:n,inviteeUserId:o,inviteeTimeoutTime:this._inviteTimeout,extra:(null==s?void 0:s.extra)||""},d={roomId:this._mainRoomId,invitedRoomId:n,invitedUserId:o,inviteTimeout:this._inviteTimeout,inviteInfo:JSON.stringify(c),inviteSessionId:r};i.info(`requestRoomPK -> params: ${JSON.stringify(d)}`);const u=yield this._context.requestRoomPK(d);return u!==t.ErrorCode.SUCCESS?(i.error(`requestRoomPK failed: ${u}`),{code:u}):(i.info("requestRoomPK success"),this._PKInfo[n]={inviteSessionId:r,inviterRoomId:this._mainRoomId,inviterUserId:this._context.getCurrentId(),inviterUserAutoMix:a,inviteeRoomId:n},{code:e.RCRTCCode.SUCCESS})}))}cancelRequestJoinOtherRoom(n,o,s){return r(this,void 0,void 0,(function*(){if(!t.validate("inviteeRoomId",n,t.notEmptyString,!0)||!t.validate("inviteeUserId",o,t.notEmptyString,!0))return{code:e.RCRTCCode.PARAMS_ERROR};if(!this._PKInfo[n])return i.error(`未发起过与 ${n} 房间内 ${o} 连麦的请求`),{code:e.RCRTCCode.PARAMS_ERROR};i.info(`canceRequestJoinPK -> inviteeRoomId: ${n}; inviteeUserId: ${o}; extra: ${s}`);const r={inviterRoomId:this._mainRoomId,inviterUserId:this._context.getCurrentId(),inviteeRoomId:n,inviteeUserId:o,extra:s||""},a={roomId:this._mainRoomId,invitedRoomId:n,invitedUserId:o,inviteSessionId:this._PKInfo[n].inviteSessionId,inviteInfo:JSON.stringify(r)};i.info(`canceRequestJoinPK -> params: ${JSON.stringify(a)}`);const c=yield this._context.cancelRoomPK(a);return c!==t.ErrorCode.SUCCESS?(i.error(`canceRequestJoinPK failed: ${c}`),{code:c}):(i.info("canceRequestJoinPK success"),delete this._PKInfo[n],{code:e.RCRTCCode.SUCCESS})}))}responseJoinOtherRoom(n,o,s,a){return r(this,void 0,void 0,(function*(){if(!t.validate("inviterRoomId",n,t.notEmptyString,!0)||!t.validate("inviterUserId",o,t.notEmptyString,!0))return{code:e.RCRTCCode.PARAMS_ERROR};if(!this._PKInfo[n])return i.error(`${n} 房间内的 ${o} 未发起过连麦请求`),{code:e.RCRTCCode.PARAMS_ERROR};i.info(`responseRoomPK -> inviterRoomId: ${n}; inviterUserId: ${o}; agree: ${s}; options: ${JSON.stringify(a||{})}`);const{inviteSessionId:r,inviterUserAutoMix:c}=this._PKInfo[n],d=!t.isBoolean(null==a?void 0:a.autoMix)||(null==a?void 0:a.autoMix),u={inviteSessionId:r,inviterRoomId:n,inviterUserId:o,inviterUserAutoMix:c,inviteeRoomId:this._mainRoomId,inviteeUserId:this._context.getCurrentId(),inviteeUserAutoMix:d},l=Object.assign(u,{inviterUserAutoMix:c}),h=s?Object.assign(u,{MultiRoomKey:`${n}|${this._mainRoomId}`,MultiRoomValue:JSON.stringify(l)}):u;!t.isUndefined(null==a?void 0:a.extra)&&Object.assign(h,{extra:a.extra});const p={agree:s,roomId:this._mainRoomId,inviteSessionId:r,inviteRoomId:n,inviteUserId:o,content:JSON.stringify(h),key:`${n}|${this._mainRoomId}`,value:JSON.stringify(u)};i.info(`responseRoomPK -> params: ${JSON.stringify(p)}`);const m=yield this._context.responseRoomPK(p);return m!==t.ErrorCode.SUCCESS?(i.error(`responseRoomPK failed: ${m}`),{code:m}):(i.info("responseRoomPK success"),this._PKInfo[n].inviteeUserAutoMix=d,{code:e.RCRTCCode.SUCCESS})}))}_quitRoomPK(n){return r(this,void 0,void 0,(function*(){const{inviterRoomId:r,inviteeRoomId:o,inviterUserId:s}=this._PKInfo[n],a={inviteeRoomId:o,inviterRoomId:r,userId:this._context.getCurrentId()},c={roomId:this._mainRoomId,endRoomId:n,sessionId:this._PKInfo[n].inviteSessionId,content:JSON.stringify(a),keys:[`${r}|${s}`]};i.info(`quitRoomPK -> params: ${JSON.stringify(c)}`);const d=yield this._context.endRoomPK(c);return d!==t.ErrorCode.SUCCESS?(i.error(`quitRoomPK failed: ${d}`),{code:e.RCRTCCode.SIGNAL_ERROR}):(i.info("quitRoomPK success"),delete this._PKInfo[n],{code:e.RCRTCCode.SUCCESS})}))}_relaseCrtRoom(){}joinOtherRoom(n){return r(this,void 0,void 0,(function*(){if(!t.validate("roomId",n,t.notEmptyString,!0))return{code:e.RCRTCCode.PARAMS_ERROR};if(this._context.getConnectionStatus()!==t.ConnectionStatus.CONNECTED)return{code:e.RCRTCCode.SIGNAL_DISCONNECTED};if(i.info(`JoinPKRoom, roomId: ${n}`),this._joinedPKRooms[n])return{code:e.RCRTCCode.REPERT_JOIN_ROOM};const r=e.RCLivingType.VIDEO,o={extra:`{"roomId": "${this._mainRoomId}"}`},{code:s,data:a}=yield this._context.joinRTCRoom(n,t.RTCMode.LIVE,r,void 0,o);if(s!==t.ErrorCode.SUCCESS)return i.error(`JoinPKRoom failed -> code: ${s}`),{code:s};i.info(`JoinPKRoom success -> userId: ${this._context.getCurrentId()}, roomId: ${n}, data: ${JSON.stringify(a)}`);const c=new qt(this._context,this._runtime,n,a,this._service,this._initOptions,this._relaseCrtRoom.bind(this),r,!1,!1);return this._joinedPKRooms[n]=c,this._onJoinedPKRoom(n,c),{room:c,code:e.RCRTCCode.SUCCESS,userIds:c.getRemoteUserIds(),tracks:c.getRemoteTracks()}}))}leaveOtherRoom(t,n){return r(this,void 0,void 0,(function*(){return c((()=>r(this,void 0,void 0,(function*(){const r=t.getRoomId();return i.info(`leavePKRoom -> userId: ${this._context.getCurrentId()} , roomId: ${r}`),yield t.__destroy(!0),delete this._joinedPKRooms[r],this._onLeavePKRoom(r),this._PKInfo[r]?(n&&this._quitRoomPK(r),{code:e.RCRTCCode.SUCCESS}):{code:e.RCRTCCode.SUCCESS}}))))}))}getPKInfo(e){return this._PKInfo[e]}getAllPKInfo(){return this._PKInfo}getJoinedPKRooms(){return this._joinedPKRooms}}class qt extends wt{constructor(e,r,i,n,o,s,a,c,d=!1,u){var l;if(super(e,r,i,n,t.RTCMode.LIVE,o,s,a,d,u),this._livingType=c,this._isMainRoom=u,this._CDNUris=null,this._CDNEnable=!1,this._mcuConfigBuilder=new Bt(this._onMCUConfigFlush.bind(this),this._isValidResourceId.bind(this),this._sendCDNInfoSignal.bind(this)),this._isMainRoom){const t=((e,t)=>{const r={};return t.forEach((t=>{const i=JSON.parse(t.value),{inviterRoomId:n,inviteeRoomId:o}=i;r[e===n?o:n]=JSON.parse(t.value)})),r})(this._roomId,n.roomInfo);this._roomPKHandler=new Yt(t,e,r,o,s,this,super._registerPKMsgListener.bind(this),this._onJoinedPKRoom.bind(this),this._onLeavePKRoom.bind(this))}const h=null===(l=n.roomInfo.filter((e=>"cdn_uris"===e.key))[0])||void 0===l?void 0:l.value;h&&(this._CDNUris=JSON.parse(h)[0])}_isValidResourceId(t){var r;const{userId:i}=ze(t),n=!!(null===(r=this._roomResources[i])||void 0===r?void 0:r.find((e=>qe(e)===t)));let o=!1;const{code:s,roomPKHandler:a}=this.getRoomPKHandler();if(s!==e.RCRTCCode.SUCCESS||!a)return n;const c=a.getJoinedPKRooms(),d=[];return Object.values(c).map((e=>{d.push(...e.getRemoteTracks())})),o=d.some((e=>t===e.getTrackId())),n||o}getLivingType(){return this._livingType}getMCUConfigBuilder(){return this._isMainRoom?this._mcuConfigBuilder:(i.error("the `getMCUConfigBuilder` is disabled in PK room"),{code:e.RCRTCCode.THE_FUNCTION_IS_DISABLED_IN_PKROOM})}_onMCUConfigFlush(t){return r(this,void 0,void 0,(function*(){const r={"App-Key":this._context.getAppkey(),Token:this._token,RoomId:this.getRoomId(),UserId:this._context.getCurrentId(),SessionId:this.getSessionId()},{code:n,res:o}=yield this._service.setMcuConfig(r,t);return n!==e.RCRTCCode.SUCCESS?(i.error(`set MCU config failed: ${n}`),{code:n}):(i.info("set MCU config success"),o.pull_url&&(this._CDNUris=JSON.parse(o.pull_url)),{code:n,res:o})}))}__onReconnected(){const e=Object.create(null,{__onReconnected:{get:()=>super.__onReconnected}});var t,i;return r(this,void 0,void 0,(function*(){const r=yield e.__onReconnected.call(this,this._livingType);if(!r||!r.data)return;const n=r.data.roomInfo,o=null===(t=n.filter((e=>"cdn_uris"===e.key))[0])||void 0===t?void 0:t.value;if(!o)return;const s=JSON.parse(o);(null===(i=this._CDNUris)||void 0===i?void 0:i.enableInnerCDN)!==s.enableInnerCDN&&this._callAppListener("onCDNEnableChange",s.enableInnerCDN),this._CDNUris=s}))}enableInnerCDN(n){return r(this,void 0,void 0,(function*(){if(!this._isMainRoom)return i.error("the `enableInnerCDN` is disabled in PK room"),{code:e.RCRTCCode.THE_FUNCTION_IS_DISABLED_IN_PKROOM};if(!t.isBoolean(n))return i.error("`enable` is invalid"),{code:e.RCRTCCode.PARAMS_ERROR};this._CDNEnable=n;const o={version:2,output:{inCDNModel:n?Ft.OPEN:Ft.STOP}},{code:s}=yield this._onMCUConfigFlush(o);if(s!==e.RCRTCCode.SUCCESS)return i.error(`enableInnerCDN failed -> code: ${s}`),{code:e.RCRTCCode.SIGNAL_ERROR};if(this._CDNUris&&this._CDNUris.broadcast!==Kt.SPREAD)return i.info("enableInnerCDN succeed"),{code:e.RCRTCCode.SUCCESS};const{code:a}=yield c((()=>r(this,void 0,void 0,(function*(){return this._sendCDNInfoSignal()}))));return a===e.RCRTCCode.SUCCESS?(i.info("enableInnerCDN succeed"),{code:e.RCRTCCode.SUCCESS}):(i.error(`enableInnerCDN failed -> code: ${a}`),{code:a})}))}_sendCDNInfoSignal(){return r(this,void 0,void 0,(function*(){this._CDNUris=Object.assign({},this._CDNUris,{enableInnerCDN:this._CDNEnable});return(yield Promise.all([this._spreadCDNInfo(this._CDNUris),this._setRoomCDNInfo(this._CDNUris)])).every((t=>t.code===e.RCRTCCode.SUCCESS))?{code:e.RCRTCCode.SUCCESS}:{code:e.RCRTCCode.SIGNAL_ERROR}}))}_spreadCDNInfo(n){return r(this,void 0,void 0,(function*(){const r=yield this._context.setRTCCDNUris(this._roomId,lt.TOTAL_CONTENT_RESOURCE,JSON.stringify([n]));return r!==t.ErrorCode.SUCCESS?(i.error(`spreadCDNInfo failed -> code: ${r}`),{code:e.RCRTCCode.SIGNAL_ERROR}):(i.info("spreadCDNInfo succeed"),{code:e.RCRTCCode.SUCCESS})}))}_setRoomCDNInfo(n){return r(this,void 0,void 0,(function*(){const r=yield this._context.setRTCData(this._roomId,"cdn_uris",JSON.stringify([n]),!0,t.RTCApiType.ROOM);return r!==t.ErrorCode.SUCCESS?(i.error(`setRoomCDNInfo failed -> code: ${r}`),{code:e.RCRTCCode.SIGNAL_ERROR}):(i.info("setRoomCDNInfo succeed"),{code:e.RCRTCCode.SUCCESS})}))}_resourceHandle(e,t,i){const n=Object.create(null,{_resourceHandle:{get:()=>super._resourceHandle}});var o;return r(this,void 0,void 0,(function*(){n._resourceHandle.call(this,e,t,i),e.cdn_uris&&((null===(o=this._CDNUris)||void 0===o?void 0:o.enableInnerCDN)!==e.cdn_uris[0].enableInnerCDN&&this._callAppListener("onCDNEnableChange",!this.__getCDNEnable()),this._CDNUris=e.cdn_uris[0])}))}_exchangeHandle(t){var i,n,o;return r(this,void 0,void 0,(function*(){const r=yield this._service.exchange(this._getRTCReqestHeaders(),t),s=null===(n=null===(i=r.data)||void 0===i?void 0:i.urls)||void 0===n?void 0:n.pull_url;return r.code===e.RCRTCCode.SUCCESS&&s?(this._CDNUris=JSON.parse(s),(null===(o=this._CDNUris)||void 0===o?void 0:o.broadcast)===Kt.SPREAD&&(this._CDNEnable=!0,this._sendCDNInfoSignal()),r):r}))}_afterChangedRole(e){const t=ut(e,this._roomId),r=this._context.getCurrentId(),i=Object.keys(t);setTimeout((()=>{var n,o,s;const a=i.filter((e=>e!==r));a.length>0&&this._callAppListener("onUserJoin",a);for(const e in t)e!==r&&this._resourceHandle({uris:t[e]},lt.TOTAL_CONTENT_RESOURCE,e);(null===(n=e.roomInfo.filter((e=>"cdn_uris"===e.key))[0])||void 0===n?void 0:n.value)&&(null===(o=this._CDNUris)||void 0===o?void 0:o.push_mode)===Gt.MANUAL&&this._callAppListener("onCDNEnableChange",null===(s=this._CDNUris)||void 0===s?void 0:s.enableInnerCDN)}))}__getCDNEnable(){var e;return null===(e=this._CDNUris)||void 0===e?void 0:e.enableInnerCDN}__getCDNPushMode(){var e;return null===(e=this._CDNUris)||void 0===e?void 0:e.push_mode}_onJoinedPKRoom(t,r){const{code:i,roomPKHandler:n}=this.getRoomPKHandler();if(i===e.RCRTCCode.SUCCESS&&n){if(!n.getPKInfo(t))return;this._exchangeWithPushOtherRoom()}}_onLeavePKRoom(t){const{code:r,roomPKHandler:i}=this.getRoomPKHandler();if(r===e.RCRTCCode.SUCCESS&&i){if(!i.getPKInfo(t))return;this._exchangeWithPushOtherRoom()}}_exchangeWithPushOtherRoom(){return r(this,void 0,void 0,(function*(){if(!this.getLocalTracks().length)return;const t=yield this._createExchangeParams(this._subscribedList,!1),r=this._getPushOtherRoomsParams();r&&(t.pushOtherRooms=r);const n=yield this._exchangeHandle(t);if(n.code!==e.RCRTCCode.SUCCESS)return i.error(`reTryExchange failed: ${n.code}`),{code:n.code};const{sdp:o,resultCode:s}=n.data;if(s!==e.RCRTCCode.SUCCESS)return i.error(`exchange with pushOtherRoom failed: ${s}`),{code:s};const a=yield this._pc.setRemoteAnswer(o.sdp);return a!==e.RCRTCCode.SUCCESS?{code:a}:void 0}))}getRoomPKHandler(){return this._isMainRoom?{code:e.RCRTCCode.SUCCESS,roomPKHandler:this._roomPKHandler}:(i.error("the `getRoomPKHandler` is disabled in PK room"),{code:e.RCRTCCode.THE_FUNCTION_IS_DISABLED_IN_PKROOM})}_quitAllPKRoom(){const e=this._roomPKHandler.getJoinedPKRooms();for(const t in e){const r=e[t];this._roomPKHandler.leaveOtherRoom(r)}}isMainRoom(){return this._isMainRoom}}class zt extends wt{constructor(e,r,i,n,o,s,a){super(e,r,i,n,t.RTCMode.RTC,o,s,a,!1)}}const Qt=()=>({"Content-Type":"application/json;charset=UTF-8","Cache-Control":"no-cache",ClientType:`web|${ot.browser}|${ot.version}`,ClientVersion:"5.3.2","Client-Session-Id":Wt(),"Request-Id":Date.now().toString()});class Xt{constructor(e,t,r,i=5e3){this._runtime=e,this._context=t,this._msUrl=r,this._timeout=i,this._msInNavi=[],this._failedMs=[],this._rtcFinger=void 0,this._clusterId="",this._configUrl=""}getNaviMS(){return this._msUrl?[this._msUrl]:this._clusterId?[`https://${this._clusterId}`]:(0===this._msInNavi.length&&(0===this._failedMs.length?this._msInNavi.push(...(e=>{var t;if(!e)return[];let r;try{r=JSON.parse(e.voipCallInfo||'{ "strategy": 0 }')}catch(t){return i.warn("parse `voipCallInfo` of navi failed: "+e.voipCallInfo),[]}if(0===r.strategy)return[];const n=null===(t=r.callEngine)||void 0===t?void 0:t.filter((e=>4===e.engineType));if(!n||0===n.length)return[];const o=n[0],s=[];return o.mediaServer&&s.push(o.mediaServer.replace(/^(https?:\/\/)?/,"https://")),o.backupMediaServer&&o.backupMediaServer.forEach((e=>{s.push(e.replace(/^(https?:\/\/)?/,"https://"))})),s})(this._context.getNaviInfo())):(this._msInNavi.push(...this._failedMs),this._failedMs.length=0)),this._msInNavi.map((e=>e.trim())))}_request(n,o,s){return r(this,void 0,void 0,(function*(){const r=this.getNaviMS();if(0===r.length)return{code:e.RCRTCCode.NOT_OPEN_VIDEO_AUDIO_SERVER};this._rtcFinger&&(s.rtcFinger=this._rtcFinger);for(let a=0;a<r.length;a+=1){const c=`${r[a]}${n}`,d=Qt();i.debug(`request -> Request-Id: ${d["Request-Id"]}, url: ${c}`);const{status:u,data:l}=yield this._runtime.httpReq({url:c,body:JSON.stringify(s),headers:Object.assign(Object.assign({},d),o),method:t.HttpMethod.POST,timeout:this._timeout});if(200===u){const t=JSON.parse(l);return t.rtcFinger&&(this._rtcFinger=t.rtcFinger),t.clusterId&&(this._clusterId=t.clusterId),i.debug(`request success -> Request-Id: ${d["Request-Id"]}`),{code:e.RCRTCCode.SUCCESS,data:t}}i.warn(`request failed -> Request-Id: ${d["Request-Id"]}, status: ${u}, url: ${c}`),this._failedMs.push(...this._msInNavi.splice(a,1))}return{code:e.RCRTCCode.REQUEST_FAILED}}))}exchange(t,i){var n;return r(this,void 0,void 0,(function*(){const r=yield this._request("/exchange",t,i);if(r.code===e.RCRTCCode.SUCCESS&&(null===(n=r.data)||void 0===n?void 0:n.resultCode)===e.RCRTCCode.SUCCESS){const e=r.data.urls;e&&(this._configUrl=e.configUrl)}return r}))}exit(e){return r(this,void 0,void 0,(function*(){const{code:t}=yield this._request("/exit",e,{});return t}))}broadcastSubscribe(e,t){return this._request("/broadcast/subscribe",e,t)}broadcastExit(e){return r(this,void 0,void 0,(function*(){const{code:t}=yield this._request("/broadcast/exit",e,{});return{code:t}}))}setMcuConfig(n,o){return r(this,void 0,void 0,(function*(){if(!this._configUrl)return{code:e.RCRTCCode.MCU_SERVER_NOT_FOUND};const r=`${this._configUrl.replace(/^(https?:\/\/)?/,"https://")}/server/mcu/config`,s=Qt();i.debug(`request -> Request-Id: ${s["Request-Id"]}, url: ${r}`);const{status:a,data:c}=yield this._runtime.httpReq({url:r,headers:Object.assign(Object.assign({},s),n),body:JSON.stringify(o),method:t.HttpMethod.POST});if(200===a){i.debug(`request success -> Request-Id: ${s["Request-Id"]}`);const e=JSON.parse(c);return{code:e.resultCode,res:e}}return{code:e.RCRTCCode.REQUEST_FAILED}}))}getCDNResourceInfo(n,o){return r(this,void 0,void 0,(function*(){const r=Qt(),{status:s,data:a}=yield this._runtime.httpReq({url:o,headers:Object.assign(Object.assign({},r),n),method:t.HttpMethod.GET});if(200===s){const e=JSON.parse(a);return{code:e.resultCode,res:e}}return i.warn(`request failed -> Request-Id: ${r["Request-Id"]}, status: ${s}, url: ${o}`),{code:e.RCRTCCode.REQUEST_FAILED}}))}}class Zt{constructor(e,t,r){this._context=e,this._rtcToken="",this._liveUrl="",this._subTracks=[],this._livingType=null,this._mediaType=null,this._subTiny=!1,this._fromRetry=!1,this._appListener=null,this._service=new Xt(t,e,r.mediaServer)}_getReqHeaders(n){return r(this,void 0,void 0,(function*(){const r=this._context.getCurrentId(),o=r;if(!this._rtcToken){const{code:r,data:s}=yield this._context.getRTCToken(o,t.RTCMode.LIVE,n);if(r!==t.ErrorCode.SUCCESS)return i.error(`getRTCToken failed: ${r}`),{code:e.RCRTCCode.SIGNAL_ERROR};this._rtcToken=s.rtcToken}return{code:e.RCRTCCode.SUCCESS,headers:{"App-Key":this._context.getAppkey(),UserId:r,RoomId:o,RoomType:t.RTCMode.LIVE,Token:this._rtcToken}}}))}_clearSubscribeInfo(){var e;this._liveUrl="",this._livingType=null,this._mediaType=null,this._subTiny=!1,this._subTracks.length=0,null===(e=this._pc)||void 0===e||e.destroy(),this._pc=null}_reTryExchange(){var t;return r(this,void 0,void 0,(function*(){this._fromRetry=!0;const{code:r}=yield this.subscribe(this._liveUrl,this._livingType,this._mediaType,this._subTiny);r===e.RCRTCCode.SUCCESS&&(null===(t=this._pc)||void 0===t||t.clearReTryExchangeTimer())}))}subscribe(e,t,i,n=!1){return r(this,void 0,void 0,(function*(){return c((()=>this.__subscribe(e,t,i,n)))}))}__subscribe(n,o,s,a=!1){var c;return r(this,void 0,void 0,(function*(){const r=[];if(dt(this._context.getNaviInfo()))return{code:e.RCRTCCode.PACKAGE_ENVIRONMENT_ERROR,tracks:r};if(!this._fromRetry&&(null===(c=this._pc)||void 0===c||c.clearReTryExchangeTimer()),this._fromRetry=!1,!t.isString(n))return i.error(`liveUrl is invalid: ${n}`),{code:e.RCRTCCode.PARAMS_ERROR,tracks:r};if(![e.RCLivingType.AUDIO,e.RCLivingType.VIDEO].includes(o))return i.error(`livingType is invalid: ${o}`),{code:e.RCRTCCode.PARAMS_ERROR,tracks:r};if(![e.RCMediaType.AUDIO_ONLY,e.RCMediaType.VIDEO_ONLY,e.RCMediaType.AUDIO_VIDEO].includes(s))return i.error(`mediaType is invalid: ${s}`),{code:e.RCRTCCode.PARAMS_ERROR,tracks:r};if(this._liveUrl&&this._liveUrl!==n)return{code:e.RCRTCCode.BROADCAST_SUB_LIST_NOT_EMPTY,tracks:r};this._pc||(this._pc=new Pt(this._reTryExchange.bind(this)),this._pc.on(Pt.__INNER_EVENT_TRACK_READY__,this._onTrackReady,this),this.registerReportListener(this._reportListener)),this._liveUrl=n;const{code:d,headers:u}=yield this._getReqHeaders(o);if(d!==e.RCRTCCode.SUCCESS)return{code:d,tracks:r};const l=`rc_mcu_${Date.now()}`,h="RongCloudRTC";0===this._subTracks.length&&(this._subTracks.push(new Ve(h,l),new He(h,l)),this._pc.updateSubRemoteTracks(this._subTracks.slice()));const p={sdp:yield this._pc.createOffer(!0),liveUrl:n,mediaType:s,simulcast:a?mt.TINY:mt.NORMAL,switchstream:!1},m=yield this._service.broadcastSubscribe(u,p);if(m.code!==e.RCRTCCode.SUCCESS)return i.error(`andience subscribe failed: ${m.code}`),{code:m.code,tracks:r};const _=m.data;if(_.resultCode!==e.RCRTCCode.SUCCESS)return i.error(`andience subscribe failed! code: ${_.resultCode}; message: ${_.message}`),{code:_.resultCode,tracks:r};i.debug(`andience subscribe success: ${n}`),this._livingType=o,this._mediaType=s,this._subTiny=a;const{sdp:R,subscribedList:C}=_,f=[];return C.forEach((e=>{const{mediaType:t}=e,r=this._subTracks[t];f.push(r),r.__innerSetRemoteMuted(!0)})),this._pc.setRemoteAnswer(R.sdp),{code:e.RCRTCCode.SUCCESS,tracks:f}}))}unsubscribe(){return r(this,void 0,void 0,(function*(){return c((()=>this.__unsubscribe()))}))}__unsubscribe(){var t;return r(this,void 0,void 0,(function*(){if(null===(t=this._pc)||void 0===t||t.clearReTryExchangeTimer(),!this._rtcToken||!this._liveUrl)return{code:e.RCRTCCode.SUCCESS};const{headers:r}=yield this._getReqHeaders(),{code:n}=yield this._service.broadcastExit(r);return n!==e.RCRTCCode.SUCCESS?i.error(`broadcast unsubscribe failed: ${n}`):i.debug("broadcast unsubscribe success"),this._clearSubscribeInfo(),{code:n}}))}registerReportListener(e){var t;this._reportListener=e,null===(t=this._pc)||void 0===t||t.registerReportListener(e)}registerTrackEventListener(e){this._appListener=e}_onTrackReady(t){var r,n;const o=t.receiver.track,s="audio"===o.kind?e.RCMediaType.AUDIO_ONLY:e.RCMediaType.VIDEO_ONLY,a=this._subTracks[s];a.__innerSetMediaStreamTrack(o);try{null===(n=null===(r=this._appListener)||void 0===r?void 0:r.onTrackReady)||void 0===n||n.call(r,a)}catch(e){i.error(e)}}}var er,tr;e.RCInnerCDNPullKind=void 0,(er=e.RCInnerCDNPullKind||(e.RCInnerCDNPullKind={})).RTMP="rtmp",er.FLV="flv",er.HLS="hls",e.RCInnerCDNPullIsHttps=void 0,(tr=e.RCInnerCDNPullIsHttps||(e.RCInnerCDNPullIsHttps={}))[tr.NOT_HTTPS=0]="NOT_HTTPS",tr[tr.HTTPS=1]="HTTPS";const rr=Object.assign(Object.assign({},tt(e.RCResolution.W176_H144)),{frameRate:nt(e.RCFrameRate.FPS_15)});class ir{constructor(t,r,n,o,s,a){this._context=t,this._runtime=r,this._initOptions=n,this._roomId=o,this._joinResData=s,this._livingType=a,this._roomAnchorList=[],this._roomRes={},this._roomAnchorRes={},this._remoteTracks={},this._appListener=null,this._subscribedList=[],this._sessionId="",this._destroyed=!1,this._setInitData(),this._service=new Xt(this._runtime,this._context,this._initOptions.mediaServer,this._initOptions.timeout),this._polarisReport=new Mt(this._context,this._runtime,this._roomId,this,Lt.Audience),this._polarisReport.sendR1(),this._pc=new Pt(this._reTryExchange.bind(this),this._polarisReport),this._pc.on(Pt.__INNER_EVENT_TRACK_READY__,(t=>{const r=t.streams[0].id,n=t.receiver.track,o=[r,"audio"===n.kind?e.RCMediaType.AUDIO_ONLY:e.RCMediaType.VIDEO_ONLY].join("_"),s=this._remoteTracks[o];s?(s.__innerSetMediaStreamTrack(n),this._callAppListener("onTrackReady",s)):i.warn("cannot found RCRemoteTrack:",n.id)})),this._context.onrtcdatachange=this.singalDataChange.bind(this)}_setInitData(){const{sessionId:t,remoteUserIds:r,remoteRTCUris:i,remoteMUCUris:n,remoteTracks:o,CDNUris:s}=((t,r)=>{const i=r.filter((e=>"RC_RTC_SESSIONID"===e.key))[0],n=i?i.value:"",o=r.filter((e=>"RC_ANCHOR_LIST"===e.key)).map((e=>JSON.parse(e.value||"[]")))[0],s=r.filter((e=>e.key.includes("RC_RES_"))).map((e=>JSON.parse(e.value||"{}"))),a=s.length?JSON.parse(s[0].mcu_uris||"[]"):[],c=[];a.forEach((r=>{const{mediaType:i,tag:n}=r,o=i===e.RCMediaType.AUDIO_ONLY?new Ve(n,"",t):new He(n,"",t);c.push(o)}));const d=[],u=[];s.forEach((t=>{const r=JSON.parse(t.uris||"[]");d.push(...r),r.forEach((t=>{const{mediaType:r,tag:i,msid:n}=t,o=n.split("_")[0],s=r===e.RCMediaType.AUDIO_ONLY?new Ve(i,o):new He(i,o);u.push(s)}))}));const l=r.filter((e=>"RC_CDN"===e.key)).map((e=>{const t=JSON.parse(e.value||"[]");return JSON.parse(t.cdn_uris)[0]}))[0];return{sessionId:n,remoteUserIds:o||[],remoteRTCUris:d,remoteMUCUris:a,remoteRTCTracks:u,remoteMCUTracks:c,remoteTracks:[...u,...c],CDNUris:l||{}}})(this._roomId,this._joinResData.kvEntries);this._sessionId=t,this._roomAnchorList=r,o.forEach((e=>{this._remoteTracks[e.getTrackId()]=e})),this._CDNUris=s,i.forEach((e=>{const t=e.msid.split("_")[0];this._roomAnchorRes[t]?this._roomAnchorRes[t].push(e):this._roomAnchorRes[t]=[e]})),n.forEach((e=>{const{mediaType:t,tag:r}=e,i=[this._roomId,r,t].join("_");this._roomRes[i]=e})),i.forEach((e=>{const t=qe(e);this._roomRes[t]=e}))}_assertRoomDestroyed(){if(this._destroyed){const t="This room has been destroyed. Please use `RCRTCClient.joinLivingRoomAsAudience` to catch another instance.";return i.warn(t),e.RCRTCCode.ROOM_HAS_BEEN_DESTROYED}}singalDataChange(e,t){var r;if(t!==this._roomId)return void i.warn(`singalDataChange -> not the current room data: data roomId: ${t}, current roomId: ${this._roomId}`);i.debug("singalDataChange -> singalData:",JSON.stringify(e||{}));const n=[],o=null===(r=e.filter((e=>"RC_CDN"===e.key))[0])||void 0===r?void 0:r.value;o&&this._diffCDNUris(JSON.parse(JSON.parse(o).cdn_uris)[0]),e.forEach((e=>{const{key:t,value:r,timestamp:i,uid:o}=e;if(-1!==t.indexOf("RC_RES_")){const e=JSON.parse(r||"{}"),t=JSON.parse(e.mcu_uris||"[]"),i=JSON.parse(e.uris||"[]");return n.push(...t),void this._diffAnchorResource(i,o)}if("RC_ANCHOR_LIST"===t){const e=JSON.parse(r||"[]"),{joinUserIds:t,leftUserIds:i}=this._diffAnchorList(e);t.length>0&&this._handleNewJoinedAnchor(t),i.length>0&&this._handleLeftedAnchor(i)}})),this._diffRoomResource(n)}_diffAnchorList(e){const t=e.filter((e=>this._roomAnchorList.indexOf(e)<0));return{leftUserIds:this._roomAnchorList.filter((t=>e.indexOf(t)<0)),joinUserIds:t}}_handleNewJoinedAnchor(e){this._roomAnchorList.push(...e),this._callAppListener("onAnchorJoin",e)}_handleLeftedAnchor(e){return r(this,void 0,void 0,(function*(){this._roomAnchorList=this._roomAnchorList.filter((t=>!(e.indexOf(t)>-1)));const t=[];e.forEach((e=>{t.push(...this.getRemoteTracksByUserId(e)),delete this._roomAnchorRes[e]})),t.length&&(yield this.unsubscribe(t),t.forEach((e=>delete this._remoteTracks[e.getTrackId()]))),this._callAppListener("onAnchorLeave",e)}))}_diffRoomResource(t){return r(this,void 0,void 0,(function*(){const r=[],i=[],n=[];t.forEach((t=>{const i=qe(t),{userId:o,tag:s,mediaType:a}=ze(i),c=[this._roomId,s,a].join("_");if(!this._remoteTracks[c]){const i=a===e.RCMediaType.AUDIO_ONLY?new Ve(s,"",this._roomId):new He(s,"",this._roomId);r.push(i),this._remoteTracks[c]=i,this._roomRes[i.getTrackId()]=t}n.push(c)})),Object.keys(this._remoteTracks).forEach((e=>{n.indexOf(e)<0&&this._remoteTracks[e].isMCUTrack()&&i.push(this._remoteTracks[e])})),r.length>0&&this._callAppListener("onTrackPublish",r),i.length>0&&this._onUserUnpublish(i,"onTrackUnpublish")}))}_diffAnchorResource(t,n){return r(this,void 0,void 0,(function*(){const r=this._roomAnchorRes[n]||(this._roomAnchorRes[n]=[]),{publishedList:o,unpublishedList:s,modifiedList:a}=Ze(r,t);if(o.length){const t=r.map(qe),n=[],s=[];if(o.forEach((i=>{const o=qe(i),a=t.indexOf(o),{userId:c,tag:d,mediaType:u}=ze(o);a>-1?r[a]=i:r.push(i);let l=this._remoteTracks[o];this._roomRes[o]=i,l?l.isSubscribed()&&n.push(l):(l=u===e.RCMediaType.AUDIO_ONLY?new Ve(d,c):new He(d,c),this._remoteTracks[o]=l,s.push(l)),l.__innerSetRemoteMuted(0===i.state)})),n.length){const t=n.map((e=>e.getTrackId()));i.debug(`resub tracks -> ${JSON.stringify(t)}`);const{code:r}=yield c((()=>this._subscribeHandle(n,!0)));r!==e.RCRTCCode.SUCCESS&&i.error(`resub tracks failed -> code: ${r}, ids: ${JSON.stringify(t)}`)}this._callAppListener("onAnchorTrackPublish",s)}if(s.length){const e=s.map(qe);for(let t=r.length-1;t>=0;t-=1){const i=r[t];e.includes(qe(i))&&r.splice(t,1)}const t=s.map((e=>{const t=qe(e);return this._remoteTracks[t]}));yield this._onUserUnpublish(t,"onAnchorTrackUnpublish")}if(a.length){const e=r.map(qe);for(let t=0;t<a.length;t++){const i=a[t],n=qe(i),o=e.indexOf(n);r[o].state=i.state;const s=this._remoteTracks[n];s.__innerSetRemoteMuted(0===i.state),s.isAudioTrack()?this._callAppListener("onAudioMuteChange",s):this._callAppListener("onVideoMuteChange",s)}}}))}_onUserUnpublish(e,t){return r(this,void 0,void 0,(function*(){yield this.unsubscribe(e),e.forEach((e=>{this._subscribedList=this._subscribedList.filter((t=>t.track.getTrackId()!==e.getTrackId())),delete this._roomRes[e.getTrackId()],e.__innerDestroy(),delete this._remoteTracks[e.getTrackId()]})),this._callAppListener(t,e)}))}_callAppListener(e,...t){var r;const n=null===(r=this._appListener)||void 0===r?void 0:r[e];if(n)try{n(...t)}catch(e){i.error(e)}}_reTryExchange(){return r(this,void 0,void 0,(function*(){c((()=>r(this,void 0,void 0,(function*(){var t;const{reqBody:r}=yield this._createSubscribeParams(this._subscribedList,{},!0),n=yield this._exchangeHandle(r);if(n.code!==e.RCRTCCode.SUCCESS)return i.error(`reTryExchange failed: ${n.code}`),{code:n.code};const{sdp:o,resultCode:s}=n.data;if(s!==e.RCRTCCode.SUCCESS)return i.error(`reTryExchange failed: ${s}`),{code:s};this._pc.clearReTryExchangeTimer();const a=this._subscribedList.filter((e=>e.track.isMCUTrack()));if(a.length>0){const e=a[0].track.getTrackId(),r=null===(t=this._roomRes[e])||void 0===t?void 0:t.msid,i=[this._roomId,"RongCloudRTC"].join("_");o.sdp=o.sdp.replace(new RegExp(r,"g"),i)}const c=yield this._pc.setRemoteAnswer(o.sdp);return c!==e.RCRTCCode.SUCCESS?{code:c}:void 0}))))}))}_createSubscribeParams(e,t,i){return r(this,void 0,void 0,(function*(){const r=yield this._pc.createOffer(i),n={resolutionInfo:[]},o={min:0,max:0};Object.keys(t).forEach((e=>{const{mediaStream:i,tinyStream:s}=t[e];[i,s].forEach(((t,i)=>{var s;const a=1===i?[e,"tiny"].join("_"):e;r.sdp=null===(s=r.sdp)||void 0===s?void 0:s.replace(new RegExp(t.id,"g"),a);const c=t.getVideoTracks()[0];if(!c)return;const d=0===i,{width:u,height:l,frameRate:h}=d?We(c):rr;n.resolutionInfo.push({trackId:c.id,simulcast:d?mt.NORMAL:mt.TINY,resolution:`${u}x${l}`});const p=ye(u,l),m=be(h);o.min+=p.minBitrate*m,o.max+=p.maxBitrate*m}))}));return{reqBody:{sdp:r,switchstream:!1,newVersionFlag:!0,subscribeList:e.map((e=>({simulcast:e.subTiny?mt.TINY:mt.NORMAL,resolution:"",uri:this._roomRes[e.track.getTrackId()].uri})))},dynamicBitrate:o,offer:r}}))}_subscribeHandle(i,n=!1){var o;return r(this,void 0,void 0,(function*(){if(this._assertRoomDestroyed())return{code:e.RCRTCCode.ROOM_HAS_BEEN_DESTROYED};if(!t.validate("tracks",i,(()=>t.isArray(i)&&i.length>0&&i.every((e=>e instanceof je||e.track instanceof je))),!0))return{code:e.RCRTCCode.PARAMS_ERROR};const r=this._subscribedList.map((e=>Object.assign({},e))),s=i.map((e=>e instanceof je?{track:e}:e));let a=!1;const c=[];return s.forEach((e=>{const t=e.track.getTrackId();c.push(t);const i=r.find((e=>e.track.getTrackId()===t));i&&i.subTiny===e.subTiny||(i?i.subTiny=e.subTiny:r.push(e),a=!0)})),a||n?(null===(o=this._polarisReport)||void 0===o||o.sendR2(Nt.SUBSCRIBE,At.BEGIN,c),this._updateSubListHandle(r,!0)):{code:e.RCRTCCode.SUCCESS}}))}_getReqHeaders(){const e=this._context.getCurrentId();return{"App-Key":this._context.getAppkey(),RoomId:e,Token:this._joinResData.token,RoomType:t.RTCMode.LIVE,UserId:e,"Session-Id":this._sessionId}}_exchangeHandle(e){return this._service.broadcastSubscribe(this._getReqHeaders(),e)}_updateSubListHandle(n,o=!1){var s;return r(this,void 0,void 0,(function*(){if(this._assertRoomDestroyed())return{code:e.RCRTCCode.ROOM_HAS_BEEN_DESTROYED};if(!t.validate("resources",n,(()=>t.isArray(n)&&n.every((e=>e instanceof je||e.track instanceof je))),!0))return{code:e.RCRTCCode.PARAMS_ERROR};let r=n.map((e=>e instanceof je?{track:e}:Object.assign({},e)));const a={};r=r.filter((e=>{const t=e.track.getTrackId();return!a[t]&&(a[t]=!0)})).map((e=>Object.assign({},e)));const c=this._subscribedList.map((e=>Object.assign({},e)));if(!o){let t=!1;if(r.forEach((e=>{const r=c.findIndex((t=>t.track===e.track));if(-1===r)return void(t=!0);c.splice(r,1)[0].subTiny!==e.subTiny&&(t=!0)})),c.length&&(t=!0),!t)return{code:e.RCRTCCode.SUCCESS}}this._pc.clearReTryExchangeTimer(),this._pc.updateSubRemoteTracks(r.map((e=>e.track)));const{reqBody:d}=yield this._createSubscribeParams(r,{},!1),u=yield this._exchangeHandle(d);if(c.length){const e=[];c.forEach((t=>{e.push(t.track.getTrackId())})),null===(s=this._pc.reportParser)||void 0===s||s.clearLatestPacketsRecv(e)}if(u.code!==e.RCRTCCode.SUCCESS)return{code:u.code};const{sdp:l,resultCode:h,message:p,subscribedList:m}=u.data;if(h!==e.RCRTCCode.SUCCESS)return i.error("change subscribe list failed:",p,h),{code:h};r.forEach((e=>{const{track:t}=e;if(t.isMCUTrack()){const e=this._roomRes[t.getTrackId()].msid,{tag:r,userId:i}=ze(t.getTrackId()),n=[i,r].join("_");l.sdp=l.sdp.replace(new RegExp(e,"g"),n)}}));const _=yield this._pc.setRemoteAnswer(l.sdp);if(_!==e.RCRTCCode.SUCCESS)return{code:_};const R=null==m?void 0:m.map((e=>`${e.msid}_${e.mediaType}`)),C=r.filter((e=>{if(e.track.isMCUTrack()){const t=this._roomRes[e.track.getTrackId()],r=`${t.msid}_${t.mediaType}`;return R.includes(r)}return null==R?void 0:R.includes(e.track.getTrackId())})),f=null==C?void 0:C.map((e=>`${e.track.getTrackId()}`)),v=r.filter((e=>!(null==f?void 0:f.includes(e.track.getTrackId()))));for(const e in this._remoteTracks){const t=C.some((t=>t.track.getTrackId()===e));this._remoteTracks[e].__innerSetSubscribed(t)}return this._subscribedList.splice(0,this._subscribedList.length,...C),v.length?{code:e.RCRTCCode.SUCCESS,failedList:v}:{code:e.RCRTCCode.SUCCESS}}))}_diffCDNUris(e){return r(this,void 0,void 0,(function*(){if(this._CDNUris.url&&!e.url)return this._callAppListener("onCDNInfoDisable"),void(this._CDNUris=e);(!this._CDNUris||!this._CDNUris.url&&e.url)&&this._callAppListener("onCDNInfoEnable",{resolution:`W${e.w}_H${e.h}`,fps:`FPS_${e.fps}`});const t=this._CDNUris.w&&e.w&&this._CDNUris.w!==e.w,r=this._CDNUris.h&&e.h&&this._CDNUris.h!==e.h,i=this._CDNUris.fps&&e.fps&&this._CDNUris.fps!==e.fps;(t||r||i)&&this._callAppListener("onCDNInfoChange",{resolution:`W${e.w}_H${e.h}`,fps:`FPS_${e.fps}`}),this._CDNUris=e}))}_getCDNPlayUrl(t){return r(this,void 0,void 0,(function*(){const{w:r,h:n,fps:o}=t,s=this._initOptions.pullInnerCDNProtocol||e.RCInnerCDNPullKind.FLV,a=this._initOptions.pullInnerCDNUseHttps===e.RCInnerCDNPullIsHttps.NOT_HTTPS?e.RCInnerCDNPullIsHttps.NOT_HTTPS:e.RCInnerCDNPullIsHttps.HTTPS;if(!this._CDNUris.url)return i.error(`cdn_uris url is empty, the anchor need to open or push CDN, code: ${e.RCRTCCode.CDN_RESOURCE_IS_EMPTY}`),{code:e.RCRTCCode.CDN_RESOURCE_IS_EMPTY};const c={"App-Key":this._context.getAppkey(),Token:this._joinResData.token,RoomId:this.getRoomId(),UserId:this._context.getCurrentId(),SessionId:this.getSessionId()},d=[];r&&d.push(`w=${r}`),n&&d.push(`h=${n}`),o&&d.push(`fps=${o}`),d.push(`kind=${s}`),d.push(`is_https=${a}`);const u=d.join("&");let l=`${this._CDNUris.url}?`;u&&(l+=u);const{code:h,res:p}=yield this._service.getCDNResourceInfo(c,l);return h!==e.RCRTCCode.SUCCESS?(i.error(`getCDNPlayUrl failed: ${h}`),{code:h}):(i.info(`getCDNPlayUrl success: ${null==p?void 0:p.data.pull_url}`),{code:h,CDNPlayUrl:null==p?void 0:p.data.pull_url})}))}getCDNPlayUrl(t,n){return r(this,void 0,void 0,(function*(){if(t&&!rt(t))return i.error("`resolution` is invalid"),{code:e.RCRTCCode.PARAMS_ERROR};if(n&&!it(n))return i.error("`fps` is invalid"),{code:e.RCRTCCode.PARAMS_ERROR};const{width:r,height:o}=t?tt(t):{width:null,height:null},s=n?nt(n):null,a={};return r&&(a.w=r),o&&(a.h=o),s&&(a.fps=s),this._getCDNPlayUrl(a)}))}subscribe(e){return r(this,void 0,void 0,(function*(){return c((()=>this._subscribeHandle(e,!1)))}))}__unsubscribe(n){var o;return r(this,void 0,void 0,(function*(){if(!t.validate("tracks",n,(()=>t.isArray(n)&&n.length>0&&n.every((e=>e instanceof je))),!0))return i.error(`unsubscribe failed, tracks is invalid -> roomId: ${this._roomId}`),{code:e.RCRTCCode.PARAMS_ERROR};const r=this._subscribedList.map((e=>Object.assign({},e))).filter((e=>!n.includes(e.track)));return null===(o=this._polarisReport)||void 0===o||o.sendR2(Nt.SUBSCRIBE,At.END,n.map((e=>e.getTrackId()))),this._updateSubListHandle(r,!1)}))}unsubscribe(e){return r(this,void 0,void 0,(function*(){return c((()=>this.__unsubscribe(e)))}))}__destroy(e){var t;return r(this,void 0,void 0,(function*(){this._destroyed||(this._destroyed=!0,null===(t=this._audioLevelReport)||void 0===t||t.clearAudioLevelReportTimer(),e&&(yield this._context.quitLivingRoomAsAudience(this._roomId)),yield this._service.broadcastExit(this._getReqHeaders()),this._pc.destroy(),this._polarisReport=null,this._context.onrtcdatachange=()=>{})}))}getRemoteTrack(e){return this._remoteTracks[e]}__getPC(){return this._pc}getLocalTrack(e){return{}}__onReconnected(){return r(this,void 0,void 0,(function*(){const{code:e}=yield this._context.joinLivingRoomAsAudience(this._roomId,t.RTCMode.LIVE);e!==t.ErrorCode.SUCCESS&&i.error("join living room error when on reconnected")}))}registerRoomEventListener(e){this._appListener=e}onAudioLevelChange(e,t){var r;null===(r=this._audioLevelReport)||void 0===r||r.clearAudioLevelReportTimer(),this._audioLevelReport=new xt(this),this._audioLevelReport.onAudioLevelChange(e,t||1e3)}registerReportListener(e){var t;null===(t=this._pc)||void 0===t||t.registerReportListener(e)}getRoomId(){return this._roomId}getCrtUserId(){return this._context.getCurrentId()}getSessionId(){return this._sessionId}getRemoteUserIds(){return this._roomAnchorList}getRemoteTracksByUserId(e){const t=[];for(const r in this._remoteTracks){const i=this._remoteTracks[r];i.getUserId()===e&&t.push(i)}return t}getRemoteTracks(){const e=[],t=[];for(const e in this._remoteTracks){if(2===t.length)break;const r=this._remoteTracks[e];r.isMCUTrack()&&t.push(r)}return this._roomAnchorList.forEach((t=>{e.push(...this.getRemoteTracksByUserId(t))})),[...t,...e]}getRemoteRTCTracks(){const e=[];for(const t in this._remoteTracks){const r=this._remoteTracks[t];r.isMCUTrack()||e.push(r)}return e}getRemoteMCUTracks(){const e=[];for(const t in this._remoteTracks){const r=this._remoteTracks[t];r.isMCUTrack()&&e.push(r)}return e}getCDNInfo(){return this._CDNUris.w?{resolution:`W${this._CDNUris.w}_H${this._CDNUris.h}`,fps:`FPS_${this._CDNUris.fps}`,CDNEnable:this._CDNUris.enableInnerCDN}:{CDNEnable:!1}}}const nr=(e,t)=>{const r=[];return r[0]=(null==t?void 0:t.withoutAudio)?void 0:e.getAudioTracks()[0],r[1]=(null==t?void 0:t.withoutVideo)?void 0:e.getVideoTracks()[0],r};class or{constructor(e,t,r){this._context=e,this._runtime=t,this._options=r,this._crtRoom=null,this._audience=null,this._crtAudienceLivingRoom=null,yt.setSdpSemantics(r.sdpSemantics||"plan-b"),this._service=new Xt(this._runtime,this._context,this._options.mediaServer,this._options.timeout),this._context.onconnectionstatechange=this._onIMStatusChange.bind(this),this._context.ondisconnect=this._onIMDisconnect.bind(this),this._context.ondestroy=this._onIMUninit.bind(this),this._context.onmessage=this._handleMessage.bind(this)}_handleMessage(e){var r;if(e.conversationType!==t.ConversationType.RTC_ROOM)return!1;if(this._crtRoom instanceof qt){this._getJoinedPKRoomList().forEach((t=>{t.__parseInnerMessage(e)}))}return null===(r=this._crtRoom)||void 0===r||r.__parseInnerMessage(e),!0}_getJoinedPKRoomList(){const{code:t,roomPKHandler:r}=this._crtRoom.getRoomPKHandler();if(t===e.RCRTCCode.SUCCESS&&r){const e=r.getJoinedPKRooms()||{};return Object.values(e)}return[]}_getPKRoomIds(){const{code:t,roomPKHandler:r}=this._crtRoom.getRoomPKHandler();if(t===e.RCRTCCode.SUCCESS&&r){const e=r.getAllPKInfo();return Object.keys(e)}return[]}getCurrentId(){return this._context.getCurrentId()}joinRTCRoom(e,t,r){return c((()=>this._joinRTCRoom(e,t,r)))}_joinRTCRoom(n,s,a){return r(this,void 0,void 0,(function*(){if(dt(this._context.getNaviInfo()))return{code:e.RCRTCCode.PACKAGE_ENVIRONMENT_ERROR};if(!t.validate("roomId",n,t.notEmptyString,!0))return{code:e.RCRTCCode.PARAMS_ERROR};if(!t.validate("outerUserDatas",a,t.isObject,!1))return{code:e.RCRTCCode.PARAMS_ERROR};if(a){if(!Object.keys(a).every((e=>t.validate(`outerUserDatas.${e}`,a[e],t.isString,!0))))return{code:e.RCRTCCode.PARAMS_ERROR}}if(this._crtRoom)return{code:e.RCRTCCode.REPERT_JOIN_ROOM};if(this._context.getConnectionStatus()!==t.ConnectionStatus.CONNECTED)return{code:e.RCRTCCode.SIGNAL_DISCONNECTED};if(!this._service.getNaviMS().length)return{code:e.RCRTCCode.NOT_OPEN_VIDEO_AUDIO_SERVER};i.debug(`joinRoom -> roomId: ${n}; joinType: ${s||t.RTCJoinType.KICK}`);const{code:r,data:c}=yield this._context.joinRTCRoom(n,t.RTCMode.RTC,void 0,s,void 0,a);if(r!==t.ErrorCode.SUCCESS){i.error(`joinRoom failed -> code: ${r}`);return{code:r===o.JOIN_REFUSED?e.RCRTCCode.SIGNAL_JOIN_RTC_ROOM_REFUSED:r}}i.debug(`joinRoom success -> userId: ${this._context.getCurrentId()}, roomId: ${n}, data: ${JSON.stringify(c)}`);const d=new zt(this._context,this._runtime,n,c,this._service,this._options,this._releaseCrtRoomObj.bind(this));return this._crtRoom=d,{room:d,code:e.RCRTCCode.SUCCESS,userIds:d.getRemoteUserIds(),tracks:d.getRemoteTracks()}}))}joinLivingRoom(e,t,r,i){return c((()=>this._joinLivingRoom(e,t,r,i)))}_joinLivingRoom(n,o,s,a){return r(this,void 0,void 0,(function*(){if(dt(this._context.getNaviInfo()))return{code:e.RCRTCCode.PACKAGE_ENVIRONMENT_ERROR};if(!t.validate("roomId",n,t.notEmptyString,!0)||!t.validate("livingType",o,(t=>t===e.RCLivingType.AUDIO||t===e.RCLivingType.VIDEO)))return{code:e.RCRTCCode.PARAMS_ERROR};if(!t.validate("outerUserDatas",a,t.isObject,!1))return{code:e.RCRTCCode.PARAMS_ERROR};if(a){if(!Object.keys(a).every((e=>t.validate(`outerUserDatas.${e}`,a[e],t.isString,!0))))return{code:e.RCRTCCode.PARAMS_ERROR}}if(this._crtRoom)return{code:e.RCRTCCode.REPERT_JOIN_ROOM};if(this._context.getConnectionStatus()!==t.ConnectionStatus.CONNECTED)return{code:e.RCRTCCode.SIGNAL_DISCONNECTED};if(!this._service.getNaviMS().length)return{code:e.RCRTCCode.NOT_OPEN_VIDEO_AUDIO_SERVER};i.debug(`joinRoom, roomId: ${n}`);const{code:r,data:c}=yield this._context.joinRTCRoom(n,t.RTCMode.LIVE,o,s,void 0,a);if(r!==t.ErrorCode.SUCCESS)return i.error(`joinRoom failed -> code: ${r}`),{code:r};i.debug(`JoinRoom success -> userId: ${this._context.getCurrentId()}, roomId: ${n}, data: ${JSON.stringify(c)}`);const d=new qt(this._context,this._runtime,n,c,this._service,this._options,this._releaseCrtRoomObj.bind(this),o,!1,!0);this._crtRoom=d;const u={room:d,code:e.RCRTCCode.SUCCESS,userIds:d.getRemoteUserIds(),tracks:d.getRemoteTracks(),PKRoomIds:this._getPKRoomIds()};return d.__getCDNPushMode()===Gt.MANUAL&&Object.assign(u,{CDNEnable:d.__getCDNEnable()}),u}))}getAudienceClient(){return this._audience||(this._audience=new Zt(this._context,this._runtime,this._options)),this._audience}_onIMStatusChange(e){if(i.debug(`signal server connection state change: ${e}`),e===t.ConnectionStatus.CONNECTED){if(this._crtRoom instanceof qt){this._getJoinedPKRoomList().forEach((e=>{e.__onReconnected()}))}this._crtRoom&&this._crtRoom.__onReconnected()}}_onIMDisconnect(){i.debug("TODO -> on IM disconnect")}_onIMUninit(){i.debug("TODO -> on IM client ondestroy")}leaveRoom(e){return c((()=>this._leaveRoom(e)))}_leaveRoom(t){return r(this,void 0,void 0,(function*(){return this._crtRoom?(yield this._crtRoom.__destroy(!0),i.debug(`quitRTCRoom -> userId: ${this._context.getCurrentId()} , roomId: ${this._crtRoom.getRoomId()}`),this._crtRoom=null,{code:e.RCRTCCode.SUCCESS}):{code:e.RCRTCCode.SUCCESS}}))}_releaseCrtRoomObj(){this._crtRoom=null}_getMediaStream(t,n="getUserMedia"){return r(this,void 0,void 0,(function*(){try{const r=yield navigator.mediaDevices[n](t);return{code:e.RCRTCCode.SUCCESS,stream:r}}catch(t){if("Permission denied"===t.message)return{code:e.RCRTCCode.PERMISSION_DENIED};i.error(`get user media failed -> ${t.message}`)}return{code:"getUserMedia"===n?e.RCRTCCode.GET_USER_MEDIA_FAILED:e.RCRTCCode.GET_DISPLAY_MEDIA_FAILED}}))}createMicrophoneAudioTrack(t="RongCloudRTC",i){return r(this,void 0,void 0,(function*(){if(!Ke(t))return{code:e.RCRTCCode.INVALID_TAGS};const r=this._context.getCurrentId();if(!r)return{code:e.RCRTCCode.INVALID_USER_ID};const{stream:n,code:o}=yield this._getMediaStream({audio:{deviceId:null==i?void 0:i.micphoneId,sampleRate:null==i?void 0:i.sampleRate}});if(o!==e.RCRTCCode.SUCCESS)return{code:o};const s=n.getAudioTracks()[0];return{code:o,track:new Ue(t,r,s)}}))}createCameraVideoTrack(t="RongCloudRTC",i){return r(this,void 0,void 0,(function*(){if(!Ke(t))return{code:e.RCRTCCode.INVALID_TAGS};const r=this._context.getCurrentId();if(!r)return{code:e.RCRTCCode.INVALID_USER_ID};const n=rt(null==i?void 0:i.resolution)?i.resolution:e.RCResolution.W640_H480,{width:o,height:s}=tt(n),{stream:a,code:c}=yield this._getMediaStream({video:{deviceId:null==i?void 0:i.cameraId,frameRate:nt((null==i?void 0:i.frameRate)||e.RCFrameRate.FPS_15),width:o,height:s,facingMode:null==i?void 0:i.faceMode}});if(c!==e.RCRTCCode.SUCCESS)return{code:c};const d=a.getVideoTracks()[0];return{code:c,track:new we(t,r,d)}}))}createMicrophoneAndCameraTracks(t="RongCloudRTC",i){var n,o,s,a,c,d;return r(this,void 0,void 0,(function*(){const r=[];if(!Ke(t))return{code:e.RCRTCCode.INVALID_TAGS,tracks:r};const u=this._context.getCurrentId();if(!u)return{code:e.RCRTCCode.INVALID_USER_ID,tracks:r};const l=rt(null===(n=null==i?void 0:i.video)||void 0===n?void 0:n.resolution)?i.video.resolution:e.RCResolution.W640_H480,{width:h,height:p}=tt(l),{stream:m,code:_}=yield this._getMediaStream({video:{deviceId:null===(o=null==i?void 0:i.video)||void 0===o?void 0:o.cameraId,frameRate:nt((null===(s=null==i?void 0:i.video)||void 0===s?void 0:s.frameRate)||e.RCFrameRate.FPS_15),width:h,height:p,facingMode:null===(a=null==i?void 0:i.video)||void 0===a?void 0:a.faceMode},audio:{deviceId:null===(c=null==i?void 0:i.audio)||void 0===c?void 0:c.micphoneId,sampleRate:null===(d=null==i?void 0:i.audio)||void 0===d?void 0:d.sampleRate}});return _!==e.RCRTCCode.SUCCESS||m.getTracks().forEach((e=>{"video"===e.kind?r.push(new we(t,u,e)):r.unshift(new Ue(t,u,e))})),{code:_,tracks:r}}))}createScreenVideoTrack(t="screenshare",i){return r(this,void 0,void 0,(function*(){if(!Ke(t))return{code:e.RCRTCCode.INVALID_TAGS};const r=this._context.getCurrentId();if(!r)return{code:e.RCRTCCode.INVALID_USER_ID};if(!at())return{code:e.RCRTCCode.BROWSER_NOT_SUPPORT};const n=/Electron/.test(navigator.userAgent);if(n&&!(null==i?void 0:i.chromeMediaSourceId))return{code:e.RCRTCCode.PARAMS_ERROR};const o=rt(null==i?void 0:i.resolution)?i.resolution:e.RCResolution.W1280_H720,{width:s,height:a}=tt(o),c=n?{mandatory:{chromeMediaSourceId:i.chromeMediaSourceId,chromeMediaSource:"desktop",minWidth:s,maxWidth:s,minHeight:a,maxHeight:a}}:{frameRate:nt((null==i?void 0:i.frameRate)||e.RCFrameRate.FPS_15),width:s,height:a},{stream:d,code:u}=yield this._getMediaStream({video:c,audio:!1},n?"getUserMedia":"getDisplayMedia");if(u!==e.RCRTCCode.SUCCESS)return{code:u};const l=d.getVideoTracks()[0];return{code:u,track:new $e(t,r,l)}}))}createLocalAudioTrack(t,i){return r(this,void 0,void 0,(function*(){if(!Ke(t))return{code:e.RCRTCCode.INVALID_TAGS};if(!i||"[object MediaStreamTrack]"!==i.toString()||"audio"!==i.kind)return{code:e.RCRTCCode.CREATE_CUSTOM_TRACK_FAILED};const r=this._context.getCurrentId();return r?{code:e.RCRTCCode.SUCCESS,track:new Ne(t,r,i)}:{code:e.RCRTCCode.INVALID_USER_ID}}))}createLocalVideoTrack(t,i){return r(this,void 0,void 0,(function*(){if(!Ke(t))return{code:e.RCRTCCode.INVALID_TAGS};if(!i||"[object MediaStreamTrack]"!==i.toString()||"video"!==i.kind)return{code:e.RCRTCCode.CREATE_CUSTOM_TRACK_FAILED};const r=this._context.getCurrentId();return r?{code:e.RCRTCCode.SUCCESS,track:new Ae(t,r,i)}:{code:e.RCRTCCode.INVALID_USER_ID}}))}createLocalFileTracks(n,o,s){return r(this,void 0,void 0,(function*(){if(!Ke(n))return{code:e.RCRTCCode.INVALID_TAGS,tracks:[]};if(!st())return{code:e.RCRTCCode.BROWSER_NOT_SUPPORT,tracks:[]};const r=o instanceof File?URL.createObjectURL(o):o;if(!t.isHttpUrl(r)&&!/^blob:/.test(r))return i.warn(`createLocalFileTracks failed: params error -> url: ${r}`),{code:e.RCRTCCode.PARAMS_ERROR,tracks:[]};const a=this._context.getCurrentId();return a?new Promise((t=>{const o=document.createElement("video");(null==s?void 0:s.withoutAudio)&&(o.muted=!0),o.onloadedmetadata=()=>{const c=[];let d;try{const e=o.mozCaptureStream?"mozCaptureStream":"captureStream";d=o[e]()}catch(n){i.error(`create RCLocalFileTrack failed, captureSteam error. -> url: ${r}`),i.error(n),t({code:e.RCRTCCode.CREATE_FILE_TRACK_FAILED,tracks:c})}const[u,l]=nr(d,s);u&&c.push(new xe(n,a,u,o)),l&&c.push(new Me(n,a,l,o)),0===c.length&&(o.pause(),o.src=""),o.onerror=null,t({code:e.RCRTCCode.SUCCESS,tracks:c})},o.onerror=()=>{i.error(`create RCLocalFileTrack failed -> url: ${r}`),t({code:e.RCRTCCode.CREATE_FILE_TRACK_FAILED,tracks:[]})},o.src=r,o.loop=!0,o.play()})):{code:e.RCRTCCode.INVALID_USER_ID,tracks:[]}}))}createLocalTracks(t,i,n){return r(this,void 0,void 0,(function*(){const r=[];if(!Ke(t))return{code:e.RCRTCCode.INVALID_TAGS,tracks:r};if(!(i instanceof MediaStream))return{code:e.RCRTCCode.PARAMS_ERROR,tracks:r};const o=this._context.getCurrentId();if(!o)return{code:e.RCRTCCode.INVALID_USER_ID,tracks:r};const[s,a]=nr(i,n);return s&&r.push(new Ne(t,o,s)),a&&r.push(new Ae(t,o,a)),{code:e.RCRTCCode.SUCCESS,tracks:r}}))}joinLivingRoomAsAudience(n,o){return r(this,void 0,void 0,(function*(){if(dt(this._context.getNaviInfo()))return{code:e.RCRTCCode.PACKAGE_ENVIRONMENT_ERROR};if(!t.validate("roomId",n,t.notEmptyString,!0)||!t.validate("livingType",o,(t=>t===e.RCLivingType.AUDIO||t===e.RCLivingType.VIDEO)))return{code:e.RCRTCCode.PARAMS_ERROR};if(this._crtAudienceLivingRoom)return{code:e.RCRTCCode.REPERT_JOIN_ROOM};if(!this._service.getNaviMS().length)return{code:e.RCRTCCode.NOT_OPEN_VIDEO_AUDIO_SERVER};const{code:r,data:s}=yield this._context.joinLivingRoomAsAudience(n,t.RTCMode.LIVE,o);if(r!==t.ErrorCode.SUCCESS)return i.error("audienceJoinLivingRoomError:",r),{code:e.RCRTCCode.SIGNAL_AUDIENCE_JOIN_ROOM_FAILED};i.info(`joinLivingRoomAsAudience success, room data: ${JSON.stringify(s)}`);const a=new ir(this._context,this._runtime,this._options,n,s,o);return this._crtAudienceLivingRoom=a,{room:a,code:e.RCRTCCode.SUCCESS,userIds:a.getRemoteUserIds(),RTCTracks:a.getRemoteRTCTracks(),MCUTracks:a.getRemoteMCUTracks(),CDNUris:a.getCDNInfo()}}))}leaveLivingRoomAsAudience(t){return r(this,void 0,void 0,(function*(){return this._crtAudienceLivingRoom?this._crtAudienceLivingRoom!==t?{code:e.RCRTCCode.PARAMS_ERROR}:(yield this._crtAudienceLivingRoom.__destroy(!0),this._crtAudienceLivingRoom=null,{code:e.RCRTCCode.SUCCESS}):{code:e.RCRTCCode.SUCCESS}}))}upgradeToAnchorRoom(n){return r(this,void 0,void 0,(function*(){if(!t.validate("room._roomId",n._roomId,t.notEmptyString,!0))return{code:e.RCRTCCode.PARAMS_ERROR};if(this._crtRoom)return{code:e.RCRTCCode.REPERT_JOIN_ROOM};const{code:r,data:o}=yield this._context.rtcIdentityChange(n._roomId,t.RTCIdentityChangeType.ViewerToAnchor,n._livingType);if(r!==t.ErrorCode.SUCCESS)return i.error("change room identity error",r),{code:e.RCRTCCode.SIGNAL_ROOM_CHANGE_IDENTITY_FAILED};yield this._crtAudienceLivingRoom.__destroy(!1);const s=new qt(this._context,this._runtime,n._roomId,o,this._service,this._options,this._releaseCrtRoomObj.bind(this),n._livingType,!0,!0);return this._crtRoom=s,this._crtAudienceLivingRoom=null,{room:s,code:e.RCRTCCode.SUCCESS,userIds:n.getRemoteUserIds(),tracks:s.getRemoteTracks()}}))}downgradeToAudienceRoom(n){return r(this,void 0,void 0,(function*(){if(!n.isMainRoom())return i.error("the `downgradeToAudienceRoom` is disabled in PK room"),{code:e.RCRTCCode.THE_FUNCTION_IS_DISABLED_IN_PKROOM};if(!t.validate("room._roomId",n._roomId,t.notEmptyString,!0))return{code:e.RCRTCCode.PARAMS_ERROR};if(this._crtAudienceLivingRoom)return{code:e.RCRTCCode.REPERT_JOIN_ROOM};const{code:r,data:o}=yield this._context.rtcIdentityChange(n._roomId,t.RTCIdentityChangeType.AnchorToViewer,n.getLivingType());if(r!==t.ErrorCode.SUCCESS)return i.error("change room identity error",r),{code:e.RCRTCCode.SIGNAL_ROOM_CHANGE_IDENTITY_FAILED};i.info(`downgradeToAudienceRoom success, room data: ${JSON.stringify(o)}`);const s=new ir(this._context,this._runtime,this._options,n._roomId,o,n.getLivingType());return this._crtAudienceLivingRoom=s,this._crtRoom.__destroy(!1),this._crtRoom=null,{room:s,code:e.RCRTCCode.SUCCESS,userIds:s.getRemoteUserIds(),RTCTracks:s.getRemoteRTCTracks(),MCUTracks:s.getRemoteMCUTracks(),CDNUris:s.getCDNInfo()}}))}getJoinedRoomInfo(){return r(this,void 0,void 0,(function*(){const{code:r,data:n}=yield this._context.getRTCJoinedUserInfo(this._context.getCurrentId());return r!==t.ErrorCode.SUCCESS?(i.error("getJoinedUserInfo error",r),{code:e.RCRTCCode.SIGNAL_ROOM_CHANGE_IDENTITY_FAILED}):{code:e.RCRTCCode.SUCCESS,data:n}}))}}var sr;e.RCKickReason=void 0,(sr=e.RCKickReason||(e.RCKickReason={}))[sr.SERVER_KICK=1]="SERVER_KICK",sr[sr.OTHER_KICK=2]="OTHER_KICK";const ar={tag:"RCRTC",verify:e=>"browser"!==e.tag?(i.error(`RCRTC Plugin is not support the runtime '${e.tag}'`),!1):Ge?(t.VersionManage.add("plugin-rtc","5.3.2"),!!t.VersionManage.validEngine("5.1.2")||(i.error(`The current engine version '${t.VersionManage.getInfo().engine}' error, plugin-rtc required engine version at least '5.1.2'.`),!1)):(i.error("Please use the https protocol or use `http://localhost` to open the page!"),!1),setup:(e,r,n={})=>(i.setLogLevel(n.logLevel),i.setLogStdout(n.logStdout),i.warn("RCRTC Version: 5.3.2, Commit: f6a1d352339c5cf1f9d56f7e73f887fe69b6198a"),i.warn(`browserInfo.browser -> ${ot.browser}`),i.warn(`browserInfo.supportsUnifiedPlan -> ${ot.supportsUnifiedPlan}`),i.warn(`browserInfo.version -> ${ot.version}`),t.assert("options.mediaServer",n.mediaServer,(e=>!(!t.isHttpUrl(e)||"https:"===location.protocol&&!/^https/.test(e)))),t.assert("options.timeout",n.timeout,(e=>t.isNumber(e)&&e>=5e3&&e<=3e4)),t.assert("options.pingGap",n.pingGap,(e=>t.isNumber(e)&&e>=3e3&&e<=1e4)),new or(e,r,n))},cr={transResolution:tt,transFrameRate:nt,parseTrackId:ze,ifSupportLocalFileTrack:st,ifSupportScreenShare:at};Object.defineProperty(e,"RTCJoinType",{enumerable:!0,get:function(){return t.RTCJoinType}}),e.RCAbstractRoom=wt,e.RCAudienceClient=Zt,e.RCAudienceLivingRoom=ir,e.RCCameraVideoTrack=we,e.RCLivingRoom=qt,e.RCLocalAudioTrack=Ne,e.RCLocalFileAudioTrack=xe,e.RCLocalFileTrack=De,e.RCLocalFileVideoTrack=Me,e.RCLocalTrack=Le,e.RCLocalVideoTrack=Ae,e.RCMCUConfigBuilder=Bt,e.RCMicphoneAudioTrack=Ue,e.RCRTCClient=or,e.RCRTCRoom=zt,e.RCRemoteAudioTrack=Ve,e.RCRemoteTrack=je,e.RCRemoteVideoTrack=He,e.RCScreenVideoTrack=$e,e.RCTag={DEFAULT:"RongCloudRTC"},e.RCTrack=Oe,e.device=Pe,e.helper=cr,e.installer=ar,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
15
|
+
***************************************************************************** */function r(e,t,r,i){return new(r||(r=Promise))((function(n,o){function s(e){try{c(i.next(e))}catch(e){o(e)}}function a(e){try{c(i.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}c((i=i.apply(e,t||[])).next())}))}const i=new t.Logger("RCRTC");var n,o;e.RCRTCCode=void 0,(n=e.RCRTCCode||(e.RCRTCCode={}))[n.SUCCESS=1e4]="SUCCESS",n[n.SIGNAL_DISCONNECTED=5e4]="SIGNAL_DISCONNECTED",n[n.PARAMS_ERROR=50001]="PARAMS_ERROR",n[n.REPERT_JOIN_ROOM=50002]="REPERT_JOIN_ROOM",n[n.NOT_IN_ROOM=50003]="NOT_IN_ROOM",n[n.SERVICE_INVALID=50004]="SERVICE_INVALID",n[n.RTC_TOKEN_INVALID=50006]="RTC_TOKEN_INVALID",n[n.SIGNAL_ERROR=53001]="SIGNAL_ERROR",n[n.CREATE_OFFER_FAILED=53003]="CREATE_OFFER_FAILED",n[n.REQUEST_FAILED=53004]="REQUEST_FAILED",n[n.MCU_SERVER_NOT_FOUND=53005]="MCU_SERVER_NOT_FOUND",n[n.BROADCAST_SUB_LIST_NOT_EMPTY=53007]="BROADCAST_SUB_LIST_NOT_EMPTY",n[n.ROOM_HAS_BEEN_DESTROYED=53008]="ROOM_HAS_BEEN_DESTROYED",n[n.NOT_OPEN_VIDEO_AUDIO_SERVER=53009]="NOT_OPEN_VIDEO_AUDIO_SERVER",n[n.GET_USER_MEDIA_FAILED=53010]="GET_USER_MEDIA_FAILED",n[n.GET_DISPLAY_MEDIA_FAILED=53011]="GET_DISPLAY_MEDIA_FAILED",n[n.PERMISSION_DENIED=53012]="PERMISSION_DENIED",n[n.CREATE_CUSTOM_TRACK_FAILED=53013]="CREATE_CUSTOM_TRACK_FAILED",n[n.INVALID_TAGS=53014]="INVALID_TAGS",n[n.INVALID_USER_ID=53015]="INVALID_USER_ID",n[n.CREATE_FILE_TRACK_FAILED=53016]="CREATE_FILE_TRACK_FAILED",n[n.INVALID_FILE_INSTANCE=53017]="INVALID_FILE_INSTANCE",n[n.SET_REMOTE_DESCRIPTION_FAILED=53018]="SET_REMOTE_DESCRIPTION_FAILED",n[n.BROWSER_NOT_SUPPORT=53019]="BROWSER_NOT_SUPPORT",n[n.TRACK_NOT_READY=53020]="TRACK_NOT_READY",n[n.VIDEO_TRACK_MISS_MEDIA_ELEMENT=53021]="VIDEO_TRACK_MISS_MEDIA_ELEMENT",n[n.TRACK_PLAY_ERROR=53022]="TRACK_PLAY_ERROR",n[n.SIGNAL_AUDIENCE_JOIN_ROOM_FAILED=53023]="SIGNAL_AUDIENCE_JOIN_ROOM_FAILED",n[n.SIGNAL_ROOM_CHANGE_IDENTITY_FAILED=53024]="SIGNAL_ROOM_CHANGE_IDENTITY_FAILED",n[n.PACKAGE_ENVIRONMENT_ERROR=53025]="PACKAGE_ENVIRONMENT_ERROR",n[n.PUBLISH_TRACK_LIMIT_EXCEEDED=53026]="PUBLISH_TRACK_LIMIT_EXCEEDED",n[n.CDN_RESOURCE_IS_EMPTY=53027]="CDN_RESOURCE_IS_EMPTY",n[n.SIGNAL_JOIN_RTC_ROOM_REFUSED=53028]="SIGNAL_JOIN_RTC_ROOM_REFUSED",n[n.NO_PERMISSION_TO_USE_REQUESTED_DEVICE=53029]="NO_PERMISSION_TO_USE_REQUESTED_DEVICE",n[n.THE_FUNCTION_IS_DISABLED_IN_PKROOM=53030]="THE_FUNCTION_IS_DISABLED_IN_PKROOM",function(e){e[e.JOIN_REFUSED=40032]="JOIN_REFUSED"}(o||(o={}));class s{constructor(){this.queue=[],this.locked=!1}checkToStart(){return r(this,void 0,void 0,(function*(){if(0===this.queue.length||this.locked)return;this.locked=!0;const{resolve:e,task:t,reject:r}=this.queue.shift();let i;try{i=yield t(),e(i)}catch(e){r(e)}this.locked=!1,this.checkToStart()}))}push(e){const t=new Promise(((t,r)=>{this.queue.push({resolve:t,task:e,reject:r})}));return this.checkToStart(),t}}const a=new s,c=e=>a.push(e);let d=!0,u=!0;function l(e,t,r){const i=e.match(t);return i&&i.length>=r&&parseInt(i[r],10)}function h(e,t,r){if(!e.RTCPeerConnection)return;const i=e.RTCPeerConnection.prototype,n=i.addEventListener;i.addEventListener=function(e,i){if(e!==t)return n.apply(this,arguments);const o=e=>{const t=r(e);t&&(i.handleEvent?i.handleEvent(t):i(t))};return this._eventMap=this._eventMap||{},this._eventMap[t]||(this._eventMap[t]=new Map),this._eventMap[t].set(i,o),n.apply(this,[e,o])};const o=i.removeEventListener;i.removeEventListener=function(e,r){if(e!==t||!this._eventMap||!this._eventMap[t])return o.apply(this,arguments);if(!this._eventMap[t].has(r))return o.apply(this,arguments);const i=this._eventMap[t].get(r);return this._eventMap[t].delete(r),0===this._eventMap[t].size&&delete this._eventMap[t],0===Object.keys(this._eventMap).length&&delete this._eventMap,o.apply(this,[e,i])},Object.defineProperty(i,"on"+t,{get(){return this["_on"+t]},set(e){this["_on"+t]&&(this.removeEventListener(t,this["_on"+t]),delete this["_on"+t]),e&&this.addEventListener(t,this["_on"+t]=e)},enumerable:!0,configurable:!0})}function p(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(d=e,e?"adapter.js logging disabled":"adapter.js logging enabled")}function m(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(u=!e,"adapter.js deprecation warnings "+(e?"disabled":"enabled"))}function _(){if("object"==typeof window){if(d)return;"undefined"!=typeof console&&"function"==typeof console.log&&console.log.apply(console,arguments)}}function R(e,t){u&&console.warn(e+" is deprecated, please use "+t+" instead.")}function C(e){return"[object Object]"===Object.prototype.toString.call(e)}function f(e){return C(e)?Object.keys(e).reduce((function(t,r){const i=C(e[r]),n=i?f(e[r]):e[r],o=i&&!Object.keys(n).length;return void 0===n||o?t:Object.assign(t,{[r]:n})}),{}):e}function v(e,t,r){t&&!r.has(t.id)&&(r.set(t.id,t),Object.keys(t).forEach((i=>{i.endsWith("Id")?v(e,e.get(t[i]),r):i.endsWith("Ids")&&t[i].forEach((t=>{v(e,e.get(t),r)}))})))}function T(e,t,r){const i=r?"outbound-rtp":"inbound-rtp",n=new Map;if(null===t)return n;const o=[];return e.forEach((e=>{"track"===e.type&&e.trackIdentifier===t.id&&o.push(e)})),o.forEach((t=>{e.forEach((r=>{r.type===i&&r.trackId===t.id&&v(e,r,n)}))})),n}const g=_;function S(e,t){const r=e&&e.navigator;if(!r.mediaDevices)return;const i=function(e){if("object"!=typeof e||e.mandatory||e.optional)return e;const t={};return Object.keys(e).forEach((r=>{if("require"===r||"advanced"===r||"mediaSource"===r)return;const i="object"==typeof e[r]?e[r]:{ideal:e[r]};void 0!==i.exact&&"number"==typeof i.exact&&(i.min=i.max=i.exact);const n=function(e,t){return e?e+t.charAt(0).toUpperCase()+t.slice(1):"deviceId"===t?"sourceId":t};if(void 0!==i.ideal){t.optional=t.optional||[];let e={};"number"==typeof i.ideal?(e[n("min",r)]=i.ideal,t.optional.push(e),e={},e[n("max",r)]=i.ideal,t.optional.push(e)):(e[n("",r)]=i.ideal,t.optional.push(e))}void 0!==i.exact&&"number"!=typeof i.exact?(t.mandatory=t.mandatory||{},t.mandatory[n("",r)]=i.exact):["min","max"].forEach((e=>{void 0!==i[e]&&(t.mandatory=t.mandatory||{},t.mandatory[n(e,r)]=i[e])}))})),e.advanced&&(t.optional=(t.optional||[]).concat(e.advanced)),t},n=function(e,n){if(t.version>=61)return n(e);if((e=JSON.parse(JSON.stringify(e)))&&"object"==typeof e.audio){const t=function(e,t,r){t in e&&!(r in e)&&(e[r]=e[t],delete e[t])};t((e=JSON.parse(JSON.stringify(e))).audio,"autoGainControl","googAutoGainControl"),t(e.audio,"noiseSuppression","googNoiseSuppression"),e.audio=i(e.audio)}if(e&&"object"==typeof e.video){let o=e.video.facingMode;o=o&&("object"==typeof o?o:{ideal:o});const s=t.version<66;if(o&&("user"===o.exact||"environment"===o.exact||"user"===o.ideal||"environment"===o.ideal)&&(!r.mediaDevices.getSupportedConstraints||!r.mediaDevices.getSupportedConstraints().facingMode||s)){let t;if(delete e.video.facingMode,"environment"===o.exact||"environment"===o.ideal?t=["back","rear"]:"user"!==o.exact&&"user"!==o.ideal||(t=["front"]),t)return r.mediaDevices.enumerateDevices().then((r=>{let s=(r=r.filter((e=>"videoinput"===e.kind))).find((e=>t.some((t=>e.label.toLowerCase().includes(t)))));return!s&&r.length&&t.includes("back")&&(s=r[r.length-1]),s&&(e.video.deviceId=o.exact?{exact:s.deviceId}:{ideal:s.deviceId}),e.video=i(e.video),g("chrome: "+JSON.stringify(e)),n(e)}))}e.video=i(e.video)}return g("chrome: "+JSON.stringify(e)),n(e)},o=function(e){return t.version>=64?e:{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(){return this.name+(this.message&&": ")+this.message}}};if(r.getUserMedia=function(e,t,i){n(e,(e=>{r.webkitGetUserMedia(e,t,(e=>{i&&i(o(e))}))}))}.bind(r),r.mediaDevices.getUserMedia){const e=r.mediaDevices.getUserMedia.bind(r.mediaDevices);r.mediaDevices.getUserMedia=function(t){return n(t,(t=>e(t).then((e=>{if(t.audio&&!e.getAudioTracks().length||t.video&&!e.getVideoTracks().length)throw e.getTracks().forEach((e=>{e.stop()})),new DOMException("","NotFoundError");return e}),(e=>Promise.reject(o(e))))))}}}function I(e){e.MediaStream=e.MediaStream||e.webkitMediaStream}function E(e){if("object"==typeof e&&e.RTCPeerConnection&&!("ontrack"in e.RTCPeerConnection.prototype)){Object.defineProperty(e.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack},set(e){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=e)},enumerable:!0,configurable:!0});const t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=t=>{t.stream.addEventListener("addtrack",(r=>{let i;i=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find((e=>e.track&&e.track.id===r.track.id)):{track:r.track};const n=new Event("track");n.track=r.track,n.receiver=i,n.transceiver={receiver:i},n.streams=[t.stream],this.dispatchEvent(n)})),t.stream.getTracks().forEach((r=>{let i;i=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find((e=>e.track&&e.track.id===r.id)):{track:r};const n=new Event("track");n.track=r,n.receiver=i,n.transceiver={receiver:i},n.streams=[t.stream],this.dispatchEvent(n)}))},this.addEventListener("addstream",this._ontrackpoly)),t.apply(this,arguments)}}else h(e,"track",(e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e)))}function y(e){if("object"==typeof e&&e.RTCPeerConnection&&!("getSenders"in e.RTCPeerConnection.prototype)&&"createDTMFSender"in e.RTCPeerConnection.prototype){const t=function(e,t){return{track:t,get dtmf(){return void 0===this._dtmf&&("audio"===t.kind?this._dtmf=e.createDTMFSender(t):this._dtmf=null),this._dtmf},_pc:e}};if(!e.RTCPeerConnection.prototype.getSenders){e.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};const r=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,i){let n=r.apply(this,arguments);return n||(n=t(this,e),this._senders.push(n)),n};const i=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){i.apply(this,arguments);const t=this._senders.indexOf(e);-1!==t&&this._senders.splice(t,1)}}const r=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._senders=this._senders||[],r.apply(this,[e]),e.getTracks().forEach((e=>{this._senders.push(t(this,e))}))};const i=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){this._senders=this._senders||[],i.apply(this,[e]),e.getTracks().forEach((e=>{const t=this._senders.find((t=>t.track===e));t&&this._senders.splice(this._senders.indexOf(t),1)}))}}else if("object"==typeof e&&e.RTCPeerConnection&&"getSenders"in e.RTCPeerConnection.prototype&&"createDTMFSender"in e.RTCPeerConnection.prototype&&e.RTCRtpSender&&!("dtmf"in e.RTCRtpSender.prototype)){const t=e.RTCPeerConnection.prototype.getSenders;e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e},Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function k(e){if(!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){const[e,r,i]=arguments;if(arguments.length>0&&"function"==typeof e)return t.apply(this,arguments);if(0===t.length&&(0===arguments.length||"function"!=typeof e))return t.apply(this,[]);const n=function(e){const t={};return e.result().forEach((e=>{const r={id:e.id,timestamp:e.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[e.type]||e.type};e.names().forEach((t=>{r[t]=e.stat(t)})),t[r.id]=r})),t},o=function(e){return new Map(Object.keys(e).map((t=>[t,e[t]])))};if(arguments.length>=2){const i=function(e){r(o(n(e)))};return t.apply(this,[i,e])}return new Promise(((e,r)=>{t.apply(this,[function(t){e(o(n(t)))},r])})).then(r,i)}}function b(e){if(!("object"==typeof e&&e.RTCPeerConnection&&e.RTCRtpSender&&e.RTCRtpReceiver))return;if(!("getStats"in e.RTCRtpSender.prototype)){const t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e});const r=e.RTCPeerConnection.prototype.addTrack;r&&(e.RTCPeerConnection.prototype.addTrack=function(){const e=r.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>T(t,e.track,!0)))}}if(!("getStats"in e.RTCRtpReceiver.prototype)){const t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e}),h(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>T(t,e.track,!1)))}}if(!("getStats"in e.RTCRtpSender.prototype)||!("getStats"in e.RTCRtpReceiver.prototype))return;const t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof e.MediaStreamTrack){const e=arguments[0];let t,r,i;return this.getSenders().forEach((r=>{r.track===e&&(t?i=!0:t=r)})),this.getReceivers().forEach((t=>(t.track===e&&(r?i=!0:r=t),t.track===e))),i||t&&r?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):t?t.getStats():r?r.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return t.apply(this,arguments)}}function P(e){e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map((e=>this._shimmedLocalStreams[e][0]))};const t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,r){if(!r)return t.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};const i=t.apply(this,arguments);return this._shimmedLocalStreams[r.id]?-1===this._shimmedLocalStreams[r.id].indexOf(i)&&this._shimmedLocalStreams[r.id].push(i):this._shimmedLocalStreams[r.id]=[r,i],i};const r=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._shimmedLocalStreams=this._shimmedLocalStreams||{},e.getTracks().forEach((e=>{if(this.getSenders().find((t=>t.track===e)))throw new DOMException("Track already exists.","InvalidAccessError")}));const t=this.getSenders();r.apply(this,arguments);const i=this.getSenders().filter((e=>-1===t.indexOf(e)));this._shimmedLocalStreams[e.id]=[e].concat(i)};const i=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[e.id],i.apply(this,arguments)};const n=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},e&&Object.keys(this._shimmedLocalStreams).forEach((t=>{const r=this._shimmedLocalStreams[t].indexOf(e);-1!==r&&this._shimmedLocalStreams[t].splice(r,1),1===this._shimmedLocalStreams[t].length&&delete this._shimmedLocalStreams[t]})),n.apply(this,arguments)}}function O(e,t){if(!e.RTCPeerConnection)return;if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65)return P(e);const r=e.RTCPeerConnection.prototype.getLocalStreams;e.RTCPeerConnection.prototype.getLocalStreams=function(){const e=r.apply(this);return this._reverseStreams=this._reverseStreams||{},e.map((e=>this._reverseStreams[e.id]))};const i=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(t){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},t.getTracks().forEach((e=>{if(this.getSenders().find((t=>t.track===e)))throw new DOMException("Track already exists.","InvalidAccessError")})),!this._reverseStreams[t.id]){const r=new e.MediaStream(t.getTracks());this._streams[t.id]=r,this._reverseStreams[r.id]=t,t=r}i.apply(this,[t])};const n=e.RTCPeerConnection.prototype.removeStream;function o(e,t){let r=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((t=>{const i=e._reverseStreams[t],n=e._streams[i.id];r=r.replace(new RegExp(n.id,"g"),i.id)})),new RTCSessionDescription({type:t.type,sdp:r})}function s(e,t){let r=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((t=>{const i=e._reverseStreams[t],n=e._streams[i.id];r=r.replace(new RegExp(i.id,"g"),n.id)})),new RTCSessionDescription({type:t.type,sdp:r})}e.RTCPeerConnection.prototype.removeStream=function(e){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},n.apply(this,[this._streams[e.id]||e]),delete this._reverseStreams[this._streams[e.id]?this._streams[e.id].id:e.id],delete this._streams[e.id]},e.RTCPeerConnection.prototype.addTrack=function(t,r){if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");const i=[].slice.call(arguments,1);if(1!==i.length||!i[0].getTracks().find((e=>e===t)))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");const n=this.getSenders().find((e=>e.track===t));if(n)throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};const o=this._streams[r.id];if(o)o.addTrack(t),Promise.resolve().then((()=>{this.dispatchEvent(new Event("negotiationneeded"))}));else{const i=new e.MediaStream([t]);this._streams[r.id]=i,this._reverseStreams[i.id]=r,this.addStream(i)}return this.getSenders().find((e=>e.track===t))},["createOffer","createAnswer"].forEach((function(t){const r=e.RTCPeerConnection.prototype[t],i={[t](){const e=arguments;return arguments.length&&"function"==typeof arguments[0]?r.apply(this,[t=>{const r=o(this,t);e[0].apply(null,[r])},t=>{e[1]&&e[1].apply(null,t)},arguments[2]]):r.apply(this,arguments).then((e=>o(this,e)))}};e.RTCPeerConnection.prototype[t]=i[t]}));const a=e.RTCPeerConnection.prototype.setLocalDescription;e.RTCPeerConnection.prototype.setLocalDescription=function(){return arguments.length&&arguments[0].type?(arguments[0]=s(this,arguments[0]),a.apply(this,arguments)):a.apply(this,arguments)};const c=Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(e.RTCPeerConnection.prototype,"localDescription",{get(){const e=c.get.apply(this);return""===e.type?e:o(this,e)}}),e.RTCPeerConnection.prototype.removeTrack=function(e){if("closed"===this.signalingState)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");if(!(e._pc===this))throw new DOMException("Sender was not created by this connection.","InvalidAccessError");let t;this._streams=this._streams||{},Object.keys(this._streams).forEach((r=>{this._streams[r].getTracks().find((t=>e.track===t))&&(t=this._streams[r])})),t&&(1===t.getTracks().length?this.removeStream(this._reverseStreams[t.id]):t.removeTrack(e.track),this.dispatchEvent(new Event("negotiationneeded")))}}function L(e,t){!e.RTCPeerConnection&&e.webkitRTCPeerConnection&&(e.RTCPeerConnection=e.webkitRTCPeerConnection),e.RTCPeerConnection&&t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){const r=e.RTCPeerConnection.prototype[t],i={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),r.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=i[t]}))}function N(e,t){h(e,"negotiationneeded",(e=>{const r=e.target;if(!(t.version<72||r.getConfiguration&&"plan-b"===r.getConfiguration().sdpSemantics)||"stable"===r.signalingState)return e}))}var A=Object.freeze({__proto__:null,shimMediaStream:I,shimOnTrack:E,shimGetSendersWithDtmf:y,shimGetStats:k,shimSenderReceiverGetStats:b,shimAddTrackRemoveTrackWithNative:P,shimAddTrackRemoveTrack:O,shimPeerConnection:L,fixNegotiationNeeded:N,shimGetUserMedia:S,shimGetDisplayMedia:function(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&("function"==typeof t?e.navigator.mediaDevices.getDisplayMedia=function(r){return t(r).then((t=>{const i=r.video&&r.video.width,n=r.video&&r.video.height,o=r.video&&r.video.frameRate;return r.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:t,maxFrameRate:o||3}},i&&(r.video.mandatory.maxWidth=i),n&&(r.video.mandatory.maxHeight=n),e.navigator.mediaDevices.getUserMedia(r)}))}:console.error("shimGetDisplayMedia: getSourceId argument is not a function"))}});var D=function(e){var t={exports:{}};return e(t,t.exports),t.exports}((function(e){var t={generateIdentifier:function(){return Math.random().toString(36).substr(2,10)}};t.localCName=t.generateIdentifier(),t.splitLines=function(e){return e.trim().split("\n").map((function(e){return e.trim()}))},t.splitSections=function(e){return e.split("\nm=").map((function(e,t){return(t>0?"m="+e:e).trim()+"\r\n"}))},t.getDescription=function(e){var r=t.splitSections(e);return r&&r[0]},t.getMediaSections=function(e){var r=t.splitSections(e);return r.shift(),r},t.matchPrefix=function(e,r){return t.splitLines(e).filter((function(e){return 0===e.indexOf(r)}))},t.parseCandidate=function(e){for(var t,r={foundation:(t=0===e.indexOf("a=candidate:")?e.substring(12).split(" "):e.substring(10).split(" "))[0],component:parseInt(t[1],10),protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],address:t[4],port:parseInt(t[5],10),type:t[7]},i=8;i<t.length;i+=2)switch(t[i]){case"raddr":r.relatedAddress=t[i+1];break;case"rport":r.relatedPort=parseInt(t[i+1],10);break;case"tcptype":r.tcpType=t[i+1];break;case"ufrag":r.ufrag=t[i+1],r.usernameFragment=t[i+1];break;default:r[t[i]]=t[i+1]}return r},t.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.address||e.ip),t.push(e.port);var r=e.type;return t.push("typ"),t.push(r),"host"!==r&&e.relatedAddress&&e.relatedPort&&(t.push("raddr"),t.push(e.relatedAddress),t.push("rport"),t.push(e.relatedPort)),e.tcpType&&"tcp"===e.protocol.toLowerCase()&&(t.push("tcptype"),t.push(e.tcpType)),(e.usernameFragment||e.ufrag)&&(t.push("ufrag"),t.push(e.usernameFragment||e.ufrag)),"candidate:"+t.join(" ")},t.parseIceOptions=function(e){return e.substr(14).split(" ")},t.parseRtpMap=function(e){var t=e.substr(9).split(" "),r={payloadType:parseInt(t.shift(),10)};return t=t[0].split("/"),r.name=t[0],r.clockRate=parseInt(t[1],10),r.channels=3===t.length?parseInt(t[2],10):1,r.numChannels=r.channels,r},t.writeRtpMap=function(e){var t=e.payloadType;void 0!==e.preferredPayloadType&&(t=e.preferredPayloadType);var r=e.channels||e.numChannels||1;return"a=rtpmap:"+t+" "+e.name+"/"+e.clockRate+(1!==r?"/"+r:"")+"\r\n"},t.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]}},t.writeExtmap=function(e){return"a=extmap:"+(e.id||e.preferredId)+(e.direction&&"sendrecv"!==e.direction?"/"+e.direction:"")+" "+e.uri+"\r\n"},t.parseFmtp=function(e){for(var t,r={},i=e.substr(e.indexOf(" ")+1).split(";"),n=0;n<i.length;n++)r[(t=i[n].trim().split("="))[0].trim()]=t[1];return r},t.writeFmtp=function(e){var t="",r=e.payloadType;if(void 0!==e.preferredPayloadType&&(r=e.preferredPayloadType),e.parameters&&Object.keys(e.parameters).length){var i=[];Object.keys(e.parameters).forEach((function(t){e.parameters[t]?i.push(t+"="+e.parameters[t]):i.push(t)})),t+="a=fmtp:"+r+" "+i.join(";")+"\r\n"}return t},t.parseRtcpFb=function(e){var t=e.substr(e.indexOf(" ")+1).split(" ");return{type:t.shift(),parameter:t.join(" ")}},t.writeRtcpFb=function(e){var t="",r=e.payloadType;return void 0!==e.preferredPayloadType&&(r=e.preferredPayloadType),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"})),t},t.parseSsrcMedia=function(e){var t=e.indexOf(" "),r={ssrc:parseInt(e.substr(7,t-7),10)},i=e.indexOf(":",t);return i>-1?(r.attribute=e.substr(t+1,i-t-1),r.value=e.substr(i+1)):r.attribute=e.substr(t+1),r},t.parseSsrcGroup=function(e){var t=e.substr(13).split(" ");return{semantics:t.shift(),ssrcs:t.map((function(e){return parseInt(e,10)}))}},t.getMid=function(e){var r=t.matchPrefix(e,"a=mid:")[0];if(r)return r.substr(6)},t.parseFingerprint=function(e){var t=e.substr(14).split(" ");return{algorithm:t[0].toLowerCase(),value:t[1]}},t.getDtlsParameters=function(e,r){return{role:"auto",fingerprints:t.matchPrefix(e+r,"a=fingerprint:").map(t.parseFingerprint)}},t.writeDtlsParameters=function(e,t){var r="a=setup:"+t+"\r\n";return e.fingerprints.forEach((function(e){r+="a=fingerprint:"+e.algorithm+" "+e.value+"\r\n"})),r},t.parseCryptoLine=function(e){var t=e.substr(9).split(" ");return{tag:parseInt(t[0],10),cryptoSuite:t[1],keyParams:t[2],sessionParams:t.slice(3)}},t.writeCryptoLine=function(e){return"a=crypto:"+e.tag+" "+e.cryptoSuite+" "+("object"==typeof e.keyParams?t.writeCryptoKeyParams(e.keyParams):e.keyParams)+(e.sessionParams?" "+e.sessionParams.join(" "):"")+"\r\n"},t.parseCryptoKeyParams=function(e){if(0!==e.indexOf("inline:"))return null;var t=e.substr(7).split("|");return{keyMethod:"inline",keySalt:t[0],lifeTime:t[1],mkiValue:t[2]?t[2].split(":")[0]:void 0,mkiLength:t[2]?t[2].split(":")[1]:void 0}},t.writeCryptoKeyParams=function(e){return e.keyMethod+":"+e.keySalt+(e.lifeTime?"|"+e.lifeTime:"")+(e.mkiValue&&e.mkiLength?"|"+e.mkiValue+":"+e.mkiLength:"")},t.getCryptoParameters=function(e,r){return t.matchPrefix(e+r,"a=crypto:").map(t.parseCryptoLine)},t.getIceParameters=function(e,r){var i=t.matchPrefix(e+r,"a=ice-ufrag:")[0],n=t.matchPrefix(e+r,"a=ice-pwd:")[0];return i&&n?{usernameFragment:i.substr(12),password:n.substr(10)}:null},t.writeIceParameters=function(e){return"a=ice-ufrag:"+e.usernameFragment+"\r\na=ice-pwd:"+e.password+"\r\n"},t.parseRtpParameters=function(e){for(var r={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},i=t.splitLines(e)[0].split(" "),n=3;n<i.length;n++){var o=i[n],s=t.matchPrefix(e,"a=rtpmap:"+o+" ")[0];if(s){var a=t.parseRtpMap(s),c=t.matchPrefix(e,"a=fmtp:"+o+" ");switch(a.parameters=c.length?t.parseFmtp(c[0]):{},a.rtcpFeedback=t.matchPrefix(e,"a=rtcp-fb:"+o+" ").map(t.parseRtcpFb),r.codecs.push(a),a.name.toUpperCase()){case"RED":case"ULPFEC":r.fecMechanisms.push(a.name.toUpperCase())}}}return t.matchPrefix(e,"a=extmap:").forEach((function(e){r.headerExtensions.push(t.parseExtmap(e))})),r},t.writeRtpDescription=function(e,r){var i="";i+="m="+e+" ",i+=r.codecs.length>0?"9":"0",i+=" UDP/TLS/RTP/SAVPF ",i+=r.codecs.map((function(e){return void 0!==e.preferredPayloadType?e.preferredPayloadType:e.payloadType})).join(" ")+"\r\n",i+="c=IN IP4 0.0.0.0\r\n",i+="a=rtcp:9 IN IP4 0.0.0.0\r\n",r.codecs.forEach((function(e){i+=t.writeRtpMap(e),i+=t.writeFmtp(e),i+=t.writeRtcpFb(e)}));var n=0;return r.codecs.forEach((function(e){e.maxptime>n&&(n=e.maxptime)})),n>0&&(i+="a=maxptime:"+n+"\r\n"),i+="a=rtcp-mux\r\n",r.headerExtensions&&r.headerExtensions.forEach((function(e){i+=t.writeExtmap(e)})),i},t.parseRtpEncodingParameters=function(e){var r,i=[],n=t.parseRtpParameters(e),o=-1!==n.fecMechanisms.indexOf("RED"),s=-1!==n.fecMechanisms.indexOf("ULPFEC"),a=t.matchPrefix(e,"a=ssrc:").map((function(e){return t.parseSsrcMedia(e)})).filter((function(e){return"cname"===e.attribute})),c=a.length>0&&a[0].ssrc,d=t.matchPrefix(e,"a=ssrc-group:FID").map((function(e){return e.substr(17).split(" ").map((function(e){return parseInt(e,10)}))}));d.length>0&&d[0].length>1&&d[0][0]===c&&(r=d[0][1]),n.codecs.forEach((function(e){if("RTX"===e.name.toUpperCase()&&e.parameters.apt){var t={ssrc:c,codecPayloadType:parseInt(e.parameters.apt,10)};c&&r&&(t.rtx={ssrc:r}),i.push(t),o&&((t=JSON.parse(JSON.stringify(t))).fec={ssrc:c,mechanism:s?"red+ulpfec":"red"},i.push(t))}})),0===i.length&&c&&i.push({ssrc:c});var u=t.matchPrefix(e,"b=");return u.length&&(u=0===u[0].indexOf("b=TIAS:")?parseInt(u[0].substr(7),10):0===u[0].indexOf("b=AS:")?1e3*parseInt(u[0].substr(5),10)*.95-16e3:void 0,i.forEach((function(e){e.maxBitrate=u}))),i},t.parseRtcpParameters=function(e){var r={},i=t.matchPrefix(e,"a=ssrc:").map((function(e){return t.parseSsrcMedia(e)})).filter((function(e){return"cname"===e.attribute}))[0];i&&(r.cname=i.value,r.ssrc=i.ssrc);var n=t.matchPrefix(e,"a=rtcp-rsize");r.reducedSize=n.length>0,r.compound=0===n.length;var o=t.matchPrefix(e,"a=rtcp-mux");return r.mux=o.length>0,r},t.parseMsid=function(e){var r,i=t.matchPrefix(e,"a=msid:");if(1===i.length)return{stream:(r=i[0].substr(7).split(" "))[0],track:r[1]};var n=t.matchPrefix(e,"a=ssrc:").map((function(e){return t.parseSsrcMedia(e)})).filter((function(e){return"msid"===e.attribute}));return n.length>0?{stream:(r=n[0].value.split(" "))[0],track:r[1]}:void 0},t.parseSctpDescription=function(e){var r,i=t.parseMLine(e),n=t.matchPrefix(e,"a=max-message-size:");n.length>0&&(r=parseInt(n[0].substr(19),10)),isNaN(r)&&(r=65536);var o=t.matchPrefix(e,"a=sctp-port:");if(o.length>0)return{port:parseInt(o[0].substr(12),10),protocol:i.fmt,maxMessageSize:r};if(t.matchPrefix(e,"a=sctpmap:").length>0){var s=t.matchPrefix(e,"a=sctpmap:")[0].substr(10).split(" ");return{port:parseInt(s[0],10),protocol:s[1],maxMessageSize:r}}},t.writeSctpDescription=function(e,t){var r=[];return r="DTLS/SCTP"!==e.protocol?["m="+e.kind+" 9 "+e.protocol+" "+t.protocol+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctp-port:"+t.port+"\r\n"]:["m="+e.kind+" 9 "+e.protocol+" "+t.port+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctpmap:"+t.port+" "+t.protocol+" 65535\r\n"],void 0!==t.maxMessageSize&&r.push("a=max-message-size:"+t.maxMessageSize+"\r\n"),r.join("")},t.generateSessionId=function(){return Math.random().toString().substr(2,21)},t.writeSessionBoilerplate=function(e,r,i){var n=void 0!==r?r:2;return"v=0\r\no="+(i||"thisisadapterortc")+" "+(e||t.generateSessionId())+" "+n+" IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},t.writeMediaSection=function(e,r,i,n){var o=t.writeRtpDescription(e.kind,r);if(o+=t.writeIceParameters(e.iceGatherer.getLocalParameters()),o+=t.writeDtlsParameters(e.dtlsTransport.getLocalParameters(),"offer"===i?"actpass":"active"),o+="a=mid:"+e.mid+"\r\n",e.direction?o+="a="+e.direction+"\r\n":e.rtpSender&&e.rtpReceiver?o+="a=sendrecv\r\n":e.rtpSender?o+="a=sendonly\r\n":e.rtpReceiver?o+="a=recvonly\r\n":o+="a=inactive\r\n",e.rtpSender){var s="msid:"+n.id+" "+e.rtpSender.track.id+"\r\n";o+="a="+s,o+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" "+s,e.sendEncodingParameters[0].rtx&&(o+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" "+s,o+="a=ssrc-group:FID "+e.sendEncodingParameters[0].ssrc+" "+e.sendEncodingParameters[0].rtx.ssrc+"\r\n")}return o+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" cname:"+t.localCName+"\r\n",e.rtpSender&&e.sendEncodingParameters[0].rtx&&(o+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" cname:"+t.localCName+"\r\n"),o},t.getDirection=function(e,r){for(var i=t.splitLines(e),n=0;n<i.length;n++)switch(i[n]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return i[n].substr(2)}return r?t.getDirection(r):"sendrecv"},t.getKind=function(e){return t.splitLines(e)[0].split(" ")[0].substr(2)},t.isRejected=function(e){return"0"===e.split(" ",2)[1]},t.parseMLine=function(e){var r=t.splitLines(e)[0].substr(2).split(" ");return{kind:r[0],port:parseInt(r[1],10),protocol:r[2],fmt:r.slice(3).join(" ")}},t.parseOLine=function(e){var r=t.matchPrefix(e,"o=")[0].substr(2).split(" ");return{username:r[0],sessionId:r[1],sessionVersion:parseInt(r[2],10),netType:r[3],addressType:r[4],address:r[5]}},t.isValidSDP=function(e){if("string"!=typeof e||0===e.length)return!1;for(var r=t.splitLines(e),i=0;i<r.length;i++)if(r[i].length<2||"="!==r[i].charAt(1))return!1;return!0},e.exports=t}));function M(e,t,r,i,n){var o=D.writeRtpDescription(e.kind,t);if(o+=D.writeIceParameters(e.iceGatherer.getLocalParameters()),o+=D.writeDtlsParameters(e.dtlsTransport.getLocalParameters(),"offer"===r?"actpass":n||"active"),o+="a=mid:"+e.mid+"\r\n",e.rtpSender&&e.rtpReceiver?o+="a=sendrecv\r\n":e.rtpSender?o+="a=sendonly\r\n":e.rtpReceiver?o+="a=recvonly\r\n":o+="a=inactive\r\n",e.rtpSender){var s=e.rtpSender._initialTrackId||e.rtpSender.track.id;e.rtpSender._initialTrackId=s;var a="msid:"+(i?i.id:"-")+" "+s+"\r\n";o+="a="+a,o+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" "+a,e.sendEncodingParameters[0].rtx&&(o+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" "+a,o+="a=ssrc-group:FID "+e.sendEncodingParameters[0].ssrc+" "+e.sendEncodingParameters[0].rtx.ssrc+"\r\n")}return o+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" cname:"+D.localCName+"\r\n",e.rtpSender&&e.sendEncodingParameters[0].rtx&&(o+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" cname:"+D.localCName+"\r\n"),o}function x(e,t){var r={codecs:[],headerExtensions:[],fecMechanisms:[]},i=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]},n=function(e,t,r,n){var o=i(e.parameters.apt,r),s=i(t.parameters.apt,n);return o&&s&&o.name.toLowerCase()===s.name.toLowerCase()};return e.codecs.forEach((function(i){for(var o=0;o<t.codecs.length;o++){var s=t.codecs[o];if(i.name.toLowerCase()===s.name.toLowerCase()&&i.clockRate===s.clockRate){if("rtx"===i.name.toLowerCase()&&i.parameters&&s.parameters.apt&&!n(i,s,e.codecs,t.codecs))continue;(s=JSON.parse(JSON.stringify(s))).numChannels=Math.min(i.numChannels,s.numChannels),r.codecs.push(s),s.rtcpFeedback=s.rtcpFeedback.filter((function(e){for(var t=0;t<i.rtcpFeedback.length;t++)if(i.rtcpFeedback[t].type===e.type&&i.rtcpFeedback[t].parameter===e.parameter)return!0;return!1}));break}}})),e.headerExtensions.forEach((function(e){for(var i=0;i<t.headerExtensions.length;i++){var n=t.headerExtensions[i];if(e.uri===n.uri){r.headerExtensions.push(n);break}}})),r}function U(e,t,r){return-1!=={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)}function w(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}));return r||e.addRemoteCandidate(t),!r}function $(e,t){var r=new Error(t);return r.name=e,r.code={NotSupportedError:9,InvalidStateError:11,InvalidAccessError:15,TypeError:void 0,OperationError:void 0}[e],r}var j=function(e,t){function r(t,r){r.addTrack(t),r.dispatchEvent(new e.MediaStreamTrackEvent("addtrack",{track:t}))}function i(t,r,i,n){var o=new Event("track");o.track=r,o.receiver=i,o.transceiver={receiver:i},o.streams=n,e.setTimeout((function(){t._dispatchEvent("track",o)}))}var n=function(r){var i=this,n=document.createDocumentFragment();if(["addEventListener","removeEventListener","dispatchEvent"].forEach((function(e){i[e]=n[e].bind(n)})),this.canTrickleIceCandidates=null,this.needNegotiation=!1,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="max-bundle"===r.bundlePolicy,"negotiate"===r.rtcpMuxPolicy)throw $("NotSupportedError","rtcpMuxPolicy 'negotiate' is not supported");switch(r.rtcpMuxPolicy||(r.rtcpMuxPolicy="require"),r.iceTransportPolicy){case"all":case"relay":break;default:r.iceTransportPolicy="all"}switch(r.bundlePolicy){case"balanced":case"max-compat":case"max-bundle":break;default:r.bundlePolicy="balanced"}if(r.iceServers=function(e,t){var r=!1;return(e=JSON.parse(JSON.stringify(e))).filter((function(e){if(e&&(e.urls||e.url)){var i=e.urls||e.url;e.url&&!e.urls&&console.warn("RTCIceServer.url is deprecated! Use urls instead.");var n="string"==typeof i;return n&&(i=[i]),i=i.filter((function(e){return 0!==e.indexOf("turn:")||-1===e.indexOf("transport=udp")||-1!==e.indexOf("turn:[")||r?0===e.indexOf("stun:")&&t>=14393&&-1===e.indexOf("?transport=udp"):(r=!0,!0)})),delete e.url,e.urls=n?i[0]:i,!!i.length}}))}(r.iceServers||[],t),this._iceGatherers=[],r.iceCandidatePoolSize)for(var o=r.iceCandidatePoolSize;o>0;o--)this._iceGatherers.push(new e.RTCIceGatherer({iceServers:r.iceServers,gatherPolicy:r.iceTransportPolicy}));else r.iceCandidatePoolSize=0;this._config=r,this.transceivers=[],this._sdpSessionId=D.generateSessionId(),this._sdpSessionVersion=0,this._dtlsRole=void 0,this._isClosed=!1};Object.defineProperty(n.prototype,"localDescription",{configurable:!0,get:function(){return this._localDescription}}),Object.defineProperty(n.prototype,"remoteDescription",{configurable:!0,get:function(){return this._remoteDescription}}),n.prototype.onicecandidate=null,n.prototype.onaddstream=null,n.prototype.ontrack=null,n.prototype.onremovestream=null,n.prototype.onsignalingstatechange=null,n.prototype.oniceconnectionstatechange=null,n.prototype.onconnectionstatechange=null,n.prototype.onicegatheringstatechange=null,n.prototype.onnegotiationneeded=null,n.prototype.ondatachannel=null,n.prototype._dispatchEvent=function(e,t){this._isClosed||(this.dispatchEvent(t),"function"==typeof this["on"+e]&&this["on"+e](t))},n.prototype._emitGatheringStateChange=function(){var e=new Event("icegatheringstatechange");this._dispatchEvent("icegatheringstatechange",e)},n.prototype.getConfiguration=function(){return this._config},n.prototype.getLocalStreams=function(){return this.localStreams},n.prototype.getRemoteStreams=function(){return this.remoteStreams},n.prototype._createTransceiver=function(e,t){var r=this.transceivers.length>0,i={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:!0};if(this.usingBundle&&r)i.iceTransport=this.transceivers[0].iceTransport,i.dtlsTransport=this.transceivers[0].dtlsTransport;else{var n=this._createIceAndDtlsTransports();i.iceTransport=n.iceTransport,i.dtlsTransport=n.dtlsTransport}return t||this.transceivers.push(i),i},n.prototype.addTrack=function(t,r){if(this._isClosed)throw $("InvalidStateError","Attempted to call addTrack on a closed peerconnection.");var i;if(this.transceivers.find((function(e){return e.track===t})))throw $("InvalidAccessError","Track already exists.");for(var n=0;n<this.transceivers.length;n++)this.transceivers[n].track||this.transceivers[n].kind!==t.kind||(i=this.transceivers[n]);return i||(i=this._createTransceiver(t.kind)),this._maybeFireNegotiationNeeded(),-1===this.localStreams.indexOf(r)&&this.localStreams.push(r),i.track=t,i.stream=r,i.rtpSender=new e.RTCRtpSender(t,i.dtlsTransport),i.rtpSender},n.prototype.addStream=function(e){var r=this;if(t>=15025)e.getTracks().forEach((function(t){r.addTrack(t,e)}));else{var i=e.clone();e.getTracks().forEach((function(e,t){var r=i.getTracks()[t];e.addEventListener("enabled",(function(e){r.enabled=e.enabled}))})),i.getTracks().forEach((function(e){r.addTrack(e,i)}))}},n.prototype.removeTrack=function(t){if(this._isClosed)throw $("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 $("InvalidAccessError","Sender was not created by this connection.");var i=r.stream;r.rtpSender.stop(),r.rtpSender=null,r.track=null,r.stream=null,-1===this.transceivers.map((function(e){return e.stream})).indexOf(i)&&this.localStreams.indexOf(i)>-1&&this.localStreams.splice(this.localStreams.indexOf(i),1),this._maybeFireNegotiationNeeded()},n.prototype.removeStream=function(e){var t=this;e.getTracks().forEach((function(e){var r=t.getSenders().find((function(t){return t.track===e}));r&&t.removeTrack(r)}))},n.prototype.getSenders=function(){return this.transceivers.filter((function(e){return!!e.rtpSender})).map((function(e){return e.rtpSender}))},n.prototype.getReceivers=function(){return this.transceivers.filter((function(e){return!!e.rtpReceiver})).map((function(e){return e.rtpReceiver}))},n.prototype._createIceGatherer=function(t,r){var i=this;if(r&&t>0)return this.transceivers[0].iceGatherer;if(this._iceGatherers.length)return this._iceGatherers.shift();var n=new e.RTCIceGatherer({iceServers:this._config.iceServers,gatherPolicy:this._config.iceTransportPolicy});return Object.defineProperty(n,"state",{value:"new",writable:!0}),this.transceivers[t].bufferedCandidateEvents=[],this.transceivers[t].bufferCandidates=function(e){var r=!e.candidate||0===Object.keys(e.candidate).length;n.state=r?"completed":"gathering",null!==i.transceivers[t].bufferedCandidateEvents&&i.transceivers[t].bufferedCandidateEvents.push(e)},n.addEventListener("localcandidate",this.transceivers[t].bufferCandidates),n},n.prototype._gather=function(t,r){var i=this,n=this.transceivers[r].iceGatherer;if(!n.onlocalcandidate){var o=this.transceivers[r].bufferedCandidateEvents;this.transceivers[r].bufferedCandidateEvents=null,n.removeEventListener("localcandidate",this.transceivers[r].bufferCandidates),n.onlocalcandidate=function(e){if(!(i.usingBundle&&r>0)){var o=new Event("icecandidate");o.candidate={sdpMid:t,sdpMLineIndex:r};var s=e.candidate,a=!s||0===Object.keys(s).length;if(a)"new"!==n.state&&"gathering"!==n.state||(n.state="completed");else{"new"===n.state&&(n.state="gathering"),s.component=1,s.ufrag=n.getLocalParameters().usernameFragment;var c=D.writeCandidate(s);o.candidate=Object.assign(o.candidate,D.parseCandidate(c)),o.candidate.candidate=c,o.candidate.toJSON=function(){return{candidate:o.candidate.candidate,sdpMid:o.candidate.sdpMid,sdpMLineIndex:o.candidate.sdpMLineIndex,usernameFragment:o.candidate.usernameFragment}}}var d=D.getMediaSections(i._localDescription.sdp);d[o.candidate.sdpMLineIndex]+=a?"a=end-of-candidates\r\n":"a="+o.candidate.candidate+"\r\n",i._localDescription.sdp=D.getDescription(i._localDescription.sdp)+d.join("");var u=i.transceivers.every((function(e){return e.iceGatherer&&"completed"===e.iceGatherer.state}));"gathering"!==i.iceGatheringState&&(i.iceGatheringState="gathering",i._emitGatheringStateChange()),a||i._dispatchEvent("icecandidate",o),u&&(i._dispatchEvent("icecandidate",new Event("icecandidate")),i.iceGatheringState="complete",i._emitGatheringStateChange())}},e.setTimeout((function(){o.forEach((function(e){n.onlocalcandidate(e)}))}),0)}},n.prototype._createIceAndDtlsTransports=function(){var t=this,r=new e.RTCIceTransport(null);r.onicestatechange=function(){t._updateIceConnectionState(),t._updateConnectionState()};var i=new e.RTCDtlsTransport(r);return i.ondtlsstatechange=function(){t._updateConnectionState()},i.onerror=function(){Object.defineProperty(i,"state",{value:"failed",writable:!0}),t._updateConnectionState()},{iceTransport:r,dtlsTransport:i}},n.prototype._disposeIceAndDtlsTransports=function(e){var t=this.transceivers[e].iceGatherer;t&&(delete t.onlocalcandidate,delete this.transceivers[e].iceGatherer);var r=this.transceivers[e].iceTransport;r&&(delete r.onicestatechange,delete this.transceivers[e].iceTransport);var i=this.transceivers[e].dtlsTransport;i&&(delete i.ondtlsstatechange,delete i.onerror,delete this.transceivers[e].dtlsTransport)},n.prototype._transceive=function(e,r,i){var n=x(e.localCapabilities,e.remoteCapabilities);r&&e.rtpSender&&(n.encodings=e.sendEncodingParameters,n.rtcp={cname:D.localCName,compound:e.rtcpParameters.compound},e.recvEncodingParameters.length&&(n.rtcp.ssrc=e.recvEncodingParameters[0].ssrc),e.rtpSender.send(n)),i&&e.rtpReceiver&&n.codecs.length>0&&("video"===e.kind&&e.recvEncodingParameters&&t<15019&&e.recvEncodingParameters.forEach((function(e){delete e.rtx})),e.recvEncodingParameters.length?n.encodings=e.recvEncodingParameters:n.encodings=[{}],n.rtcp={compound:e.rtcpParameters.compound},e.rtcpParameters.cname&&(n.rtcp.cname=e.rtcpParameters.cname),e.sendEncodingParameters.length&&(n.rtcp.ssrc=e.sendEncodingParameters[0].ssrc),e.rtpReceiver.receive(n))},n.prototype.setLocalDescription=function(e){var t,r,i=this;if(-1===["offer","answer"].indexOf(e.type))return Promise.reject($("TypeError",'Unsupported type "'+e.type+'"'));if(!U("setLocalDescription",e.type,i.signalingState)||i._isClosed)return Promise.reject($("InvalidStateError","Can not set local "+e.type+" in state "+i.signalingState));if("offer"===e.type)t=D.splitSections(e.sdp),r=t.shift(),t.forEach((function(e,t){var r=D.parseRtpParameters(e);i.transceivers[t].localCapabilities=r})),i.transceivers.forEach((function(e,t){i._gather(e.mid,t)}));else if("answer"===e.type){t=D.splitSections(i._remoteDescription.sdp),r=t.shift();var n=D.matchPrefix(r,"a=ice-lite").length>0;t.forEach((function(e,t){var o=i.transceivers[t],s=o.iceGatherer,a=o.iceTransport,c=o.dtlsTransport,d=o.localCapabilities,u=o.remoteCapabilities;if(!(D.isRejected(e)&&0===D.matchPrefix(e,"a=bundle-only").length)&&!o.rejected){var l=D.getIceParameters(e,r),h=D.getDtlsParameters(e,r);n&&(h.role="server"),i.usingBundle&&0!==t||(i._gather(o.mid,t),"new"===a.state&&a.start(s,l,n?"controlling":"controlled"),"new"===c.state&&c.start(h));var p=x(d,u);i._transceive(o,p.codecs.length>0,!1)}}))}return i._localDescription={type:e.type,sdp:e.sdp},"offer"===e.type?i._updateSignalingState("have-local-offer"):i._updateSignalingState("stable"),Promise.resolve()},n.prototype.setRemoteDescription=function(n){var o=this;if(-1===["offer","answer"].indexOf(n.type))return Promise.reject($("TypeError",'Unsupported type "'+n.type+'"'));if(!U("setRemoteDescription",n.type,o.signalingState)||o._isClosed)return Promise.reject($("InvalidStateError","Can not set remote "+n.type+" in state "+o.signalingState));var s={};o.remoteStreams.forEach((function(e){s[e.id]=e}));var a=[],c=D.splitSections(n.sdp),d=c.shift(),u=D.matchPrefix(d,"a=ice-lite").length>0,l=D.matchPrefix(d,"a=group:BUNDLE ").length>0;o.usingBundle=l;var h=D.matchPrefix(d,"a=ice-options:")[0];return o.canTrickleIceCandidates=!!h&&h.substr(14).split(" ").indexOf("trickle")>=0,c.forEach((function(i,c){var h=D.splitLines(i),p=D.getKind(i),m=D.isRejected(i)&&0===D.matchPrefix(i,"a=bundle-only").length,_=h[0].substr(2).split(" ")[2],R=D.getDirection(i,d),C=D.parseMsid(i),f=D.getMid(i)||D.generateIdentifier();if(m||"application"===p&&("DTLS/SCTP"===_||"UDP/DTLS/SCTP"===_))o.transceivers[c]={mid:f,kind:p,protocol:_,rejected:!0};else{var v,T,g,S,I,E,y,k,b;!m&&o.transceivers[c]&&o.transceivers[c].rejected&&(o.transceivers[c]=o._createTransceiver(p,!0));var P,O,L=D.parseRtpParameters(i);m||(P=D.getIceParameters(i,d),(O=D.getDtlsParameters(i,d)).role="client"),y=D.parseRtpEncodingParameters(i);var N=D.parseRtcpParameters(i),A=D.matchPrefix(i,"a=end-of-candidates",d).length>0,M=D.matchPrefix(i,"a=candidate:").map((function(e){return D.parseCandidate(e)})).filter((function(e){return 1===e.component}));if(("offer"===n.type||"answer"===n.type)&&!m&&l&&c>0&&o.transceivers[c]&&(o._disposeIceAndDtlsTransports(c),o.transceivers[c].iceGatherer=o.transceivers[0].iceGatherer,o.transceivers[c].iceTransport=o.transceivers[0].iceTransport,o.transceivers[c].dtlsTransport=o.transceivers[0].dtlsTransport,o.transceivers[c].rtpSender&&o.transceivers[c].rtpSender.setTransport(o.transceivers[0].dtlsTransport),o.transceivers[c].rtpReceiver&&o.transceivers[c].rtpReceiver.setTransport(o.transceivers[0].dtlsTransport)),"offer"!==n.type||m){if("answer"===n.type&&!m){T=(v=o.transceivers[c]).iceGatherer,g=v.iceTransport,S=v.dtlsTransport,I=v.rtpReceiver,E=v.sendEncodingParameters,k=v.localCapabilities,o.transceivers[c].recvEncodingParameters=y,o.transceivers[c].remoteCapabilities=L,o.transceivers[c].rtcpParameters=N,M.length&&"new"===g.state&&(!u&&!A||l&&0!==c?M.forEach((function(e){w(v.iceTransport,e)})):g.setRemoteCandidates(M)),l&&0!==c||("new"===g.state&&g.start(T,P,"controlling"),"new"===S.state&&S.start(O)),!x(v.localCapabilities,v.remoteCapabilities).codecs.filter((function(e){return"rtx"===e.name.toLowerCase()})).length&&v.sendEncodingParameters[0].rtx&&delete v.sendEncodingParameters[0].rtx,o._transceive(v,"sendrecv"===R||"recvonly"===R,"sendrecv"===R||"sendonly"===R),!I||"sendrecv"!==R&&"sendonly"!==R?delete v.rtpReceiver:(b=I.track,C?(s[C.stream]||(s[C.stream]=new e.MediaStream),r(b,s[C.stream]),a.push([b,I,s[C.stream]])):(s.default||(s.default=new e.MediaStream),r(b,s.default),a.push([b,I,s.default])))}}else{(v=o.transceivers[c]||o._createTransceiver(p)).mid=f,v.iceGatherer||(v.iceGatherer=o._createIceGatherer(c,l)),M.length&&"new"===v.iceTransport.state&&(!A||l&&0!==c?M.forEach((function(e){w(v.iceTransport,e)})):v.iceTransport.setRemoteCandidates(M)),k=e.RTCRtpReceiver.getCapabilities(p),t<15019&&(k.codecs=k.codecs.filter((function(e){return"rtx"!==e.name}))),E=v.sendEncodingParameters||[{ssrc:1001*(2*c+2)}];var U,$=!1;if("sendrecv"===R||"sendonly"===R){if($=!v.rtpReceiver,I=v.rtpReceiver||new e.RTCRtpReceiver(v.dtlsTransport,p),$)b=I.track,C&&"-"===C.stream||(C?(s[C.stream]||(s[C.stream]=new e.MediaStream,Object.defineProperty(s[C.stream],"id",{get:function(){return C.stream}})),Object.defineProperty(b,"id",{get:function(){return C.track}}),U=s[C.stream]):(s.default||(s.default=new e.MediaStream),U=s.default)),U&&(r(b,U),v.associatedRemoteMediaStreams.push(U)),a.push([b,I,U])}else v.rtpReceiver&&v.rtpReceiver.track&&(v.associatedRemoteMediaStreams.forEach((function(t){var r=t.getTracks().find((function(e){return e.id===v.rtpReceiver.track.id}));r&&function(t,r){r.removeTrack(t),r.dispatchEvent(new e.MediaStreamTrackEvent("removetrack",{track:t}))}(r,t)})),v.associatedRemoteMediaStreams=[]);v.localCapabilities=k,v.remoteCapabilities=L,v.rtpReceiver=I,v.rtcpParameters=N,v.sendEncodingParameters=E,v.recvEncodingParameters=y,o._transceive(o.transceivers[c],!1,$)}}})),void 0===o._dtlsRole&&(o._dtlsRole="offer"===n.type?"active":"passive"),o._remoteDescription={type:n.type,sdp:n.sdp},"offer"===n.type?o._updateSignalingState("have-remote-offer"):o._updateSignalingState("stable"),Object.keys(s).forEach((function(t){var r=s[t];if(r.getTracks().length){if(-1===o.remoteStreams.indexOf(r)){o.remoteStreams.push(r);var n=new Event("addstream");n.stream=r,e.setTimeout((function(){o._dispatchEvent("addstream",n)}))}a.forEach((function(e){var t=e[0],n=e[1];r.id===e[2].id&&i(o,t,n,[r])}))}})),a.forEach((function(e){e[2]||i(o,e[0],e[1],[])})),e.setTimeout((function(){o&&o.transceivers&&o.transceivers.forEach((function(e){e.iceTransport&&"new"===e.iceTransport.state&&e.iceTransport.getRemoteCandidates().length>0&&(console.warn("Timeout for addRemoteCandidate. Consider sending an end-of-candidates notification"),e.iceTransport.addRemoteCandidate({}))}))}),4e3),Promise.resolve()},n.prototype.close=function(){this.transceivers.forEach((function(e){e.iceTransport&&e.iceTransport.stop(),e.dtlsTransport&&e.dtlsTransport.stop(),e.rtpSender&&e.rtpSender.stop(),e.rtpReceiver&&e.rtpReceiver.stop()})),this._isClosed=!0,this._updateSignalingState("closed")},n.prototype._updateSignalingState=function(e){this.signalingState=e;var t=new Event("signalingstatechange");this._dispatchEvent("signalingstatechange",t)},n.prototype._maybeFireNegotiationNeeded=function(){var t=this;"stable"===this.signalingState&&!0!==this.needNegotiation&&(this.needNegotiation=!0,e.setTimeout((function(){if(t.needNegotiation){t.needNegotiation=!1;var e=new Event("negotiationneeded");t._dispatchEvent("negotiationneeded",e)}}),0))},n.prototype._updateIceConnectionState=function(){var e,t={new:0,closed:0,checking:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach((function(e){e.iceTransport&&!e.rejected&&t[e.iceTransport.state]++})),e="new",t.failed>0?e="failed":t.checking>0?e="checking":t.disconnected>0?e="disconnected":t.new>0?e="new":t.connected>0?e="connected":t.completed>0&&(e="completed"),e!==this.iceConnectionState){this.iceConnectionState=e;var r=new Event("iceconnectionstatechange");this._dispatchEvent("iceconnectionstatechange",r)}},n.prototype._updateConnectionState=function(){var e,t={new:0,closed:0,connecting:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach((function(e){e.iceTransport&&e.dtlsTransport&&!e.rejected&&(t[e.iceTransport.state]++,t[e.dtlsTransport.state]++)})),t.connected+=t.completed,e="new",t.failed>0?e="failed":t.connecting>0?e="connecting":t.disconnected>0?e="disconnected":t.new>0?e="new":t.connected>0&&(e="connected"),e!==this.connectionState){this.connectionState=e;var r=new Event("connectionstatechange");this._dispatchEvent("connectionstatechange",r)}},n.prototype.createOffer=function(){var r=this;if(r._isClosed)return Promise.reject($("InvalidStateError","Can not call createOffer after close"));var i=r.transceivers.filter((function(e){return"audio"===e.kind})).length,n=r.transceivers.filter((function(e){return"video"===e.kind})).length,o=arguments[0];if(o){if(o.mandatory||o.optional)throw new TypeError("Legacy mandatory/optional constraints not supported.");void 0!==o.offerToReceiveAudio&&(i=!0===o.offerToReceiveAudio?1:!1===o.offerToReceiveAudio?0:o.offerToReceiveAudio),void 0!==o.offerToReceiveVideo&&(n=!0===o.offerToReceiveVideo?1:!1===o.offerToReceiveVideo?0:o.offerToReceiveVideo)}for(r.transceivers.forEach((function(e){"audio"===e.kind?--i<0&&(e.wantReceive=!1):"video"===e.kind&&--n<0&&(e.wantReceive=!1)}));i>0||n>0;)i>0&&(r._createTransceiver("audio"),i--),n>0&&(r._createTransceiver("video"),n--);var s=D.writeSessionBoilerplate(r._sdpSessionId,r._sdpSessionVersion++);r.transceivers.forEach((function(i,n){var o=i.track,s=i.kind,a=i.mid||D.generateIdentifier();i.mid=a,i.iceGatherer||(i.iceGatherer=r._createIceGatherer(n,r.usingBundle));var c=e.RTCRtpSender.getCapabilities(s);t<15019&&(c.codecs=c.codecs.filter((function(e){return"rtx"!==e.name}))),c.codecs.forEach((function(e){"H264"===e.name&&void 0===e.parameters["level-asymmetry-allowed"]&&(e.parameters["level-asymmetry-allowed"]="1"),i.remoteCapabilities&&i.remoteCapabilities.codecs&&i.remoteCapabilities.codecs.forEach((function(t){e.name.toLowerCase()===t.name.toLowerCase()&&e.clockRate===t.clockRate&&(e.preferredPayloadType=t.payloadType)}))})),c.headerExtensions.forEach((function(e){(i.remoteCapabilities&&i.remoteCapabilities.headerExtensions||[]).forEach((function(t){e.uri===t.uri&&(e.id=t.id)}))}));var d=i.sendEncodingParameters||[{ssrc:1001*(2*n+1)}];o&&t>=15019&&"video"===s&&!d[0].rtx&&(d[0].rtx={ssrc:d[0].ssrc+1}),i.wantReceive&&(i.rtpReceiver=new e.RTCRtpReceiver(i.dtlsTransport,s)),i.localCapabilities=c,i.sendEncodingParameters=d})),"max-compat"!==r._config.bundlePolicy&&(s+="a=group:BUNDLE "+r.transceivers.map((function(e){return e.mid})).join(" ")+"\r\n"),s+="a=ice-options:trickle\r\n",r.transceivers.forEach((function(e,t){s+=M(e,e.localCapabilities,"offer",e.stream,r._dtlsRole),s+="a=rtcp-rsize\r\n",!e.iceGatherer||"new"===r.iceGatheringState||0!==t&&r.usingBundle||(e.iceGatherer.getLocalCandidates().forEach((function(e){e.component=1,s+="a="+D.writeCandidate(e)+"\r\n"})),"completed"===e.iceGatherer.state&&(s+="a=end-of-candidates\r\n"))}));var a=new e.RTCSessionDescription({type:"offer",sdp:s});return Promise.resolve(a)},n.prototype.createAnswer=function(){var r=this;if(r._isClosed)return Promise.reject($("InvalidStateError","Can not call createAnswer after close"));if("have-remote-offer"!==r.signalingState&&"have-local-pranswer"!==r.signalingState)return Promise.reject($("InvalidStateError","Can not call createAnswer in signalingState "+r.signalingState));var i=D.writeSessionBoilerplate(r._sdpSessionId,r._sdpSessionVersion++);r.usingBundle&&(i+="a=group:BUNDLE "+r.transceivers.map((function(e){return e.mid})).join(" ")+"\r\n"),i+="a=ice-options:trickle\r\n";var n=D.getMediaSections(r._remoteDescription.sdp).length;r.transceivers.forEach((function(e,o){if(!(o+1>n)){if(e.rejected)return"application"===e.kind?"DTLS/SCTP"===e.protocol?i+="m=application 0 DTLS/SCTP 5000\r\n":i+="m=application 0 "+e.protocol+" webrtc-datachannel\r\n":"audio"===e.kind?i+="m=audio 0 UDP/TLS/RTP/SAVPF 0\r\na=rtpmap:0 PCMU/8000\r\n":"video"===e.kind&&(i+="m=video 0 UDP/TLS/RTP/SAVPF 120\r\na=rtpmap:120 VP8/90000\r\n"),void(i+="c=IN IP4 0.0.0.0\r\na=inactive\r\na=mid:"+e.mid+"\r\n");var s;if(e.stream)"audio"===e.kind?s=e.stream.getAudioTracks()[0]:"video"===e.kind&&(s=e.stream.getVideoTracks()[0]),s&&t>=15019&&"video"===e.kind&&!e.sendEncodingParameters[0].rtx&&(e.sendEncodingParameters[0].rtx={ssrc:e.sendEncodingParameters[0].ssrc+1});var a=x(e.localCapabilities,e.remoteCapabilities);!a.codecs.filter((function(e){return"rtx"===e.name.toLowerCase()})).length&&e.sendEncodingParameters[0].rtx&&delete e.sendEncodingParameters[0].rtx,i+=M(e,a,"answer",e.stream,r._dtlsRole),e.rtcpParameters&&e.rtcpParameters.reducedSize&&(i+="a=rtcp-rsize\r\n")}}));var o=new e.RTCSessionDescription({type:"answer",sdp:i});return Promise.resolve(o)},n.prototype.addIceCandidate=function(e){var t,r=this;return e&&void 0===e.sdpMLineIndex&&!e.sdpMid?Promise.reject(new TypeError("sdpMLineIndex or sdpMid required")):new Promise((function(i,n){if(!r._remoteDescription)return n($("InvalidStateError","Can not add ICE candidate without a remote description"));if(e&&""!==e.candidate){var o=e.sdpMLineIndex;if(e.sdpMid)for(var s=0;s<r.transceivers.length;s++)if(r.transceivers[s].mid===e.sdpMid){o=s;break}var a=r.transceivers[o];if(!a)return n($("OperationError","Can not add ICE candidate"));if(a.rejected)return i();var c=Object.keys(e.candidate).length>0?D.parseCandidate(e.candidate):{};if("tcp"===c.protocol&&(0===c.port||9===c.port))return i();if(c.component&&1!==c.component)return i();if((0===o||o>0&&a.iceTransport!==r.transceivers[0].iceTransport)&&!w(a.iceTransport,c))return n($("OperationError","Can not add ICE candidate"));var d=e.candidate.trim();0===d.indexOf("a=")&&(d=d.substr(2)),(t=D.getMediaSections(r._remoteDescription.sdp))[o]+="a="+(c.type?d:"end-of-candidates")+"\r\n",r._remoteDescription.sdp=D.getDescription(r._remoteDescription.sdp)+t.join("")}else for(var u=0;u<r.transceivers.length&&(r.transceivers[u].rejected||(r.transceivers[u].iceTransport.addRemoteCandidate({}),(t=D.getMediaSections(r._remoteDescription.sdp))[u]+="a=end-of-candidates\r\n",r._remoteDescription.sdp=D.getDescription(r._remoteDescription.sdp)+t.join(""),!r.usingBundle));u++);i()}))},n.prototype.getStats=function(t){if(t&&t instanceof e.MediaStreamTrack){var r=null;if(this.transceivers.forEach((function(e){e.rtpSender&&e.rtpSender.track===t?r=e.rtpSender:e.rtpReceiver&&e.rtpReceiver.track===t&&(r=e.rtpReceiver)})),!r)throw $("InvalidAccessError","Invalid selector.");return r.getStats()}var i=[];return this.transceivers.forEach((function(e){["rtpSender","rtpReceiver","iceGatherer","iceTransport","dtlsTransport"].forEach((function(t){e[t]&&i.push(e[t].getStats())}))})),Promise.all(i).then((function(e){var t=new Map;return e.forEach((function(e){e.forEach((function(e){t.set(e.id,e)}))})),t}))};["RTCRtpSender","RTCRtpReceiver","RTCIceGatherer","RTCIceTransport","RTCDtlsTransport"].forEach((function(t){var r=e[t];if(r&&r.prototype&&r.prototype.getStats){var i=r.prototype.getStats;r.prototype.getStats=function(){return i.apply(this).then((function(e){var t=new Map;return Object.keys(e).forEach((function(r){var i;e[r].type={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[(i=e[r]).type]||i.type,t.set(r,e[r])})),t}))}}}));var o=["createOffer","createAnswer"];return o.forEach((function(e){var t=n.prototype[e];n.prototype[e]=function(){var e=arguments;return"function"==typeof e[0]||"function"==typeof e[1]?t.apply(this,[arguments[2]]).then((function(t){"function"==typeof e[0]&&e[0].apply(null,[t])}),(function(t){"function"==typeof e[1]&&e[1].apply(null,[t])})):t.apply(this,arguments)}})),(o=["setLocalDescription","setRemoteDescription","addIceCandidate"]).forEach((function(e){var t=n.prototype[e];n.prototype[e]=function(){var e=arguments;return"function"==typeof e[1]||"function"==typeof e[2]?t.apply(this,arguments).then((function(){"function"==typeof e[1]&&e[1].apply(null)}),(function(t){"function"==typeof e[2]&&e[2].apply(null,[t])})):t.apply(this,arguments)}})),["getStats"].forEach((function(e){var t=n.prototype[e];n.prototype[e]=function(){var e=arguments;return"function"==typeof e[1]?t.apply(this,arguments).then((function(){"function"==typeof e[1]&&e[1].apply(null)})):t.apply(this,arguments)}})),n};function V(e){const t=e&&e.navigator,r=t.mediaDevices.getUserMedia.bind(t.mediaDevices);t.mediaDevices.getUserMedia=function(e){return r(e).catch((e=>Promise.reject(function(e){return{name:{PermissionDeniedError:"NotAllowedError"}[e.name]||e.name,message:e.message,constraint:e.constraint,toString(){return this.name}}}(e))))}}function H(e){"getDisplayMedia"in e.navigator&&e.navigator.mediaDevices&&(e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||(e.navigator.mediaDevices.getDisplayMedia=e.navigator.getDisplayMedia.bind(e.navigator)))}function B(e,t){if(e.RTCIceGatherer&&(e.RTCIceCandidate||(e.RTCIceCandidate=function(e){return e}),e.RTCSessionDescription||(e.RTCSessionDescription=function(e){return e}),t.version<15025)){const t=Object.getOwnPropertyDescriptor(e.MediaStreamTrack.prototype,"enabled");Object.defineProperty(e.MediaStreamTrack.prototype,"enabled",{set(e){t.set.call(this,e);const r=new Event("enabled");r.enabled=e,this.dispatchEvent(r)}})}e.RTCRtpSender&&!("dtmf"in e.RTCRtpSender.prototype)&&Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=new e.RTCDtmfSender(this):"video"===this.track.kind&&(this._dtmf=null)),this._dtmf}}),e.RTCDtmfSender&&!e.RTCDTMFSender&&(e.RTCDTMFSender=e.RTCDtmfSender);const r=j(e,t.version);e.RTCPeerConnection=function(e){return e&&e.iceServers&&(e.iceServers=function(e,t){let r=!1;return(e=JSON.parse(JSON.stringify(e))).filter((e=>{if(e&&(e.urls||e.url)){let t=e.urls||e.url;e.url&&!e.urls&&R("RTCIceServer.url","RTCIceServer.urls");const i="string"==typeof t;return i&&(t=[t]),t=t.filter((e=>{if(0===e.indexOf("stun:"))return!1;const t=e.startsWith("turn")&&!e.startsWith("turn:[")&&e.includes("transport=udp");return t&&!r?(r=!0,!0):t&&!r})),delete e.url,e.urls=i?t[0]:t,!!t.length}}))}(e.iceServers,t.version),_("ICE servers after filtering:",e.iceServers)),new r(e)},e.RTCPeerConnection.prototype=r.prototype}function F(e){e.RTCRtpSender&&!("replaceTrack"in e.RTCRtpSender.prototype)&&(e.RTCRtpSender.prototype.replaceTrack=e.RTCRtpSender.prototype.setTrack)}var K=Object.freeze({__proto__:null,shimPeerConnection:B,shimReplaceTrack:F,shimGetUserMedia:V,shimGetDisplayMedia:H});function G(e,t){const r=e&&e.navigator,i=e&&e.MediaStreamTrack;if(r.getUserMedia=function(e,t,i){R("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),r.mediaDevices.getUserMedia(e).then(t,i)},!(t.version>55&&"autoGainControl"in r.mediaDevices.getSupportedConstraints())){const e=function(e,t,r){t in e&&!(r in e)&&(e[r]=e[t],delete e[t])},t=r.mediaDevices.getUserMedia.bind(r.mediaDevices);if(r.mediaDevices.getUserMedia=function(r){return"object"==typeof r&&"object"==typeof r.audio&&(r=JSON.parse(JSON.stringify(r)),e(r.audio,"autoGainControl","mozAutoGainControl"),e(r.audio,"noiseSuppression","mozNoiseSuppression")),t(r)},i&&i.prototype.getSettings){const t=i.prototype.getSettings;i.prototype.getSettings=function(){const r=t.apply(this,arguments);return e(r,"mozAutoGainControl","autoGainControl"),e(r,"mozNoiseSuppression","noiseSuppression"),r}}if(i&&i.prototype.applyConstraints){const t=i.prototype.applyConstraints;i.prototype.applyConstraints=function(r){return"audio"===this.kind&&"object"==typeof r&&(r=JSON.parse(JSON.stringify(r)),e(r,"autoGainControl","mozAutoGainControl"),e(r,"noiseSuppression","mozNoiseSuppression")),t.apply(this,[r])}}}}function J(e){"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function W(e,t){if("object"!=typeof e||!e.RTCPeerConnection&&!e.mozRTCPeerConnection)return;!e.RTCPeerConnection&&e.mozRTCPeerConnection&&(e.RTCPeerConnection=e.mozRTCPeerConnection),t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){const r=e.RTCPeerConnection.prototype[t],i={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),r.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=i[t]}));const r={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},i=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){const[e,n,o]=arguments;return i.apply(this,[e||null]).then((e=>{if(t.version<53&&!n)try{e.forEach((e=>{e.type=r[e.type]||e.type}))}catch(t){if("TypeError"!==t.name)throw t;e.forEach(((t,i)=>{e.set(i,Object.assign({},t,{type:r[t.type]||t.type}))}))}return e})).then(n,o)}}function Y(e){if("object"!=typeof e||!e.RTCPeerConnection||!e.RTCRtpSender)return;if(e.RTCRtpSender&&"getStats"in e.RTCRtpSender.prototype)return;const t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e});const r=e.RTCPeerConnection.prototype.addTrack;r&&(e.RTCPeerConnection.prototype.addTrack=function(){const e=r.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function q(e){if("object"!=typeof e||!e.RTCPeerConnection||!e.RTCRtpSender)return;if(e.RTCRtpSender&&"getStats"in e.RTCRtpReceiver.prototype)return;const t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e}),h(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function z(e){e.RTCPeerConnection&&!("removeStream"in e.RTCPeerConnection.prototype)&&(e.RTCPeerConnection.prototype.removeStream=function(e){R("removeStream","removeTrack"),this.getSenders().forEach((t=>{t.track&&e.getTracks().includes(t.track)&&this.removeTrack(t)}))})}function Q(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)}function X(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.addTransceiver;t&&(e.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];const e=arguments[1],r=e&&"sendEncodings"in e;r&&e.sendEncodings.forEach((e=>{if("rid"in e){if(!/^[a-z0-9]{0,16}$/i.test(e.rid))throw new TypeError("Invalid RID value provided.")}if("scaleResolutionDownBy"in e&&!(parseFloat(e.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in e&&!(parseFloat(e.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")}));const i=t.apply(this,arguments);if(r){const{sender:t}=i,r=t.getParameters();(!("encodings"in r)||1===r.encodings.length&&0===Object.keys(r.encodings[0]).length)&&(r.encodings=e.sendEncodings,t.sendEncodings=e.sendEncodings,this.setParametersPromises.push(t.setParameters(r).then((()=>{delete t.sendEncodings})).catch((()=>{delete t.sendEncodings}))))}return i})}function Z(e){if("object"!=typeof e||!e.RTCRtpSender)return;const t=e.RTCRtpSender.prototype.getParameters;t&&(e.RTCRtpSender.prototype.getParameters=function(){const e=t.apply(this,arguments);return"encodings"in e||(e.encodings=[].concat(this.sendEncodings||[{}])),e})}function ee(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.createOffer;e.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 te(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.createAnswer;e.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 re=Object.freeze({__proto__:null,shimOnTrack:J,shimPeerConnection:W,shimSenderGetStats:Y,shimReceiverGetStats:q,shimRemoveStream:z,shimRTCDataChannel:Q,shimAddTransceiver:X,shimGetParameters:Z,shimCreateOffer:ee,shimCreateAnswer:te,shimGetUserMedia:G,shimGetDisplayMedia:function(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&(e.navigator.mediaDevices.getDisplayMedia=function(r){if(!r||!r.video){const e=new DOMException("getDisplayMedia without video constraints is undefined");return e.name="NotFoundError",e.code=8,Promise.reject(e)}return!0===r.video?r.video={mediaSource:t}:r.video.mediaSource=t,e.navigator.mediaDevices.getUserMedia(r)})}});function ie(e){if("object"==typeof e&&e.RTCPeerConnection){if("getLocalStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in e.RTCPeerConnection.prototype)){const t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addStream=function(e){this._localStreams||(this._localStreams=[]),this._localStreams.includes(e)||this._localStreams.push(e),e.getAudioTracks().forEach((r=>t.call(this,r,e))),e.getVideoTracks().forEach((r=>t.call(this,r,e)))},e.RTCPeerConnection.prototype.addTrack=function(e,...r){return r&&r.forEach((e=>{this._localStreams?this._localStreams.includes(e)||this._localStreams.push(e):this._localStreams=[e]})),t.apply(this,arguments)}}"removeStream"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.removeStream=function(e){this._localStreams||(this._localStreams=[]);const t=this._localStreams.indexOf(e);if(-1===t)return;this._localStreams.splice(t,1);const r=e.getTracks();this.getSenders().forEach((e=>{r.includes(e.track)&&this.removeTrack(e)}))})}}function ne(e){if("object"==typeof e&&e.RTCPeerConnection&&("getRemoteStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in e.RTCPeerConnection.prototype))){Object.defineProperty(e.RTCPeerConnection.prototype,"onaddstream",{get(){return this._onaddstream},set(e){this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=e),this.addEventListener("track",this._onaddstreampoly=e=>{e.streams.forEach((e=>{if(this._remoteStreams||(this._remoteStreams=[]),this._remoteStreams.includes(e))return;this._remoteStreams.push(e);const t=new Event("addstream");t.stream=e,this.dispatchEvent(t)}))})}});const t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){const e=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(t){t.streams.forEach((t=>{if(e._remoteStreams||(e._remoteStreams=[]),e._remoteStreams.indexOf(t)>=0)return;e._remoteStreams.push(t);const r=new Event("addstream");r.stream=t,e.dispatchEvent(r)}))}),t.apply(e,arguments)}}}function oe(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype,r=t.createOffer,i=t.createAnswer,n=t.setLocalDescription,o=t.setRemoteDescription,s=t.addIceCandidate;t.createOffer=function(e,t){const i=arguments.length>=2?arguments[2]:arguments[0],n=r.apply(this,[i]);return t?(n.then(e,t),Promise.resolve()):n},t.createAnswer=function(e,t){const r=arguments.length>=2?arguments[2]:arguments[0],n=i.apply(this,[r]);return t?(n.then(e,t),Promise.resolve()):n};let a=function(e,t,r){const i=n.apply(this,[e]);return r?(i.then(t,r),Promise.resolve()):i};t.setLocalDescription=a,a=function(e,t,r){const i=o.apply(this,[e]);return r?(i.then(t,r),Promise.resolve()):i},t.setRemoteDescription=a,a=function(e,t,r){const i=s.apply(this,[e]);return r?(i.then(t,r),Promise.resolve()):i},t.addIceCandidate=a}function se(e){const t=e&&e.navigator;if(t.mediaDevices&&t.mediaDevices.getUserMedia){const e=t.mediaDevices,r=e.getUserMedia.bind(e);t.mediaDevices.getUserMedia=e=>r(ae(e))}!t.getUserMedia&&t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=function(e,r,i){t.mediaDevices.getUserMedia(e).then(r,i)}.bind(t))}function ae(e){return e&&void 0!==e.video?Object.assign({},e,{video:f(e.video)}):e}function ce(e){if(!e.RTCPeerConnection)return;const t=e.RTCPeerConnection;e.RTCPeerConnection=function(e,r){if(e&&e.iceServers){const t=[];for(let r=0;r<e.iceServers.length;r++){let i=e.iceServers[r];!i.hasOwnProperty("urls")&&i.hasOwnProperty("url")?(R("RTCIceServer.url","RTCIceServer.urls"),i=JSON.parse(JSON.stringify(i)),i.urls=i.url,delete i.url,t.push(i)):t.push(e.iceServers[r])}e.iceServers=t}return new t(e,r)},e.RTCPeerConnection.prototype=t.prototype,"generateCertificate"in t&&Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:()=>t.generateCertificate})}function de(e){"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function ue(e){const t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(e){if(e){void 0!==e.offerToReceiveAudio&&(e.offerToReceiveAudio=!!e.offerToReceiveAudio);const t=this.getTransceivers().find((e=>"audio"===e.receiver.track.kind));!1===e.offerToReceiveAudio&&t?"sendrecv"===t.direction?t.setDirection?t.setDirection("sendonly"):t.direction="sendonly":"recvonly"===t.direction&&(t.setDirection?t.setDirection("inactive"):t.direction="inactive"):!0!==e.offerToReceiveAudio||t||this.addTransceiver("audio"),void 0!==e.offerToReceiveVideo&&(e.offerToReceiveVideo=!!e.offerToReceiveVideo);const r=this.getTransceivers().find((e=>"video"===e.receiver.track.kind));!1===e.offerToReceiveVideo&&r?"sendrecv"===r.direction?r.setDirection?r.setDirection("sendonly"):r.direction="sendonly":"recvonly"===r.direction&&(r.setDirection?r.setDirection("inactive"):r.direction="inactive"):!0!==e.offerToReceiveVideo||r||this.addTransceiver("video")}return t.apply(this,arguments)}}function le(e){"object"!=typeof e||e.AudioContext||(e.AudioContext=e.webkitAudioContext)}var he=Object.freeze({__proto__:null,shimLocalStreamsAPI:ie,shimRemoteStreamsAPI:ne,shimCallbacksAPI:oe,shimGetUserMedia:se,shimConstraints:ae,shimRTCIceServerUrls:ce,shimTrackEventTransceiver:de,shimCreateOfferLegacy:ue,shimAudioContext:le});function pe(e){if(!e.RTCIceCandidate||e.RTCIceCandidate&&"foundation"in e.RTCIceCandidate.prototype)return;const t=e.RTCIceCandidate;e.RTCIceCandidate=function(e){if("object"==typeof e&&e.candidate&&0===e.candidate.indexOf("a=")&&((e=JSON.parse(JSON.stringify(e))).candidate=e.candidate.substr(2)),e.candidate&&e.candidate.length){const r=new t(e),i=D.parseCandidate(e.candidate),n=Object.assign(r,i);return n.toJSON=function(){return{candidate:n.candidate,sdpMid:n.sdpMid,sdpMLineIndex:n.sdpMLineIndex,usernameFragment:n.usernameFragment}},n}return new t(e)},e.RTCIceCandidate.prototype=t.prototype,h(e,"icecandidate",(t=>(t.candidate&&Object.defineProperty(t,"candidate",{value:new e.RTCIceCandidate(t.candidate),writable:"false"}),t)))}function me(e,t){if(!e.RTCPeerConnection)return;"sctp"in e.RTCPeerConnection.prototype||Object.defineProperty(e.RTCPeerConnection.prototype,"sctp",{get(){return void 0===this._sctp?null:this._sctp}});const r=function(e){if(!e||!e.sdp)return!1;const t=D.splitSections(e.sdp);return t.shift(),t.some((e=>{const t=D.parseMLine(e);return t&&"application"===t.kind&&-1!==t.protocol.indexOf("SCTP")}))},i=function(e){const t=e.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(null===t||t.length<2)return-1;const r=parseInt(t[1],10);return r!=r?-1:r},n=function(e){let r=65536;return"firefox"===t.browser&&(r=t.version<57?-1===e?16384:2147483637:t.version<60?57===t.version?65535:65536:2147483637),r},o=function(e,r){let i=65536;"firefox"===t.browser&&57===t.version&&(i=65535);const n=D.matchPrefix(e.sdp,"a=max-message-size:");return n.length>0?i=parseInt(n[0].substr(19),10):"firefox"===t.browser&&-1!==r&&(i=2147483637),i},s=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,"chrome"===t.browser&&t.version>=76){const{sdpSemantics:e}=this.getConfiguration();"plan-b"===e&&Object.defineProperty(this,"sctp",{get(){return void 0===this._sctp?null:this._sctp},enumerable:!0,configurable:!0})}if(r(arguments[0])){const e=i(arguments[0]),t=n(e),r=o(arguments[0],e);let s;s=0===t&&0===r?Number.POSITIVE_INFINITY:0===t||0===r?Math.max(t,r):Math.min(t,r);const a={};Object.defineProperty(a,"maxMessageSize",{get:()=>s}),this._sctp=a}return s.apply(this,arguments)}}function _e(e){if(!e.RTCPeerConnection||!("createDataChannel"in e.RTCPeerConnection.prototype))return;function t(e,t){const r=e.send;e.send=function(){const i=arguments[0],n=i.length||i.size||i.byteLength;if("open"===e.readyState&&t.sctp&&n>t.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+t.sctp.maxMessageSize+" bytes)");return r.apply(e,arguments)}}const r=e.RTCPeerConnection.prototype.createDataChannel;e.RTCPeerConnection.prototype.createDataChannel=function(){const e=r.apply(this,arguments);return t(e,this),e},h(e,"datachannel",(e=>(t(e.channel,e.target),e)))}function Re(e){if(!e.RTCPeerConnection||"connectionState"in e.RTCPeerConnection.prototype)return;const t=e.RTCPeerConnection.prototype;Object.defineProperty(t,"connectionState",{get(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(t,"onconnectionstatechange",{get(){return this._onconnectionstatechange||null},set(e){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),e&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=e)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach((e=>{const r=t[e];t[e]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=e=>{const t=e.target;if(t._lastConnectionState!==t.connectionState){t._lastConnectionState=t.connectionState;const r=new Event("connectionstatechange",e);t.dispatchEvent(r)}return e},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),r.apply(this,arguments)}}))}function Ce(e,t){if(!e.RTCPeerConnection)return;if("chrome"===t.browser&&t.version>=71)return;if("safari"===t.browser&&t.version>=605)return;const r=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(t){if(t&&t.sdp&&-1!==t.sdp.indexOf("\na=extmap-allow-mixed")){const r=t.sdp.split("\n").filter((e=>"a=extmap-allow-mixed"!==e.trim())).join("\n");e.RTCSessionDescription&&t instanceof e.RTCSessionDescription?arguments[0]=new e.RTCSessionDescription({type:t.type,sdp:r}):t.sdp=r}return r.apply(this,arguments)}}function fe(e,t){if(!e.RTCPeerConnection||!e.RTCPeerConnection.prototype)return;const r=e.RTCPeerConnection.prototype.addIceCandidate;r&&0!==r.length&&(e.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?("chrome"===t.browser&&t.version<78||"firefox"===t.browser&&t.version<68||"safari"===t.browser)&&arguments[0]&&""===arguments[0].candidate?Promise.resolve():r.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}var ve=Object.freeze({__proto__:null,shimRTCIceCandidate:pe,shimMaxMessageSize:me,shimSendThrowTypeError:_e,shimConnectionState:Re,removeExtmapAllowMixed:Ce,shimAddIceCandidateNullOrEmpty:fe});const Te=function({window:e}={},t={shimChrome:!0,shimFirefox:!0,shimEdge:!0,shimSafari:!0}){const r=_,i=function(e){const t={browser:null,version:null};if(void 0===e||!e.navigator)return t.browser="Not a browser.",t;const{navigator:r}=e;if(r.mozGetUserMedia)t.browser="firefox",t.version=l(r.userAgent,/Firefox\/(\d+)\./,1);else if(r.webkitGetUserMedia||!1===e.isSecureContext&&e.webkitRTCPeerConnection&&!e.RTCIceGatherer)t.browser="chrome",t.version=l(r.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else if(r.mediaDevices&&r.userAgent.match(/Edge\/(\d+).(\d+)$/))t.browser="edge",t.version=l(r.userAgent,/Edge\/(\d+).(\d+)$/,2);else{if(!e.RTCPeerConnection||!r.userAgent.match(/AppleWebKit\/(\d+)\./))return t.browser="Not a supported browser.",t;t.browser="safari",t.version=l(r.userAgent,/AppleWebKit\/(\d+)\./,1),t.supportsUnifiedPlan=e.RTCRtpTransceiver&&"currentDirection"in e.RTCRtpTransceiver.prototype}return t}(e),n={browserDetails:i,commonShim:ve,extractVersion:l,disableLog:p,disableWarnings:m};switch(i.browser){case"chrome":if(!A||!L||!t.shimChrome)return r("Chrome shim is not included in this adapter release."),n;if(null===i.version)return r("Chrome shim can not determine version, not shimming."),n;r("adapter.js shimming chrome."),n.browserShim=A,fe(e,i),S(e,i),I(e),L(e,i),E(e),O(e,i),y(e),k(e),b(e),N(e,i),pe(e),Re(e),me(e,i),_e(e),Ce(e,i);break;case"firefox":if(!re||!W||!t.shimFirefox)return r("Firefox shim is not included in this adapter release."),n;r("adapter.js shimming firefox."),n.browserShim=re,fe(e,i),G(e,i),W(e,i),J(e),z(e),Y(e),q(e),Q(e),X(e),Z(e),ee(e),te(e),pe(e),Re(e),me(e,i),_e(e);break;case"edge":if(!K||!B||!t.shimEdge)return r("MS edge shim is not included in this adapter release."),n;r("adapter.js shimming edge."),n.browserShim=K,V(e),H(e),B(e,i),F(e),me(e,i),_e(e);break;case"safari":if(!he||!t.shimSafari)return r("Safari shim is not included in this adapter release."),n;r("adapter.js shimming safari."),n.browserShim=he,fe(e,i),ce(e),ue(e),oe(e),ie(e),ne(e),de(e),se(e),le(e),pe(e),me(e,i),_e(e),Ce(e,i);break;default:r("Unsupported browser!")}return n}({window:"undefined"==typeof window?void 0:window});var ge,Se,Ie;e.RCFrameRate=void 0,(ge=e.RCFrameRate||(e.RCFrameRate={})).FPS_10="FPS_10",ge.FPS_15="FPS_15",ge.FPS_24="FPS_24",ge.FPS_30="FPS_30",e.RCResolution=void 0,(Se=e.RCResolution||(e.RCResolution={})).W176_H132="W176_H132",Se.W176_H144="W176_H144",Se.W256_H144="W256_H144",Se.W320_H180="W320_H180",Se.W240_H240="W240_H240",Se.W320_H240="W320_H240",Se.W480_H360="W480_H360",Se.W640_H360="W640_H360",Se.W480_H480="W480_H480",Se.W640_H480="W640_H480",Se.W720_H480="W720_H480",Se.W1280_H720="W1280_H720",Se.W1920_H1080="W1920_H1080",e.RCMediaType=void 0,(Ie=e.RCMediaType||(e.RCMediaType={}))[Ie.AUDIO_ONLY=0]="AUDIO_ONLY",Ie[Ie.VIDEO_ONLY=1]="VIDEO_ONLY",Ie[Ie.AUDIO_VIDEO=2]="AUDIO_VIDEO";const Ee={[e.RCResolution.W176_H132]:{width:176,height:132,maxBitrate:150,minBitrate:80},[e.RCResolution.W176_H144]:{width:176,height:144,maxBitrate:160,minBitrate:80},[e.RCResolution.W256_H144]:{width:256,height:144,maxBitrate:240,minBitrate:120},[e.RCResolution.W320_H180]:{width:320,height:180,maxBitrate:280,minBitrate:120},[e.RCResolution.W240_H240]:{width:240,height:240,maxBitrate:280,minBitrate:120},[e.RCResolution.W320_H240]:{width:320,height:240,maxBitrate:400,minBitrate:120},[e.RCResolution.W480_H360]:{width:480,height:360,maxBitrate:650,minBitrate:150},[e.RCResolution.W640_H360]:{width:640,height:360,maxBitrate:800,minBitrate:180},[e.RCResolution.W480_H480]:{width:480,height:480,maxBitrate:800,minBitrate:180},[e.RCResolution.W640_H480]:{width:640,height:480,maxBitrate:900,minBitrate:200},[e.RCResolution.W720_H480]:{width:720,height:480,maxBitrate:1e3,minBitrate:200},[e.RCResolution.W1280_H720]:{width:1280,height:720,maxBitrate:2200,minBitrate:250},[e.RCResolution.W1920_H1080]:{width:1920,height:1080,maxBitrate:4e3,minBitrate:400}},ye=(e,t)=>{const r=e*t;let i=Number.MAX_VALUE,n=null;for(const e in Ee){const t=Ee[e],o=Math.abs(t.width*t.height-r);o<i&&(n=t,i=o)}return n},ke={10:1,15:1,24:1.5,30:1.5},be=e=>{let t=Number.MAX_VALUE,r=1;for(const i in ke){const n=Math.abs(e-parseInt(i));n<t&&(t=n,r=ke[i])}return r},Pe={getCameras:()=>r(void 0,void 0,void 0,(function*(){return(yield navigator.mediaDevices.enumerateDevices()).filter((e=>"videoinput"===e.kind))})),getMicrophones:()=>r(void 0,void 0,void 0,(function*(){return(yield navigator.mediaDevices.enumerateDevices()).filter((e=>"audioinput"===e.kind))})),getSpeakers:()=>r(void 0,void 0,void 0,(function*(){return(yield navigator.mediaDevices.enumerateDevices()).filter((e=>"audiooutput"===e.kind))}))};class Oe extends t.EventEmitter{constructor(e,t,r,i,n){super(),this._tag=e,this._userId=t,this._kind=r,this._isLocalTrack=i,this._roomId=n,this._localMuted=!1,this._remoteMuted=!1,this._streamId=[this._userId||this._roomId,this._tag].join("_"),this._id=[this._streamId,this.isAudioTrack()?0:1].join("_")}getStreamId(){return this._streamId}getTrackId(){return this._id}getUserId(){return this._userId}__innerGetMediaStreamTrack(){return this._msTrack}getTag(){return this._tag}isLocalTrack(){return this._isLocalTrack}isVideoTrack(){return"video"===this._kind}isAudioTrack(){return"audio"===this._kind}isReady(){var e;return"live"===(null===(e=this._msTrack)||void 0===e?void 0:e.readyState)}__innerSetMediaStreamTrack(e){this._msTrack=e,this._setLocalMuted(this._localMuted);const t=this._msStream=this._msStream||new MediaStream,r=t.getTracks()[0];r&&t.removeTrack(r),e?t.addTrack(e):this._element&&(this._element.pause(),this._element.srcObject=null)}_setLocalMuted(e){this._msTrack&&(this._msTrack.enabled=!e),this._localMuted=e}mute(){i.info(`set ${this._id} enabled: false`),this._setLocalMuted(!0)}unmute(){i.info(`set ${this._id} enabled: true`),this._setLocalMuted(!1)}isLocalMuted(){return this._localMuted}isMCUTrack(){return Boolean(this._roomId)}isOwnerMuted(){return this._remoteMuted}play(n,o){return r(this,void 0,void 0,(function*(){if(!this._msTrack)return i.warn(`the track is not ready to play -> id: ${this._id}`),{code:e.RCRTCCode.TRACK_NOT_READY};if("ended"===this._msTrack.readyState&&i.warn(`the track's readyState is 'ended' -> id: ${this._id}`),null==o?void 0:o.volume){if(!t.isNumber(null==o?void 0:o.volume))return i.error(`${null==o?void 0:o.volume} is not a number, the valid range of options.volume is 0-100`),{code:e.RCRTCCode.PARAMS_ERROR};(null==o?void 0:o.volume)<0&&(o.volume=0,i.warn("the valid range of options.volume is 0-100, the value of volume has been set 0")),(null==o?void 0:o.volume)>100&&(o.volume=100,i.warn("the valid range of options.volume is 0-100, the value of volume has been set 100"))}if(null==o?void 0:o.audioDeviceId){if(!(yield Pe.getSpeakers()).map((e=>e.deviceId)).includes(o.audioDeviceId))return i.error(`the options.audioDeviceId is invalid --\x3e ${o.audioDeviceId}`),{code:e.RCRTCCode.PARAMS_ERROR}}const r=this.isVideoTrack();if(r&&(!n||!(n instanceof HTMLVideoElement)))return i.error(`the video track need an <video> to play -> id: ${this._id}`),{code:e.RCRTCCode.VIDEO_TRACK_MISS_MEDIA_ELEMENT};this._element=r?n:this._element||new Audio,this._localMuted&&this._setLocalMuted(!1),this._element.srcObject&&this._element.srcObject===this._msStream||this._element.pause(),this._element.onloadstart=e=>{var t;i.debug(`HTMLMediaElement onloadstart -> id: ${null===(t=e.target)||void 0===t?void 0:t.id}, trackId: ${this._id}`)},this._element.ondurationchange=e=>{var t;i.debug(`HTMLMediaElement ondurationchange -> id: ${null===(t=e.target)||void 0===t?void 0:t.id}, trackId: ${this._id}`)},this._element.onloadedmetadata=e=>{var t;i.debug(`HTMLMediaElement onloadedmetadata -> id: ${null===(t=e.target)||void 0===t?void 0:t.id}, trackId: ${this._id}`)},this._element.onloadeddata=e=>{var t;i.debug(`HTMLMediaElement onloadeddata -> id: ${null===(t=e.target)||void 0===t?void 0:t.id}, trackId: ${this._id}`)},this._element.onabort=e=>{var t;i.info(`HTMLMediaElement onabort -> id: ${null===(t=e.target)||void 0===t?void 0:t.id}, trackId: ${this._id}`)},this._element.oncanplay=e=>{var t;i.info(`HTMLMediaElement oncanplay -> id: ${null===(t=e.target)||void 0===t?void 0:t.id}, trackId: ${this._id}`)},this._element.onvolumechange=e=>{var t;const r=Math.floor(100*(null===(t=e.target)||void 0===t?void 0:t.volume));i.info(`HTMLMediaElement onvolumechange -> volume: ${r}, trackId: ${this._id}`)},this._element.srcObject=this._msStream,this._element.autoplay=!0,r&&(this._element.playsInline=!0,this._element.x5PlaysInline=!0,this._element.webkitPlaysInline=!0),r||!(null==o?void 0:o.volume)&&0!==(null==o?void 0:o.volume)||(this._element.volume=(null==o?void 0:o.volume)/100);try{(null==o?void 0:o.audioDeviceId)&&!r?yield this._element.setSinkId(o.audioDeviceId):this._element.play()}catch(t){return"No permission to use requested device"===t.message?(i.error(`setSinkId failed -> ${t.message}`),{code:e.RCRTCCode.NO_PERMISSION_TO_USE_REQUESTED_DEVICE}):(i.error(t),{code:e.RCRTCCode.TRACK_PLAY_ERROR})}return{code:e.RCRTCCode.SUCCESS}}))}__innerDestroy(){this.__innerSetMediaStreamTrack(void 0)}__releaseMediaElement(){this._element&&(this._element.remove(),this._element.srcObject=null)}}class Le extends Oe{constructor(e,t,r,i){super(e,t,r,!0),this._isPublished=!1,this.__innerSetMediaStreamTrack(i),i.onended=()=>{i.onended=null,this.emit(Le.EVENT_LOCAL_TRACK_END,this),this.removeAll(Le.EVENT_LOCAL_TRACK_END)}}_setLocalMuted(e){const t=this._localMuted!==e;super._setLocalMuted(e),this._remoteMuted=this._localMuted,t&&this.emit(Le.__INNER_EVENT_MUTED_CHANGE__,this)}__innerSetPublished(e){this._isPublished=e}isPublished(){return this._isPublished}destroy(){var e;i.info(`track is destroyed -> trackId: ${this.getTrackId()}`),null===(e=this._msTrack)||void 0===e||e.stop(),super.__innerDestroy(),this.isAudioTrack()&&super.__releaseMediaElement(),this.emit(Le.__INNER_EVENT_DESTROY__,this)}setBitrate(e=0,r=0,n=0){!t.isNumber(e)||!t.isNumber(r)||!t.isNumber(n)||e<=0||r<=0||e<r?i.error("setBitrate params error ->"):this._bitrateInfo={max:e,min:r,start:n}}getBitrate(){var e,t;const{min:r,max:i}=this._msTrack?Ye(this._msTrack):{min:0,max:0};return{min:(null===(e=this._bitrateInfo)||void 0===e?void 0:e.min)||r,max:(null===(t=this._bitrateInfo)||void 0===t?void 0:t.max)||i}}}Le.EVENT_LOCAL_TRACK_END="local-track-end",Le.__INNER_EVENT_MUTED_CHANGE__="inner-muted-change",Le.__INNER_EVENT_DESTROY__="inner-destroy";class Ne extends Le{constructor(e,t,r){super(e,t,"audio",r)}setBitrate(e,t,r){i.warn("`setBitrate` invalid for audio track")}getBitrate(){return{start:32,max:32,min:32}}}class Ae extends Le{constructor(e,t,r,i=!1){super(e,t,"video",r),this._isTiny=i}__isTiny(){return this._isTiny}getStreamId(){const e=super.getStreamId();return this._isTiny?`${e}_tiny`:e}getTrackId(){const e=super.getTrackId();return this._isTiny?`${e}_tiny`:e}}class De extends Le{constructor(e,t,r,i,n){super(e,t,r,i),this._resource=n,De.__innerSetMapping(this.getTrackId(),n)}static __innerSetMapping(e,t){const r=this._mapping.get(t)||[];r.push(e),this._mapping.set(t,r)}static __innerRemoveMapping(e,t){var r,i;const n=null===(r=this._mapping.get(t))||void 0===r?void 0:r.filter((t=>t!==e));n&&n.length>0?this._mapping.set(t,n):(this._mapping.delete(t),t.pause(),t.src="",null===(i=t.parentNode)||void 0===i||i.removeChild(t))}destroy(){this.isAudioTrack()&&this.mute(),De.__innerRemoveMapping(this.getTrackId(),this._resource),super.destroy()}}De._mapping=new Map;class Me extends De{constructor(e,t,r,i){super(e,t,"video",r,i)}}class xe extends De{constructor(e,t,r,i){super(e,t,"audio",r,i)}_setLocalMuted(e){this._resource&&(this._resource.muted=e),super._setLocalMuted(e)}play(){return this._setLocalMuted(!1),Promise.resolve({code:e.RCRTCCode.SUCCESS})}}class Ue extends Ne{}class we extends Ae{}class $e extends Ae{}class je extends Oe{constructor(e,t,r,i){super(e,t,r,!1,i),this._isSubscribed=!1}__innerSetRemoteMuted(e){this._remoteMuted=e}__innerSetSubscribed(e){this._isSubscribed=e}isSubscribed(){return this._isSubscribed}}class Ve extends je{constructor(e,t,r){super(e,t,"audio",r)}}class He extends je{constructor(e,t,r){super(e,t,"video",r)}}const Be=(e,t)=>({name:e,content:JSON.stringify({uris:t,ignore:!0})}),Fe=e=>JSON.stringify(e),Ke=e=>/^[a-zA-Z\d-=]+$/g.test(e),Ge="http:"!==location.protocol||["localhost","127.0.0.1"].includes(location.hostname),Je=e=>{if(void 0===e)return 0;if(t.isNumber(e))return e;const r=e;return r.exact||r.ideal||r.max||0},We=e=>{const t=e.getConstraints();return{width:Je(t.width),height:Je(t.height),frameRate:Je(t.frameRate)}},Ye=e=>{const{width:t,height:r,frameRate:i}=We(e),n=ye(t,r),o=be(i);return{min:n.minBitrate*o,max:n.maxBitrate*o}},qe=e=>[e.msid,e.mediaType].join("_"),ze=e=>{const t=e.split("_");return{mediaType:parseInt(t.pop()),tag:t.pop(),userId:t.join("_")}},Qe=(e,t)=>[e,t].join("_"),Xe=e=>e.map((e=>Object.assign({},e))),Ze=(e,t,r=!1)=>{e=e.slice();const i=[],n=[],o=[];return t.forEach((t=>{const n=qe(t);let s=e.findIndex((e=>qe(e)===n));if(r&&(s=e.findIndex((e=>e.uri===t.uri))),-1===s)return void i.push(t);const a=e[s];a.uri!==t.uri?i.push(t):a.state!==t.state&&o.push(t),e.splice(s,1)})),n.push(...e),{publishedList:i,unpublishedList:n,modifiedList:o}},et=()=>{let e="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}));return e=e.replace(/-/g,"")+"0",e=parseInt(e,16),e=(e=>{const t="0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ+/".split(""),r=t.length+1;let i=+e;const n=[];do{const e=i%r;i=(i-e)/r,n.unshift(t[e])}while(i);return n.join("")})(e),e.length>22&&(e=e.slice(0,22)),e},tt=e=>{const[t,r]=e.split("_").map((e=>parseInt(e.replace(/[^\d]/g,""))));return{width:t,height:r}},rt=t=>!!e.RCResolution[t],it=t=>!!e.RCFrameRate[t],nt=e=>parseInt(e.replace("FPS_","")),ot=(()=>{const{browser:e,version:t,supportsUnifiedPlan:r}=Te.browserDetails;return{browser:e,version:t,supportsUnifiedPlan:!1!==r}})();function st(){return"captureStream"in HTMLMediaElement.prototype||"mozCaptureStream"in HTMLMediaElement.prototype}function at(){return"mediaDevices"in navigator&&"getDisplayMedia"in navigator.mediaDevices}const ct=e=>"[object Null]"===Object.prototype.toString.call(e),dt=e=>1===e.type,ut=(e,t)=>{const r={},n=Object.keys(e.users);return n.length&&n.forEach((n=>{const o=[],s=e.users[n];if(s.extra){const e=JSON.parse(s.extra).roomId;if(t!==e)return}if(s.uris)try{o.push(...JSON.parse(s.uris))}catch(e){i.warn(`invalid user data -> userId: ${n}, userData: ${s}`)}r[n]=o})),r};var lt,ht;!function(e){e.PUBLISH="RCRTC:PublishResource",e.UNPUBLISH="RCRTC:UnpublishResource",e.MODIFY="RCRTC:ModifyResource",e.TOTAL_CONTENT_RESOURCE="RCRTC:TotalContentResources",e.STATE="RCRTC:state",e.ROOM_NOTIFY="RCRTC:RoomNtf",e.USER_NOTIFY="RCRTC:UserNtf",e.KICK="RCRTC:kick",e.PK_INVITE="RCRTC:invite",e.PK_INVITE_TIMEOUT="RCRTC:inviteTimeout",e.PK_CANCEL_INVITE="RCRTC:cancelInvite",e.PK_INVITE_ANSWER="RCRTC:answerInvite",e.PK_END="RCRTC:endInvite",e.OTHER_ROOM_OFFLINE="RCRTC:otherRoomOffline"}(lt||(lt={})),e.RCRTCPingResult=void 0,(ht=e.RCRTCPingResult||(e.RCRTCPingResult={})).SUCCESS="Success",ht.FAIL="Fail";class pt{constructor(e,t,r,i=1e4){this._roomId=e,this._roomMode=t,this._context=r,this._gap=i,this._latestTimestamp=Date.now(),this._timer=null}start(){return r(this,void 0,void 0,(function*(){this._timer||(this._timer=setInterval(this._loop.bind(this),this._gap))}))}_loop(){var n,o,s;return r(this,void 0,void 0,(function*(){const r=yield new Promise((e=>{this._context.rtcPing(this._roomId,this._roomMode).then(e).catch((r=>{i.error(`rtcping receive unknown error -> ${r}`),e(t.ErrorCode.UNKNOWN)})),setTimeout(e,1e4,t.ErrorCode.TIMEOUT)})),a=Date.now();if(r===t.ErrorCode.SUCCESS)return this._latestTimestamp=a,void(null===(n=this.onPingResult)||void 0===n||n.call(this,e.RCRTCPingResult.SUCCESS));null===(o=this.onPingResult)||void 0===o||o.call(this,e.RCRTCPingResult.FAIL),i.warn(`rtcping failed -> code: ${r}`),(40003===r||a-this._latestTimestamp>6e4)&&(this.stop(),null===(s=this.onFailed)||void 0===s||s.call(this,40003===r))}))}stop(){this._timer&&(clearInterval(this._timer),this._timer=null)}}var mt;!function(e){e[e.NORMAL=1]="NORMAL",e[e.TINY=2]="TINY"}(mt||(mt={}));const _t=-1,Rt=(e,t)=>Math.round(8*t/e),Ct=(e,t=2)=>{const r=10**t;return Math.round(e*r)/r},ft=(e,t=2)=>{e>1&&(e/=32767);const r=10**t;return Math.ceil(e*r)},vt=(e,t,r,i)=>{if(0===t)return 0;if(!r||!i)return Ct(e/t,3);const n=t-i;if(0===n)return 0;const o=e-r;return o<0||n<0?0:Ct(o/n,3)},Tt=e=>{const{jitter:t,rtt:r,packetsLostRate:i}=e;return!ct(t)||!ct(r)||0!==i};class gt{constructor(e,t){this._rtcPeerConn=e,this._sdpSemantics=t,this._latestPacketsSent={},this._latestBytesSent={},this._latestBytesRecv={},this._latestPacketsRecv={}}updateBytesSent(e,t,r){let i,n;if(this._latestBytesSent[e]&&t<this._latestBytesSent[e].bytesSent&&this.clearLatestpacketsSent([e]),this._latestBytesSent[e]){const{bytesSent:o,timestamp:s}=this._latestBytesSent[e];i=t-o,n=r-s,this._latestBytesSent[e]={bytesSent:t,timestamp:r}}else i=t,n=1e3,this._latestBytesSent[e]={bytesSent:t,timestamp:r};return Rt(n,i)}updateBytesRecv(e,t,r){let i,n;if(this._latestBytesRecv[e]&&t<this._latestBytesRecv[e].bytesRecv&&this.clearLatestPacketsRecv([e]),this._latestBytesRecv[e]){const{bytesRecv:o,timestamp:s}=this._latestBytesRecv[e];i=t-o,n=r-s,this._latestBytesRecv[e]={bytesRecv:t,timestamp:r}}else i=t,n=1e3,this._latestBytesRecv[e]={bytesRecv:t,timestamp:r};return Rt(n,i)}updateSenderPacketsLost(e,t,r){let i;if(Object.prototype.hasOwnProperty.call(this._latestPacketsSent[e],"packetsSent")){const{packetsLost:n,packetsSent:o}=this._latestPacketsSent[e];i=vt(t,r,n,o),this._latestPacketsSent[e].packetsLost=t,this._latestPacketsSent[e].packetsSent=n===t?o:r}else i=vt(t,r),this._latestPacketsSent[e].packetsLost=t,this._latestPacketsSent[e].packetsSent=r;return i}updateReceiverPacketsLost(e,t,r){let i;if(this._latestPacketsRecv[e]){const{packetsLost:n,packetsRecv:o}=this._latestPacketsRecv[e];i=vt(t,r+t,n,o+n)}else i=vt(t,r);return this._latestPacketsRecv[e]={packetsLost:t,packetsRecv:r},i}clearLatestpacketsSent(t){t.forEach((t=>{if(parseInt(t.split("_").pop())===e.RCMediaType.VIDEO_ONLY){const e=`${t}_tiny`;delete this._latestPacketsSent[e],delete this._latestBytesSent[e]}delete this._latestPacketsSent[t],delete this._latestBytesSent[t]}))}clearLatestPacketsRecv(e){e.forEach((e=>{delete this._latestPacketsRecv[e],delete this._latestBytesRecv[e]}))}parseRTCStatsReport(e){const t=e.keys(),r={};let i=t.next();for(;!i.done;){const n=i.value,o=e.get(n);/^RTCCodec_/.test(n)||(r[n]=o),i=t.next()}return r}formatRCRTCStateReport(e){return{senders:[],receivers:[]}}getAudioLevelList(e){return[]}getResourceIdByParseSdp(e){var t,r;const i=e.ssrc,n=e.kind||e.mediaType,o=null===(t=this._rtcPeerConn.currentLocalDescription)||void 0===t?void 0:t.sdp,s=null===(r=this._rtcPeerConn.currentRemoteDescription)||void 0===r?void 0:r.sdp;let a;a="unified-plan"===this._sdpSemantics?new RegExp("a=msid:(.*?) "):new RegExp(`a=ssrc:${i} msid:(.*?) `);const c=null==o?void 0:o.split("\r\nm="),d=null==c?void 0:c.filter((e=>e.includes(`a=ssrc:${i}`)))[0],u=null==d?void 0:d.match(a);let l=u?u[1]:"";if(l)return`${l}_${"video"===n?1:0}`;const h=null==s?void 0:s.split("\r\nm="),p=null==h?void 0:h.filter((e=>e.includes(`a=ssrc:${i}`)))[0],m=null==p?void 0:p.match(a);return l=m?m[1]:"",`${l}_${"video"===n?1:0}`}isValidSender(e){var t;const r=null===(t=this._rtcPeerConn.currentLocalDescription)||void 0===t?void 0:t.sdp,{ssrc:i}=e;return!(null==r?void 0:r.split("\r\nm=").some((e=>e.includes(i)&&e.includes("a=inactive"))))}isValidReceiver(e){var t;const r=null===(t=this._rtcPeerConn.currentRemoteDescription)||void 0===t?void 0:t.sdp,{ssrc:i}=e;return!(null==r?void 0:r.split("\r\nm=").some((e=>e.includes(i)&&e.includes("a=inactive"))))}}class St extends gt{formatRCRTCStateReport(e){const t={senders:[],receivers:[]},r=Math.floor(e.RTCPeerConnection.timestamp);t.timestamp=r;const i=Object.keys(e);let n=0,o=0;i.filter((e=>/^RTCOutboundRTP(Video|Audio)Stream_/.test(e))).forEach((i=>{const s=e[i];if("unified-plan"===this._sdpSemantics&&!this.isValidSender(s))return;const{id:a,kind:c,transportId:d,mediaSourceId:u,remoteId:l,packetsSent:h,bytesSent:p,trackId:m,encoderImplementation:_,pliCount:R,nackCount:C,firCount:f}=s;if(!m)return;let{framesPerSecond:v,frameWidth:T,frameHeight:g}=s;"video"!==c||T||g||v||(T=e[m].frameWidth,g=e[m].frameHeight,v=u?e[u].framesPerSecond:null);const S=e[l];let I=null,E=null,y=0;S&&(I=S.jitter,E=S.roundTripTime,y=S.packetsLost),n+=y;const k=this.getResourceIdByParseSdp(s),b=u?e[u].audioLevel:e[m].audioLevel;let P=null;!this._latestPacketsSent[k]&&(this._latestPacketsSent[k]={}),S?P=this.updateSenderPacketsLost(k,y,h):this._latestPacketsSent[k].crtPacketsSent=h;let O=this.updateBytesSent(k,p,r);O<0&&(O=0),o+=O,t.senders.push({id:a,trackId:k,kind:c,packetsLostRate:P,remoteResource:!1,audioLevel:b||0===b?ft(b):null,frameWidth:T,frameHeight:g,frameRate:v,bitrate:O,jitter:I?Math.round(1e3*I):I,rtt:E,encoderImplementation:_,pliCount:R,nackCount:C,googFirsSent:_t,samplingRate:_t,googRenderDelayMs:_t,trackState:_t})}));i.filter((e=>/RTCRemoteInboundRtp(Video|Audio)Stream_/.test(e))).forEach((r=>{const{localId:i,jitter:n,roundTripTime:o,packetsLost:s}=e[r],a=t.senders.filter((e=>e.id===i))[0];if(a&&!Tt(a)){const t=this.getResourceIdByParseSdp(e[a.id]);a.jitter=Math.round(1e3*n),a.rtt=o;const r=this._latestPacketsSent[t].crtPacketsSent;a.packetsLostRate=this.updateSenderPacketsLost(t,s,r)}}));let s=0;i.filter((e=>/^RTCInboundRTP(Video|Audio)Stream_/.test(e))).forEach((i=>{const o=e[i];if("unified-plan"===this._sdpSemantics&&!this.isValidReceiver(o))return;const{trackId:a,packetsLost:c,packetsReceived:d,jitter:u,bytesReceived:l,framesPerSecond:h,kind:p,codecImplementationName:m,nackCount:_,pliCount:R}=o;if(!a)return;let{frameWidth:C,frameHeight:f,audioLevel:v}=o;"video"===p?C||f||(C=e[a].frameWidth,f=e[a].frameHeight):v||(v=e[a].audioLevel),n+=c;const T=this.getResourceIdByParseSdp(o),g=this.updateReceiverPacketsLost(T,c,d);let S=this.updateBytesRecv(T,l,r);S<0&&(S=0),s+=S,t.receivers.push({trackId:T,kind:p,packetsLostRate:g,remoteResource:!0,audioLevel:v||0===v?ft(v):null,frameWidth:C,frameHeight:f,frameRate:h,bitrate:S,jitter:u?Math.round(1e3*u):0,codecImplementationName:m,nackCount:_,pliCount:R,rtt:null,samplingRate:_t,googFirsReceived:_t,googRenderDelayMs:_t,trackState:_t})}));const a=i.filter((e=>/^RTCTransport_/.test(e)))[0];if(a){const r=e[a],{selectedCandidatePairId:i}=r;if(i){const r=e[i],{availableOutgoingBitrate:a,availableIncomingBitrate:c,currentRoundTripTime:d,localCandidateId:u,remoteCandidateId:l}=r,h=e[u],{ip:p,port:m,networkType:_}=h,R=e[l],{ip:C,port:f,protocol:v}=R;t.iceCandidatePair={IP:p,port:m,networkType:_,remoteIP:C,remotePort:f,protocol:v,bitrateRecv:s,bitrateSend:o,rtt:1e3*d,availableOutgoingBitrate:a,availableIncomingBitrate:c,totalPacketsLost:n},t.receivers.forEach((e=>{e.rtt=d}))}}return t}getAudioLevelList(e){const t=[],r=Object.keys(e);r.filter((e=>/^RTCOutboundRTPAudioStream_/.test(e))).forEach((r=>{var i;const n=e[r];if("unified-plan"===this._sdpSemantics&&!this.isValidSender(n))return;const{mediaSourceId:o,trackId:s}=n,a=this.getResourceIdByParseSdp(n),c=o&&e[o]?e[o].audioLevel:(null===(i=e[s])||void 0===i?void 0:i.audioLevel)||null;t.push({trackId:a,audioLevel:c||0===c?ft(c):null})}));return r.filter((e=>/^RTCInboundRTPAudioStream_/.test(e))).forEach((r=>{const i=e[r];if("unified-plan"===this._sdpSemantics&&!this.isValidReceiver(i))return;const{trackId:n}=i,o=i.audioLevel||e[n].audioLevel,s=this.getResourceIdByParseSdp(i);t.push({trackId:s,audioLevel:o||0===o?ft(o):null})})),t}}class It extends gt{formatRCRTCStateReport(e){const t=+new Date,r={senders:[],receivers:[],timestamp:t};let i=0,n=0,o=0;for(const s in e){const a=e[s],c=a.type;if("outbound-rtp"===c){if("unified-plan"===this._sdpSemantics&&!this.isValidSender(a))continue;const{id:o,kind:s,bytesSent:c,packetsSent:d,bitrateMean:u,framerateMean:l,nackCount:h,pliCount:p,remoteId:m}=a,{jitter:_,roundTripTime:R,packetsLost:C}=m?e[m]:{jitter:null,roundTripTime:null,packetsLost:0},f=this.getResourceIdByParseSdp(a);i+=C;let v=null;!this._latestPacketsSent[f]&&(this._latestPacketsSent[f]={}),m?v=this.updateSenderPacketsLost(f,C,d):this._latestPacketsSent[f].crtPacketsSent=d;let T=0;"video"===s?u&&(T=Math.floor(u/1e3)):T=this.updateBytesSent(f,c,t),T<0&&(T=0),n+=T,r.senders.push({trackId:f,kind:s,packetsLostRate:v,remoteResource:!1,audioLevel:null,frameWidth:null,frameHeight:null,frameRate:Math.floor(l),bitrate:T,jitter:_?Math.round(1e3*_):null,rtt:R,encoderImplementation:null,pliCount:p,nackCount:h,googFirsSent:_t,samplingRate:_t,googRenderDelayMs:_t,trackState:_t})}if("remote-inbound-rtp"===c){const{localId:t}=a,i=this.getResourceIdByParseSdp(e[t]),n=r.senders.filter((e=>e.trackId===i))[0];n&&Tt(n)&&(n.jitter=Math.round(1e3*a.jitter),n.rtt=a.rtt,n.packetsLostRate=this.updateSenderPacketsLost(i,a.packetsLost,this._latestPacketsSent[i].crtPacketsSent))}if("inbound-rtp"===c){if("unified-plan"===this._sdpSemantics&&!this.isValidReceiver(a))continue;const{id:e,packetsLost:n,bytesReceived:s,packetsReceived:c,jitter:d,framerateMean:u,kind:l,bitrateMean:h,nackCount:p,pliCount:m}=a,_=this.getResourceIdByParseSdp(a);i+=n;const R=this.updateReceiverPacketsLost(_,n,c);let C=0;"video"===l?h&&(C=Math.floor(h/1e3)):C=this.updateBytesRecv(_,s,t),C<0&&(C=0),o+=C,r.receivers.push({trackId:_,kind:l,packetsLostRate:R,remoteResource:!0,audioLevel:null,frameWidth:null,frameHeight:null,frameRate:Math.floor(u),bitrate:C,jitter:d?Math.round(1e3*d):null,codecImplementationName:null,nackCount:p,pliCount:m,rtt:null,samplingRate:_t,googFirsReceived:_t,googRenderDelayMs:_t,trackState:_t})}if("candidate-pair"===c&&"succeeded"===a.state){const t=e[a.localCandidateId],{address:s,port:c}=t,d=e[a.remoteCandidateId],{address:u,port:l,protocol:h}=d;r.iceCandidatePair={IP:s,port:c,networkType:null,remoteIP:u,remotePort:l,protocol:h,bitrateRecv:o,bitrateSend:n,rtt:null,availableOutgoingBitrate:null,availableIncomingBitrate:null,totalPacketsLost:i}}}return r.iceCandidatePair&&(r.iceCandidatePair.bitrateSend=n),r.iceCandidatePair&&(r.iceCandidatePair.bitrateRecv=o),r}getAudioLevelList(e){const t=[];for(const r in e){const i=e[r],n=i.type;if("outbound-rtp"===n){if("unified-plan"===this._sdpSemantics&&!this.isValidSender(i))continue;const{kind:e}=i;if("video"===e)continue;const r=this.getResourceIdByParseSdp(i);t.push({trackId:r,audioLevel:null})}if("inbound-rtp"===n){if("unified-plan"===this._sdpSemantics&&!this.isValidReceiver(i))continue;const{kind:e}=i;if("video"===e)continue;const r=this.getResourceIdByParseSdp(i);t.push({trackId:r,audioLevel:null})}}return t}}class Et extends gt{formatRCRTCStateReport(e){const t={senders:[],receivers:[]},r=Math.floor(e.RTCPeerConnection.timestamp);t.timestamp=r;const i=Object.keys(e);let n=0,o=0;i.filter((e=>/^RTCOutboundRTP(Video|Audio)Stream_/.test(e))).forEach((i=>{const n=e[i];if("unified-plan"===this._sdpSemantics&&!this.isValidSender(n))return;const s=this.getResourceIdByParseSdp(n),{mediaType:a,transportId:c,remoteId:d,packetsSent:u,bytesSent:l,trackId:h,encoderImplementation:p,pliCount:m,nackCount:_,firCount:R}=n;if(!h)return;const{audioLevel:C,frameHeight:f,frameWidth:v}=e[h];let T=this.updateBytesSent(s,l,r);T<0&&(T=0),o+=T,t.senders.push({trackId:s,kind:a,packetsLostRate:null,remoteResource:!1,audioLevel:C||0===C?ft(C):null,frameWidth:v,frameHeight:f,frameRate:null,bitrate:T,jitter:null,rtt:null,encoderImplementation:p,pliCount:m,nackCount:_,googFirsSent:_t,samplingRate:_t,googRenderDelayMs:_t,trackState:_t})}));let s=0;i.filter((e=>/^RTCInboundRTP(Video|Audio)Stream_/.test(e))).forEach((i=>{const o=e[i];if("unified-plan"===this._sdpSemantics&&!this.isValidReceiver(o))return;const{trackId:a,packetsLost:c,packetsReceived:d,jitter:u,bytesReceived:l,mediaType:h,nackCount:p,pliCount:m}=o,_=this.getResourceIdByParseSdp(o);if(!a)return;const{frameHeight:R,frameWidth:C,audioLevel:f}=e[a];n+=c;const v=this.updateReceiverPacketsLost(_,c,d);let T=this.updateBytesRecv(_,l,r);T<0&&(T=0),s+=T,t.receivers.push({trackId:_,kind:h,packetsLostRate:v,remoteResource:!0,audioLevel:f||0===f?ft(f):null,frameWidth:C,frameHeight:R,frameRate:null,bitrate:T,jitter:u,codecImplementationName:null,nackCount:p,pliCount:m,rtt:null,samplingRate:_t,googFirsReceived:_t,googRenderDelayMs:_t,trackState:_t})}));const a=i.filter((e=>/^RTCTransport_/.test(e)))[0];if(a){const r=e[a],{selectedCandidatePairId:i}=r;if(i){const r=e[i],{availableOutgoingBitrate:a,availableIncomingBitrate:c,currentRoundTripTime:d,localCandidateId:u,remoteCandidateId:l}=r,h=e[u],{address:p,port:m}=h,_=e[l],{address:R,port:C,protocol:f}=_;t.iceCandidatePair={IP:p||null,port:m,networkType:null,remoteIP:R,remotePort:C,protocol:f,bitrateRecv:s,bitrateSend:o,rtt:1e3*d,availableOutgoingBitrate:a,availableIncomingBitrate:c,totalPacketsLost:n},t.receivers.forEach((e=>{e.rtt=d}))}}return t}getAudioLevelList(e){const t=[],r=Object.keys(e);r.filter((e=>/^RTCOutboundRTP(Video|Audio)Stream_/.test(e))).forEach((r=>{const i=e[r];if("unified-plan"===this._sdpSemantics&&!this.isValidSender(i))return;const{trackId:n,mediaType:o}=i;if("video"===o)return;const s=this.getResourceIdByParseSdp(i),a=e[n];t.push({trackId:s,audioLevel:a||0===a?ft(a):null})}));return r.filter((e=>/^RTCInboundRTP(Video|Audio)Stream_/.test(e))).forEach((r=>{const i=e[r];if("unified-plan"===this._sdpSemantics&&!this.isValidReceiver(i))return;const{trackId:n,mediaType:o}=i;if(!n||"video"===o)return;const{audioLevel:s}=e[n],a=this.getResourceIdByParseSdp(i);t.push({trackId:a,audioLevel:s||0===s?ft(s):null})})),t}}class yt{constructor(e){this._peer=e,this._outboundStreams={}}static setSdpSemantics(e){const{browser:t,version:r,supportsUnifiedPlan:i}=ot;i?/chrome/i.test(t)?this._sdpSemantics=r>92?"unified-plan":r<72?"plan-b":e:/firefox/i.test(t)?this._sdpSemantics="unified-plan":/safari/i.test(t)?this._sdpSemantics=r<12?"plan-b":"unified-plan":this._sdpSemantics="unified-plan":this._sdpSemantics="plan-b"}static getSdpSemantics(){return yt._sdpSemantics}getOutboundVideoInfo(){const e=[];for(const t in this._outboundStreams){const r=this._outboundStreams[t].getVideoTracks()[0];if(!r)continue;const i=/_tiny$/.test(t),{width:n,height:o}=We(r);e.push({trackId:r.id,simulcast:i?mt.TINY:mt.NORMAL,resolution:`${n}x${o}`})}return e}setRemoteAnswer(t){return r(this,void 0,void 0,(function*(){t=t.replace(/\s+\r\n/g,"\r\n");try{yield this._peer.setRemoteDescription({type:"answer",sdp:t})}catch(t){return i.error(t),e.RCRTCCode.SET_REMOTE_DESCRIPTION_FAILED}return e.RCRTCCode.SUCCESS}))}getStatParsr(e,t){return/chrome/i.test(ot.browser)?new St(e,t):/Firefox/i.test(ot.browser)?new It(e,t):/Safari/i.test(ot.browser)?new Et(e,t):null}}class kt extends yt{constructor(){super(...arguments),this.senders={},this._localTracks=[]}addLocalTrack(e){this._localTracks.includes(e)||this._localTracks.push(e);const t=e.getStreamId(),r=e.__innerGetMediaStreamTrack(),i=this._outboundStreams[t]||(this._outboundStreams[t]=new MediaStream);i.getTracks().forEach((e=>{e.kind===r.kind&&i.removeTrack(e)})),i.addTrack(r);const n=e.getTrackId(),o=this.senders[n];o?o.replaceTrack(r):this.senders[n]=this._peer.addTrack(r,i)}removeLocalTrack(e){const t=this._localTracks.findIndex((t=>t===e));t>=0&&this._localTracks.splice(t,1);const r=e.getTrackId(),i=this.senders[r];i&&(i.replaceTrack(null),this._peer.removeTrack(i),delete this.senders[r])}updateSubRemoteTracks(e){}updateRecvTransceiverMap(e,t){}setBitrate(e,t,r){this._maxBitrate=e,this._minBitrate=t,this._startBitrate=r||.7*e}createOffer(e){return r(this,void 0,void 0,(function*(){const t=yield this._peer.createOffer({iceRestart:e,offerToReceiveAudio:!0,offerToReceiveVideo:!0});for(const e in this._outboundStreams){const r=this._outboundStreams[e].id;t.sdp=t.sdp.replace(new RegExp(r,"g"),e)}return yield this._peer.setLocalDescription(t),{type:"offer",semantics:"plan-b",sdp:t.sdp}}))}setRemoteAnswer(e){let t=0,r=0;this._localTracks.forEach((e=>{const{min:i,max:n}=e.getBitrate();r+=i,t+=n})),t=this._maxBitrate&&this._maxBitrate>0?Math.min(t,this._maxBitrate):t,r=this._minBitrate&&this._minBitrate>0?Math.max(r,this._minBitrate):r;const i=this._startBitrate||Math.round(.7*t),n=`b=AS:${t}`;e=e.replace(/[\r\n]+m=video[^\r\n]+/,(e=>`${e}\r\n${n}`));const o=[`;x-google-min-bitrate=${r}`,`;x-google-max-bitrate=${t}`,`;x-google-start-bitrate=${i}`].join("");return e=e.replace(/[\r\n]+[^\r\n]+profile-level-id[^\r\n]+/g,(e=>e+o)),super.setRemoteAnswer(e)}}class bt extends yt{constructor(){super(...arguments),this._sendTransceiver={},this._localTracks={},this._recvAudio=[],this._recvVideo=[],this._recvTransceiver={},this._subedTracks=[]}setBitrate(e,t,r){i.warn("the interface named `setBitrate` is invalid while sdpSemantics value is `unified-plan`")}addLocalTrack(e){const t=e.getTrackId(),r=e.getStreamId(),i=e.__innerGetMediaStreamTrack();this._localTracks[t]=e;const n=this._outboundStreams[r]||(this._outboundStreams[r]=new MediaStream);n.getTracks().forEach((e=>{e.kind===i.kind&&n.removeTrack(e)})),n.addTrack(i);const o=this._sendTransceiver[t];o?(o.sender.replaceTrack(i),o.direction="sendonly"):this._sendTransceiver[t]=this._peer.addTransceiver(i,{direction:"sendonly",streams:[n]})}removeLocalTrack(e){const t=e.getTrackId(),r=e.getStreamId();e.__innerGetMediaStreamTrack(),delete this._localTracks[t];const i=this._sendTransceiver[t];if(!i)return;i.direction="inactive",this._peer.removeTrack(i.sender),i.sender.replaceTrack(null);const n=this._outboundStreams[r];(e.isAudioTrack()?n.getAudioTracks():n.getVideoTracks()).forEach((e=>n.removeTrack(e)));const o=this._sendTransceiver[`${t}_tiny`];if(!o||"inactive"===o.direction)return;o.direction="inactive";const s=o.sender,a=s.track;this._peer.removeTrack(s),s.replaceTrack(null);this._outboundStreams[`${r}_tiny`].removeTrack(a),a.stop()}updateRecvTransceiverMap(t,r){const{mediaType:i}=ze(t);this._recvTransceiver[t]=r;const n=i===e.RCMediaType.AUDIO_ONLY?this._recvAudio:this._recvVideo,o=n.findIndex((e=>e===r));o>=0&&n.splice(o,1)}updateSubRemoteTracks(e){const t=e.slice(),r=this._subedTracks.slice();this._subedTracks=e.slice();for(let e=t.length-1;e>=0;e-=1){const i=t[e],n=r.findIndex((e=>e===i));n>=0&&(t.splice(e,1),r.splice(n,1))}r.length&&r.forEach((e=>{const t=e.getTrackId();e.__innerSetMediaStreamTrack(void 0);const r=this._recvTransceiver[t];r&&(r.direction="inactive")}));const i={audio:0,video:0};t.length&&t.forEach((e=>{const t=e.isAudioTrack()?"audio":"video",r=this._recvTransceiver[e.getTrackId()];r?r.direction="recvonly":i[t]+=1}));for(let e=this._recvAudio.length;e<i.audio;e+=1)this._recvAudio.push(this._peer.addTransceiver("audio",{direction:"recvonly"}));for(let e=this._recvVideo.length;e<i.video;e+=1)this._recvVideo.push(this._peer.addTransceiver("video",{direction:"recvonly"}))}createOffer(e){return r(this,void 0,void 0,(function*(){const t=yield this._peer.createOffer({iceRestart:e});let r=t.sdp;for(const e in this._outboundStreams){const t=this._outboundStreams[e].id;r=r.replace(new RegExp(t,"g"),e)}return r=(e=>e.split(/\r\n(?=m=)/).map((e=>(e=>/a=(recvonly|inactive)/.test(e)?e.replace(/\r\na=(ssrc|msid)[^\r\n]+/g,""):e)(e))).join("\r\n"))(r),r=r.replace(/a=ice-options:trickle/g,"a=ice-options:trickle\r\na=ice-options:renomination"),t.sdp=r,yield this._peer.setLocalDescription(t),{type:"offer",semantics:"unified-plan",sdp:r}}))}setRemoteAnswer(e){e=e.split(/\r\n(?=m=)/).map((e=>{var t;const r=e.match(/a=mid:[^\s]+/);if(!r)return e;const i=r[0].replace("a=mid:","");let n="";for(const e in this._sendTransceiver){if(this._sendTransceiver[e].mid===i){n=e;break}}if(!n)return e;const o=null===(t=this._localTracks[n])||void 0===t?void 0:t.getBitrate();if(!o)return e;const{max:s,min:a}=o,c=s&&s>0?o.start||.7*s:0,d=[];if(s&&s>0&&d.push(`;x-google-max-bitrate=${s}`),a&&a>0&&d.push(`;x-google-min-bitrate=${a}`),c>0&&d.push(`;x-google-start-bitrate=${c}`),0===d.length)return e;const u=d.join("");return e.replace(/[\r\n]+[^\r\n]+profile-level-id[^\r\n]+/g,(e=>e+u))})).join("\r\n");const t=/[\r\n]+\r\n[\r\n]+/g;return t.test(e)&&(i.warn(`answer sdp invalid -> ${JSON.stringify(e)}`),e=e.replace(t,"\r\n")),super.setRemoteAnswer(e)}}class Pt extends t.EventEmitter{constructor(e,t){super(),this._reTryExchange=e,this._polarisReport=t,this.pubLocalTracks={},this._reTryExchangeTimer=null,this._reportStatsTimer=null,this._reportListener=null;const r=yt.getSdpSemantics(),i=this._rtcPeerConn=new RTCPeerConnection({sdpSemantics:r});this._sdpStrategy="plan-b"===r?new kt(i):new bt(i),this._rtcPeerConn.oniceconnectionstatechange=this._onICEConnectionStateChange.bind(this),this._rtcPeerConn.onconnectionstatechange=this._onConnectionStateChange.bind(this),this._rtcPeerConn.ontrack=this._onTrackReady.bind(this),this.reportParser=this._sdpStrategy.getStatParsr(this._rtcPeerConn,r)}getLocalTracks(){return Object.values(this.pubLocalTracks)}_onConnectionStateChange(){i.info(`onconnectionstatechange -> ${this._rtcPeerConn.connectionState}`)}_onICEConnectionStateChange(){var e,t;i.info(`oniceconnectionstatechange -> ${this._rtcPeerConn.iceConnectionState}`),"connected"===this._rtcPeerConn.iceConnectionState&&(this._reportStatsTimer&&clearInterval(this._reportStatsTimer),this._reportStatsTimer=setInterval(this._reportHandle.bind(this),1e3)),"failed"!==this._rtcPeerConn.iceConnectionState&&"disconnected"!==this._rtcPeerConn.iceConnectionState||(i.warn("iceconenction state is `failed`, exchange SDP to try again."),this._reTryExchange(),this._reTryExchangeTimer=setInterval(this._reTryExchange,15e3));try{null===(t=null===(e=this._reportListener)||void 0===e?void 0:e.onICEConnectionStateChange)||void 0===t||t.call(e,this._rtcPeerConn.iceConnectionState)}catch(e){i.error("onICEConnectionStateChange error",e)}}_onTrackReady(t){if(!t.streams.length)return;const r=[t.streams[0].id,"audio"===t.receiver.track.kind?e.RCMediaType.AUDIO_ONLY:e.RCMediaType.VIDEO_ONLY].join("_");this._updateRecvTransceiverMap(r,t.transceiver),this.emit(Pt.__INNER_EVENT_TRACK_READY__,t)}setBitrate(e,t,i){return r(this,void 0,void 0,(function*(){this._sdpStrategy.setBitrate(e,t,i)}))}createOffer(e){return r(this,void 0,void 0,(function*(){const t=yield this._sdpStrategy.createOffer(e);return i.debug(`offer -> ${JSON.stringify(t.sdp)}`),t}))}setRemoteAnswer(e){return r(this,void 0,void 0,(function*(){return i.debug(`answer -> ${JSON.stringify(e)}`),this._sdpStrategy.setRemoteAnswer(e)}))}getLocalTrack(e){return this.pubLocalTracks[e]||null}addLocalTrack(e){this.pubLocalTracks[e.getTrackId()]=e,this._sdpStrategy.addLocalTrack(e),e.off(Le.__INNER_EVENT_MUTED_CHANGE__,this._onLocalTrackMuted,this),e.off(Le.__INNER_EVENT_DESTROY__,this._onLocalTrackDestroied,this),e.on(Le.__INNER_EVENT_MUTED_CHANGE__,this._onLocalTrackMuted,this),e.on(Le.__INNER_EVENT_DESTROY__,this._onLocalTrackDestroied,this)}removeLocalTrackById(e){const t=this.getLocalTrack(e);t&&this.removeLocalTrack(t)}removeAllLocalTrack(){Object.keys(this.pubLocalTracks).forEach((e=>{/_tiny$/.test(e)||this.removeLocalTrackById(e)}))}removeLocalTrack(e){const t=e.getTrackId();delete this.pubLocalTracks[t],this._sdpStrategy.removeLocalTrack(e),e.__innerSetPublished(!1),e.off(Le.__INNER_EVENT_MUTED_CHANGE__,this._onLocalTrackMuted,this),e.off(Le.__INNER_EVENT_DESTROY__,this._onLocalTrackDestroied,this);const r=`${t}_tiny`,i=this.getLocalTrack(r);i&&(this._sdpStrategy.removeLocalTrack(i),delete this.pubLocalTracks[r],i.destroy())}_updateRecvTransceiverMap(e,t){this._sdpStrategy.updateRecvTransceiverMap(e,t)}updateSubRemoteTracks(e){this._sdpStrategy.updateSubRemoteTracks(e)}getOutboundVideoInfo(){return this._sdpStrategy.getOutboundVideoInfo()}_onLocalTrackMuted(e){const t=this.getLocalTrack(`${e.getTrackId()}_tiny`);t&&(t.__innerGetMediaStreamTrack().enabled=!e.isLocalMuted()),this.emit(Le.__INNER_EVENT_MUTED_CHANGE__,e)}_onLocalTrackDestroied(e){this.emit(Le.__INNER_EVENT_DESTROY__,e)}registerReportListener(e){this._reportListener=e}_createRCRTCStateReport(e){const{timestamp:t,iceCandidatePair:r,senders:i,receivers:n}=JSON.parse(JSON.stringify(e));null==r||delete r.totalPacketsLost;for(const e in r)ct(r[e])&&delete r[e];return{timestamp:t,iceCandidatePair:r,senders:i.map((e=>{const t={};return e.trackId&&(t.trackId=e.trackId),e.kind&&(t.kind=e.kind),(e.packetsLostRate||0===e.packetsLostRate)&&(t.packetsLostRate=e.packetsLostRate),t.remoteResource=e.remoteResource,(e.audioLevel||0===e.audioLevel)&&(t.audioLevel=e.audioLevel),e.frameWidth&&(t.frameWidth=e.frameWidth),e.frameHeight&&(t.frameHeight=e.frameHeight),e.frameRate&&(t.frameRate=e.frameRate),(e.bitrate||0===e.bitrate)&&(t.bitrate=e.bitrate),e.jitter&&(t.jitter=e.jitter),t})),receivers:n.map((e=>{const t={};return e.trackId&&(t.trackId=e.trackId),e.kind&&(t.kind=e.kind),(e.packetsLostRate||0===e.packetsLostRate)&&(t.packetsLostRate=e.packetsLostRate),t.remoteResource=e.remoteResource,(e.audioLevel||0===e.audioLevel)&&(t.audioLevel=e.audioLevel),e.frameWidth&&(t.frameWidth=e.frameWidth),e.frameHeight&&(t.frameHeight=e.frameHeight),e.frameRate&&(t.frameRate=e.frameRate),(e.bitrate||0===e.bitrate)&&(t.bitrate=e.bitrate),e.jitter&&(t.jitter=e.jitter),t}))}}_getStatsData(){var e,t;return r(this,void 0,void 0,(function*(){const r=yield this._rtcPeerConn.getStats(),i=null===(e=this.reportParser)||void 0===e?void 0:e.parseRTCStatsReport(r);return null===(t=this.reportParser)||void 0===t?void 0:t.formatRCRTCStateReport(i)}))}getAudioLevelReportData(){var e,t;return r(this,void 0,void 0,(function*(){const r=yield this._rtcPeerConn.getStats(),i=null===(e=this.reportParser)||void 0===e?void 0:e.parseRTCStatsReport(r);if(!i)return[];return null===(t=this.reportParser)||void 0===t?void 0:t.getAudioLevelList(i)}))}_reportHandle(){var e,t,i;return r(this,void 0,void 0,(function*(){const r=yield this._getStatsData();if(!r)return;(r.senders.length||r.receivers.length)&&(null===(e=this._polarisReport)||void 0===e||e.sendR3R4Data(r));const n=this._createRCRTCStateReport(r);null===(i=null===(t=this._reportListener)||void 0===t?void 0:t.onStateReport)||void 0===i||i.call(t,n)}))}getRTCPeerConn(){return this._rtcPeerConn}destroy(){this.clear(),this.clearReTryExchangeTimer(),this._reportStatsTimer&&(clearInterval(this._reportStatsTimer),this._reportStatsTimer=null),this.registerReportListener(null),this._rtcPeerConn.close(),this.reportParser=null}clearReTryExchangeTimer(){clearInterval(this._reTryExchangeTimer),this._reTryExchangeTimer=null}}var Ot,Lt,Nt,At,Dt;Pt.__INNER_EVENT_TRACK_READY__="inner-track-ready",function(e){e[e.DISABLE=0]="DISABLE",e[e.ENABLE=1]="ENABLE"}(Ot||(Ot={})),function(e){e[e.MeetingOrAnchor=1]="MeetingOrAnchor",e[e.Audience=2]="Audience"}(Lt||(Lt={}));class Mt{constructor(e,t,r,i,n=Lt.MeetingOrAnchor){this._context=e,this._runtime=t,this._roomId=r,this._crtRTCRoom=i,this._userRole=n}_send(e){this._context.getConnectionStatus()===t.ConnectionStatus.CONNECTED&&this._context.setRTCState(this._roomId,e)}_getClientID(){const e="uuid";let t=this._runtime.localStorage.getItem(e);return t||(t=et(),this._runtime.localStorage.setItem(e,t)),t}_getRealResourceId(e){let t=e;const r=e.indexOf("_tiny");return r>-1&&(t=e.slice(0,r)),t}_getPolarisTrackId(t){let r="";const i=t.split("_");if(t.includes("_tiny")){const t=i.pop(),n=parseInt(i.pop())===e.RCMediaType.AUDIO_ONLY?"audio":"video",o=i.pop();r=[i.join("_"),o,t,n].join("_")}else{const t=parseInt(i.pop())===e.RCMediaType.AUDIO_ONLY?"audio":"video",n=i.pop();r=[i.join("_"),n,t].join("_")}return r}sendR3R4Data(e){const{iceCandidatePair:t,senders:r,receivers:i}=e,n=(null==t?void 0:t.bitrateSend)||_t,o=(null==t?void 0:t.bitrateRecv)||_t,s=(null==t?void 0:t.networkType)||"unknown",a=(null==t?void 0:t.rtt)||_t,c=`${(null==t?void 0:t.IP)||_t}:${null==t?void 0:t.port}`,d=(null==t||t.remoteIP,null==t||t.remotePort,(null==t?void 0:t.availableIncomingBitrate)||_t),u=(null==t?void 0:t.availableOutgoingBitrate)||_t,l=(null==t?void 0:t.totalPacketsLost)||_t,h=this._context.getCurrentId();let p=`R3\t${n}\t-1\t-1\t-1\t${s}\t${a}\t${c}\t${d}\t${u}\t${l}\t${h}\r`,m=`R4\t${o}\t-1\t-1\t-1\t${s}\t${a}\t${c}\t${d}\t${u}\t${l}\t${h}\r`;const _=r.map((e=>{var t;const{trackId:r,audioLevel:i,samplingRate:n,bitrate:o,packetsLostRate:s,frameRate:a,frameWidth:c,frameHeight:d,googRenderDelayMs:u,jitter:l,nackCount:h,pliCount:p,rtt:m,googFirsSent:_,encoderImplementation:R}=e,C=this._getPolarisTrackId(r),f=this._getRealResourceId(r);return{trackId:C,googCodecName:R||String(_t),audioLevel:i||0===i?i:_t,bitrate:o||0===o?o:_t,packetsLostRate:s||0===s?s:_t,frameRate:a||_t,resolution:c&&d?`${c} * ${d}`:"-1",jitter:l||_t,nackCount:h||0===h?h:_t,pliCount:p||0===p?p:_t,rtt:m||_t,googFirsSent:_,samplingRate:n,googRenderDelayMs:u,encoderImplementation:R||String(_t),trackState:(null===(t=this._crtRTCRoom.getLocalTrack(f))||void 0===t?void 0:t.isLocalMuted())?Ot.DISABLE:Ot.ENABLE}})),R=i.filter((e=>!!e.trackId)).map((e=>{var t;const{trackId:r,audioLevel:i,samplingRate:n,bitrate:o,packetsLostRate:s,frameRate:a,frameWidth:c,frameHeight:d,googRenderDelayMs:u,jitter:l,nackCount:h,pliCount:p,rtt:m,googFirsReceived:_,codecImplementationName:R}=e,C=this._getPolarisTrackId(r),f=this._getRealResourceId(r);return{trackId:C,googCodecName:R||String(_t),audioLevel:i||0===i?i:_t,bitrate:o||0===o?o:_t,packetsLostRate:s||0===s?s:_t,frameRate:a||_t,resolution:c&&d?`${c} * ${d}`:"-1",jitter:l||_t,nackCount:h||0===h?h:_t,pliCount:p||0===p?p:_t,rtt:m||_t,googFirsReceived:_,samplingRate:n,googRenderDelayMs:u,codecImplementationName:R||String(_t),trackState:(null===(t=this._crtRTCRoom.getRemoteTrack(f))||void 0===t?void 0:t.isLocalMuted())?Ot.DISABLE:Ot.ENABLE}}));p+=_.map((e=>`${e.trackId}\t${e.googCodecName}\t${e.audioLevel}\t${e.samplingRate}\t${e.bitrate}\t${e.packetsLostRate}\t${e.frameRate}\t${e.resolution}\t${e.googRenderDelayMs}\t${e.jitter}\t${e.nackCount}\t${e.pliCount}\t${e.rtt}\t${e.googFirsSent}\t${e.encoderImplementation}\t${e.trackState}`)).join("\n"),e.senders.length&&this._send(p+`\r${this._userRole}`),m+=R.map((e=>`${e.trackId}\t${e.googCodecName}\t${e.audioLevel}\t${e.samplingRate}\t${e.bitrate}\t${e.packetsLostRate}\t${e.frameRate}\t${e.resolution}\t${e.googRenderDelayMs}\t${e.jitter}\t${e.nackCount}\t${e.pliCount}\t${e.rtt}\t${e.googFirsReceived}\t${e.codecImplementationName}\t${e.trackState}`)).join("\n"),e.receivers.length&&this._send(m+`\r${this._userRole}`)}sendR1(){const e=this._context.getCoreVersion(),t=navigator.platform,r=`R1\t5.3.5\t${e}\tweb\t${t}\t-1\t${ot.browser}\t${ot.version}\t${this._getClientID()}\t${this._userRole}`;this._send(r)}sendR2(e,t,r){const i=`R2\t${e}\t${t}\t${this._getClientID()}\r${r.join("\t")}\r${this._userRole}`;this._send(i)}}!function(e){e.PUBLISH="publish",e.SUBSCRIBE="subscribe"}(Nt||(Nt={})),function(e){e.BEGIN="begin",e.END="end"}(At||(At={}));class xt{constructor(e){this._room=e,this._audioLevelChangeHandler=null,this._timer=null,this._pc=this._room.__getPC()}_audioLevelReport(){return r(this,void 0,void 0,(function*(){if("new"===this._pc.getRTCPeerConn().iceConnectionState||!this._audioLevelChangeHandler)return;const e=(yield this._pc.getAudioLevelReportData()).map((e=>{const{userId:t}=cr.parseTrackId(e.trackId);return{track:this._room.getCrtUserId()===t?this._room.getLocalTrack(e.trackId):this._room.getRemoteTrack(e.trackId),audioLevel:e.audioLevel||0}})).filter((e=>e.track));this._audioLevelChangeHandler(e)}))}onAudioLevelChange(e,t){t<300||t>1e3?i.error('the valid range of onAudioLevelChange params "gap" is: > 300 && < 1000'):e?(this._audioLevelChangeHandler=e,this._timer=setInterval(this._audioLevelReport.bind(this),t)):this._audioLevelChangeHandler=null}clearAudioLevelReportTimer(){this._timer&&(clearInterval(this._timer),this._timer=null)}}e.RCRTCLiveRole=void 0,(Dt=e.RCRTCLiveRole||(e.RCRTCLiveRole={}))[Dt.ANCHOR=1]="ANCHOR",Dt[Dt.AUDIENCE=2]="AUDIENCE";const Ut=e=>e instanceof Oe?e.getTrackId():e.track.getTrackId();class wt{constructor(e,t,r,n,o,a,d,u,l,h){this._context=e,this._runtime=t,this._roomId=r,this._roomMode=o,this._service=a,this._initOptions=d,this._ntfClearRoomItem=u,this._isMainRoom=h,this._remoteTracks={},this._subscribedList=[],this._destroyed=!1,this.msgTaskQueue=new s,this._appListener=null,this._onRecvPKMsg=null,this._token=n.token,this._sessionId=n.sessionId,this._roomResources=l?{}:ut(n,this._roomId),this._initRemoteTracks();const p=this._context.getCurrentId(),m=this._roomResources[p]=this._roomResources[p]||[];i.debug(`room data -> ${JSON.stringify(this._roomResources)}`),m.length>0&&c((()=>this._unpublishPrev(m))),l&&this._afterChangedRole(n),this._pinger=new pt(r,this._roomMode,e,this._initOptions.pingGap),this._pinger.onFailed=this._kickoff.bind(this),this._pinger.onPingResult=this._handlePingResult.bind(this),this._pinger.start(),this._polarisReport=new Mt(this._context,this._runtime,this._roomId,this),this._polarisReport.sendR1(),this._pc=new Pt(this._reTryExchange.bind(this),this._polarisReport),this._pc.on(Pt.__INNER_EVENT_TRACK_READY__,this._onTrackReady,this),this._pc.on(Le.__INNER_EVENT_MUTED_CHANGE__,this._onLocalTrackMuted,this),this._pc.on(Le.__INNER_EVENT_DESTROY__,this._onLocalTrackDestroied,this)}_initRemoteTracks(){const t=this._context.getCurrentId();for(const r in this._roomResources){const i=this._roomResources[r];r!==t&&0!==i.length&&i.forEach((t=>{const r=qe(t),{tag:i,userId:n,mediaType:o}=ze(r),s=o===e.RCMediaType.AUDIO_ONLY?new Ve(i,n):new He(i,n);s.__innerSetRemoteMuted(0===t.state),this._remoteTracks[r]=s}))}}_handlePingResult(e){this._callAppListener("onPing",e)}setBitrate(e,r,n){i.warn("`RCAbstractRoom.setBitrate` will be deprecated, use `RCLocalTrack.setBitrate` instead."),t.assert("max",e,(e=>t.isNumber(e)&&e>Math.max(r||1,200)),!0),t.assert("min",r,(r=>t.isNumber(r)&&r>=1&&(!t.isNumber(e)||r<e)),!0),t.assert("start",n,(i=>t.isNumber(i)&&i>r&&i<=e)),this._pc.setBitrate(e,r,n)}_onTrackReady(t){const r=t.streams[0].id,n=t.receiver.track,o=[r,"audio"===n.kind?e.RCMediaType.AUDIO_ONLY:e.RCMediaType.VIDEO_ONLY].join("_"),s=this._remoteTracks[o];s?(s.__innerSetMediaStreamTrack(n),this._callAppListener("onTrackReady",s)):i.warn(`cannot found remote track ${n.id}`)}_callAppListener(e,...t){var r;const n=null===(r=this._appListener)||void 0===r?void 0:r[e];if(n)try{n(...t)}catch(e){i.error(e)}}_onUserUnpublish(e){return r(this,void 0,void 0,(function*(){yield this.unsubscribe(e),e.forEach((e=>{e.__innerDestroy(),delete this._remoteTracks[e.getTrackId()]})),this._onTrackUnpublish(e)}))}_onTrackUnpublish(e){this._callAppListener("onTrackUnpublish",e)}_unpublishPrev(e){return r(this,void 0,void 0,(function*(){const r=e.slice();e.length=0,i.info(`unpublish uris prev login: ${JSON.stringify(r)}`);const n=yield this._context.setRTCTotalRes(this._roomId,Be(lt.UNPUBLISH,r),Fe([]),lt.TOTAL_CONTENT_RESOURCE,Fe([]));n!==t.ErrorCode.SUCCESS?i.error(`unpublish prev uris failed -> code: ${n}`):i.debug("unpublish uris prev login succeed")}))}__parseInnerMessage(e){const{targetId:r,conversationType:n}=e;if(n!==t.ConversationType.RTC_ROOM)return!1;if(r!==this._roomId)return!0;i.info(`recv inner msg -> message: ${JSON.stringify(e)} | roomid: ${this._roomId}`);const o=e.content;switch(e.messageType){case lt.KICK:this._kickoff(!0,o);break;case lt.STATE:this.msgTaskQueue.push((()=>this._stateHandle(o)));break;case lt.MODIFY:case lt.PUBLISH:case lt.UNPUBLISH:case lt.TOTAL_CONTENT_RESOURCE:this.msgTaskQueue.push((()=>this._resourceHandle(o,e.messageType,e.senderUserId)));break;case lt.ROOM_NOTIFY:this._callAppListener("onRoomAttributeChange",e.messageType,e.content);break;case lt.USER_NOTIFY:i.warn(`TODO: ${lt.USER_NOTIFY}`);break;case lt.PK_INVITE:case lt.PK_CANCEL_INVITE:case lt.PK_INVITE_TIMEOUT:case lt.PK_INVITE_ANSWER:case lt.PK_END:this._onRecvPKMsg&&this._onRecvPKMsg(e);break;case lt.OTHER_ROOM_OFFLINE:break;default:this._callAppListener("onMessageReceive",e.messageType,e.content,e.senderUserId,e.messageUId)}return!0}_kickoff(e,t){let r;i.warn(`onKickOff -> byServer: ${e}`),this._ntfClearRoomItem(),this._leaveHandle(!e),e&&((null==t?void 0:t.users)||[]).forEach((e=>{e.userId===this._context.getCurrentId()&&(r=e.type)})),this._callAppListener("onKickOff",e,r)}_rtcpeerClosed(){this._ntfClearRoomItem(),this._leaveHandle(!0),this._callAppListener("onRTCPeerConnectionCloseByException")}_resourceHandle(t,n,o){return r(this,void 0,void 0,(function*(){if(this._assertRoomDestroyed())return void i.warn(`room has been destroyed. -> roomId: ${this._roomId}`);const{uris:r,ignore:s}=t;if(s||!r)return;const a=[],d=[],u=[];let l;const h=this._roomResources[o]||(this._roomResources[o]=[]);switch(n){case lt.MODIFY:u.push(...r);break;case lt.PUBLISH:a.push(...r);break;case lt.UNPUBLISH:d.push(...r);break;case lt.TOTAL_CONTENT_RESOURCE:l=Ze(h,r),a.push(...l.publishedList),d.push(...l.unpublishedList),u.push(...l.modifiedList)}if(a.length>0){const t=h.map(qe),r=[],n=[];if(a.forEach((i=>{const o=qe(i),s=t.indexOf(o),{userId:a,tag:c,mediaType:d}=ze(o);s>-1?h[s]=i:h.push(i);let u=this._remoteTracks[o];u?u.isSubscribed()&&r.push(u):(u=d===e.RCMediaType.AUDIO_ONLY?new Ve(c,a):new He(c,a),this._remoteTracks[o]=u,n.push(u)),u.__innerSetRemoteMuted(0===i.state)})),r.length){const t=r.map((e=>e.getTrackId()));i.debug(`resub tracks -> ${JSON.stringify(t)}`);const{code:n}=yield c((()=>this.__subscribe(r,!0)));n!==e.RCRTCCode.SUCCESS&&i.error(`resub tracks failed -> code: ${n}, ids: ${JSON.stringify(t)}`)}this._onTrackPublish(n)}if(d.length>0){const e=d.map(qe);for(let t=h.length-1;t>=0;t-=1){const r=h[t];e.includes(qe(r))&&h.splice(t,1)}const t=d.map((e=>{const t=qe(e);return this._remoteTracks[t]}));yield this._onUserUnpublish(t)}if(u.length>0){const e=h.map(qe);for(let t=0;t<u.length;t+=1){const r=u[t],i=qe(r),n=e.indexOf(i);h[n].state=r.state;const o=this._remoteTracks[i];o.__innerSetRemoteMuted(0===r.state),o.isAudioTrack()?this._onAudioMuteChange(o):this._onVideoMuteChange(o)}}}))}_onTrackPublish(e){this._callAppListener("onTrackPublish",e)}_stateHandle(t){var n;return r(this,void 0,void 0,(function*(){const{users:r}=t;if(0===r.length)return;for(let e=0;e<r.length;e++){const t=r[e];if(t.extra&&t.extra.roomId!==this._roomId)return;if(1==+t.state&&!this.getRemoteUserIds().includes(t.userId))return}const o=[],s=[],a=[],c=[];r.forEach((e=>{0==+e.state?(i.debug(`user joined -> ${e.userId}`),this._roomResources[e.userId]||(e.switchRoleType?a.push(e.userId):o.push(e.userId)),this._roomResources[e.userId]=this._roomResources[e.userId]||[]):(i.debug(`user left -> ${e.userId}`),e.switchRoleType?c.push(e.userId):s.push(e.userId))}));const d=[...o,...a],u=[...s,...c];if(u.length){const e=[],t=[];u.forEach((r=>{e.push(...this.getRemoteTracksByUserId(r)),t.push(r)})),e.length&&(yield this.unsubscribe(e),e.forEach((e=>delete this._remoteTracks[e.getTrackId()]))),t.length&&t.forEach((e=>delete this._roomResources[e]))}if(null===(n=this._appListener)||void 0===n?void 0:n.onSwitchRole)return a.length&&a.forEach((t=>this._callAppListener("onSwitchRole",t,e.RCRTCLiveRole.ANCHOR))),c.length&&c.forEach((t=>this._callAppListener("onSwitchRole",t,e.RCRTCLiveRole.AUDIENCE))),o.length&&this._callAppListener("onUserJoin",o),void(s.length&&this._callAppListener("onUserLeave",s));d.length&&this._callAppListener("onUserJoin",d),u.length&&this._callAppListener("onUserLeave",u)}))}getRoomId(){return this._roomId}getCrtUserId(){return this._context.getCurrentId()}__getPC(){return this._pc}getRemoteUserIds(){const e=this._context.getCurrentId();return Object.keys(this._roomResources).filter((t=>t!==e))}getRemoteTracks(){const e=[];return this.getRemoteUserIds().forEach((t=>{e.push(...this.getRemoteTracksByUserId(t))})),e}getRemoteTracksByUserId(e){const t=[];for(const r in this._remoteTracks){const i=this._remoteTracks[r];i.getUserId()===e&&t.push(i)}return t}getSessionId(){return this._sessionId}sendMessage(n,o){return r(this,void 0,void 0,(function*(){const{code:r}=yield this._context.sendMessage(t.ConversationType.RTC_ROOM,this._roomId,{messageType:n,content:o,isStatusMessage:!0});return r!==t.ErrorCode.SUCCESS?(i.error(`send message failed -> code: ${r}`),{code:e.RCRTCCode.SIGNAL_ERROR}):{code:e.RCRTCCode.SUCCESS}}))}setRoomAttribute(n,o,s,a=!1){return r(this,void 0,void 0,(function*(){const r=yield this._context.setRTCData(this._roomId,n,o,a,t.RTCApiType.ROOM,s);return r!==t.ErrorCode.SUCCESS?(i.error(`SetRoomAttributeValue Failed: ${r}`),{code:e.RCRTCCode.SIGNAL_ERROR}):{code:e.RCRTCCode.SUCCESS}}))}deleteRoomAttributes(n,o,s=!1){return r(this,void 0,void 0,(function*(){const r=yield this._context.removeRTCData(this._roomId,n,s,t.RTCApiType.ROOM,o);return r!==t.ErrorCode.SUCCESS?(i.error(`DeleteRoomAttribute Failed: ${r}`),{code:e.RCRTCCode.SIGNAL_ERROR}):{code:e.RCRTCCode.SUCCESS}}))}getRoomAttributes(n=[],o=!1){return r(this,void 0,void 0,(function*(){const{code:r,data:s}=yield this._context.getRTCData(this._roomId,n,o,t.RTCApiType.ROOM);return r!==t.ErrorCode.SUCCESS?(i.error(`GetRoomAttributes Failed: ${r}`),{code:e.RCRTCCode.SIGNAL_ERROR}):{code:e.RCRTCCode.SUCCESS,data:s}}))}_setUserAttributeValue(e,r,i){return this._context.setRTCData(this._roomId,e,r,!1,t.RTCApiType.PERSON,i)}_deleteUserAttributes(e,r){return this._context.removeRTCData(this._roomId,e,!1,t.RTCApiType.PERSON,r)}_getUserAttributes(e){return this._context.getRTCData(this._roomId,e,!1,t.RTCApiType.PERSON)}isDestroyed(){return this._destroyed}__destroy(e){return this._leaveHandle(e)}_leaveHandle(e){var t;return r(this,void 0,void 0,(function*(){this._destroyed||(this._destroyed=!0,null===(t=this._audioLevelReport)||void 0===t||t.clearAudioLevelReportTimer(),e&&(yield this._context.quitRTCRoom(this._roomId)),this._isMainRoom&&this._quitAllPKRoom(),this._pc.removeAllLocalTrack(),this._pinger.stop(),yield this._service.exit(this._getRTCReqestHeaders()),this._pc.destroy(),this._polarisReport=null,this._removeRemoteTracks())}))}_onLocalTrackDestroied(e){e instanceof Ae&&e.__isTiny()||this.unpublish([e])}_onLocalTrackMuted(e){return r(this,void 0,void 0,(function*(){const r=e.getTrackId(),n=this._context.getCurrentId(),o=[{resourceId:r,enabled:!e.isLocalMuted()}],s=this._roomResources[n]||[],a=[];for(let e=0;e<s.length;e+=1){const t=s[e],r=qe(t),i=o.findIndex((e=>e.resourceId===r));if(i>=0){const{enabled:e}=o[i];t.state=e?1:0,a.push(t);break}}const d=yield c((()=>this._context.setRTCTotalRes(this._roomId,Be(lt.MODIFY,a),Fe(s),lt.TOTAL_CONTENT_RESOURCE)));d!==t.ErrorCode.SUCCESS&&i.error("notice `track.enabled` change failed -> code: "+d)}))}_removePubFailedTracks(e){e.forEach((e=>{const t=e instanceof Le?e:e.track;i.debug(`remove pub failed track from peerconnection -> trackId: ${t.getTrackId()}`),this._pc.removeLocalTrackById(t.getTrackId())}))}publish(e){return r(this,void 0,void 0,(function*(){return c((()=>this.__publish(e)))}))}__publish(n){return r(this,void 0,void 0,(function*(){if(!this._isMainRoom&&this instanceof qt)return i.error("the `publish` is disabled in PK room"),{code:e.RCRTCCode.THE_FUNCTION_IS_DISABLED_IN_PKROOM};if(this._assertRoomDestroyed())return i.error(`publish failed, room has been destroyed. -> roomId: ${this._roomId}`),{code:e.RCRTCCode.ROOM_HAS_BEEN_DESTROYED};if(!t.validate("tracks",n,(()=>t.isArray(n)&&n.length>0&&n.every((e=>e instanceof Le||e.track instanceof Le))),!0))return i.error(`publish failed, tracks is invalid -> roomId: ${this._roomId}`),{code:e.RCRTCCode.PARAMS_ERROR};const r=this._context.getCurrentId();if(this._pc.getLocalTracks().length+(e=>{let t=0;return e.forEach((e=>{e instanceof Le?t++:e.pubTiny&&e.track.isVideoTrack()?t+=2:t++})),t})(n)>10)return i.error(`publish failed, tracks limit exceeded -> roomId: ${this._roomId}`),{code:e.RCRTCCode.PUBLISH_TRACK_LIMIT_EXCEEDED};i.debug(`publish tracks -> roomId: ${this._roomId}, tracks: ${n.map(Ut)}`),n.forEach((t=>{const{track:r,pubTiny:n}=t instanceof Le?{pubTiny:!1,track:t}:t;if(this._pc.addLocalTrack(r),r.isVideoTrack()&&n){let t;try{t=r.__innerGetMediaStreamTrack().clone();const i=n.frameRate||e.RCFrameRate.FPS_15,o=n.resolution||e.RCResolution.W176_H144,{width:s,height:a}=tt(o),c=nt(i);t.applyConstraints({width:s,height:a,frameRate:c})}catch(e){return null==t||t.stop(),void i.warn(`pubTiny failed -> id: ${r.getTrackId()}, msg: ${e.message}`)}this._pc.addLocalTrack(new Ae(r.getTag(),r.getUserId(),t,!0))}})),this._pc.clearReTryExchangeTimer();const o=yield this._createExchangeParams(this._subscribedList,!1),s=this._getPushOtherRoomsParams();s&&(o.pushOtherRooms=s);const a=yield this._exchangeHandle(o);if(a.code!==e.RCRTCCode.SUCCESS)return i.error(`publish failed -> roomId: ${this._roomId}, code: ${a.code}`),this._removePubFailedTracks(n),{code:a.code};const{publishList:c,sdp:d,resultCode:u,message:l,urls:h,mcuPublishList:p}=a.data;if(u!==e.RCRTCCode.SUCCESS)return i.error(`publish failed -> roomId: ${this._roomId}, code: ${u}, msg: ${l}`),this._removePubFailedTracks(n),{code:u};const m=yield this._pc.setRemoteAnswer(d.sdp);if(m!==e.RCRTCCode.SUCCESS)return{code:m};const _=this._roomResources[r],R=c.map((e=>Object.assign({tag:e.msid.split("_").pop(),state:this._getResourceState(qe(e))},e))),{publishedList:C}=Ze(_,R),f=(null==p?void 0:p.map((e=>Object.assign({tag:e.msid.split("_").pop(),state:1},e))))||[],v=yield this._context.setRTCTotalRes(this._roomId,Be(lt.PUBLISH,C),Fe(R),lt.TOTAL_CONTENT_RESOURCE,Fe(f));if(v!==t.ErrorCode.SUCCESS)return i.error(`send publish streams notification failed: ${v}`),{code:e.RCRTCCode.SIGNAL_ERROR};this._roomResources[r]=R;const T=C.map((e=>qe(e)));return this._polarisReport&&this._polarisReport.sendR2(Nt.PUBLISH,At.BEGIN,T),n.forEach((e=>{const{track:t}=e instanceof Le?{track:e}:e;t.__innerSetPublished(!0)})),i.debug(`publish success: ${T.join(",")}`),this._roomMode===t.RTCMode.LIVE?{code:e.RCRTCCode.SUCCESS,liveUrl:null==h?void 0:h.liveUrl}:{code:e.RCRTCCode.SUCCESS}}))}_getPushOtherRoomsParams(){return[]}_reTryExchange(){return r(this,void 0,void 0,(function*(){c((()=>r(this,void 0,void 0,(function*(){const t=yield this._createExchangeParams(this._subscribedList,!0),r=this._getPushOtherRoomsParams();r&&(t.pushOtherRooms=r);const n=yield this._exchangeHandle(t);if(n.code!==e.RCRTCCode.SUCCESS)return i.error(`reTryExchange failed: ${n.code}`),{code:n.code};const{sdp:o,resultCode:s}=n.data;if(s!==e.RCRTCCode.SUCCESS)return i.error(`reTryExchange failed: ${s}`),{code:s};this._pc.clearReTryExchangeTimer();const a=yield this._pc.setRemoteAnswer(o.sdp);return a!==e.RCRTCCode.SUCCESS?{code:a}:void 0}))))}))}_exchangeHandle(e){return this._service.exchange(this._getRTCReqestHeaders(),e)}_getRTCReqestHeaders(){return{"App-Key":this._context.getAppkey(),RoomId:this._roomId,Token:this._token,RoomType:this._roomMode,UserId:this._context.getCurrentId()}}_createExchangeParams(e,t){return r(this,void 0,void 0,(function*(){return{sdp:yield this._pc.createOffer(t),extend:JSON.stringify({resolutionInfo:this._pc.getOutboundVideoInfo()}),subscribeList:e.filter((e=>{const t=e.track.getTrackId(),{userId:r}=ze(t);if(!this._roomResources[r])return!1;const i=this._roomResources[r].filter((e=>t===`${e.msid}_${e.mediaType}`)).length;return i})).map((e=>({simulcast:e.subTiny?mt.TINY:mt.NORMAL,resolution:"",uri:this._getResourceById(e.track.getTrackId()).uri}))),switchstream:!1}}))}_getResourceState(e){var t;return(null===(t=this.getLocalTrack(e))||void 0===t?void 0:t.isLocalMuted())?0:1}unpublish(e){return r(this,void 0,void 0,(function*(){return c((()=>this.__unpublish(e)))}))}__unpublish(n){var o;return r(this,void 0,void 0,(function*(){if(!this._isMainRoom&&this instanceof qt)return i.error("the `unpublish` is disabled in PK room"),{code:e.RCRTCCode.THE_FUNCTION_IS_DISABLED_IN_PKROOM};if(this._assertRoomDestroyed())return i.warn(`room has been destroyed, no need to unpublish tracks -> roomId: ${this._roomId}`),{code:e.RCRTCCode.SUCCESS};const r=this._context.getCurrentId();if(!t.validate("tracks",n,(()=>n.every((e=>e.getUserId()===r&&e instanceof Le))),!0))return i.warn(`unpublish failed, tracks is invalid -> roomId: ${this._roomId}, tracks: ${n.map(Ut)}`),{code:e.RCRTCCode.PARAMS_ERROR};const s=n.map((e=>e.getTrackId())),a=s.map(this._getResourceById.bind(this)).filter((e=>!!e));if(0===a.length)return{code:e.RCRTCCode.SUCCESS};const c=this._roomResources[r].filter((e=>!a.includes(e)));s.forEach((e=>this._pc.removeLocalTrackById(e))),null===(o=this._polarisReport)||void 0===o||o.sendR2(Nt.PUBLISH,At.END,s),this._pc.clearReTryExchangeTimer();const d=yield this._createExchangeParams(this._subscribedList,!1),u=this._getPushOtherRoomsParams();u&&(d.pushOtherRooms=u);const l=yield this._exchangeHandle(d);if(l.code!==e.RCRTCCode.SUCCESS)return i.error(`exchange failed -> code: ${l.code}`),{code:l.code};const{publishList:h,sdp:p,resultCode:m,message:_,mcuPublishList:R}=l.data;m!==e.RCRTCCode.SUCCESS&&i.error(`unpublish streams failed -> code: ${m}, msg: ${_}`);const C=R?R.map((e=>Object.assign({tag:e.msid.split("_").pop(),state:1},e))):[],f=yield this._context.setRTCTotalRes(this._roomId,Be(lt.UNPUBLISH,a),Fe(c),lt.TOTAL_CONTENT_RESOURCE,Fe(C));if(f!==t.ErrorCode.SUCCESS)return i.error("send unpublish notification failed:",f),{code:e.RCRTCCode.SIGNAL_ERROR};i.debug(`unpublish success -> tracks: ${s.join(",")}`);const v=yield this._pc.setRemoteAnswer(p.sdp);if(v!==e.RCRTCCode.SUCCESS)return{code:v};const T=h.map((e=>Object.assign({tag:e.msid.split("_").pop(),state:this._getResourceState(qe(e))},e)));return this._roomResources[r]=T,{code:e.RCRTCCode.SUCCESS}}))}_getResourceById(e){const{userId:t}=ze(e);return this._roomResources[t].find((t=>qe(t)===e))}_isValidResourceId(e){var t;const{userId:r}=ze(e);return!!(null===(t=this._roomResources[r])||void 0===t?void 0:t.find((t=>qe(t)===e)))}subscribe(e){return r(this,void 0,void 0,(function*(){return c((()=>this.__subscribe(e,!1)))}))}__subscribe(n,o=!1){var s;return r(this,void 0,void 0,(function*(){if(this._assertRoomDestroyed())return i.error(`subscribe failed, room has been destroyed -> roomId: ${this._roomId}`),{code:e.RCRTCCode.ROOM_HAS_BEEN_DESTROYED};if(!t.validate("tracks",n,(()=>t.isArray(n)&&n.length>0&&n.every((e=>e instanceof je||e.track instanceof je))),!0))return i.error(`subscribe failed, tracks is invalid -> roomId: ${this._roomId}`),{code:e.RCRTCCode.PARAMS_ERROR};i.info(`subscribe -> roomId: ${this._roomId}, tracks: ${n.map(Ut)}`);const r=this._subscribedList.map((e=>Object.assign({},e))),a=n.map((e=>e instanceof je?{track:e}:e));let c=!1;const d=[];return a.forEach((e=>{const t=e.track.getTrackId();d.push(t);const i=r.find((e=>e.track.getTrackId()===t));i&&i.subTiny===e.subTiny||(i?i.subTiny=e.subTiny:r.push(e),c=!0)})),c||o?(null===(s=this._polarisReport)||void 0===s||s.sendR2(Nt.SUBSCRIBE,At.BEGIN,d),this._updateSubListHandle(r,!0)):{code:e.RCRTCCode.SUCCESS}}))}unsubscribe(e){return r(this,void 0,void 0,(function*(){return c((()=>this.__unsubscribe(e)))}))}__unsubscribe(n){var o;return r(this,void 0,void 0,(function*(){if(this._assertRoomDestroyed())return i.warn(`room has beed destroyed, no need to unsubscribe tracks -> roomId: ${this._roomId}`),{code:e.RCRTCCode.SUCCESS};if(!t.validate("tracks",n,(()=>t.isArray(n)&&n.length>0&&n.every((e=>e instanceof je))),!0))return i.error(`unsubscribe failed, tracks is invalid -> roomId: ${this._roomId}`),{code:e.RCRTCCode.PARAMS_ERROR};i.info(`unsubscribe -> roomId: ${this._roomId}, tracks: ${n.map(Ut)}`);const r=this._subscribedList.map((e=>Object.assign({},e))).filter((e=>!n.includes(e.track)));return null===(o=this._polarisReport)||void 0===o||o.sendR2(Nt.SUBSCRIBE,At.END,n.map((e=>e.getTrackId()))),this._updateSubListHandle(r,!1)}))}_assertRoomDestroyed(){if(this._destroyed){const t="This room has been destroyed. Please use `RCRTCClient.joinRTCRoom` or `RCRTCClient.joinLivingRoom` to catch another instance.";return i.warn(t),e.RCRTCCode.ROOM_HAS_BEEN_DESTROYED}}getLocalTrack(e){return this._pc.getLocalTrack(e)}getLocalTracks(){return this._pc.getLocalTracks()}getRemoteTrack(e){return this._remoteTracks[e]||null}updateSubList(e){return r(this,void 0,void 0,(function*(){return c((()=>this._updateSubListHandle(e,!1)))}))}_updateSubListHandle(n,o=!1){return r(this,void 0,void 0,(function*(){if(this._assertRoomDestroyed())return{code:e.RCRTCCode.ROOM_HAS_BEEN_DESTROYED};if(!t.validate("resources",n,(()=>t.isArray(n)&&n.every((e=>e instanceof je||e.track instanceof je))),!0))return i.error(`update sublist failed, tracks is invalid -> roomId: ${this._roomId}`),{code:e.RCRTCCode.PARAMS_ERROR};i.info(`update subscribe list -> roomId: ${this._roomId}, forceReq: ${o}, tracks: ${n.map(Ut)}`);let r=n.map((e=>e instanceof je?{track:e}:Object.assign({},e)));const s={};r=r.filter((e=>{const t=e.track.getTrackId();return this._remoteTracks[t]?!s[t]&&(s[t]=!0):(i.warn(`track cannot found in room -> trackId: ${t}`),!1)})).map((e=>Object.assign({},e)));const a=this._subscribedList.map((e=>Object.assign({},e)));if(!o){let t=!1;if(r.forEach((e=>{const r=a.findIndex((t=>t.track===e.track));if(-1===r)return void(t=!0);a.splice(r,1)[0].subTiny!==e.subTiny&&(t=!0)})),a.length&&(t=!0),!t)return{code:e.RCRTCCode.SUCCESS}}this._pc.clearReTryExchangeTimer(),this._pc.updateSubRemoteTracks(r.map((e=>e.track)));const c=yield this._createExchangeParams(r,!1),d=this._getPushOtherRoomsParams();d&&(c.pushOtherRooms=d);const u=yield this._exchangeHandle(c),l=r.map((e=>e.track.getTrackId()));if(u.code!==e.RCRTCCode.SUCCESS)return{code:u.code};const{sdp:h,resultCode:p,message:m,subscribedList:_}=u.data;if(p!==e.RCRTCCode.SUCCESS)return i.error(`change subscribe list failed: ${p}`),{code:p};i.debug(`subscribe success: ${l.join(",")}`);const R=yield this._pc.setRemoteAnswer(h.sdp);if(R!==e.RCRTCCode.SUCCESS)return{code:R};const C=null==_?void 0:_.map((e=>`${e.msid}_${e.mediaType}`)),f=r.filter((e=>null==C?void 0:C.includes(e.track.getTrackId()))),v=r.filter((e=>!(null==C?void 0:C.includes(e.track.getTrackId()))));for(const e in this._remoteTracks){const t=f.some((t=>t.track.getTrackId()===e));this._remoteTracks[e].__innerSetSubscribed(t)}return this._subscribedList.splice(0,this._subscribedList.length,...f),v.length?{code:e.RCRTCCode.SUCCESS,failedList:v}:{code:e.RCRTCCode.SUCCESS}}))}registerRoomEventListener(e){this._appListener=e}registerReportListener(e){this._pc.registerReportListener(e)}onAudioLevelChange(e,t){var r;null===(r=this._audioLevelReport)||void 0===r||r.clearAudioLevelReportTimer(),this._audioLevelReport=new xt(this),this._audioLevelReport.onAudioLevelChange(e,t||1e3)}__onReconnected(n){return r(this,void 0,void 0,(function*(){if("closed"===this._pc.getRTCPeerConn().connectionState)return i.warn("RTCPeerConnection closed. Please rejoin room to restore services."),void this._rtcpeerClosed();const{code:r,data:o}=yield this._context.joinRTCRoom(this._roomId,this._roomMode,n);if(r!==t.ErrorCode.SUCCESS)return void i.error(`RTC __onReconnected getRTCRoomInfo failed: ${r}`);i.debug(`RTC __onReconnected getRTCRoomInfo success: ${JSON.stringify(o)}`);const s=[],a={},c={},d={},u=ut(o,this._roomId),l=Object.keys(u),h=Object.keys(this._roomResources);for(let e=l.length-1;e>=0;e-=1){const t=l[e],r=h.indexOf(t);if(-1===r){s.push(t),a[t]=Xe(u[t]);continue}const i=this._roomResources[t],n=u[t],{publishedList:o,modifiedList:p,unpublishedList:m}=Ze(i,n,!0);a[t]=Xe(o),c[t]=Xe(m),d[t]=Xe(p),h.splice(r,1)}h.length&&h.forEach((e=>{delete this._roomResources[e]})),Object.assign(this._roomResources,u),h.length&&this._callAppListener("onUserLeave",h),s.length&&this._callAppListener("onUserJoin",s);for(const e in c){const t=c[e];if(t.length){const e=t.map((e=>this._remoteTracks[qe(e)]));yield this._onUserUnpublish(e)}}return Object.keys(a).forEach((t=>{const r=a[t];if(0===r.length)return;const i=r.map((t=>{const r=qe(t),{userId:i,tag:n,mediaType:o}=ze(r),s=this._remoteTracks[r]=o===e.RCMediaType.AUDIO_ONLY?new Ve(n,i):new He(n,i);return s.__innerSetRemoteMuted(0===t.state),s}));this._onTrackPublish(i)})),Object.keys(d).forEach((e=>{d[e].forEach((e=>{const t=qe(e),r=this._remoteTracks[t];r.__innerSetRemoteMuted(0===e.state),r.isAudioTrack()?this._onAudioMuteChange(r):this._onVideoMuteChange(r)}))})),{data:o}}))}_onAudioMuteChange(e){this._callAppListener("onAudioMuteChange",e)}_onVideoMuteChange(e){this._callAppListener("onVideoMuteChange",e)}_afterChangedRole(e){}_removeRemoteTracks(){const e=Object.values(this._remoteTracks);e.length&&(e.forEach((e=>{e.isAudioTrack()&&e.__releaseMediaElement()})),this._remoteTracks={})}_registerPKMsgListener(e){this._onRecvPKMsg=e}_quitAllPKRoom(){}}var $t,jt,Vt;e.BackgroundPictureFillMode=void 0,($t=e.BackgroundPictureFillMode||(e.BackgroundPictureFillMode={}))[$t.CROP=1]="CROP",$t[$t.WHOLE=2]="WHOLE",e.MixLayoutMode=void 0,(jt=e.MixLayoutMode||(e.MixLayoutMode={}))[jt.CUSTOMIZE=1]="CUSTOMIZE",jt[jt.SUSPENSION=2]="SUSPENSION",jt[jt.ADAPTATION=3]="ADAPTATION",e.MixVideoRenderMode=void 0,(Vt=e.MixVideoRenderMode||(e.MixVideoRenderMode={}))[Vt.CROP=1]="CROP",Vt[Vt.WHOLE=2]="WHOLE";const Ht=()=>({version:1,mode:e.MixLayoutMode.SUSPENSION});class Bt{constructor(e,t,r){this._onFlush=e,this._isValidTrackId=t,this._sendCDNInfoSignal=r,this._values=Ht()}setHostVideoTrack(t){if(!this._isValidTrackId(t))return i.error(`setHostVideoTrack failed: videoTrackId is invalid -> ${t}`),this;const{mediaType:r,tag:n,userId:o}=ze(t);return r!==e.RCMediaType.VIDEO_ONLY?(i.error(`setHostVideoTrack failed: kind of resource is not 'video' -> ${t}`),this):(this._values.host_stream_id=Qe(o,n),this)}setMixLayoutMode(t){return[e.MixLayoutMode.CUSTOMIZE,e.MixLayoutMode.SUSPENSION,e.MixLayoutMode.ADAPTATION].includes(t)?(this._values.mode=t,this):(i.error(`layout mode is invalid: ${t}`),this)}_addOutputValue(t,r,i="normal"){const n=this._values.output||(this._values.output={video:{normal:{width:640,height:480}}});if("cdn"===t)return void(n.cdn=r);if("audio"===t)return void(n.audio={bitrate:r});const o=n.video;if("normal"!==i&&"tiny"!==i)if("backgroundColor"!==i)if("exparams"!==i){if("backgroundPicture"===i){const t=o.backgroundPicture||(o.backgroundPicture={fillMode:e.BackgroundPictureFillMode.CROP,picture:[]});Object.assign(t,r)}}else o.exparams={renderMode:r};else o.backgroundColor=r;else{const e=o[i]||(o[i]={});Object.assign(e,r)}}setOutputVideoResolution(e){if(!rt(e))return i.warn("setOutputVideoResolution failed: `resolution` is invalid"),this;const{width:t,height:r}=tt(e);return this._addOutputValue("video",{width:t,height:r},"normal"),this}setOutputVideoFPS(e){if(!it(e))return i.warn("setOutputVideoFPS failed: `fps` is invalid"),this;const t=nt(e);return this._addOutputValue("video",{fps:t},"normal"),this}setOutputVideoBitrate(e){return!t.isNumber(e)||e<=0?i.error(`bitrate is invalid: ${e}`):this._addOutputValue("video",{bitrate:e},"normal"),this}setOutputTinyVideoResolution(e){if(!rt(e))return i.warn("setOutputTinyVideoResolution failed: `resolution` is invalid"),this;const{width:t,height:r}=tt(e);return this._addOutputValue("video",{width:t,height:r},"tiny"),this}setOutputTinyVideoFPS(e){if(!it(e))return i.warn("setOutputTinyVideoFPS failed: `fps` is invalid"),this;const t=nt(e);return this._addOutputValue("video",{fps:t},"tiny"),this}setOutputTinyVideoBitrate(e){return!t.isNumber(e)||e<=0?i.error(`bitrate is invalid: ${e}`):this._addOutputValue("video",{bitrate:e},"tiny"),this}setOutputVideoRenderMode(t){return[e.MixVideoRenderMode.CROP,e.MixVideoRenderMode.WHOLE].includes(t)?this._addOutputValue("video",t,"exparams"):i.error(`renderMode is invalid: ${t}`),this}setOutputAudioBitrate(e){return t.isNumber(e)&&e>0?this._addOutputValue("audio",e):i.error(`bitrate is invalid: ${e}`),this}setOutputBackgroundColor(e){return/^0x[a-fA-F0-9]{6}$/.test(e)?this._addOutputValue("video",e,"backgroundColor"):i.error(`color is invalid: ${e}`),this}addOutputBackgroundPicture(e,r,n,o,s){var a,c,d;if(!t.isHttpUrl(e))return i.error(`uri is invalid: ${e}`),this;if([r,n,o,s].some((e=>!t.isNumber(e)||e<0||e>1)))return i.error(`some attrs of (x, y, w, h) is invalid: ${r}, ${n}, ${o}, ${s}`),this;const u=(null===(d=null===(c=null===(a=this._values.output)||void 0===a?void 0:a.video)||void 0===c?void 0:c.backgroundPicture)||void 0===d?void 0:d.picture)||[];return u.push({uri:e,w:o,h:s,x:r,y:n}),this._addOutputValue("video",{picture:u},"backgroundPicture"),this}removeOutputBackgroundPicture(e){var r,n,o;if(!t.isHttpUrl(e))return i.error(`uri is invalid: ${e}`),this;let s=null===(o=null===(n=null===(r=this._values.output)||void 0===r?void 0:r.video)||void 0===n?void 0:n.backgroundPicture)||void 0===o?void 0:o.picture;return s&&(s=s.filter((t=>t.uri!==e)),this._addOutputValue("video",{pictures:s},"backgroundPicture")),this}clearOutputBackgroundPicture(){return this._addOutputValue("video",{pictures:[]},"backgroundPicture"),this}setOutputBackgroundPictureFillMode(t){return[e.BackgroundPictureFillMode.CROP,e.BackgroundPictureFillMode.WHOLE].includes(t)?this._addOutputValue("video",{fillMode:t},"backgroundPicture"):i.error(`fillMode is invalid: ${t}`),this}addPublishStreamUrls(e){var r,n;const o=/^rtmp:\/\/.+/;if(!t.isArray(e)||0===e.length||e.some((e=>!o.test(e))))return i.error(`urls is invalid: ${e}`),this;const s=(null===(n=null===(r=this._values.output)||void 0===r?void 0:r.cdn)||void 0===n?void 0:n.concat())||[];let a=!1;return e.forEach((e=>{s.some((t=>t.pushurl===e))||(a=!0,s.push({pushurl:e}))})),s.length>5?(i.error("publish stream url no more than 5"),this):(a&&this._addOutputValue("cdn",s),this)}removePublishStreamUrls(e){var r,n;const o=/^rtmp:\/\/.+/;if(!t.isArray(e)||0===e.length||e.some((e=>!o.test(e))))return i.error(`urls is invalid: ${e}`),this;const s=(null===(n=null===(r=this._values.output)||void 0===r?void 0:r.cdn)||void 0===n?void 0:n.concat())||[];for(let t=s.length-1;t>=0;t-=1){const{pushurl:r}=s[t],i=e.indexOf(r);i>=0&&(e.splice(i,1),s.splice(t,1))}return this._addOutputValue("cdn",s),this}clearPublishStreamUrls(){return this._addOutputValue("cdn",[]),this}addCustomizeLayoutVideo(r,n,o,s,a){if(!this._isValidTrackId(r))return i.error(`trackId is invalid: ${r}`),this;if(!t.isNumber(n)||!t.isNumber(o))return i.error(`some attrs of (x, y) is invalid: ${n}, ${o}`),this;if([s,a].some((e=>!t.isNumber(e)||e<0)))return i.error(`some attrs of (width, height) is invalid: ${s}, ${a}`),this;const{userId:c,tag:d,mediaType:u}=ze(r);if(u!==e.RCMediaType.VIDEO_ONLY)return i.error(`kind of resource is not 'video': ${r}`),this;const l=Qe(c,d);return(this._values.input||(this._values.input={video:[]})).video.push({user_id:c,stream_id:l,x:n,y:o,width:s,height:a}),this}removeCustomizeLayoutVideo(t){if(!this._isValidTrackId(t))return i.error(`trackId is invalid: ${t}`),this;const{userId:r,tag:n,mediaType:o}=ze(t);if(o!==e.RCMediaType.VIDEO_ONLY)return i.error(`kind of resource is not 'video': ${t}`),this;const s=Qe(r,n),a=this._values.input||(this._values.input={video:[]});return a.video=a.video.filter((e=>e.stream_id===s)),this}clearCustomizeLayoutVideo(){return(this._values.input||(this._values.input={video:[]})).video=[],this}flush(){var t,i,n,o;return r(this,void 0,void 0,(function*(){const r=JSON.parse(JSON.stringify(this._values)),{code:s}=yield this._onFlush(r);return s===e.RCRTCCode.SUCCESS&&((null===(i=null===(t=this._values.output)||void 0===t?void 0:t.video.normal)||void 0===i?void 0:i.width)||(null===(o=null===(n=this._values.output)||void 0===n?void 0:n.video.normal)||void 0===o?void 0:o.fps))&&this._sendCDNInfoSignal(),this._values=Ht(),{code:s}}))}}var Ft,Kt,Gt,Jt;!function(e){e[e.OPEN=1]="OPEN",e[e.STOP=2]="STOP"}(Ft||(Ft={})),function(e){e[e.SPREAD=0]="SPREAD",e[e.NO_SPREAD=-1]="NO_SPREAD"}(Kt||(Kt={})),function(e){e[e.AUTOMATIC=0]="AUTOMATIC",e[e.MANUAL=1]="MANUAL"}(Gt||(Gt={})),e.RCLivingType=void 0,(Jt=e.RCLivingType||(e.RCLivingType={}))[Jt.VIDEO=0]="VIDEO",Jt[Jt.AUDIO=1]="AUDIO";const Wt=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}));class Yt{constructor(e,t,r,i,n,o,s,a,c){this._PKInfo=e,this._context=t,this._runtime=r,this._service=i,this._initOptions=n,this._mainLivingRoom=o,this._registerPKMsgListener=s,this._onJoinedPKRoom=a,this._onLeavePKRoom=c,this._inviteTimeout=30,this._appListener=null,this._joinedPKRooms={},this._registerPKMsgListener(this._onRecvPKMsg.bind(this)),this._mainRoomId=this._mainLivingRoom.getRoomId()}_callAppListener(e,...t){var r;const n=null===(r=this._appListener)||void 0===r?void 0:r[e];if(n)try{n(...t)}catch(e){i.error(e)}}_onInvite(e){const t=e.inviteInfo||{},{inviterRoomId:r,inviterUserId:i,extra:n}=t,o={inviterRoomId:r,inviterUserId:i,extra:n};this._PKInfo[r]=t,this._callAppListener("onRequestJoinOtherRoom",o)}_onCancelInvite(e){const{inviterRoomId:t,inviterUserId:r,extra:i}=e.inviteInfo||{},n={inviterRoomId:t,inviterUserId:r,extra:i};delete this._PKInfo[t],this._callAppListener("onCancelRequestOtherRoom",n)}_onInviteTimeout(e){}_onInviteAnswer(e){const{answerCode:t,inviteContent:r}=e,{inviteSessionId:i,inviterUserId:n,inviterRoomId:o,inviteeUserId:s,inviterUserAutoMix:a,inviteeUserAutoMix:c,inviteeRoomId:d,extra:u}=r,l={agree:1===t,inviterRoomId:o,inviterUserId:n,inviteeRoomId:d,inviteeUserId:s,extra:u};this._PKInfo[d]=this._PKInfo[d]||{inviteSessionId:i,inviterRoomId:o,inviterUserId:n,inviterUserAutoMix:a,inviteeRoomId:d},this._PKInfo[d].inviteeUserAutoMix=c,this._callAppListener("onResponseJoinOtherRoom",l)}_onPKEnd(e){return r(this,void 0,void 0,(function*(){const{inviteeRoomId:t,inviterRoomId:r,userId:i}=e.inviteInfo,n=r===this._mainRoomId?t:r,o={endRoomId:n,endUserId:i};this._joinedPKRooms[n]&&(yield this.leaveOtherRoom(this._joinedPKRooms[n])),delete this._PKInfo[n],this._callAppListener("onFinishOtherRoom",o)}))}_onRecvPKMsg(e){const{targetId:t,content:r,messageType:i}=e;switch(i){case lt.PK_INVITE:this._onInvite(r);break;case lt.PK_CANCEL_INVITE:this._onCancelInvite(r);break;case lt.PK_INVITE_TIMEOUT:this._onInviteTimeout(r);break;case lt.PK_INVITE_ANSWER:this._onInviteAnswer(r);break;case lt.PK_END:this._onPKEnd(r)}}registerRoomPKEventListener(e){this._appListener=e}requestJoinOtherRoom(n,o,s){return r(this,void 0,void 0,(function*(){if(!t.validate("inviteeRoomId",n,t.notEmptyString,!0)||!t.validate("inviteeUserId",o,t.notEmptyString,!0))return{code:e.RCRTCCode.PARAMS_ERROR};i.info(`requestRoomPK -> inviteeRoomId: ${n}; inviteeUserId: ${o}; options: ${JSON.stringify(s||{})}`);const r=Wt(),a=!t.isBoolean(null==s?void 0:s.autoMix)||(null==s?void 0:s.autoMix),c={inviteSessionId:r,inviterRoomId:this._mainRoomId,inviterUserId:this._context.getCurrentId(),inviterUserAutoMix:a,inviteeRoomId:n,inviteeUserId:o,inviteeTimeoutTime:this._inviteTimeout,extra:(null==s?void 0:s.extra)||""},d={roomId:this._mainRoomId,invitedRoomId:n,invitedUserId:o,inviteTimeout:this._inviteTimeout,inviteInfo:JSON.stringify(c),inviteSessionId:r};i.info(`requestRoomPK -> params: ${JSON.stringify(d)}`);const u=yield this._context.requestRoomPK(d);return u!==t.ErrorCode.SUCCESS?(i.error(`requestRoomPK failed: ${u}`),{code:u}):(i.info("requestRoomPK success"),this._PKInfo[n]={inviteSessionId:r,inviterRoomId:this._mainRoomId,inviterUserId:this._context.getCurrentId(),inviterUserAutoMix:a,inviteeRoomId:n},{code:e.RCRTCCode.SUCCESS})}))}cancelRequestJoinOtherRoom(n,o,s){return r(this,void 0,void 0,(function*(){if(!t.validate("inviteeRoomId",n,t.notEmptyString,!0)||!t.validate("inviteeUserId",o,t.notEmptyString,!0))return{code:e.RCRTCCode.PARAMS_ERROR};if(!this._PKInfo[n])return i.error(`未发起过与 ${n} 房间内 ${o} 连麦的请求`),{code:e.RCRTCCode.PARAMS_ERROR};i.info(`canceRequestJoinPK -> inviteeRoomId: ${n}; inviteeUserId: ${o}; extra: ${s}`);const r={inviterRoomId:this._mainRoomId,inviterUserId:this._context.getCurrentId(),inviteeRoomId:n,inviteeUserId:o,extra:s||""},a={roomId:this._mainRoomId,invitedRoomId:n,invitedUserId:o,inviteSessionId:this._PKInfo[n].inviteSessionId,inviteInfo:JSON.stringify(r)};i.info(`canceRequestJoinPK -> params: ${JSON.stringify(a)}`);const c=yield this._context.cancelRoomPK(a);return c!==t.ErrorCode.SUCCESS?(i.error(`canceRequestJoinPK failed: ${c}`),{code:c}):(i.info("canceRequestJoinPK success"),delete this._PKInfo[n],{code:e.RCRTCCode.SUCCESS})}))}responseJoinOtherRoom(n,o,s,a){return r(this,void 0,void 0,(function*(){if(!t.validate("inviterRoomId",n,t.notEmptyString,!0)||!t.validate("inviterUserId",o,t.notEmptyString,!0))return{code:e.RCRTCCode.PARAMS_ERROR};if(!this._PKInfo[n])return i.error(`${n} 房间内的 ${o} 未发起过连麦请求`),{code:e.RCRTCCode.PARAMS_ERROR};i.info(`responseRoomPK -> inviterRoomId: ${n}; inviterUserId: ${o}; agree: ${s}; options: ${JSON.stringify(a||{})}`);const{inviteSessionId:r,inviterUserAutoMix:c}=this._PKInfo[n],d=!t.isBoolean(null==a?void 0:a.autoMix)||(null==a?void 0:a.autoMix),u={inviteSessionId:r,inviterRoomId:n,inviterUserId:o,inviterUserAutoMix:c,inviteeRoomId:this._mainRoomId,inviteeUserId:this._context.getCurrentId(),inviteeUserAutoMix:d},l=Object.assign(u,{inviterUserAutoMix:c}),h=s?Object.assign(u,{MultiRoomKey:`${n}|${this._mainRoomId}`,MultiRoomValue:JSON.stringify(l)}):u;!t.isUndefined(null==a?void 0:a.extra)&&Object.assign(h,{extra:a.extra});const p={agree:s,roomId:this._mainRoomId,inviteSessionId:r,inviteRoomId:n,inviteUserId:o,content:JSON.stringify(h),key:`${n}|${this._mainRoomId}`,value:JSON.stringify(u)};i.info(`responseRoomPK -> params: ${JSON.stringify(p)}`);const m=yield this._context.responseRoomPK(p);return m!==t.ErrorCode.SUCCESS?(i.error(`responseRoomPK failed: ${m}`),{code:m}):(i.info("responseRoomPK success"),this._PKInfo[n].inviteeUserAutoMix=d,{code:e.RCRTCCode.SUCCESS})}))}_quitRoomPK(n){return r(this,void 0,void 0,(function*(){const{inviterRoomId:r,inviteeRoomId:o,inviterUserId:s}=this._PKInfo[n],a={inviteeRoomId:o,inviterRoomId:r,userId:this._context.getCurrentId()},c={roomId:this._mainRoomId,endRoomId:n,sessionId:this._PKInfo[n].inviteSessionId,content:JSON.stringify(a),keys:[`${r}|${s}`]};i.info(`quitRoomPK -> params: ${JSON.stringify(c)}`);const d=yield this._context.endRoomPK(c);return d!==t.ErrorCode.SUCCESS?(i.error(`quitRoomPK failed: ${d}`),{code:e.RCRTCCode.SIGNAL_ERROR}):(i.info("quitRoomPK success"),delete this._PKInfo[n],{code:e.RCRTCCode.SUCCESS})}))}_relaseCrtRoom(){}joinOtherRoom(n){return r(this,void 0,void 0,(function*(){if(!t.validate("roomId",n,t.notEmptyString,!0))return{code:e.RCRTCCode.PARAMS_ERROR};if(this._context.getConnectionStatus()!==t.ConnectionStatus.CONNECTED)return{code:e.RCRTCCode.SIGNAL_DISCONNECTED};if(i.info(`JoinPKRoom, roomId: ${n}`),this._joinedPKRooms[n])return{code:e.RCRTCCode.REPERT_JOIN_ROOM};const r=e.RCLivingType.VIDEO,o={extra:`{"roomId": "${this._mainRoomId}"}`},{code:s,data:a}=yield this._context.joinRTCRoom(n,t.RTCMode.LIVE,r,void 0,o);if(s!==t.ErrorCode.SUCCESS)return i.error(`JoinPKRoom failed -> code: ${s}`),{code:s};i.info(`JoinPKRoom success -> userId: ${this._context.getCurrentId()}, roomId: ${n}, data: ${JSON.stringify(a)}`);const c=new qt(this._context,this._runtime,n,a,this._service,this._initOptions,this._relaseCrtRoom.bind(this),r,!1,!1);return this._joinedPKRooms[n]=c,this._onJoinedPKRoom(n,c),{room:c,code:e.RCRTCCode.SUCCESS,userIds:c.getRemoteUserIds(),tracks:c.getRemoteTracks()}}))}leaveOtherRoom(t,n){return r(this,void 0,void 0,(function*(){return c((()=>r(this,void 0,void 0,(function*(){const r=t.getRoomId();return i.info(`leavePKRoom -> userId: ${this._context.getCurrentId()} , roomId: ${r}`),yield t.__destroy(!0),delete this._joinedPKRooms[r],this._onLeavePKRoom(r),this._PKInfo[r]?(n&&this._quitRoomPK(r),{code:e.RCRTCCode.SUCCESS}):{code:e.RCRTCCode.SUCCESS}}))))}))}getPKInfo(e){return this._PKInfo[e]}getAllPKInfo(){return this._PKInfo}getJoinedPKRooms(){return this._joinedPKRooms}}class qt extends wt{constructor(e,r,i,n,o,s,a,c,d=!1,u){var l;if(super(e,r,i,n,t.RTCMode.LIVE,o,s,a,d,u),this._livingType=c,this._isMainRoom=u,this._CDNUris=null,this._CDNEnable=!1,this._mcuConfigBuilder=new Bt(this._onMCUConfigFlush.bind(this),this._isValidResourceId.bind(this),this._sendCDNInfoSignal.bind(this)),this._isMainRoom){const t=((e,t)=>{const r={};return t.forEach((t=>{const i=JSON.parse(t.value),{inviterRoomId:n,inviteeRoomId:o}=i;r[e===n?o:n]=JSON.parse(t.value)})),r})(this._roomId,n.roomInfo);this._roomPKHandler=new Yt(t,e,r,o,s,this,super._registerPKMsgListener.bind(this),this._onJoinedPKRoom.bind(this),this._onLeavePKRoom.bind(this))}const h=null===(l=n.roomInfo.filter((e=>"cdn_uris"===e.key))[0])||void 0===l?void 0:l.value;h&&(this._CDNUris=JSON.parse(h)[0])}_isValidResourceId(t){var r;const{userId:i}=ze(t),n=!!(null===(r=this._roomResources[i])||void 0===r?void 0:r.find((e=>qe(e)===t)));let o=!1;const{code:s,roomPKHandler:a}=this.getRoomPKHandler();if(s!==e.RCRTCCode.SUCCESS||!a)return n;const c=a.getJoinedPKRooms(),d=[];return Object.values(c).map((e=>{d.push(...e.getRemoteTracks())})),o=d.some((e=>t===e.getTrackId())),n||o}getLivingType(){return this._livingType}getMCUConfigBuilder(){return this._isMainRoom?this._mcuConfigBuilder:(i.error("the `getMCUConfigBuilder` is disabled in PK room"),{code:e.RCRTCCode.THE_FUNCTION_IS_DISABLED_IN_PKROOM})}_onMCUConfigFlush(t){return r(this,void 0,void 0,(function*(){const r={"App-Key":this._context.getAppkey(),Token:this._token,RoomId:this.getRoomId(),UserId:this._context.getCurrentId(),SessionId:this.getSessionId()},{code:n,res:o}=yield this._service.setMcuConfig(r,t);return n!==e.RCRTCCode.SUCCESS?(i.error(`set MCU config failed: ${n}`),{code:n}):(i.info("set MCU config success"),o.pull_url&&(this._CDNUris=JSON.parse(o.pull_url)),{code:n,res:o})}))}__onReconnected(){const e=Object.create(null,{__onReconnected:{get:()=>super.__onReconnected}});var t,i;return r(this,void 0,void 0,(function*(){const r=yield e.__onReconnected.call(this,this._livingType);if(!r||!r.data)return;const n=r.data.roomInfo,o=null===(t=n.filter((e=>"cdn_uris"===e.key))[0])||void 0===t?void 0:t.value;if(!o)return;const s=JSON.parse(o);(null===(i=this._CDNUris)||void 0===i?void 0:i.enableInnerCDN)!==s.enableInnerCDN&&this._callAppListener("onCDNEnableChange",s.enableInnerCDN),this._CDNUris=s}))}enableInnerCDN(n){return r(this,void 0,void 0,(function*(){if(!this._isMainRoom)return i.error("the `enableInnerCDN` is disabled in PK room"),{code:e.RCRTCCode.THE_FUNCTION_IS_DISABLED_IN_PKROOM};if(!t.isBoolean(n))return i.error("`enable` is invalid"),{code:e.RCRTCCode.PARAMS_ERROR};this._CDNEnable=n;const o={version:2,output:{inCDNModel:n?Ft.OPEN:Ft.STOP}},{code:s}=yield this._onMCUConfigFlush(o);if(s!==e.RCRTCCode.SUCCESS)return i.error(`enableInnerCDN failed -> code: ${s}`),{code:e.RCRTCCode.SIGNAL_ERROR};if(this._CDNUris&&this._CDNUris.broadcast!==Kt.SPREAD)return i.info("enableInnerCDN succeed"),{code:e.RCRTCCode.SUCCESS};const{code:a}=yield c((()=>r(this,void 0,void 0,(function*(){return this._sendCDNInfoSignal()}))));return a===e.RCRTCCode.SUCCESS?(i.info("enableInnerCDN succeed"),{code:e.RCRTCCode.SUCCESS}):(i.error(`enableInnerCDN failed -> code: ${a}`),{code:a})}))}_sendCDNInfoSignal(){return r(this,void 0,void 0,(function*(){this._CDNUris=Object.assign({},this._CDNUris,{enableInnerCDN:this._CDNEnable});return(yield Promise.all([this._spreadCDNInfo(this._CDNUris),this._setRoomCDNInfo(this._CDNUris)])).every((t=>t.code===e.RCRTCCode.SUCCESS))?{code:e.RCRTCCode.SUCCESS}:{code:e.RCRTCCode.SIGNAL_ERROR}}))}_spreadCDNInfo(n){return r(this,void 0,void 0,(function*(){const r=yield this._context.setRTCCDNUris(this._roomId,lt.TOTAL_CONTENT_RESOURCE,JSON.stringify([n]));return r!==t.ErrorCode.SUCCESS?(i.error(`spreadCDNInfo failed -> code: ${r}`),{code:e.RCRTCCode.SIGNAL_ERROR}):(i.info("spreadCDNInfo succeed"),{code:e.RCRTCCode.SUCCESS})}))}_setRoomCDNInfo(n){return r(this,void 0,void 0,(function*(){const r=yield this._context.setRTCData(this._roomId,"cdn_uris",JSON.stringify([n]),!0,t.RTCApiType.ROOM);return r!==t.ErrorCode.SUCCESS?(i.error(`setRoomCDNInfo failed -> code: ${r}`),{code:e.RCRTCCode.SIGNAL_ERROR}):(i.info("setRoomCDNInfo succeed"),{code:e.RCRTCCode.SUCCESS})}))}_resourceHandle(e,t,i){const n=Object.create(null,{_resourceHandle:{get:()=>super._resourceHandle}});var o;return r(this,void 0,void 0,(function*(){n._resourceHandle.call(this,e,t,i),e.cdn_uris&&((null===(o=this._CDNUris)||void 0===o?void 0:o.enableInnerCDN)!==e.cdn_uris[0].enableInnerCDN&&this._callAppListener("onCDNEnableChange",!this.__getCDNEnable()),this._CDNUris=e.cdn_uris[0])}))}_exchangeHandle(t){var i,n,o;return r(this,void 0,void 0,(function*(){const r=yield this._service.exchange(this._getRTCReqestHeaders(),t),s=null===(n=null===(i=r.data)||void 0===i?void 0:i.urls)||void 0===n?void 0:n.pull_url;return r.code===e.RCRTCCode.SUCCESS&&s?(this._CDNUris=JSON.parse(s),(null===(o=this._CDNUris)||void 0===o?void 0:o.broadcast)===Kt.SPREAD&&(this._CDNEnable=!0,this._sendCDNInfoSignal()),r):r}))}_afterChangedRole(e){const t=ut(e,this._roomId),r=this._context.getCurrentId(),i=Object.keys(t);setTimeout((()=>{var n,o,s;const a=i.filter((e=>e!==r));a.length>0&&this._callAppListener("onUserJoin",a);for(const e in t)e!==r&&this._resourceHandle({uris:t[e]},lt.TOTAL_CONTENT_RESOURCE,e);(null===(n=e.roomInfo.filter((e=>"cdn_uris"===e.key))[0])||void 0===n?void 0:n.value)&&(null===(o=this._CDNUris)||void 0===o?void 0:o.push_mode)===Gt.MANUAL&&this._callAppListener("onCDNEnableChange",null===(s=this._CDNUris)||void 0===s?void 0:s.enableInnerCDN)}))}__getCDNEnable(){var e;return null===(e=this._CDNUris)||void 0===e?void 0:e.enableInnerCDN}__getCDNPushMode(){var e;return null===(e=this._CDNUris)||void 0===e?void 0:e.push_mode}_onJoinedPKRoom(t,i){c((()=>r(this,void 0,void 0,(function*(){const{code:r,roomPKHandler:i}=this.getRoomPKHandler();if(r===e.RCRTCCode.SUCCESS&&i){if(!i.getPKInfo(t))return;this._exchangeWithPushOtherRoom()}}))))}_onLeavePKRoom(t){c((()=>r(this,void 0,void 0,(function*(){const{code:r,roomPKHandler:i}=this.getRoomPKHandler();if(r===e.RCRTCCode.SUCCESS&&i){if(!i.getPKInfo(t))return;this._exchangeWithPushOtherRoom()}}))))}_getPushOtherRoomsParams(){const e=[];if(!this.isMainRoom()||!this._roomPKHandler)return e;const t=this._roomPKHandler.getJoinedPKRooms();for(const r in t){const i=t[r].getSessionId(),n=this._roomPKHandler.getPKInfo(r);if(!n)continue;const{inviterUserAutoMix:o,inviteeUserAutoMix:s,inviterUserId:a}=n,c=this._context.getCurrentId()===a;e.push({roomId:r,sessionId:i,autoMix:c?!!o:!!s})}return e}_exchangeWithPushOtherRoom(){return r(this,void 0,void 0,(function*(){if(!this.getLocalTracks().length)return;const t=yield this._createExchangeParams(this._subscribedList,!1),r=this._getPushOtherRoomsParams();r&&(t.pushOtherRooms=r);const n=yield this._exchangeHandle(t);if(n.code!==e.RCRTCCode.SUCCESS)return i.error(`reTryExchange failed: ${n.code}`),{code:n.code};const{sdp:o,resultCode:s}=n.data;if(s!==e.RCRTCCode.SUCCESS)return i.error(`exchange with pushOtherRoom failed: ${s}`),{code:s};const a=yield this._pc.setRemoteAnswer(o.sdp);return a!==e.RCRTCCode.SUCCESS?{code:a}:void 0}))}getRoomPKHandler(){return this._isMainRoom?{code:e.RCRTCCode.SUCCESS,roomPKHandler:this._roomPKHandler}:(i.error("the `getRoomPKHandler` is disabled in PK room"),{code:e.RCRTCCode.THE_FUNCTION_IS_DISABLED_IN_PKROOM})}_quitAllPKRoom(){const e=this._roomPKHandler.getJoinedPKRooms();for(const t in e){const r=e[t];this._roomPKHandler.leaveOtherRoom(r)}}isMainRoom(){return this._isMainRoom}}class zt extends wt{constructor(e,r,i,n,o,s,a){super(e,r,i,n,t.RTCMode.RTC,o,s,a,!1)}}const Qt=()=>({"Content-Type":"application/json;charset=UTF-8","Cache-Control":"no-cache",ClientType:`web|${ot.browser}|${ot.version}`,ClientVersion:"5.3.5","Client-Session-Id":Wt(),"Request-Id":Date.now().toString()});class Xt{constructor(e,t,r,i=5e3){this._runtime=e,this._context=t,this._msUrl=r,this._timeout=i,this._msInNavi=[],this._failedMs=[],this._rtcFinger=void 0,this._clusterId="",this._configUrl=""}getNaviMS(){return this._msUrl?[this._msUrl]:this._clusterId?[`https://${this._clusterId}`]:(0===this._msInNavi.length&&(0===this._failedMs.length?this._msInNavi.push(...(e=>{var t;if(!e)return[];let r;try{r=JSON.parse(e.voipCallInfo||'{ "strategy": 0 }')}catch(t){return i.warn("parse `voipCallInfo` of navi failed: "+e.voipCallInfo),[]}if(0===r.strategy)return[];const n=null===(t=r.callEngine)||void 0===t?void 0:t.filter((e=>4===e.engineType));if(!n||0===n.length)return[];const o=n[0],s=[];return o.mediaServer&&s.push(o.mediaServer.replace(/^(https?:\/\/)?/,"https://")),o.backupMediaServer&&o.backupMediaServer.forEach((e=>{s.push(e.replace(/^(https?:\/\/)?/,"https://"))})),s})(this._context.getNaviInfo())):(this._msInNavi.push(...this._failedMs),this._failedMs.length=0)),this._msInNavi.map((e=>e.trim())))}_request(n,o,s){return r(this,void 0,void 0,(function*(){const r=this.getNaviMS();if(0===r.length)return{code:e.RCRTCCode.NOT_OPEN_VIDEO_AUDIO_SERVER};this._rtcFinger&&(s.rtcFinger=this._rtcFinger);for(let a=0;a<r.length;a+=1){const c=`${r[a]}${n}`,d=Qt();i.debug(`request -> Request-Id: ${d["Request-Id"]}, url: ${c}`);const{status:u,data:l}=yield this._runtime.httpReq({url:c,body:JSON.stringify(s),headers:Object.assign(Object.assign({},d),o),method:t.HttpMethod.POST,timeout:this._timeout});if(200===u){const t=JSON.parse(l);return t.rtcFinger&&(this._rtcFinger=t.rtcFinger),t.clusterId&&(this._clusterId=t.clusterId),i.debug(`request success -> Request-Id: ${d["Request-Id"]}`),{code:e.RCRTCCode.SUCCESS,data:t}}i.warn(`request failed -> Request-Id: ${d["Request-Id"]}, status: ${u}, url: ${c}`),this._failedMs.push(...this._msInNavi.splice(a,1))}return{code:e.RCRTCCode.REQUEST_FAILED}}))}exchange(t,i){var n;return r(this,void 0,void 0,(function*(){const r=yield this._request("/exchange",t,i);if(r.code===e.RCRTCCode.SUCCESS&&(null===(n=r.data)||void 0===n?void 0:n.resultCode)===e.RCRTCCode.SUCCESS){const e=r.data.urls;e&&(this._configUrl=e.configUrl)}return r}))}exit(e){return r(this,void 0,void 0,(function*(){const{code:t}=yield this._request("/exit",e,{});return t}))}broadcastSubscribe(e,t){return this._request("/broadcast/subscribe",e,t)}broadcastExit(e){return r(this,void 0,void 0,(function*(){const{code:t}=yield this._request("/broadcast/exit",e,{});return{code:t}}))}setMcuConfig(n,o){return r(this,void 0,void 0,(function*(){if(!this._configUrl)return{code:e.RCRTCCode.MCU_SERVER_NOT_FOUND};const r=`${this._configUrl.replace(/^(https?:\/\/)?/,"https://")}/server/mcu/config`,s=Qt();i.debug(`request -> Request-Id: ${s["Request-Id"]}, url: ${r}`);const{status:a,data:c}=yield this._runtime.httpReq({url:r,headers:Object.assign(Object.assign({},s),n),body:JSON.stringify(o),method:t.HttpMethod.POST});if(200===a){i.debug(`request success -> Request-Id: ${s["Request-Id"]}`);const e=JSON.parse(c);return{code:e.resultCode,res:e}}return{code:e.RCRTCCode.REQUEST_FAILED}}))}getCDNResourceInfo(n,o){return r(this,void 0,void 0,(function*(){const r=Qt(),{status:s,data:a}=yield this._runtime.httpReq({url:o,headers:Object.assign(Object.assign({},r),n),method:t.HttpMethod.GET});if(200===s){const e=JSON.parse(a);return{code:e.resultCode,res:e}}return i.warn(`request failed -> Request-Id: ${r["Request-Id"]}, status: ${s}, url: ${o}`),{code:e.RCRTCCode.REQUEST_FAILED}}))}}class Zt{constructor(e,t,r){this._context=e,this._rtcToken="",this._liveUrl="",this._subTracks=[],this._livingType=null,this._mediaType=null,this._subTiny=!1,this._fromRetry=!1,this._appListener=null,this._service=new Xt(t,e,r.mediaServer)}_getReqHeaders(n){return r(this,void 0,void 0,(function*(){const r=this._context.getCurrentId(),o=r;if(!this._rtcToken){const{code:r,data:s}=yield this._context.getRTCToken(o,t.RTCMode.LIVE,n);if(r!==t.ErrorCode.SUCCESS)return i.error(`getRTCToken failed: ${r}`),{code:e.RCRTCCode.SIGNAL_ERROR};this._rtcToken=s.rtcToken}return{code:e.RCRTCCode.SUCCESS,headers:{"App-Key":this._context.getAppkey(),UserId:r,RoomId:o,RoomType:t.RTCMode.LIVE,Token:this._rtcToken}}}))}_clearSubscribeInfo(){var e;this._liveUrl="",this._livingType=null,this._mediaType=null,this._subTiny=!1,this._subTracks.length=0,null===(e=this._pc)||void 0===e||e.destroy(),this._pc=null}_reTryExchange(){var t;return r(this,void 0,void 0,(function*(){this._fromRetry=!0;const{code:r}=yield this.subscribe(this._liveUrl,this._livingType,this._mediaType,this._subTiny);r===e.RCRTCCode.SUCCESS&&(null===(t=this._pc)||void 0===t||t.clearReTryExchangeTimer())}))}subscribe(e,t,i,n=!1){return r(this,void 0,void 0,(function*(){return c((()=>this.__subscribe(e,t,i,n)))}))}__subscribe(n,o,s,a=!1){var c;return r(this,void 0,void 0,(function*(){const r=[];if(dt(this._context.getNaviInfo()))return{code:e.RCRTCCode.PACKAGE_ENVIRONMENT_ERROR,tracks:r};if(!this._fromRetry&&(null===(c=this._pc)||void 0===c||c.clearReTryExchangeTimer()),this._fromRetry=!1,!t.isString(n))return i.error(`liveUrl is invalid: ${n}`),{code:e.RCRTCCode.PARAMS_ERROR,tracks:r};if(![e.RCLivingType.AUDIO,e.RCLivingType.VIDEO].includes(o))return i.error(`livingType is invalid: ${o}`),{code:e.RCRTCCode.PARAMS_ERROR,tracks:r};if(![e.RCMediaType.AUDIO_ONLY,e.RCMediaType.VIDEO_ONLY,e.RCMediaType.AUDIO_VIDEO].includes(s))return i.error(`mediaType is invalid: ${s}`),{code:e.RCRTCCode.PARAMS_ERROR,tracks:r};if(this._liveUrl&&this._liveUrl!==n)return{code:e.RCRTCCode.BROADCAST_SUB_LIST_NOT_EMPTY,tracks:r};this._pc||(this._pc=new Pt(this._reTryExchange.bind(this)),this._pc.on(Pt.__INNER_EVENT_TRACK_READY__,this._onTrackReady,this),this.registerReportListener(this._reportListener)),this._liveUrl=n;const{code:d,headers:u}=yield this._getReqHeaders(o);if(d!==e.RCRTCCode.SUCCESS)return{code:d,tracks:r};const l=`rc_mcu_${Date.now()}`,h="RongCloudRTC";0===this._subTracks.length&&(this._subTracks.push(new Ve(h,l),new He(h,l)),this._pc.updateSubRemoteTracks(this._subTracks.slice()));const p={sdp:yield this._pc.createOffer(!0),liveUrl:n,mediaType:s,simulcast:a?mt.TINY:mt.NORMAL,switchstream:!1},m=yield this._service.broadcastSubscribe(u,p);if(m.code!==e.RCRTCCode.SUCCESS)return i.error(`andience subscribe failed: ${m.code}`),{code:m.code,tracks:r};const _=m.data;if(_.resultCode!==e.RCRTCCode.SUCCESS)return i.error(`andience subscribe failed! code: ${_.resultCode}; message: ${_.message}`),{code:_.resultCode,tracks:r};i.debug(`andience subscribe success: ${n}`),this._livingType=o,this._mediaType=s,this._subTiny=a;const{sdp:R,subscribedList:C}=_,f=[];return C.forEach((e=>{const{mediaType:t}=e,r=this._subTracks[t];f.push(r),r.__innerSetRemoteMuted(!0)})),this._pc.setRemoteAnswer(R.sdp),{code:e.RCRTCCode.SUCCESS,tracks:f}}))}unsubscribe(){return r(this,void 0,void 0,(function*(){return c((()=>this.__unsubscribe()))}))}__unsubscribe(){var t;return r(this,void 0,void 0,(function*(){if(null===(t=this._pc)||void 0===t||t.clearReTryExchangeTimer(),!this._rtcToken||!this._liveUrl)return{code:e.RCRTCCode.SUCCESS};const{headers:r}=yield this._getReqHeaders(),{code:n}=yield this._service.broadcastExit(r);return n!==e.RCRTCCode.SUCCESS?i.error(`broadcast unsubscribe failed: ${n}`):i.debug("broadcast unsubscribe success"),this._clearSubscribeInfo(),{code:n}}))}registerReportListener(e){var t;this._reportListener=e,null===(t=this._pc)||void 0===t||t.registerReportListener(e)}registerTrackEventListener(e){this._appListener=e}_onTrackReady(t){var r,n;const o=t.receiver.track,s="audio"===o.kind?e.RCMediaType.AUDIO_ONLY:e.RCMediaType.VIDEO_ONLY,a=this._subTracks[s];a.__innerSetMediaStreamTrack(o);try{null===(n=null===(r=this._appListener)||void 0===r?void 0:r.onTrackReady)||void 0===n||n.call(r,a)}catch(e){i.error(e)}}}var er,tr;e.RCInnerCDNPullKind=void 0,(er=e.RCInnerCDNPullKind||(e.RCInnerCDNPullKind={})).RTMP="rtmp",er.FLV="flv",er.HLS="hls",e.RCInnerCDNPullIsHttps=void 0,(tr=e.RCInnerCDNPullIsHttps||(e.RCInnerCDNPullIsHttps={}))[tr.NOT_HTTPS=0]="NOT_HTTPS",tr[tr.HTTPS=1]="HTTPS";const rr=Object.assign(Object.assign({},tt(e.RCResolution.W176_H144)),{frameRate:nt(e.RCFrameRate.FPS_15)});class ir{constructor(t,r,n,o,s,a){this._context=t,this._runtime=r,this._initOptions=n,this._roomId=o,this._joinResData=s,this._livingType=a,this._roomAnchorList=[],this._roomRes={},this._roomAnchorRes={},this._remoteTracks={},this._appListener=null,this._subscribedList=[],this._sessionId="",this._destroyed=!1,this._setInitData(),this._service=new Xt(this._runtime,this._context,this._initOptions.mediaServer,this._initOptions.timeout),this._polarisReport=new Mt(this._context,this._runtime,this._roomId,this,Lt.Audience),this._polarisReport.sendR1(),this._pc=new Pt(this._reTryExchange.bind(this),this._polarisReport),this._pc.on(Pt.__INNER_EVENT_TRACK_READY__,(t=>{const r=t.streams[0].id,n=t.receiver.track,o=[r,"audio"===n.kind?e.RCMediaType.AUDIO_ONLY:e.RCMediaType.VIDEO_ONLY].join("_"),s=this._remoteTracks[o];s?(s.__innerSetMediaStreamTrack(n),this._callAppListener("onTrackReady",s)):i.warn("cannot found RCRemoteTrack:",n.id)})),this._context.onrtcdatachange=this.singalDataChange.bind(this)}_setInitData(){const{sessionId:t,remoteUserIds:r,remoteRTCUris:i,remoteMUCUris:n,remoteTracks:o,CDNUris:s}=((t,r)=>{const i=r.filter((e=>"RC_RTC_SESSIONID"===e.key))[0],n=i?i.value:"",o=r.filter((e=>"RC_ANCHOR_LIST"===e.key)).map((e=>JSON.parse(e.value||"[]")))[0],s=r.filter((e=>e.key.includes("RC_RES_"))).map((e=>JSON.parse(e.value||"{}"))),a=s.length?JSON.parse(s[0].mcu_uris||"[]"):[],c=[];a.forEach((r=>{const{mediaType:i,tag:n}=r,o=i===e.RCMediaType.AUDIO_ONLY?new Ve(n,"",t):new He(n,"",t);c.push(o)}));const d=[],u=[];s.forEach((t=>{const r=JSON.parse(t.uris||"[]");d.push(...r),r.forEach((t=>{const{mediaType:r,tag:i,msid:n}=t,o=n.split("_")[0],s=r===e.RCMediaType.AUDIO_ONLY?new Ve(i,o):new He(i,o);u.push(s)}))}));const l=r.filter((e=>"RC_CDN"===e.key)).map((e=>{const t=JSON.parse(e.value||"[]");return JSON.parse(t.cdn_uris)[0]}))[0];return{sessionId:n,remoteUserIds:o||[],remoteRTCUris:d,remoteMUCUris:a,remoteRTCTracks:u,remoteMCUTracks:c,remoteTracks:[...u,...c],CDNUris:l||{}}})(this._roomId,this._joinResData.kvEntries);this._sessionId=t,this._roomAnchorList=r,o.forEach((e=>{this._remoteTracks[e.getTrackId()]=e})),this._CDNUris=s,i.forEach((e=>{const t=e.msid.split("_")[0];this._roomAnchorRes[t]?this._roomAnchorRes[t].push(e):this._roomAnchorRes[t]=[e]})),n.forEach((e=>{const{mediaType:t,tag:r}=e,i=[this._roomId,r,t].join("_");this._roomRes[i]=e})),i.forEach((e=>{const t=qe(e);this._roomRes[t]=e}))}_assertRoomDestroyed(){if(this._destroyed){const t="This room has been destroyed. Please use `RCRTCClient.joinLivingRoomAsAudience` to catch another instance.";return i.warn(t),e.RCRTCCode.ROOM_HAS_BEEN_DESTROYED}}singalDataChange(e,t){var r;if(t!==this._roomId)return void i.warn(`singalDataChange -> not the current room data: data roomId: ${t}, current roomId: ${this._roomId}`);i.debug("singalDataChange -> singalData:",JSON.stringify(e||{}));const n=[],o=null===(r=e.filter((e=>"RC_CDN"===e.key))[0])||void 0===r?void 0:r.value;o&&this._diffCDNUris(JSON.parse(JSON.parse(o).cdn_uris)[0]),e.forEach((e=>{const{key:t,value:r,timestamp:i,uid:o}=e;if(-1!==t.indexOf("RC_RES_")){const e=JSON.parse(r||"{}"),t=JSON.parse(e.mcu_uris||"[]"),i=JSON.parse(e.uris||"[]");return n.push(...t),void this._diffAnchorResource(i,o)}if("RC_ANCHOR_LIST"===t){const e=JSON.parse(r||"[]"),{joinUserIds:t,leftUserIds:i}=this._diffAnchorList(e);t.length>0&&this._handleNewJoinedAnchor(t),i.length>0&&this._handleLeftedAnchor(i)}})),this._diffRoomResource(n)}_diffAnchorList(e){const t=e.filter((e=>this._roomAnchorList.indexOf(e)<0));return{leftUserIds:this._roomAnchorList.filter((t=>e.indexOf(t)<0)),joinUserIds:t}}_handleNewJoinedAnchor(e){this._roomAnchorList.push(...e),this._callAppListener("onAnchorJoin",e)}_handleLeftedAnchor(e){return r(this,void 0,void 0,(function*(){this._roomAnchorList=this._roomAnchorList.filter((t=>!(e.indexOf(t)>-1)));const t=[];e.forEach((e=>{t.push(...this.getRemoteTracksByUserId(e)),delete this._roomAnchorRes[e]})),t.length&&(yield this.unsubscribe(t),t.forEach((e=>delete this._remoteTracks[e.getTrackId()]))),this._callAppListener("onAnchorLeave",e)}))}_diffRoomResource(t){return r(this,void 0,void 0,(function*(){const r=[],i=[],n=[];t.forEach((t=>{const i=qe(t),{userId:o,tag:s,mediaType:a}=ze(i),c=[this._roomId,s,a].join("_");if(!this._remoteTracks[c]){const i=a===e.RCMediaType.AUDIO_ONLY?new Ve(s,"",this._roomId):new He(s,"",this._roomId);r.push(i),this._remoteTracks[c]=i,this._roomRes[i.getTrackId()]=t}n.push(c)})),Object.keys(this._remoteTracks).forEach((e=>{n.indexOf(e)<0&&this._remoteTracks[e].isMCUTrack()&&i.push(this._remoteTracks[e])})),r.length>0&&this._callAppListener("onTrackPublish",r),i.length>0&&this._onUserUnpublish(i,"onTrackUnpublish")}))}_diffAnchorResource(t,n){return r(this,void 0,void 0,(function*(){const r=this._roomAnchorRes[n]||(this._roomAnchorRes[n]=[]),{publishedList:o,unpublishedList:s,modifiedList:a}=Ze(r,t);if(o.length){const t=r.map(qe),n=[],s=[];if(o.forEach((i=>{const o=qe(i),a=t.indexOf(o),{userId:c,tag:d,mediaType:u}=ze(o);a>-1?r[a]=i:r.push(i);let l=this._remoteTracks[o];this._roomRes[o]=i,l?l.isSubscribed()&&n.push(l):(l=u===e.RCMediaType.AUDIO_ONLY?new Ve(d,c):new He(d,c),this._remoteTracks[o]=l,s.push(l)),l.__innerSetRemoteMuted(0===i.state)})),n.length){const t=n.map((e=>e.getTrackId()));i.debug(`resub tracks -> ${JSON.stringify(t)}`);const{code:r}=yield c((()=>this._subscribeHandle(n,!0)));r!==e.RCRTCCode.SUCCESS&&i.error(`resub tracks failed -> code: ${r}, ids: ${JSON.stringify(t)}`)}this._callAppListener("onAnchorTrackPublish",s)}if(s.length){const e=s.map(qe);for(let t=r.length-1;t>=0;t-=1){const i=r[t];e.includes(qe(i))&&r.splice(t,1)}const t=s.map((e=>{const t=qe(e);return this._remoteTracks[t]}));yield this._onUserUnpublish(t,"onAnchorTrackUnpublish")}if(a.length){const e=r.map(qe);for(let t=0;t<a.length;t++){const i=a[t],n=qe(i),o=e.indexOf(n);r[o].state=i.state;const s=this._remoteTracks[n];s.__innerSetRemoteMuted(0===i.state),s.isAudioTrack()?this._callAppListener("onAudioMuteChange",s):this._callAppListener("onVideoMuteChange",s)}}}))}_onUserUnpublish(e,t){return r(this,void 0,void 0,(function*(){yield this.unsubscribe(e),e.forEach((e=>{this._subscribedList=this._subscribedList.filter((t=>t.track.getTrackId()!==e.getTrackId())),delete this._roomRes[e.getTrackId()],e.__innerDestroy(),delete this._remoteTracks[e.getTrackId()]})),this._callAppListener(t,e)}))}_callAppListener(e,...t){var r;const n=null===(r=this._appListener)||void 0===r?void 0:r[e];if(n)try{n(...t)}catch(e){i.error(e)}}_reTryExchange(){return r(this,void 0,void 0,(function*(){c((()=>r(this,void 0,void 0,(function*(){var t;const{reqBody:r}=yield this._createSubscribeParams(this._subscribedList,{},!0),n=yield this._exchangeHandle(r);if(n.code!==e.RCRTCCode.SUCCESS)return i.error(`reTryExchange failed: ${n.code}`),{code:n.code};const{sdp:o,resultCode:s}=n.data;if(s!==e.RCRTCCode.SUCCESS)return i.error(`reTryExchange failed: ${s}`),{code:s};this._pc.clearReTryExchangeTimer();const a=this._subscribedList.filter((e=>e.track.isMCUTrack()));if(a.length>0){const e=a[0].track.getTrackId(),r=null===(t=this._roomRes[e])||void 0===t?void 0:t.msid,i=[this._roomId,"RongCloudRTC"].join("_");o.sdp=o.sdp.replace(new RegExp(r,"g"),i)}const c=yield this._pc.setRemoteAnswer(o.sdp);return c!==e.RCRTCCode.SUCCESS?{code:c}:void 0}))))}))}_createSubscribeParams(e,t,i){return r(this,void 0,void 0,(function*(){const r=yield this._pc.createOffer(i),n={resolutionInfo:[]},o={min:0,max:0};Object.keys(t).forEach((e=>{const{mediaStream:i,tinyStream:s}=t[e];[i,s].forEach(((t,i)=>{var s;const a=1===i?[e,"tiny"].join("_"):e;r.sdp=null===(s=r.sdp)||void 0===s?void 0:s.replace(new RegExp(t.id,"g"),a);const c=t.getVideoTracks()[0];if(!c)return;const d=0===i,{width:u,height:l,frameRate:h}=d?We(c):rr;n.resolutionInfo.push({trackId:c.id,simulcast:d?mt.NORMAL:mt.TINY,resolution:`${u}x${l}`});const p=ye(u,l),m=be(h);o.min+=p.minBitrate*m,o.max+=p.maxBitrate*m}))}));return{reqBody:{sdp:r,switchstream:!1,newVersionFlag:!0,subscribeList:e.map((e=>({simulcast:e.subTiny?mt.TINY:mt.NORMAL,resolution:"",uri:this._roomRes[e.track.getTrackId()].uri})))},dynamicBitrate:o,offer:r}}))}_subscribeHandle(i,n=!1){var o;return r(this,void 0,void 0,(function*(){if(this._assertRoomDestroyed())return{code:e.RCRTCCode.ROOM_HAS_BEEN_DESTROYED};if(!t.validate("tracks",i,(()=>t.isArray(i)&&i.length>0&&i.every((e=>e instanceof je||e.track instanceof je))),!0))return{code:e.RCRTCCode.PARAMS_ERROR};const r=this._subscribedList.map((e=>Object.assign({},e))),s=i.map((e=>e instanceof je?{track:e}:e));let a=!1;const c=[];return s.forEach((e=>{const t=e.track.getTrackId();c.push(t);const i=r.find((e=>e.track.getTrackId()===t));i&&i.subTiny===e.subTiny||(i?i.subTiny=e.subTiny:r.push(e),a=!0)})),a||n?(null===(o=this._polarisReport)||void 0===o||o.sendR2(Nt.SUBSCRIBE,At.BEGIN,c),this._updateSubListHandle(r,!0)):{code:e.RCRTCCode.SUCCESS}}))}_getReqHeaders(){const e=this._context.getCurrentId();return{"App-Key":this._context.getAppkey(),RoomId:e,Token:this._joinResData.token,RoomType:t.RTCMode.LIVE,UserId:e,"Session-Id":this._sessionId}}_exchangeHandle(e){return this._service.broadcastSubscribe(this._getReqHeaders(),e)}_updateSubListHandle(n,o=!1){var s;return r(this,void 0,void 0,(function*(){if(this._assertRoomDestroyed())return{code:e.RCRTCCode.ROOM_HAS_BEEN_DESTROYED};if(!t.validate("resources",n,(()=>t.isArray(n)&&n.every((e=>e instanceof je||e.track instanceof je))),!0))return{code:e.RCRTCCode.PARAMS_ERROR};let r=n.map((e=>e instanceof je?{track:e}:Object.assign({},e)));const a={};r=r.filter((e=>{const t=e.track.getTrackId();return!a[t]&&(a[t]=!0)})).map((e=>Object.assign({},e)));const c=this._subscribedList.map((e=>Object.assign({},e)));if(!o){let t=!1;if(r.forEach((e=>{const r=c.findIndex((t=>t.track===e.track));if(-1===r)return void(t=!0);c.splice(r,1)[0].subTiny!==e.subTiny&&(t=!0)})),c.length&&(t=!0),!t)return{code:e.RCRTCCode.SUCCESS}}this._pc.clearReTryExchangeTimer(),this._pc.updateSubRemoteTracks(r.map((e=>e.track)));const{reqBody:d}=yield this._createSubscribeParams(r,{},!1),u=yield this._exchangeHandle(d);if(c.length){const e=[];c.forEach((t=>{e.push(t.track.getTrackId())})),null===(s=this._pc.reportParser)||void 0===s||s.clearLatestPacketsRecv(e)}if(u.code!==e.RCRTCCode.SUCCESS)return{code:u.code};const{sdp:l,resultCode:h,message:p,subscribedList:m}=u.data;if(h!==e.RCRTCCode.SUCCESS)return i.error("change subscribe list failed:",p,h),{code:h};r.forEach((e=>{const{track:t}=e;if(t.isMCUTrack()){const e=this._roomRes[t.getTrackId()].msid,{tag:r,userId:i}=ze(t.getTrackId()),n=[i,r].join("_");l.sdp=l.sdp.replace(new RegExp(e,"g"),n)}}));const _=yield this._pc.setRemoteAnswer(l.sdp);if(_!==e.RCRTCCode.SUCCESS)return{code:_};const R=null==m?void 0:m.map((e=>`${e.msid}_${e.mediaType}`)),C=r.filter((e=>{if(e.track.isMCUTrack()){const t=this._roomRes[e.track.getTrackId()],r=`${t.msid}_${t.mediaType}`;return R.includes(r)}return null==R?void 0:R.includes(e.track.getTrackId())})),f=null==C?void 0:C.map((e=>`${e.track.getTrackId()}`)),v=r.filter((e=>!(null==f?void 0:f.includes(e.track.getTrackId()))));for(const e in this._remoteTracks){const t=C.some((t=>t.track.getTrackId()===e));this._remoteTracks[e].__innerSetSubscribed(t)}return this._subscribedList.splice(0,this._subscribedList.length,...C),v.length?{code:e.RCRTCCode.SUCCESS,failedList:v}:{code:e.RCRTCCode.SUCCESS}}))}_diffCDNUris(e){return r(this,void 0,void 0,(function*(){if(this._CDNUris.url&&!e.url)return this._callAppListener("onCDNInfoDisable"),void(this._CDNUris=e);(!this._CDNUris||!this._CDNUris.url&&e.url)&&this._callAppListener("onCDNInfoEnable",{resolution:`W${e.w}_H${e.h}`,fps:`FPS_${e.fps}`});const t=this._CDNUris.w&&e.w&&this._CDNUris.w!==e.w,r=this._CDNUris.h&&e.h&&this._CDNUris.h!==e.h,i=this._CDNUris.fps&&e.fps&&this._CDNUris.fps!==e.fps;(t||r||i)&&this._callAppListener("onCDNInfoChange",{resolution:`W${e.w}_H${e.h}`,fps:`FPS_${e.fps}`}),this._CDNUris=e}))}_getCDNPlayUrl(t){return r(this,void 0,void 0,(function*(){const{w:r,h:n,fps:o}=t,s=this._initOptions.pullInnerCDNProtocol||e.RCInnerCDNPullKind.FLV,a=this._initOptions.pullInnerCDNUseHttps===e.RCInnerCDNPullIsHttps.NOT_HTTPS?e.RCInnerCDNPullIsHttps.NOT_HTTPS:e.RCInnerCDNPullIsHttps.HTTPS;if(!this._CDNUris.url)return i.error(`cdn_uris url is empty, the anchor need to open or push CDN, code: ${e.RCRTCCode.CDN_RESOURCE_IS_EMPTY}`),{code:e.RCRTCCode.CDN_RESOURCE_IS_EMPTY};const c={"App-Key":this._context.getAppkey(),Token:this._joinResData.token,RoomId:this.getRoomId(),UserId:this._context.getCurrentId(),SessionId:this.getSessionId()},d=[];r&&d.push(`w=${r}`),n&&d.push(`h=${n}`),o&&d.push(`fps=${o}`),d.push(`kind=${s}`),d.push(`is_https=${a}`);const u=d.join("&");let l=`${this._CDNUris.url}?`;u&&(l+=u);const{code:h,res:p}=yield this._service.getCDNResourceInfo(c,l);return h!==e.RCRTCCode.SUCCESS?(i.error(`getCDNPlayUrl failed: ${h}`),{code:h}):(i.info(`getCDNPlayUrl success: ${null==p?void 0:p.data.pull_url}`),{code:h,CDNPlayUrl:null==p?void 0:p.data.pull_url})}))}getCDNPlayUrl(t,n){return r(this,void 0,void 0,(function*(){if(t&&!rt(t))return i.error("`resolution` is invalid"),{code:e.RCRTCCode.PARAMS_ERROR};if(n&&!it(n))return i.error("`fps` is invalid"),{code:e.RCRTCCode.PARAMS_ERROR};const{width:r,height:o}=t?tt(t):{width:null,height:null},s=n?nt(n):null,a={};return r&&(a.w=r),o&&(a.h=o),s&&(a.fps=s),this._getCDNPlayUrl(a)}))}subscribe(e){return r(this,void 0,void 0,(function*(){return c((()=>this._subscribeHandle(e,!1)))}))}__unsubscribe(n){var o;return r(this,void 0,void 0,(function*(){if(!t.validate("tracks",n,(()=>t.isArray(n)&&n.length>0&&n.every((e=>e instanceof je))),!0))return i.error(`unsubscribe failed, tracks is invalid -> roomId: ${this._roomId}`),{code:e.RCRTCCode.PARAMS_ERROR};const r=this._subscribedList.map((e=>Object.assign({},e))).filter((e=>!n.includes(e.track)));return null===(o=this._polarisReport)||void 0===o||o.sendR2(Nt.SUBSCRIBE,At.END,n.map((e=>e.getTrackId()))),this._updateSubListHandle(r,!1)}))}unsubscribe(e){return r(this,void 0,void 0,(function*(){return c((()=>this.__unsubscribe(e)))}))}__destroy(e){var t;return r(this,void 0,void 0,(function*(){this._destroyed||(this._destroyed=!0,null===(t=this._audioLevelReport)||void 0===t||t.clearAudioLevelReportTimer(),e&&(yield this._context.quitLivingRoomAsAudience(this._roomId)),yield this._service.broadcastExit(this._getReqHeaders()),this._pc.destroy(),this._polarisReport=null,this._context.onrtcdatachange=()=>{})}))}getRemoteTrack(e){return this._remoteTracks[e]}__getPC(){return this._pc}getLocalTrack(e){return{}}__onReconnected(){return r(this,void 0,void 0,(function*(){const{code:e}=yield this._context.joinLivingRoomAsAudience(this._roomId,t.RTCMode.LIVE);e!==t.ErrorCode.SUCCESS&&i.error("join living room error when on reconnected")}))}registerRoomEventListener(e){this._appListener=e}onAudioLevelChange(e,t){var r;null===(r=this._audioLevelReport)||void 0===r||r.clearAudioLevelReportTimer(),this._audioLevelReport=new xt(this),this._audioLevelReport.onAudioLevelChange(e,t||1e3)}registerReportListener(e){var t;null===(t=this._pc)||void 0===t||t.registerReportListener(e)}getRoomId(){return this._roomId}getCrtUserId(){return this._context.getCurrentId()}getSessionId(){return this._sessionId}getRemoteUserIds(){return this._roomAnchorList}getRemoteTracksByUserId(e){const t=[];for(const r in this._remoteTracks){const i=this._remoteTracks[r];i.getUserId()===e&&t.push(i)}return t}getRemoteTracks(){const e=[],t=[];for(const e in this._remoteTracks){if(2===t.length)break;const r=this._remoteTracks[e];r.isMCUTrack()&&t.push(r)}return this._roomAnchorList.forEach((t=>{e.push(...this.getRemoteTracksByUserId(t))})),[...t,...e]}getRemoteRTCTracks(){const e=[];for(const t in this._remoteTracks){const r=this._remoteTracks[t];r.isMCUTrack()||e.push(r)}return e}getRemoteMCUTracks(){const e=[];for(const t in this._remoteTracks){const r=this._remoteTracks[t];r.isMCUTrack()&&e.push(r)}return e}getCDNInfo(){return this._CDNUris.w?{resolution:`W${this._CDNUris.w}_H${this._CDNUris.h}`,fps:`FPS_${this._CDNUris.fps}`,CDNEnable:this._CDNUris.enableInnerCDN}:{CDNEnable:!1}}}const nr=(e,t)=>{const r=[];return r[0]=(null==t?void 0:t.withoutAudio)?void 0:e.getAudioTracks()[0],r[1]=(null==t?void 0:t.withoutVideo)?void 0:e.getVideoTracks()[0],r};class or{constructor(e,t,r){this._context=e,this._runtime=t,this._options=r,this._crtRoom=null,this._audience=null,this._crtAudienceLivingRoom=null,yt.setSdpSemantics(r.sdpSemantics||"plan-b"),this._service=new Xt(this._runtime,this._context,this._options.mediaServer,this._options.timeout),this._context.onconnectionstatechange=this._onIMStatusChange.bind(this),this._context.ondisconnect=this._onIMDisconnect.bind(this),this._context.ondestroy=this._onIMUninit.bind(this),this._context.onmessage=this._handleMessage.bind(this)}_handleMessage(e){var r;if(e.conversationType!==t.ConversationType.RTC_ROOM)return!1;if(this._crtRoom instanceof qt){this._getJoinedPKRoomList().forEach((t=>{t.__parseInnerMessage(e)}))}return null===(r=this._crtRoom)||void 0===r||r.__parseInnerMessage(e),!0}_getJoinedPKRoomList(){const{code:t,roomPKHandler:r}=this._crtRoom.getRoomPKHandler();if(t===e.RCRTCCode.SUCCESS&&r){const e=r.getJoinedPKRooms()||{};return Object.values(e)}return[]}_getPKRoomIds(){const{code:t,roomPKHandler:r}=this._crtRoom.getRoomPKHandler();if(t===e.RCRTCCode.SUCCESS&&r){const e=r.getAllPKInfo();return Object.keys(e)}return[]}getCurrentId(){return this._context.getCurrentId()}joinRTCRoom(e,t,r){return c((()=>this._joinRTCRoom(e,t,r)))}_joinRTCRoom(n,s,a){return r(this,void 0,void 0,(function*(){if(dt(this._context.getNaviInfo()))return{code:e.RCRTCCode.PACKAGE_ENVIRONMENT_ERROR};if(!t.validate("roomId",n,t.notEmptyString,!0))return{code:e.RCRTCCode.PARAMS_ERROR};if(!t.validate("outerUserDatas",a,t.isObject,!1))return{code:e.RCRTCCode.PARAMS_ERROR};if(a){if(!Object.keys(a).every((e=>t.validate(`outerUserDatas.${e}`,a[e],t.isString,!0))))return{code:e.RCRTCCode.PARAMS_ERROR}}if(this._crtRoom)return{code:e.RCRTCCode.REPERT_JOIN_ROOM};if(this._context.getConnectionStatus()!==t.ConnectionStatus.CONNECTED)return{code:e.RCRTCCode.SIGNAL_DISCONNECTED};if(!this._service.getNaviMS().length)return{code:e.RCRTCCode.NOT_OPEN_VIDEO_AUDIO_SERVER};i.debug(`joinRoom -> roomId: ${n}; joinType: ${s||t.RTCJoinType.KICK}`);const{code:r,data:c}=yield this._context.joinRTCRoom(n,t.RTCMode.RTC,void 0,s,void 0,a);if(r!==t.ErrorCode.SUCCESS){i.error(`joinRoom failed -> code: ${r}`);return{code:r===o.JOIN_REFUSED?e.RCRTCCode.SIGNAL_JOIN_RTC_ROOM_REFUSED:r}}i.debug(`joinRoom success -> userId: ${this._context.getCurrentId()}, roomId: ${n}, data: ${JSON.stringify(c)}`);const d=new zt(this._context,this._runtime,n,c,this._service,this._options,this._releaseCrtRoomObj.bind(this));return this._crtRoom=d,{room:d,code:e.RCRTCCode.SUCCESS,userIds:d.getRemoteUserIds(),tracks:d.getRemoteTracks()}}))}joinLivingRoom(e,t,r,i){return c((()=>this._joinLivingRoom(e,t,r,i)))}_joinLivingRoom(n,o,s,a){return r(this,void 0,void 0,(function*(){if(dt(this._context.getNaviInfo()))return{code:e.RCRTCCode.PACKAGE_ENVIRONMENT_ERROR};if(!t.validate("roomId",n,t.notEmptyString,!0)||!t.validate("livingType",o,(t=>t===e.RCLivingType.AUDIO||t===e.RCLivingType.VIDEO)))return{code:e.RCRTCCode.PARAMS_ERROR};if(!t.validate("outerUserDatas",a,t.isObject,!1))return{code:e.RCRTCCode.PARAMS_ERROR};if(a){if(!Object.keys(a).every((e=>t.validate(`outerUserDatas.${e}`,a[e],t.isString,!0))))return{code:e.RCRTCCode.PARAMS_ERROR}}if(this._crtRoom)return{code:e.RCRTCCode.REPERT_JOIN_ROOM};if(this._context.getConnectionStatus()!==t.ConnectionStatus.CONNECTED)return{code:e.RCRTCCode.SIGNAL_DISCONNECTED};if(!this._service.getNaviMS().length)return{code:e.RCRTCCode.NOT_OPEN_VIDEO_AUDIO_SERVER};i.debug(`joinRoom, roomId: ${n}`);const{code:r,data:c}=yield this._context.joinRTCRoom(n,t.RTCMode.LIVE,o,s,void 0,a);if(r!==t.ErrorCode.SUCCESS)return i.error(`joinRoom failed -> code: ${r}`),{code:r};i.debug(`JoinRoom success -> userId: ${this._context.getCurrentId()}, roomId: ${n}, data: ${JSON.stringify(c)}`);const d=new qt(this._context,this._runtime,n,c,this._service,this._options,this._releaseCrtRoomObj.bind(this),o,!1,!0);this._crtRoom=d;const u={room:d,code:e.RCRTCCode.SUCCESS,userIds:d.getRemoteUserIds(),tracks:d.getRemoteTracks(),PKRoomIds:this._getPKRoomIds()};return d.__getCDNPushMode()===Gt.MANUAL&&Object.assign(u,{CDNEnable:d.__getCDNEnable()}),u}))}getAudienceClient(){return this._audience||(this._audience=new Zt(this._context,this._runtime,this._options)),this._audience}_onIMStatusChange(e){if(i.debug(`signal server connection state change: ${e}`),e===t.ConnectionStatus.CONNECTED){if(this._crtRoom instanceof qt){this._getJoinedPKRoomList().forEach((e=>{e.__onReconnected()}))}this._crtRoom&&this._crtRoom.__onReconnected()}}_onIMDisconnect(){i.debug("TODO -> on IM disconnect")}_onIMUninit(){i.debug("TODO -> on IM client ondestroy")}leaveRoom(e){return c((()=>this._leaveRoom(e)))}_leaveRoom(t){return r(this,void 0,void 0,(function*(){return this._crtRoom?(yield this._crtRoom.__destroy(!0),i.debug(`quitRTCRoom -> userId: ${this._context.getCurrentId()} , roomId: ${this._crtRoom.getRoomId()}`),this._crtRoom=null,{code:e.RCRTCCode.SUCCESS}):{code:e.RCRTCCode.SUCCESS}}))}_releaseCrtRoomObj(){this._crtRoom=null}_getMediaStream(t,n="getUserMedia"){return r(this,void 0,void 0,(function*(){try{const r=yield navigator.mediaDevices[n](t);return{code:e.RCRTCCode.SUCCESS,stream:r}}catch(t){if("Permission denied"===t.message)return{code:e.RCRTCCode.PERMISSION_DENIED};i.error(`get user media failed -> ${t.message}`)}return{code:"getUserMedia"===n?e.RCRTCCode.GET_USER_MEDIA_FAILED:e.RCRTCCode.GET_DISPLAY_MEDIA_FAILED}}))}createMicrophoneAudioTrack(t="RongCloudRTC",i){return r(this,void 0,void 0,(function*(){if(!Ke(t))return{code:e.RCRTCCode.INVALID_TAGS};const r=this._context.getCurrentId();if(!r)return{code:e.RCRTCCode.INVALID_USER_ID};const{stream:n,code:o}=yield this._getMediaStream({audio:{deviceId:null==i?void 0:i.micphoneId,sampleRate:null==i?void 0:i.sampleRate}});if(o!==e.RCRTCCode.SUCCESS)return{code:o};const s=n.getAudioTracks()[0];return{code:o,track:new Ue(t,r,s)}}))}createCameraVideoTrack(t="RongCloudRTC",i){return r(this,void 0,void 0,(function*(){if(!Ke(t))return{code:e.RCRTCCode.INVALID_TAGS};const r=this._context.getCurrentId();if(!r)return{code:e.RCRTCCode.INVALID_USER_ID};const n=rt(null==i?void 0:i.resolution)?i.resolution:e.RCResolution.W640_H480,{width:o,height:s}=tt(n),{stream:a,code:c}=yield this._getMediaStream({video:{deviceId:null==i?void 0:i.cameraId,frameRate:nt((null==i?void 0:i.frameRate)||e.RCFrameRate.FPS_15),width:o,height:s,facingMode:null==i?void 0:i.faceMode}});if(c!==e.RCRTCCode.SUCCESS)return{code:c};const d=a.getVideoTracks()[0];return{code:c,track:new we(t,r,d)}}))}createMicrophoneAndCameraTracks(t="RongCloudRTC",i){var n,o,s,a,c,d;return r(this,void 0,void 0,(function*(){const r=[];if(!Ke(t))return{code:e.RCRTCCode.INVALID_TAGS,tracks:r};const u=this._context.getCurrentId();if(!u)return{code:e.RCRTCCode.INVALID_USER_ID,tracks:r};const l=rt(null===(n=null==i?void 0:i.video)||void 0===n?void 0:n.resolution)?i.video.resolution:e.RCResolution.W640_H480,{width:h,height:p}=tt(l),{stream:m,code:_}=yield this._getMediaStream({video:{deviceId:null===(o=null==i?void 0:i.video)||void 0===o?void 0:o.cameraId,frameRate:nt((null===(s=null==i?void 0:i.video)||void 0===s?void 0:s.frameRate)||e.RCFrameRate.FPS_15),width:h,height:p,facingMode:null===(a=null==i?void 0:i.video)||void 0===a?void 0:a.faceMode},audio:{deviceId:null===(c=null==i?void 0:i.audio)||void 0===c?void 0:c.micphoneId,sampleRate:null===(d=null==i?void 0:i.audio)||void 0===d?void 0:d.sampleRate}});return _!==e.RCRTCCode.SUCCESS||m.getTracks().forEach((e=>{"video"===e.kind?r.push(new we(t,u,e)):r.unshift(new Ue(t,u,e))})),{code:_,tracks:r}}))}createScreenVideoTrack(t="screenshare",i){return r(this,void 0,void 0,(function*(){if(!Ke(t))return{code:e.RCRTCCode.INVALID_TAGS};const r=this._context.getCurrentId();if(!r)return{code:e.RCRTCCode.INVALID_USER_ID};if(!at())return{code:e.RCRTCCode.BROWSER_NOT_SUPPORT};const n=/Electron/.test(navigator.userAgent);if(n&&!(null==i?void 0:i.chromeMediaSourceId))return{code:e.RCRTCCode.PARAMS_ERROR};const o=rt(null==i?void 0:i.resolution)?i.resolution:e.RCResolution.W1280_H720,{width:s,height:a}=tt(o),c=n?{mandatory:{chromeMediaSourceId:i.chromeMediaSourceId,chromeMediaSource:"desktop",minWidth:s,maxWidth:s,minHeight:a,maxHeight:a}}:{frameRate:nt((null==i?void 0:i.frameRate)||e.RCFrameRate.FPS_15),width:s,height:a},{stream:d,code:u}=yield this._getMediaStream({video:c,audio:!1},n?"getUserMedia":"getDisplayMedia");if(u!==e.RCRTCCode.SUCCESS)return{code:u};const l=d.getVideoTracks()[0];return{code:u,track:new $e(t,r,l)}}))}createLocalAudioTrack(t,i){return r(this,void 0,void 0,(function*(){if(!Ke(t))return{code:e.RCRTCCode.INVALID_TAGS};if(!i||"[object MediaStreamTrack]"!==i.toString()||"audio"!==i.kind)return{code:e.RCRTCCode.CREATE_CUSTOM_TRACK_FAILED};const r=this._context.getCurrentId();return r?{code:e.RCRTCCode.SUCCESS,track:new Ne(t,r,i)}:{code:e.RCRTCCode.INVALID_USER_ID}}))}createLocalVideoTrack(t,i){return r(this,void 0,void 0,(function*(){if(!Ke(t))return{code:e.RCRTCCode.INVALID_TAGS};if(!i||"[object MediaStreamTrack]"!==i.toString()||"video"!==i.kind)return{code:e.RCRTCCode.CREATE_CUSTOM_TRACK_FAILED};const r=this._context.getCurrentId();return r?{code:e.RCRTCCode.SUCCESS,track:new Ae(t,r,i)}:{code:e.RCRTCCode.INVALID_USER_ID}}))}createLocalFileTracks(n,o,s){return r(this,void 0,void 0,(function*(){if(!Ke(n))return{code:e.RCRTCCode.INVALID_TAGS,tracks:[]};if(!st())return{code:e.RCRTCCode.BROWSER_NOT_SUPPORT,tracks:[]};const r=o instanceof File?URL.createObjectURL(o):o;if(!t.isHttpUrl(r)&&!/^blob:/.test(r))return i.warn(`createLocalFileTracks failed: params error -> url: ${r}`),{code:e.RCRTCCode.PARAMS_ERROR,tracks:[]};const a=this._context.getCurrentId();return a?new Promise((t=>{const o=document.createElement("video");(null==s?void 0:s.withoutAudio)&&(o.muted=!0),o.onloadedmetadata=()=>{const c=[];let d;try{const e=o.mozCaptureStream?"mozCaptureStream":"captureStream";d=o[e]()}catch(n){i.error(`create RCLocalFileTrack failed, captureSteam error. -> url: ${r}`),i.error(n),t({code:e.RCRTCCode.CREATE_FILE_TRACK_FAILED,tracks:c})}const[u,l]=nr(d,s);u&&c.push(new xe(n,a,u,o)),l&&c.push(new Me(n,a,l,o)),0===c.length&&(o.pause(),o.src=""),o.onerror=null,t({code:e.RCRTCCode.SUCCESS,tracks:c})},o.onerror=()=>{i.error(`create RCLocalFileTrack failed -> url: ${r}`),t({code:e.RCRTCCode.CREATE_FILE_TRACK_FAILED,tracks:[]})},o.src=r,o.loop=!0,o.play()})):{code:e.RCRTCCode.INVALID_USER_ID,tracks:[]}}))}createLocalTracks(t,i,n){return r(this,void 0,void 0,(function*(){const r=[];if(!Ke(t))return{code:e.RCRTCCode.INVALID_TAGS,tracks:r};if(!(i instanceof MediaStream))return{code:e.RCRTCCode.PARAMS_ERROR,tracks:r};const o=this._context.getCurrentId();if(!o)return{code:e.RCRTCCode.INVALID_USER_ID,tracks:r};const[s,a]=nr(i,n);return s&&r.push(new Ne(t,o,s)),a&&r.push(new Ae(t,o,a)),{code:e.RCRTCCode.SUCCESS,tracks:r}}))}joinLivingRoomAsAudience(n,o){return r(this,void 0,void 0,(function*(){if(dt(this._context.getNaviInfo()))return{code:e.RCRTCCode.PACKAGE_ENVIRONMENT_ERROR};if(!t.validate("roomId",n,t.notEmptyString,!0)||!t.validate("livingType",o,(t=>t===e.RCLivingType.AUDIO||t===e.RCLivingType.VIDEO)))return{code:e.RCRTCCode.PARAMS_ERROR};if(this._crtAudienceLivingRoom)return{code:e.RCRTCCode.REPERT_JOIN_ROOM};if(!this._service.getNaviMS().length)return{code:e.RCRTCCode.NOT_OPEN_VIDEO_AUDIO_SERVER};const{code:r,data:s}=yield this._context.joinLivingRoomAsAudience(n,t.RTCMode.LIVE,o);if(r!==t.ErrorCode.SUCCESS)return i.error("audienceJoinLivingRoomError:",r),{code:e.RCRTCCode.SIGNAL_AUDIENCE_JOIN_ROOM_FAILED};i.info(`joinLivingRoomAsAudience success, room data: ${JSON.stringify(s)}`);const a=new ir(this._context,this._runtime,this._options,n,s,o);return this._crtAudienceLivingRoom=a,{room:a,code:e.RCRTCCode.SUCCESS,userIds:a.getRemoteUserIds(),RTCTracks:a.getRemoteRTCTracks(),MCUTracks:a.getRemoteMCUTracks(),CDNUris:a.getCDNInfo()}}))}leaveLivingRoomAsAudience(t){return r(this,void 0,void 0,(function*(){return this._crtAudienceLivingRoom?this._crtAudienceLivingRoom!==t?{code:e.RCRTCCode.PARAMS_ERROR}:(yield this._crtAudienceLivingRoom.__destroy(!0),this._crtAudienceLivingRoom=null,{code:e.RCRTCCode.SUCCESS}):{code:e.RCRTCCode.SUCCESS}}))}upgradeToAnchorRoom(n){return r(this,void 0,void 0,(function*(){if(!t.validate("room._roomId",n._roomId,t.notEmptyString,!0))return{code:e.RCRTCCode.PARAMS_ERROR};if(this._crtRoom)return{code:e.RCRTCCode.REPERT_JOIN_ROOM};const{code:r,data:o}=yield this._context.rtcIdentityChange(n._roomId,t.RTCIdentityChangeType.ViewerToAnchor,n._livingType);if(r!==t.ErrorCode.SUCCESS)return i.error("change room identity error",r),{code:e.RCRTCCode.SIGNAL_ROOM_CHANGE_IDENTITY_FAILED};yield this._crtAudienceLivingRoom.__destroy(!1);const s=new qt(this._context,this._runtime,n._roomId,o,this._service,this._options,this._releaseCrtRoomObj.bind(this),n._livingType,!0,!0);return this._crtRoom=s,this._crtAudienceLivingRoom=null,{room:s,code:e.RCRTCCode.SUCCESS,userIds:n.getRemoteUserIds(),tracks:s.getRemoteTracks()}}))}downgradeToAudienceRoom(n){return r(this,void 0,void 0,(function*(){if(!n.isMainRoom())return i.error("the `downgradeToAudienceRoom` is disabled in PK room"),{code:e.RCRTCCode.THE_FUNCTION_IS_DISABLED_IN_PKROOM};if(!t.validate("room._roomId",n._roomId,t.notEmptyString,!0))return{code:e.RCRTCCode.PARAMS_ERROR};if(this._crtAudienceLivingRoom)return{code:e.RCRTCCode.REPERT_JOIN_ROOM};const{code:r,data:o}=yield this._context.rtcIdentityChange(n._roomId,t.RTCIdentityChangeType.AnchorToViewer,n.getLivingType());if(r!==t.ErrorCode.SUCCESS)return i.error("change room identity error",r),{code:e.RCRTCCode.SIGNAL_ROOM_CHANGE_IDENTITY_FAILED};i.info(`downgradeToAudienceRoom success, room data: ${JSON.stringify(o)}`);const s=new ir(this._context,this._runtime,this._options,n._roomId,o,n.getLivingType());return this._crtAudienceLivingRoom=s,this._crtRoom.__destroy(!1),this._crtRoom=null,{room:s,code:e.RCRTCCode.SUCCESS,userIds:s.getRemoteUserIds(),RTCTracks:s.getRemoteRTCTracks(),MCUTracks:s.getRemoteMCUTracks(),CDNUris:s.getCDNInfo()}}))}getJoinedRoomInfo(){return r(this,void 0,void 0,(function*(){const{code:r,data:n}=yield this._context.getRTCJoinedUserInfo(this._context.getCurrentId());return r!==t.ErrorCode.SUCCESS?(i.error("getJoinedUserInfo error",r),{code:e.RCRTCCode.SIGNAL_ROOM_CHANGE_IDENTITY_FAILED}):{code:e.RCRTCCode.SUCCESS,data:n}}))}}var sr;e.RCKickReason=void 0,(sr=e.RCKickReason||(e.RCKickReason={}))[sr.SERVER_KICK=1]="SERVER_KICK",sr[sr.OTHER_KICK=2]="OTHER_KICK";const ar={tag:"RCRTC",verify:e=>"browser"!==e.tag?(i.error(`RCRTC Plugin is not support the runtime '${e.tag}'`),!1):Ge?(t.VersionManage.add("plugin-rtc","5.3.5"),!!t.VersionManage.validEngine(">=5.1.2")||(i.error(`The current engine version '${t.VersionManage.getInfo().engine}' error, plugin-rtc required engine version at least '>=5.1.2'.`),!1)):(i.error("Please use the https protocol or use `http://localhost` to open the page!"),!1),setup:(e,r,n={})=>(i.setLogLevel(n.logLevel),i.setLogStdout(n.logStdout),i.warn("RCRTC Version: 5.3.5, Commit: 812bb452e2979607773fd0096a3730f9fe5b9198"),i.warn(`browserInfo.browser -> ${ot.browser}`),i.warn(`browserInfo.supportsUnifiedPlan -> ${ot.supportsUnifiedPlan}`),i.warn(`browserInfo.version -> ${ot.version}`),t.assert("options.mediaServer",n.mediaServer,(e=>!(!t.isHttpUrl(e)||"https:"===location.protocol&&!/^https/.test(e)))),t.assert("options.timeout",n.timeout,(e=>t.isNumber(e)&&e>=5e3&&e<=3e4)),t.assert("options.pingGap",n.pingGap,(e=>t.isNumber(e)&&e>=3e3&&e<=1e4)),new or(e,r,n))},cr={transResolution:tt,transFrameRate:nt,parseTrackId:ze,ifSupportLocalFileTrack:st,ifSupportScreenShare:at};Object.defineProperty(e,"RTCJoinType",{enumerable:!0,get:function(){return t.RTCJoinType}}),e.RCAbstractRoom=wt,e.RCAudienceClient=Zt,e.RCAudienceLivingRoom=ir,e.RCCameraVideoTrack=we,e.RCLivingRoom=qt,e.RCLocalAudioTrack=Ne,e.RCLocalFileAudioTrack=xe,e.RCLocalFileTrack=De,e.RCLocalFileVideoTrack=Me,e.RCLocalTrack=Le,e.RCLocalVideoTrack=Ae,e.RCMCUConfigBuilder=Bt,e.RCMicphoneAudioTrack=Ue,e.RCRTCClient=or,e.RCRTCRoom=zt,e.RCRemoteAudioTrack=Ve,e.RCRemoteTrack=je,e.RCRemoteVideoTrack=He,e.RCScreenVideoTrack=$e,e.RCTag={DEFAULT:"RongCloudRTC"},e.RCTrack=Oe,e.device=Pe,e.helper=cr,e.installer=ar,Object.defineProperty(e,"__esModule",{value:!0})}));
|