@whereby.com/browser-sdk 3.0.1 → 3.0.3

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.
@@ -1,3 +1,3 @@
1
1
  this.whereby=this.whereby||{},this.whereby.react=function(e,t){"use strict";function r(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,i.get?i:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}function i(e,t){return t.forEach((function(t){t&&"string"!=typeof t&&!Array.isArray(t)&&Object.keys(t).forEach((function(r){if("default"!==r&&!(r in e)){var i=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,i.get?i:{enumerable:!0,get:function(){return t[r]}})}}))})),Object.freeze(e)}var n=r(t),s="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function o(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function a(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var r=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var i=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,i.get?i:{enumerable:!0,get:function(){return e[t]}})})),r}var c,d={exports:{}},l={};d.exports=(c||(c=1,function(){"undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error);var e=t,r="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},i=e.useSyncExternalStore,n=e.useRef,s=e.useEffect,o=e.useMemo,a=e.useDebugValue;l.useSyncExternalStoreWithSelector=function(e,t,c,d,l){var p,u=n(null);null===u.current?(p={hasValue:!1,value:null},u.current=p):p=u.current;var h=o((function(){var e,i,n=!1,s=function(t){if(!n){n=!0,e=t;var s=d(t);if(void 0!==l&&p.hasValue){var o=p.value;if(l(o,s))return i=o,o}return i=s,s}var a=i;if(r(e,t))return a;var c=d(t);return void 0!==l&&l(a,c)?a:(e=t,i=c,c)},o=void 0===c?null:c;return[function(){return s(t())},null===o?void 0:function(){return s(o())}]}),[t,c,d,l]),m=h[0],f=h[1],g=i(e,m,f);return s((function(){p.hasValue=!0,p.value=g}),[g]),a(g),g},"undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error)}()),l);var p=d.exports,u="default"in n?n.default:n,h=Symbol.for("react-redux-context"),m="undefined"!=typeof globalThis?globalThis:{};function f(){if(!u.createContext)return{};const e=m[h]??(m[h]=new Map);let t=e.get(u.createContext);return t||(t=u.createContext(null),t.displayName="ReactRedux",e.set(u.createContext,t)),t}var g=f();function v(e=g){return function(){const t=u.useContext(e);if(!t)throw new Error("could not find react-redux context value; please ensure the component is wrapped in a <Provider>");return t}}var b=v(),y=()=>{throw new Error("uSES not initialized!")},_=(e,t)=>e===t;function w(e=g){const t=e===g?b:v(e),r=(e,r={})=>{const{equalityFn:i=_,devModeChecks:n={}}="function"==typeof r?{equalityFn:r}:r;if(!e)throw new Error("You must pass a selector to useSelector");if("function"!=typeof e)throw new Error("You must pass a function as a selector to useSelector");if("function"!=typeof i)throw new Error("You must pass a function as an equality function to useSelector");const{store:s,subscription:o,getServerState:a,stabilityCheck:c,identityFunctionCheck:d}=t(),l=u.useRef(!0),p=u.useCallback({[e.name](t){const r=e(t);{const{identityFunctionCheck:s,stabilityCheck:o}={stabilityCheck:c,identityFunctionCheck:d,...n};if("always"===o||"once"===o&&l.current){const n=e(t);if(!i(r,n)){let i;try{throw new Error}catch(e){({stack:i}=e)}console.warn("Selector "+(e.name||"unknown")+" returned a different result when called with the same parameters. This can lead to unnecessary rerenders.\nSelectors that return a new reference (such as an object or an array) should be memoized: https://redux.js.org/usage/deriving-data-selectors#optimizing-selectors-with-memoization",{state:t,selected:r,selected2:n,stack:i})}}if(("always"===s||"once"===s&&l.current)&&r===t){let t;try{throw new Error}catch(e){({stack:t}=e)}console.warn("Selector "+(e.name||"unknown")+" returned the root state when called. This can lead to unnecessary rerenders.\nSelectors that return the entire state are almost certainly a mistake, as they will cause a rerender whenever *anything* in state changes.",{stack:t})}l.current&&(l.current=!1)}return r}}[e.name],[e,c,n.stabilityCheck]),h=y(o.addNestedSub,s.getState,a||s.getState,p,i);return u.useDebugValue(h),h};return Object.assign(r,{withTypes:()=>r}),r}var S=w();var C={notify(){},get:()=>[]};var R=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),T="undefined"!=typeof navigator&&"ReactNative"===navigator.product,P=R||T?u.useLayoutEffect:u.useEffect;var k=function({store:e,context:t,children:r,serverState:i,stabilityCheck:n="once",identityFunctionCheck:s="once"}){const o=u.useMemo((()=>{const t=function(e,t){let r,i=C,n=0,s=!1;function o(){d.onStateChange&&d.onStateChange()}function a(){n++,r||(r=t?t.addNestedSub(o):e.subscribe(o),i=function(){let e=null,t=null;return{clear(){e=null,t=null},notify(){var t;t=()=>{let t=e;for(;t;)t.callback(),t=t.next},t()},get(){const t=[];let r=e;for(;r;)t.push(r),r=r.next;return t},subscribe(r){let i=!0;const n=t={callback:r,next:null,prev:t};return n.prev?n.prev.next=n:e=n,function(){i&&null!==e&&(i=!1,n.next?n.next.prev=n.prev:t=n.prev,n.prev?n.prev.next=n.next:e=n.next)}}}}())}function c(){n--,r&&0===n&&(r(),r=void 0,i.clear(),i=C)}const d={addNestedSub:function(e){a();const t=i.subscribe(e);let r=!1;return()=>{r||(r=!0,t(),c())}},notifyNestedSubs:function(){i.notify()},handleChangeWrapper:o,isSubscribed:function(){return s},trySubscribe:function(){s||(s=!0,a())},tryUnsubscribe:function(){s&&(s=!1,c())},getListeners:()=>i};return d}(e);return{store:e,subscription:t,getServerState:i?()=>i:void 0,stabilityCheck:n,identityFunctionCheck:s}}),[e,i,n,s]),a=u.useMemo((()=>e.getState()),[e]);P((()=>{const{subscription:t}=o;return t.onStateChange=t.notifyNestedSubs,t.trySubscribe(),a!==e.getState()&&t.notifyNestedSubs(),()=>{t.tryUnsubscribe(),t.onStateChange=void 0}}),[o,a]);const c=t||g;return u.createElement(c.Provider,{value:o},r)};function O(e=g){const t=e===g?b:v(e),r=()=>{const{store:e}=t();return e};return Object.assign(r,{withTypes:()=>r}),r}var E=O();function D(e=g){const t=e===g?E:O(e),r=()=>t().dispatch;return Object.assign(r,{withTypes:()=>r}),r}var I,x=D();I=p.useSyncExternalStoreWithSelector,y=I;var M=(()=>"function"==typeof Symbol&&Symbol.observable||"@@observable")(),j=()=>Math.random().toString(36).substring(7).split("").join("."),L={INIT:`@@redux/INIT${j()}`,REPLACE:`@@redux/REPLACE${j()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${j()}`};function A(e){if("object"!=typeof e||null===e)return!1;let t=e;for(;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t||null===Object.getPrototypeOf(e)}function N(e){if(void 0===e)return"undefined";if(null===e)return"null";const t=typeof e;switch(t){case"boolean":case"string":case"number":case"symbol":case"function":return t}if(Array.isArray(e))return"array";if(function(e){return e instanceof Date||"function"==typeof e.toDateString&&"function"==typeof e.getDate&&"function"==typeof e.setDate}(e))return"date";if(function(e){return e instanceof Error||"string"==typeof e.message&&e.constructor&&"number"==typeof e.constructor.stackTraceLimit}(e))return"error";const r=function(e){return"function"==typeof e.constructor?e.constructor.name:null}(e);switch(r){case"Symbol":case"Promise":case"WeakMap":case"WeakSet":case"Map":case"Set":return r}return Object.prototype.toString.call(e).slice(8,-1).toLowerCase().replace(/\s/g,"")}function B(e){let t=typeof e;return t=N(e),t}function F(e,t,r){if("function"!=typeof e)throw new Error(`Expected the root reducer to be a function. Instead, received: '${B(e)}'`);if("function"==typeof t&&"function"==typeof r||"function"==typeof r&&"function"==typeof arguments[3])throw new Error("It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.");if("function"==typeof t&&void 0===r&&(r=t,t=void 0),void 0!==r){if("function"!=typeof r)throw new Error(`Expected the enhancer to be a function. Instead, received: '${B(r)}'`);return r(F)(e,t)}let i=e,n=t,s=new Map,o=s,a=0,c=!1;function d(){o===s&&(o=new Map,s.forEach(((e,t)=>{o.set(t,e)})))}function l(){if(c)throw new Error("You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.");return n}function p(e){if("function"!=typeof e)throw new Error(`Expected the listener to be a function. Instead, received: '${B(e)}'`);if(c)throw new Error("You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api/store#subscribelistener for more details.");let t=!0;d();const r=a++;return o.set(r,e),function(){if(t){if(c)throw new Error("You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api/store#subscribelistener for more details.");t=!1,d(),o.delete(r),s=null}}}function u(e){if(!A(e))throw new Error(`Actions must be plain objects. Instead, the actual type was: '${B(e)}'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.`);if(void 0===e.type)throw new Error('Actions may not have an undefined "type" property. You may have misspelled an action type string constant.');if("string"!=typeof e.type)throw new Error(`Action "type" property must be a string. Instead, the actual type was: '${B(e.type)}'. Value was: '${e.type}' (stringified)`);if(c)throw new Error("Reducers may not dispatch actions.");try{c=!0,n=i(n,e)}finally{c=!1}return(s=o).forEach((e=>{e()})),e}u({type:L.INIT});return{dispatch:u,subscribe:p,getState:l,replaceReducer:function(e){if("function"!=typeof e)throw new Error(`Expected the nextReducer to be a function. Instead, received: '${B(e)}`);i=e,u({type:L.REPLACE})},[M]:function(){const e=p;return{subscribe(t){if("object"!=typeof t||null===t)throw new Error(`Expected the observer to be an object. Instead, received: '${B(t)}'`);function r(){const e=t;e.next&&e.next(l())}r();return{unsubscribe:e(r)}},[M](){return this}}}}}function z(e){"undefined"!=typeof console&&"function"==typeof console.error&&console.error(e);try{throw new Error(e)}catch(e){}}function U(e){const t=Object.keys(e),r={};for(let i=0;i<t.length;i++){const n=t[i];void 0===e[n]&&z(`No reducer provided for key "${n}"`),"function"==typeof e[n]&&(r[n]=e[n])}const i=Object.keys(r);let n,s;n={};try{!function(e){Object.keys(e).forEach((t=>{const r=e[t];if(void 0===r(void 0,{type:L.INIT}))throw new Error(`The slice reducer for key "${t}" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.`);if(void 0===r(void 0,{type:L.PROBE_UNKNOWN_ACTION()}))throw new Error(`The slice reducer for key "${t}" returned undefined when probed with a random type. Don't try to handle '${L.INIT}' or other actions in "redux/*" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.`)}))}(r)}catch(e){s=e}return function(e={},t){if(s)throw s;{const i=function(e,t,r,i){const n=Object.keys(t),s=r&&r.type===L.INIT?"preloadedState argument passed to createStore":"previous state received by the reducer";if(0===n.length)return"Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers.";if(!A(e))return`The ${s} has unexpected type of "${B(e)}". Expected argument to be an object with the following keys: "${n.join('", "')}"`;const o=Object.keys(e).filter((e=>!t.hasOwnProperty(e)&&!i[e]));return o.forEach((e=>{i[e]=!0})),r&&r.type===L.REPLACE?void 0:o.length>0?`Unexpected ${o.length>1?"keys":"key"} "${o.join('", "')}" found in ${s}. Expected to find one of the known reducer keys instead: "${n.join('", "')}". Unexpected keys will be ignored.`:void 0}(e,r,t,n);i&&z(i)}let o=!1;const a={};for(let n=0;n<i.length;n++){const s=i[n],c=r[s],d=e[s],l=c(d,t);if(void 0===l){const e=t&&t.type;throw new Error(`When called with an action of type ${e?`"${String(e)}"`:"(unknown type)"}, the slice reducer for key "${s}" returned undefined. To ignore an action, you must explicitly return the previous state. If you want this reducer to hold no value, you can return null instead of undefined.`)}a[s]=l,o=o||l!==d}return o=o||i.length!==Object.keys(e).length,o?a:e}}function $(...e){return 0===e.length?e=>e:1===e.length?e[0]:e.reduce(((e,t)=>(...r)=>e(t(...r))))}function V(e){return A(e)&&"type"in e&&"string"==typeof e.type}var G=Symbol.for("immer-nothing"),q=Symbol.for("immer-draftable"),H=Symbol.for("immer-state"),W=[function(e){return`The plugin for '${e}' has not been loaded into Immer. To enable the plugin, import and call \`enable${e}()\` when initializing your application.`},function(e){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${e}'`},"This object has been frozen and should not be mutated",function(e){return"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? "+e},"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.","Immer forbids circular references","The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(e){return`'current' expects a draft, got: ${e}`},"Object.defineProperty() cannot be used on an Immer draft","Object.setPrototypeOf() cannot be used on an Immer draft","Immer only supports deleting array indices","Immer only supports setting array indices and the 'length' property",function(e){return`'original' expects a draft, got: ${e}`}];function K(e,...t){{const r=W[e],i="function"==typeof r?r.apply(null,t):r;throw new Error(`[Immer] ${i}`)}}var J=Object.getPrototypeOf;function Q(e){return!!e&&!!e[H]}function Z(e){return!!e&&(X(e)||Array.isArray(e)||!!e[q]||!!e.constructor?.[q]||ne(e)||se(e))}var Y=Object.prototype.constructor.toString();function X(e){if(!e||"object"!=typeof e)return!1;const t=J(e);if(null===t)return!0;const r=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;return r===Object||"function"==typeof r&&Function.toString.call(r)===Y}function ee(e,t){0===te(e)?Object.entries(e).forEach((([r,i])=>{t(r,i,e)})):e.forEach(((r,i)=>t(i,r,e)))}function te(e){const t=e[H];return t?t.type_:Array.isArray(e)?1:ne(e)?2:se(e)?3:0}function re(e,t){return 2===te(e)?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function ie(e,t,r){const i=te(e);2===i?e.set(t,r):3===i?e.add(r):e[t]=r}function ne(e){return e instanceof Map}function se(e){return e instanceof Set}function oe(e){return e.copy_||e.base_}function ae(e,t){if(ne(e))return new Map(e);if(se(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);if(!t&&X(e)){if(!J(e)){const t=Object.create(null);return Object.assign(t,e)}return{...e}}const r=Object.getOwnPropertyDescriptors(e);delete r[H];let i=Reflect.ownKeys(r);for(let t=0;t<i.length;t++){const n=i[t],s=r[n];!1===s.writable&&(s.writable=!0,s.configurable=!0),(s.get||s.set)&&(r[n]={configurable:!0,writable:!0,enumerable:s.enumerable,value:e[n]})}return Object.create(J(e),r)}function ce(e,t=!1){return le(e)||Q(e)||!Z(e)||(te(e)>1&&(e.set=e.add=e.clear=e.delete=de),Object.freeze(e),t&&ee(e,((e,t)=>ce(t,!0)))),e}function de(){K(2)}function le(e){return Object.isFrozen(e)}var pe,ue={};function he(e){const t=ue[e];return t||K(0,e),t}function me(){return pe}function fe(e,t){t&&(he("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function ge(e){ve(e),e.drafts_.forEach(ye),e.drafts_=null}function ve(e){e===pe&&(pe=e.parent_)}function be(e){return pe={drafts_:[],parent_:pe,immer_:e,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function ye(e){const t=e[H];0===t.type_||1===t.type_?t.revoke_():t.revoked_=!0}function _e(e,t){t.unfinalizedDrafts_=t.drafts_.length;const r=t.drafts_[0];return void 0!==e&&e!==r?(r[H].modified_&&(ge(t),K(4)),Z(e)&&(e=we(t,e),t.parent_||Ce(t,e)),t.patches_&&he("Patches").generateReplacementPatches_(r[H].base_,e,t.patches_,t.inversePatches_)):e=we(t,r,[]),ge(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==G?e:void 0}function we(e,t,r){if(le(t))return t;const i=t[H];if(!i)return ee(t,((n,s)=>Se(e,i,t,n,s,r))),t;if(i.scope_!==e)return t;if(!i.modified_)return Ce(e,i.base_,!0),i.base_;if(!i.finalized_){i.finalized_=!0,i.scope_.unfinalizedDrafts_--;const t=i.copy_;let n=t,s=!1;3===i.type_&&(n=new Set(t),t.clear(),s=!0),ee(n,((n,o)=>Se(e,i,t,n,o,r,s))),Ce(e,t,!1),r&&e.patches_&&he("Patches").generatePatches_(i,r,e.patches_,e.inversePatches_)}return i.copy_}function Se(e,t,r,i,n,s,o){if(n===r&&K(5),Q(n)){const o=we(e,n,s&&t&&3!==t.type_&&!re(t.assigned_,i)?s.concat(i):void 0);if(ie(r,i,o),!Q(o))return;e.canAutoFreeze_=!1}else o&&r.add(n);if(Z(n)&&!le(n)){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1)return;we(e,n),t&&t.scope_.parent_||Ce(e,n)}}function Ce(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&ce(t,r)}var Re={get(e,t){if(t===H)return e;const r=oe(e);if(!re(r,t))return function(e,t,r){const i=ke(t,r);return i?"value"in i?i.value:i.get?.call(e.draft_):void 0}(e,r,t);const i=r[t];return e.finalized_||!Z(i)?i:i===Pe(e.base_,t)?(Ee(e),e.copy_[t]=De(i,e)):i},has:(e,t)=>t in oe(e),ownKeys:e=>Reflect.ownKeys(oe(e)),set(e,t,r){const i=ke(oe(e),t);if(i?.set)return i.set.call(e.draft_,r),!0;if(!e.modified_){const i=Pe(oe(e),t),o=i?.[H];if(o&&o.base_===r)return e.copy_[t]=r,e.assigned_[t]=!1,!0;if(((n=r)===(s=i)?0!==n||1/n==1/s:n!=n&&s!=s)&&(void 0!==r||re(e.base_,t)))return!0;Ee(e),Oe(e)}var n,s;return e.copy_[t]===r&&(void 0!==r||t in e.copy_)||Number.isNaN(r)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=r,e.assigned_[t]=!0),!0},deleteProperty:(e,t)=>(void 0!==Pe(e.base_,t)||t in e.base_?(e.assigned_[t]=!1,Ee(e),Oe(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0),getOwnPropertyDescriptor(e,t){const r=oe(e),i=Reflect.getOwnPropertyDescriptor(r,t);return i?{writable:!0,configurable:1!==e.type_||"length"!==t,enumerable:i.enumerable,value:r[t]}:i},defineProperty(){K(11)},getPrototypeOf:e=>J(e.base_),setPrototypeOf(){K(12)}},Te={};function Pe(e,t){const r=e[H];return(r?oe(r):e)[t]}function ke(e,t){if(!(t in e))return;let r=J(e);for(;r;){const e=Object.getOwnPropertyDescriptor(r,t);if(e)return e;r=J(r)}}function Oe(e){e.modified_||(e.modified_=!0,e.parent_&&Oe(e.parent_))}function Ee(e){e.copy_||(e.copy_=ae(e.base_,e.scope_.immer_.useStrictShallowCopy_))}ee(Re,((e,t)=>{Te[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}})),Te.deleteProperty=function(e,t){return isNaN(parseInt(t))&&K(13),Te.set.call(this,e,t,void 0)},Te.set=function(e,t,r){return"length"!==t&&isNaN(parseInt(t))&&K(14),Re.set.call(this,e[0],t,r,e[0])};function De(e,t){const r=ne(e)?he("MapSet").proxyMap_(e,t):se(e)?he("MapSet").proxySet_(e,t):function(e,t){const r=Array.isArray(e),i={type_:r?1:0,scope_:t?t.scope_:me(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1};let n=i,s=Re;r&&(n=[i],s=Te);const{revoke:o,proxy:a}=Proxy.revocable(n,s);return i.draft_=a,i.revoke_=o,a}(e,t);return(t?t.scope_:me()).drafts_.push(r),r}function Ie(e){return Q(e)||K(10,e),xe(e)}function xe(e){if(!Z(e)||le(e))return e;const t=e[H];let r;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=ae(e,t.scope_.immer_.useStrictShallowCopy_)}else r=ae(e,!0);return ee(r,((e,t)=>{ie(r,e,xe(t))})),t&&(t.finalized_=!1),r}var Me=new class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.produce=(e,t,r)=>{if("function"==typeof e&&"function"!=typeof t){const r=t;t=e;const i=this;return function(e=r,...n){return i.produce(e,(e=>t.call(this,e,...n)))}}let i;if("function"!=typeof t&&K(6),void 0!==r&&"function"!=typeof r&&K(7),Z(e)){const n=be(this),s=De(e,void 0);let o=!0;try{i=t(s),o=!1}finally{o?ge(n):ve(n)}return fe(n,r),_e(i,n)}if(!e||"object"!=typeof e){if(i=t(e),void 0===i&&(i=e),i===G&&(i=void 0),this.autoFreeze_&&ce(i,!0),r){const t=[],n=[];he("Patches").generateReplacementPatches_(e,i,t,n),r(t,n)}return i}K(1,e)},this.produceWithPatches=(e,t)=>{if("function"==typeof e)return(t,...r)=>this.produceWithPatches(t,(t=>e(t,...r)));let r,i;return[this.produce(e,t,((e,t)=>{r=e,i=t})),r,i]},"boolean"==typeof e?.autoFreeze&&this.setAutoFreeze(e.autoFreeze),"boolean"==typeof e?.useStrictShallowCopy&&this.setUseStrictShallowCopy(e.useStrictShallowCopy)}createDraft(e){Z(e)||K(8),Q(e)&&(e=Ie(e));const t=be(this),r=De(e,void 0);return r[H].isManual_=!0,ve(t),r}finishDraft(e,t){const r=e&&e[H];r&&r.isManual_||K(9);const{scope_:i}=r;return fe(i,t),_e(void 0,i)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}applyPatches(e,t){let r;for(r=t.length-1;r>=0;r--){const i=t[r];if(0===i.path.length&&"replace"===i.op){e=i.value;break}}r>-1&&(t=t.slice(r+1));const i=he("Patches").applyPatches_;return Q(e)?i(e,t):this.produce(e,(e=>i(e,t)))}},je=Me.produce;Me.produceWithPatches.bind(Me),Me.setAutoFreeze.bind(Me),Me.setUseStrictShallowCopy.bind(Me),Me.applyPatches.bind(Me),Me.createDraft.bind(Me),Me.finishDraft.bind(Me);var Le=(e,t,r)=>{if(1===t.length&&t[0]===r){let t=!1;try{const r={};e(r)===r&&(t=!0)}catch{}if(t){let e;try{throw new Error}catch(t){({stack:e}=t)}console.warn("The result function returned its own inputs without modification. e.g\n`createSelector([state => state.todos], todos => todos)`\nThis could lead to inefficient memoization and unnecessary re-renders.\nEnsure transformation logic is in the result function, and extraction logic is in the input selectors.",{stack:e})}}},Ae=(e,t,r)=>{const{memoize:i,memoizeOptions:n}=t,{inputSelectorResults:s,inputSelectorResultsCopy:o}=e,a=i((()=>({})),...n);if(!(a.apply(null,s)===a.apply(null,o))){let e;try{throw new Error}catch(t){({stack:e}=t)}console.warn("An input selector returned a different result when passed same arguments.\nThis means your output selector will likely run more frequently than intended.\nAvoid returning a new reference inside your input selector, e.g.\n`createSelector([state => state.todos.map(todo => todo.id)], todoIds => todoIds.length)`",{arguments:r,firstInputs:s,secondInputs:o,stack:e})}},Ne={inputStabilityCheck:"once",identityFunctionCheck:"once"};var Be=e=>Array.isArray(e)?e:[e];function Fe(e){const t=Array.isArray(e[0])?e[0]:e;return function(e,t="expected all items to be functions, instead received the following types: "){if(!e.every((e=>"function"==typeof e))){const r=e.map((e=>"function"==typeof e?`function ${e.name||"unnamed"}()`:typeof e)).join(", ");throw new TypeError(`${t}[${r}]`)}}(t,"createSelector expects all input-selectors to be functions, but received the following types: "),t}function ze(e,t){const r=[],{length:i}=e;for(let n=0;n<i;n++)r.push(e[n].apply(null,t));return r}var Ue="undefined"!=typeof WeakRef?WeakRef:class{constructor(e){this.value=e}deref(){return this.value}},$e=0,Ve=1;function Ge(){return{s:$e,v:void 0,o:null,p:null}}function qe(e,t={}){let r=Ge();const{resultEqualityCheck:i}=t;let n,s=0;function o(){let t=r;const{length:o}=arguments;for(let e=0,r=o;e<r;e++){const r=arguments[e];if("function"==typeof r||"object"==typeof r&&null!==r){let e=t.o;null===e&&(t.o=e=new WeakMap);const i=e.get(r);void 0===i?(t=Ge(),e.set(r,t)):t=i}else{let e=t.p;null===e&&(t.p=e=new Map);const i=e.get(r);void 0===i?(t=Ge(),e.set(r,t)):t=i}}const a=t;let c;if(t.s===Ve?c=t.v:(c=e.apply(null,arguments),s++),a.s=Ve,i){const e=n?.deref?.()??n;null!=e&&i(e,c)&&(c=e,0!==s&&s--);n="object"==typeof c&&null!==c||"function"==typeof c?new Ue(c):c}return a.v=c,c}return o.clearCache=()=>{r=Ge(),o.resetResultsCount()},o.resultsCount=()=>s,o.resetResultsCount=()=>{s=0},o}function He(e,...t){const r="function"==typeof e?{memoize:e,memoizeOptions:t}:e,i=(...e)=>{let t,i=0,n=0,s={},o=e.pop();"object"==typeof o&&(s=o,o=e.pop()),function(e,t="expected a function, instead received "+typeof e){if("function"!=typeof e)throw new TypeError(t)}(o,`createSelector expects an output function after the inputs, but received: [${typeof o}]`);const a={...r,...s},{memoize:c,memoizeOptions:d=[],argsMemoize:l=qe,argsMemoizeOptions:p=[],devModeChecks:u={}}=a,h=Be(d),m=Be(p),f=Fe(e),g=c((function(){return i++,o.apply(null,arguments)}),...h);let v=!0;const b=l((function(){n++;const e=ze(f,arguments);t=g.apply(null,e);{const{identityFunctionCheck:r,inputStabilityCheck:i}=((e,t)=>{const{identityFunctionCheck:r,inputStabilityCheck:i}={...Ne,...t};return{identityFunctionCheck:{shouldRun:"always"===r||"once"===r&&e,run:Le},inputStabilityCheck:{shouldRun:"always"===i||"once"===i&&e,run:Ae}}})(v,u);if(r.shouldRun&&r.run(o,e,t),i.shouldRun){const t=ze(f,arguments);i.run({inputSelectorResults:e,inputSelectorResultsCopy:t},{memoize:c,memoizeOptions:h},arguments)}v&&(v=!1)}return t}),...m);return Object.assign(b,{resultFunc:o,memoizedResultFunc:g,dependencies:f,dependencyRecomputations:()=>n,resetDependencyRecomputations:()=>{n=0},lastResult:()=>t,recomputations:()=>i,resetRecomputations:()=>{i=0},memoize:c,argsMemoize:l})};return Object.assign(i,{withTypes:()=>i}),i}var We=He(qe),Ke=Object.assign(((e,t=We)=>{!function(e,t="expected an object, instead received "+typeof e){if("object"!=typeof e)throw new TypeError(t)}(e,"createStructuredSelector expects first argument to be an object where each property is a selector, instead received a "+typeof e);const r=Object.keys(e),i=t(r.map((t=>e[t])),((...e)=>e.reduce(((e,t,i)=>(e[r[i]]=t,e)),{})));return i}),{withTypes:()=>Ke});function Je(e){return({dispatch:t,getState:r})=>i=>n=>"function"==typeof n?n(t,r,e):i(n)}var Qe=Je(),Ze=Je;((...e)=>{const t=He(...e),r=Object.assign(((...e)=>{const r=t(...e),i=(e,...t)=>r(Q(e)?Ie(e):e,...t);return Object.assign(i,r),i}),{withTypes:()=>r})})(qe);var Ye="undefined"!=typeof window&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(0!==arguments.length)return"object"==typeof arguments[0]?$:$.apply(null,arguments)},Xe=e=>e&&"function"==typeof e.match;function et(e,t){function r(...r){if(t){let i=t(...r);if(!i)throw new Error("prepareAction did not return an object");return{type:e,payload:i.payload,..."meta"in i&&{meta:i.meta},..."error"in i&&{error:i.error}}}return{type:e,payload:r[0]}}return r.toString=()=>`${e}`,r.type=e,r.match=t=>V(t)&&t.type===e,r}function tt(e){return"function"==typeof e&&"type"in e&&Xe(e)}function rt(e,t){let r=0;return{measureTime(e){const t=Date.now();try{return e()}finally{const e=Date.now();r+=e-t}},warnIfExceeded(){r>e&&console.warn(`${t} took ${r}ms, which is more than the warning threshold of ${e}ms. \nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\nIt is disabled in production builds, so you don't need to worry about that.`)}}}function it(e,t){for(const r of e)if(t(r))return r}var nt=class e extends Array{constructor(...t){super(...t),Object.setPrototypeOf(this,e.prototype)}static get[Symbol.species](){return e}concat(...e){return super.concat.apply(this,e)}prepend(...t){return 1===t.length&&Array.isArray(t[0])?new e(...t[0].concat(this)):new e(...t.concat(this))}};function st(e){return Z(e)?je(e,(()=>{})):e}function ot(e,t,r){if(e.has(t)){let i=e.get(t);return r.update&&(i=r.update(i,t,e),e.set(t,i)),i}if(!r.insert)throw new Error("No insert provided for key not already in map");const i=r.insert(t,e);return e.set(t,i),i}function at(e){return"object"!=typeof e||null==e||Object.isFrozen(e)}function ct(e,t,r){const i=dt(e,t,r);return{detectMutations:()=>lt(e,t,i,r)}}function dt(e,t=[],r,i="",n=new Set){const s={value:r};if(!e(r)&&!n.has(r)){n.add(r),s.children={};for(const n in r){const o=i?i+"."+n:n;t.length&&-1!==t.indexOf(o)||(s.children[n]=dt(e,t,r[n],o))}}return s}function lt(e,t=[],r,i,n=!1,s=""){const o=r?r.value:void 0,a=o===i;if(n&&!a&&!Number.isNaN(i))return{wasMutated:!0,path:s};if(e(o)||e(i))return{wasMutated:!1};const c={};for(let e in r.children)c[e]=!0;for(let e in i)c[e]=!0;const d=t.length>0;for(let n in c){const o=s?s+"."+n:n;if(d){if(t.some((e=>e instanceof RegExp?e.test(o):o===e)))continue}const c=lt(e,t,r.children[n],i[n],a,o);if(c.wasMutated)return c}return{wasMutated:!1}}function pt(e){const t=typeof e;return null==e||"string"===t||"boolean"===t||"number"===t||Array.isArray(e)||A(e)}function ut(e,t="",r=pt,i,n=[],s){let o;if(!r(e))return{keyPath:t||"<root>",value:e};if("object"!=typeof e||null===e)return!1;if(s?.has(e))return!1;const a=null!=i?i(e):Object.entries(e),c=n.length>0;for(const[e,d]of a){const a=t?t+"."+e:e;if(c){if(n.some((e=>e instanceof RegExp?e.test(a):a===e)))continue}if(!r(d))return{keyPath:a,value:d};if("object"==typeof d&&(o=ut(d,a,r,i,n,s),o))return o}return s&&ht(e)&&s.add(e),!1}function ht(e){if(!Object.isFrozen(e))return!1;for(const t of Object.values(e))if("object"==typeof t&&null!==t&&!ht(t))return!1;return!0}function mt(e){return"boolean"==typeof e}var ft=()=>function(e){const{thunk:t=!0,immutableCheck:r=!0,serializableCheck:i=!0,actionCreatorCheck:n=!0}=e??{};let s=new nt;if(t&&(mt(t)?s.push(Qe):s.push(Ze(t.extraArgument))),r){let e={};mt(r)||(e=r),s.unshift(function(e={}){{let t=function(e,t,i,n){return JSON.stringify(e,r(t,n),i)},r=function(e,t){let r=[],i=[];return t||(t=function(e,t){return r[0]===t?"[Circular ~]":"[Circular ~."+i.slice(0,r.indexOf(t)).join(".")+"]"}),function(n,s){if(r.length>0){var o=r.indexOf(this);~o?r.splice(o+1):r.push(this),~o?i.splice(o,1/0,n):i.push(n),~r.indexOf(s)&&(s=t.call(this,n,s))}else r.push(s);return null==e?s:e.call(this,n,s)}},{isImmutable:i=at,ignoredPaths:n,warnAfter:s=32}=e;const o=ct.bind(null,i,n);return({getState:e})=>{let r,i=e(),n=o(i);return a=>c=>{const d=rt(s,"ImmutableStateInvariantMiddleware");d.measureTime((()=>{if(i=e(),r=n.detectMutations(),n=o(i),r.wasMutated)throw new Error(`A state mutation was detected between dispatches, in the path '${r.path||""}'. This may cause incorrect behavior. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)`)}));const l=a(c);return d.measureTime((()=>{if(i=e(),r=n.detectMutations(),n=o(i),r.wasMutated)throw new Error(`A state mutation was detected inside a dispatch, in the path: ${r.path||""}. Take a look at the reducer(s) handling the action ${t(c)}. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)`)})),d.warnIfExceeded(),l}}}}(e))}if(i){let e={};mt(i)||(e=i),s.push(function(e={}){{const{isSerializable:t=pt,getEntries:r,ignoredActions:i=[],ignoredActionPaths:n=["meta.arg","meta.baseQueryMeta"],ignoredPaths:s=[],warnAfter:o=32,ignoreState:a=!1,ignoreActions:c=!1,disableCache:d=!1}=e,l=!d&&WeakSet?new WeakSet:void 0;return e=>d=>p=>{if(!V(p))return d(p);const u=d(p),h=rt(o,"SerializableStateInvariantMiddleware");return c||i.length&&-1!==i.indexOf(p.type)||h.measureTime((()=>{const e=ut(p,"",t,r,n,l);if(e){const{keyPath:t,value:r}=e;console.error(`A non-serializable value was detected in an action, in the path: \`${t}\`. Value:`,r,"\nTake a look at the logic that dispatched this action: ",p,"\n(See https://redux.js.org/faq/actions#why-should-type-be-a-string-or-at-least-serializable-why-should-my-action-types-be-constants)","\n(To allow non-serializable values see: https://redux-toolkit.js.org/usage/usage-guide#working-with-non-serializable-data)")}})),a||(h.measureTime((()=>{const i=ut(e.getState(),"",t,r,s,l);if(i){const{keyPath:e,value:t}=i;console.error(`A non-serializable value was detected in the state, in the path: \`${e}\`. Value:`,t,`\nTake a look at the reducer(s) handling this action type: ${p.type}.\n(See https://redux.js.org/faq/organizing-state#can-i-put-functions-promises-or-other-non-serializable-items-in-my-store-state)`)}})),h.warnIfExceeded()),u}}}(e))}if(n){let e={};mt(n)||(e=n),s.unshift(function(e={}){const{isActionCreator:t=tt}=e;return()=>e=>r=>(t(r)&&console.warn(function(e){const t=e?`${e}`.split("/"):[],r=t[t.length-1]||"actionCreator";return`Detected an action creator with type "${e||"unknown"}" being dispatched. \nMake sure you're calling the action creator before dispatching, i.e. \`dispatch(${r}())\` instead of \`dispatch(${r})\`. This is necessary even if the action has no payload.`}(r.type)),e(r))}(e))}return s},gt=e=>t=>{setTimeout(t,e)},vt="undefined"!=typeof window&&window.requestAnimationFrame?window.requestAnimationFrame:gt(10),bt=e=>function(t){const{autoBatch:r=!0}=t??{};let i=new nt(e);return r&&i.push(((e={type:"raf"})=>t=>(...r)=>{const i=t(...r);let n=!0,s=!1,o=!1;const a=new Set,c="tick"===e.type?queueMicrotask:"raf"===e.type?vt:"callback"===e.type?e.queueNotification:gt(e.timeout),d=()=>{o=!1,s&&(s=!1,a.forEach((e=>e())))};return Object.assign({},i,{subscribe(e){const t=i.subscribe((()=>n&&e()));return a.add(e),()=>{t(),a.delete(e)}},dispatch(e){try{return n=!e?.meta?.RTK_autoBatch,s=!n,s&&(o||(o=!0,c(d))),i.dispatch(e)}finally{n=!0}}})})("object"==typeof r?r:void 0)),i};function yt(e){const t=ft(),{reducer:r,middleware:i,devTools:n=!0,preloadedState:s,enhancers:o}=e||{};let a,c;if("function"==typeof r)a=r;else{if(!A(r))throw new Error("`reducer` is a required argument, and must be a function or an object of functions that can be passed to combineReducers");a=U(r)}if(i&&"function"!=typeof i)throw new Error("`middleware` field must be a callback");if("function"==typeof i){if(c=i(t),!Array.isArray(c))throw new Error("when using a middleware builder function, an array of middleware must be returned")}else c=t();if(c.some((e=>"function"!=typeof e)))throw new Error("each middleware provided to configureStore must be a function");let d=$;n&&(d=Ye({trace:!0,..."object"==typeof n&&n}));const l=function(...e){return t=>(r,i)=>{const n=t(r,i);let s=()=>{throw new Error("Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.")};const o={getState:n.getState,dispatch:(e,...t)=>s(e,...t)},a=e.map((e=>e(o)));return s=$(...a)(n.dispatch),{...n,dispatch:s}}}(...c),p=bt(l);if(o&&"function"!=typeof o)throw new Error("`enhancers` field must be a callback");let u="function"==typeof o?o(p):p();if(!Array.isArray(u))throw new Error("`enhancers` callback must return an array");if(u.some((e=>"function"!=typeof e)))throw new Error("each enhancer provided to configureStore must be a function");c.length&&!u.includes(l)&&console.error("middlewares were provided, but middleware enhancer was not included in final enhancers - make sure to call `getDefaultEnhancers`");return F(a,s,d(...u))}function _t(e){const t={},r=[];let i;const n={addCase(e,s){if(r.length>0)throw new Error("`builder.addCase` should only be called before calling `builder.addMatcher`");if(i)throw new Error("`builder.addCase` should only be called before calling `builder.addDefaultCase`");const o="string"==typeof e?e:e.type;if(!o)throw new Error("`builder.addCase` cannot be called with an empty action type");if(o in t)throw new Error(`\`builder.addCase\` cannot be called with two reducers for the same action type '${o}'`);return t[o]=s,n},addMatcher(e,t){if(i)throw new Error("`builder.addMatcher` should only be called before calling `builder.addDefaultCase`");return r.push({matcher:e,reducer:t}),n},addDefaultCase(e){if(i)throw new Error("`builder.addDefaultCase` can only be called once");return i=e,n}};return e(n),[t,r,i]}var wt=(e=21)=>{let t="",r=e;for(;r--;)t+="ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW"[64*Math.random()|0];return t};function St(...e){return t=>e.some((e=>((e,t)=>Xe(e)?e.match(t):e(t))(e,t)))}var Ct=["name","message","stack","code"],Rt=class{constructor(e,t){this.payload=e,this.meta=t}_type},Tt=class{constructor(e,t){this.payload=e,this.meta=t}_type},Pt=e=>{if("object"==typeof e&&null!==e){const t={};for(const r of Ct)"string"==typeof e[r]&&(t[r]=e[r]);return t}return{message:String(e)}},kt=(()=>{function e(e,t,r){const i=et(e+"/fulfilled",((e,t,r,i)=>({payload:e,meta:{...i||{},arg:r,requestId:t,requestStatus:"fulfilled"}}))),n=et(e+"/pending",((e,t,r)=>({payload:void 0,meta:{...r||{},arg:t,requestId:e,requestStatus:"pending"}}))),s=et(e+"/rejected",((e,t,i,n,s)=>({payload:n,error:(r&&r.serializeError||Pt)(e||"Rejected"),meta:{...s||{},arg:i,requestId:t,rejectedWithValue:!!n,requestStatus:"rejected",aborted:"AbortError"===e?.name,condition:"ConditionError"===e?.name}})));return Object.assign((function(e){return(o,a,c)=>{const d=r?.idGenerator?r.idGenerator(e):wt(),l=new AbortController;let p,u;function h(e){u=e,l.abort()}const m=async function(){let m;try{let s=r?.condition?.(e,{getState:a,extra:c});if(function(e){return null!==e&&"object"==typeof e&&"function"==typeof e.then}(s)&&(s=await s),!1===s||l.signal.aborted)throw{name:"ConditionError",message:"Aborted due to condition callback returning false."};const f=new Promise(((e,t)=>{p=()=>{t({name:"AbortError",message:u||"Aborted"})},l.signal.addEventListener("abort",p)}));o(n(d,e,r?.getPendingMeta?.({requestId:d,arg:e},{getState:a,extra:c}))),m=await Promise.race([f,Promise.resolve(t(e,{dispatch:o,getState:a,extra:c,requestId:d,signal:l.signal,abort:h,rejectWithValue:(e,t)=>new Rt(e,t),fulfillWithValue:(e,t)=>new Tt(e,t)})).then((t=>{if(t instanceof Rt)throw t;return t instanceof Tt?i(t.payload,d,e,t.meta):i(t,d,e)}))])}catch(t){m=t instanceof Rt?s(null,d,e,t.payload,t.meta):s(t,d,e)}finally{p&&l.signal.removeEventListener("abort",p)}return r&&!r.dispatchConditionRejection&&s.match(m)&&m.meta.condition||o(m),m}();return Object.assign(m,{abort:h,requestId:d,arg:e,unwrap:()=>m.then(Ot)})}}),{pending:n,rejected:s,fulfilled:i,settled:St(s,i),typePrefix:e})}return e.withTypes=()=>e,e})();function Ot(e){if(e.meta&&e.meta.rejectedWithValue)throw e.payload;if(e.error)throw e.error;return e.payload}var Et=Symbol.for("rtk-slice-createasyncthunk");function Dt(e,t){return`${e}/${t}`}function It({creators:e}={}){const t=e?.asyncThunk?.[Et];return function(e){const{name:r,reducerPath:i=r}=e;if(!r)throw new Error("`name` is a required option for createSlice");const n=("function"==typeof e.reducers?e.reducers(function(){function e(e,t){return{_reducerDefinitionType:"asyncThunk",payloadCreator:e,...t}}return e.withTypes=()=>e,{reducer:e=>Object.assign({[e.name]:(...t)=>e(...t)}[e.name],{_reducerDefinitionType:"reducer"}),preparedReducer:(e,t)=>({_reducerDefinitionType:"reducerWithPrepare",prepare:e,reducer:t}),asyncThunk:e}}()):e.reducers)||{},s=Object.keys(n),o={sliceCaseReducersByName:{},sliceCaseReducersByType:{},actionCreators:{},sliceMatchers:[]},a={addCase(e,t){const r="string"==typeof e?e:e.type;if(!r)throw new Error("`context.addCase` cannot be called with an empty action type");if(r in o.sliceCaseReducersByType)throw new Error("`context.addCase` cannot be called with two reducers for the same action type: "+r);return o.sliceCaseReducersByType[r]=t,a},addMatcher:(e,t)=>(o.sliceMatchers.push({matcher:e,reducer:t}),a),exposeAction:(e,t)=>(o.actionCreators[e]=t,a),exposeCaseReducer:(e,t)=>(o.sliceCaseReducersByName[e]=t,a)};function c(){if("object"==typeof e.extraReducers)throw new Error("The object notation for `createSlice.extraReducers` has been removed. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice");const[t={},r=[],i]="function"==typeof e.extraReducers?_t(e.extraReducers):[e.extraReducers],n={...t,...o.sliceCaseReducersByType};return function(e,t){if("object"==typeof t)throw new Error("The object notation for `createReducer` has been removed. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer");let r,[i,n,s]=_t(t);if("function"==typeof e)r=()=>st(e());else{const t=st(e);r=()=>t}function o(e=r(),t){let o=[i[t.type],...n.filter((({matcher:e})=>e(t))).map((({reducer:e})=>e))];return 0===o.filter((e=>!!e)).length&&(o=[s]),o.reduce(((e,r)=>{if(r){if(Q(e)){const i=r(e,t);return void 0===i?e:i}if(Z(e))return je(e,(e=>r(e,t)));{const i=r(e,t);if(void 0===i){if(null===e)return e;throw new Error("A case reducer on a non-draftable value must not return undefined")}return i}}return e}),e)}return o.getInitialState=r,o}(e.initialState,(e=>{for(let t in n)e.addCase(t,n[t]);for(let t of o.sliceMatchers)e.addMatcher(t.matcher,t.reducer);for(let t of r)e.addMatcher(t.matcher,t.reducer);i&&e.addDefaultCase(i)}))}s.forEach((i=>{const s=n[i],o={reducerName:i,type:Dt(r,i),createNotation:"function"==typeof e.reducers};!function(e){return"asyncThunk"===e._reducerDefinitionType}(s)?function({type:e,reducerName:t,createNotation:r},i,n){let s,o;if("reducer"in i){if(r&&!function(e){return"reducerWithPrepare"===e._reducerDefinitionType}(i))throw new Error("Please use the `create.preparedReducer` notation for prepared action creators with the `create` notation.");s=i.reducer,o=i.prepare}else s=i;n.addCase(e,s).exposeCaseReducer(t,s).exposeAction(t,o?et(e,o):et(e))}(o,s,a):function({type:e,reducerName:t},r,i,n){if(!n)throw new Error("Cannot use `create.asyncThunk` in the built-in `createSlice`. Use `buildCreateSlice({ creators: { asyncThunk: asyncThunkCreator } })` to create a customised version of `createSlice`.");const{payloadCreator:s,fulfilled:o,pending:a,rejected:c,settled:d,options:l}=r,p=n(e,s,l);i.exposeAction(t,p),o&&i.addCase(p.fulfilled,o);a&&i.addCase(p.pending,a);c&&i.addCase(p.rejected,c);d&&i.addMatcher(p.settled,d);i.exposeCaseReducer(t,{fulfilled:o||jt,pending:a||jt,rejected:c||jt,settled:d||jt})}(o,s,a,t)}));const d=e=>e,l=new Map;let p;function u(e,t){return p||(p=c()),p(e,t)}function h(){return p||(p=c()),p.getInitialState()}function m(t,r=!1){function i(e){let i=e[t];if(void 0===i){if(!r)throw new Error("selectSlice returned undefined for an uninjected slice reducer");i=h()}return i}function n(t=d){const i=ot(l,r,{insert:()=>new WeakMap});return ot(i,t,{insert:()=>{const i={};for(const[n,s]of Object.entries(e.selectors??{}))i[n]=xt(s,t,h,r);return i}})}return{reducerPath:t,getSelectors:n,get selectors(){return n(i)},selectSlice:i}}const f={name:r,reducer:u,actions:o.actionCreators,caseReducers:o.sliceCaseReducersByName,getInitialState:h,...m(i),injectInto(e,{reducerPath:t,...r}={}){const n=t??i;return e.inject({reducerPath:n,reducer:u},r),{...f,...m(n,!0)}}};return f}}function xt(e,t,r,i){function n(n,...s){let o=t(n);if(void 0===o){if(!i)throw new Error("selectState returned undefined for an uninjected slice reducer");o=r()}return e(o,...s)}return n.unwrapped=e,n}var Mt=It();function jt(){}var Lt="listener",At="completed",Nt="cancelled",Bt=`task-${Nt}`,Ft=`task-${At}`,zt=`${Lt}-${Nt}`,Ut=`${Lt}-${At}`,$t=class{constructor(e){this.code=e,this.message=`task ${Nt} (reason: ${e})`}name="TaskAbortError";message},Vt=(e,t)=>{if("function"!=typeof e)throw new Error(`${t} is not a function`)},Gt=()=>{},qt=(e,t=Gt)=>(e.catch(t),e),Ht=(e,t)=>(e.addEventListener("abort",t,{once:!0}),()=>e.removeEventListener("abort",t)),Wt=(e,t)=>{const r=e.signal;r.aborted||("reason"in r||Object.defineProperty(r,"reason",{enumerable:!0,value:t,configurable:!0,writable:!0}),e.abort(t))},Kt=e=>{if(e.aborted){const{reason:t}=e;throw new $t(t)}};function Jt(e,t){let r=Gt;return new Promise(((i,n)=>{const s=()=>n(new $t(e.reason));e.aborted?s():(r=Ht(e,s),t.finally((()=>r())).then(i,n))})).finally((()=>{r=Gt}))}var Qt=e=>t=>qt(Jt(e,t).then((t=>(Kt(e),t)))),Zt=e=>{const t=Qt(e);return e=>t(new Promise((t=>setTimeout(t,e))))},{assign:Yt}=Object,Xt={},er="listenerMiddleware",tr=(e,t)=>(r,i)=>{Vt(r,"taskExecutor");const n=new AbortController;var s;s=n,Ht(e,(()=>Wt(s,e.reason)));const o=(async(e,t)=>{try{return await Promise.resolve(),{status:"ok",value:await e()}}catch(e){return{status:e instanceof $t?"cancelled":"rejected",error:e}}finally{t?.()}})((async()=>{Kt(e),Kt(n.signal);const t=await r({pause:Qt(n.signal),delay:Zt(n.signal),signal:n.signal});return Kt(n.signal),t}),(()=>Wt(n,Ft)));return i?.autoJoin&&t.push(o.catch(Gt)),{result:Qt(e)(o),cancel(){Wt(n,Bt)}}},rr=(e,t)=>(r,i)=>qt((async(r,i)=>{Kt(t);let n=()=>{};const s=[new Promise(((t,i)=>{let s=e({predicate:r,effect:(e,r)=>{r.unsubscribe(),t([e,r.getState(),r.getOriginalState()])}});n=()=>{s(),i()}}))];null!=i&&s.push(new Promise((e=>setTimeout(e,i,null))));try{const e=await Jt(t,Promise.race(s));return Kt(t),e}finally{n()}})(r,i)),ir=e=>{let{type:t,actionCreator:r,matcher:i,predicate:n,effect:s}=e;if(t)n=et(t).match;else if(r)t=r.type,n=r.match;else if(i)n=i;else if(!n)throw new Error("Creating or removing a listener requires one of the known fields for matching an action");return Vt(s,"options.listener"),{predicate:n,type:t,effect:s}},nr=Object.assign((e=>{const{type:t,predicate:r,effect:i}=ir(e);return{id:wt(),effect:i,type:t,predicate:r,pending:new Set,unsubscribe:()=>{throw new Error("Unsubscribe not initialized")}}}),{withTypes:()=>nr}),sr=e=>{e.pending.forEach((e=>{Wt(e,zt)}))},or=(e,t,r)=>{try{e(t,r)}catch(e){setTimeout((()=>{throw e}),0)}},ar=Object.assign(et(`${er}/add`),{withTypes:()=>ar}),cr=et(`${er}/removeAll`),dr=Object.assign(et(`${er}/remove`),{withTypes:()=>dr}),lr=(...e)=>{console.error(`${er}/error`,...e)};function pr(){}function ur(){ur.init.call(this)}function hr(e){return void 0===e._maxListeners?ur.defaultMaxListeners:e._maxListeners}function mr(e,t,r,i){var n,s,o,a;if("function"!=typeof r)throw new TypeError('"listener" argument must be a function');if((s=e._events)?(s.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),s=e._events),o=s[t]):(s=e._events=new pr,e._eventsCount=0),o){if("function"==typeof o?o=s[t]=i?[r,o]:[o,r]:i?o.unshift(r):o.push(r),!o.warned&&(n=hr(e))&&n>0&&o.length>n){o.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=o.length,a=c,"function"==typeof console.warn?console.warn(a):console.log(a)}}else o=s[t]=r,++e._eventsCount;return e}function fr(e,t,r){var i=!1;function n(){e.removeListener(t,n),i||(i=!0,r.apply(e,arguments))}return n.listener=r,n}function gr(e){var t=this._events;if(t){var r=t[e];if("function"==typeof r)return 1;if(r)return r.length}return 0}function vr(e,t){for(var r=new Array(t);t--;)r[t]=e[t];return r}pr.prototype=Object.create(null),ur.EventEmitter=ur,ur.usingDomains=!1,ur.prototype.domain=void 0,ur.prototype._events=void 0,ur.prototype._maxListeners=void 0,ur.defaultMaxListeners=10,ur.init=function(){this.domain=null,ur.usingDomains&&undefined.active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new pr,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},ur.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},ur.prototype.getMaxListeners=function(){return hr(this)},ur.prototype.emit=function(e){var t,r,i,n,s,o,a,c="error"===e;if(o=this._events)c=c&&null==o.error;else if(!c)return!1;if(a=this.domain,c){if(t=arguments[1],!a){if(t instanceof Error)throw t;var d=new Error('Uncaught, unspecified "error" event. ('+t+")");throw d.context=t,d}return t||(t=new Error('Uncaught, unspecified "error" event')),t.domainEmitter=this,t.domain=a,t.domainThrown=!1,a.emit("error",t),!1}if(!(r=o[e]))return!1;var l="function"==typeof r;switch(i=arguments.length){case 1:!function(e,t,r){if(t)e.call(r);else for(var i=e.length,n=vr(e,i),s=0;s<i;++s)n[s].call(r)}(r,l,this);break;case 2:!function(e,t,r,i){if(t)e.call(r,i);else for(var n=e.length,s=vr(e,n),o=0;o<n;++o)s[o].call(r,i)}(r,l,this,arguments[1]);break;case 3:!function(e,t,r,i,n){if(t)e.call(r,i,n);else for(var s=e.length,o=vr(e,s),a=0;a<s;++a)o[a].call(r,i,n)}(r,l,this,arguments[1],arguments[2]);break;case 4:!function(e,t,r,i,n,s){if(t)e.call(r,i,n,s);else for(var o=e.length,a=vr(e,o),c=0;c<o;++c)a[c].call(r,i,n,s)}(r,l,this,arguments[1],arguments[2],arguments[3]);break;default:for(n=new Array(i-1),s=1;s<i;s++)n[s-1]=arguments[s];!function(e,t,r,i){if(t)e.apply(r,i);else for(var n=e.length,s=vr(e,n),o=0;o<n;++o)s[o].apply(r,i)}(r,l,this,n)}return!0},ur.prototype.addListener=function(e,t){return mr(this,e,t,!1)},ur.prototype.on=ur.prototype.addListener,ur.prototype.prependListener=function(e,t){return mr(this,e,t,!0)},ur.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,fr(this,e,t)),this},ur.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,fr(this,e,t)),this},ur.prototype.removeListener=function(e,t){var r,i,n,s,o;if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');if(!(i=this._events))return this;if(!(r=i[e]))return this;if(r===t||r.listener&&r.listener===t)0==--this._eventsCount?this._events=new pr:(delete i[e],i.removeListener&&this.emit("removeListener",e,r.listener||t));else if("function"!=typeof r){for(n=-1,s=r.length;s-- >0;)if(r[s]===t||r[s].listener&&r[s].listener===t){o=r[s].listener,n=s;break}if(n<0)return this;if(1===r.length){if(r[0]=void 0,0==--this._eventsCount)return this._events=new pr,this;delete i[e]}else!function(e,t){for(var r=t,i=r+1,n=e.length;i<n;r+=1,i+=1)e[r]=e[i];e.pop()}(r,n);i.removeListener&&this.emit("removeListener",e,o||t)}return this},ur.prototype.off=function(e,t){return this.removeListener(e,t)},ur.prototype.removeAllListeners=function(e){var t,r;if(!(r=this._events))return this;if(!r.removeListener)return 0===arguments.length?(this._events=new pr,this._eventsCount=0):r[e]&&(0==--this._eventsCount?this._events=new pr:delete r[e]),this;if(0===arguments.length){for(var i,n=Object.keys(r),s=0;s<n.length;++s)"removeListener"!==(i=n[s])&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=new pr,this._eventsCount=0,this}if("function"==typeof(t=r[e]))this.removeListener(e,t);else if(t)do{this.removeListener(e,t[t.length-1])}while(t[0]);return this},ur.prototype.listeners=function(e){var t,r,i=this._events;return r=i&&(t=i[e])?"function"==typeof t?[t.listener||t]:function(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}(t):[],r},ur.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):gr.call(e,t)},ur.prototype.listenerCount=gr,ur.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};var br,yr,_r=Object.freeze({__proto__:null,EventEmitter:ur,default:ur}),wr={},Sr={exports:{}};function Cr(){if(yr)return br;yr=1;var e=1e3,t=60*e,r=60*t,i=24*r,n=7*i,s=365.25*i;function o(e,t,r,i){var n=t>=1.5*r;return Math.round(e/r)+" "+i+(n?"s":"")}return br=function(a,c){c=c||{};var d=typeof a;if("string"===d&&a.length>0)return function(o){if((o=String(o)).length>100)return;var a=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(o);if(!a)return;var c=parseFloat(a[1]);switch((a[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return c*s;case"weeks":case"week":case"w":return c*n;case"days":case"day":case"d":return c*i;case"hours":case"hour":case"hrs":case"hr":case"h":return c*r;case"minutes":case"minute":case"mins":case"min":case"m":return c*t;case"seconds":case"second":case"secs":case"sec":case"s":return c*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return c;default:return}}(a);if("number"===d&&isFinite(a))return c.long?function(n){var s=Math.abs(n);if(s>=i)return o(n,s,i,"day");if(s>=r)return o(n,s,r,"hour");if(s>=t)return o(n,s,t,"minute");if(s>=e)return o(n,s,e,"second");return n+" ms"}(a):function(n){var s=Math.abs(n);if(s>=i)return Math.round(n/i)+"d";if(s>=r)return Math.round(n/r)+"h";if(s>=t)return Math.round(n/t)+"m";if(s>=e)return Math.round(n/e)+"s";return n+"ms"}(a);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(a))}}var Rr=function(e){function t(e){let i,n,s,o=null;function a(...e){if(!a.enabled)return;const r=a,n=Number(new Date),s=n-(i||n);r.diff=s,r.prev=i,r.curr=n,i=n,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let o=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((i,n)=>{if("%%"===i)return"%";o++;const s=t.formatters[n];if("function"==typeof s){const t=e[o];i=s.call(r,t),e.splice(o,1),o--}return i})),t.formatArgs.call(r,e);(r.log||t.log).apply(r,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=r,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==o?o:(n!==t.namespaces&&(n=t.namespaces,s=t.enabled(e)),s),set:e=>{o=e}}),"function"==typeof t.init&&t.init(a),a}function r(e,r){const i=t(this.namespace+(void 0===r?":":r)+e);return i.log=this.log,i}function i(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){if(e instanceof Error)return e.stack||e.message;return e},t.disable=function(){const e=[...t.names.map(i),...t.skips.map(i).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let r;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const i=("string"==typeof e?e:"").split(/[\s,]+/),n=i.length;for(r=0;r<n;r++)i[r]&&("-"===(e=i[r].replace(/\*/g,".*?"))[0]?t.skips.push(new RegExp("^"+e.slice(1)+"$")):t.names.push(new RegExp("^"+e+"$")))},t.enabled=function(e){if("*"===e[e.length-1])return!0;let r,i;for(r=0,i=t.skips.length;r<i;r++)if(t.skips[r].test(e))return!1;for(r=0,i=t.names.length;r<i;r++)if(t.names[r].test(e))return!0;return!1},t.humanize=Cr(),t.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(e).forEach((r=>{t[r]=e[r]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let r=0;for(let t=0;t<e.length;t++)r=(r<<5)-r+e.charCodeAt(t),r|=0;return t.colors[Math.abs(r)%t.colors.length]},t.enable(t.load()),t};!function(e,t){t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const r="color: "+this.color;t.splice(1,0,r,"color: inherit");let i=0,n=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(i++,"%c"===e&&(n=i))})),t.splice(n,0,r)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG);return e},t.useColors=function(){if("undefined"!=typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=Rr(t);const{formatters:r}=e.exports;r.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(Sr,Sr.exports);var Tr=Sr.exports,Pr={},kr={exports:{}};!function(e,t){!function(r,i){var n="function",s="undefined",o="object",a="string",c="major",d="model",l="name",p="type",u="vendor",h="version",m="architecture",f="console",g="mobile",v="tablet",b="smarttv",y="wearable",_="embedded",w="Amazon",S="Apple",C="ASUS",R="BlackBerry",T="Browser",P="Chrome",k="Firefox",O="Google",E="Huawei",D="LG",I="Microsoft",x="Motorola",M="Opera",j="Samsung",L="Sharp",A="Sony",N="Xiaomi",B="Zebra",F="Facebook",z="Chromium OS",U="Mac OS",$=function(e){for(var t={},r=0;r<e.length;r++)t[e[r].toUpperCase()]=e[r];return t},V=function(e,t){return typeof e===a&&-1!==G(t).indexOf(G(e))},G=function(e){return e.toLowerCase()},q=function(e,t){if(typeof e===a)return e=e.replace(/^\s\s*/,""),typeof t===s?e:e.substring(0,500)},H=function(e,t){for(var r,s,a,c,d,l,p=0;p<t.length&&!d;){var u=t[p],h=t[p+1];for(r=s=0;r<u.length&&!d&&u[r];)if(d=u[r++].exec(e))for(a=0;a<h.length;a++)l=d[++s],typeof(c=h[a])===o&&c.length>0?2===c.length?typeof c[1]==n?this[c[0]]=c[1].call(this,l):this[c[0]]=c[1]:3===c.length?typeof c[1]!==n||c[1].exec&&c[1].test?this[c[0]]=l?l.replace(c[1],c[2]):i:this[c[0]]=l?c[1].call(this,l,c[2]):i:4===c.length&&(this[c[0]]=l?c[3].call(this,l.replace(c[1],c[2])):i):this[c]=l||i;p+=2}},W=function(e,t){for(var r in t)if(typeof t[r]===o&&t[r].length>0){for(var n=0;n<t[r].length;n++)if(V(t[r][n],e))return"?"===r?i:r}else if(V(t[r],e))return"?"===r?i:r;return e},K={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},J={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[h,[l,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[h,[l,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[l,h],[/opios[\/ ]+([\w\.]+)/i],[h,[l,M+" Mini"]],[/\bopr\/([\w\.]+)/i],[h,[l,M]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[h,[l,"Baidu"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i,/(avant|iemobile|slim)\s?(?:browser)?[\/ ]?([\w\.]*)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,/(heytap|ovi)browser\/([\d\.]+)/i,/(weibo)__([\d\.]+)/i],[l,h],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[h,[l,"UC"+T]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[h,[l,"WeChat"]],[/konqueror\/([\w\.]+)/i],[h,[l,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[h,[l,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[h,[l,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[h,[l,"Smart Lenovo "+T]],[/(avast|avg)\/([\w\.]+)/i],[[l,/(.+)/,"$1 Secure "+T],h],[/\bfocus\/([\w\.]+)/i],[h,[l,k+" Focus"]],[/\bopt\/([\w\.]+)/i],[h,[l,M+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[h,[l,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[h,[l,"Dolphin"]],[/coast\/([\w\.]+)/i],[h,[l,M+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[h,[l,"MIUI "+T]],[/fxios\/([-\w\.]+)/i],[h,[l,k]],[/\bqihu|(qi?ho?o?|360)browser/i],[[l,"360 "+T]],[/(oculus|sailfish|huawei|vivo)browser\/([\w\.]+)/i],[[l,/(.+)/,"$1 "+T],h],[/samsungbrowser\/([\w\.]+)/i],[h,[l,j+" Internet"]],[/(comodo_dragon)\/([\w\.]+)/i],[[l,/_/g," "],h],[/metasr[\/ ]?([\d\.]+)/i],[h,[l,"Sogou Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[l,"Sogou Mobile"],h],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345Explorer)[\/ ]?([\w\.]+)/i],[l,h],[/(lbbrowser)/i,/\[(linkedin)app\]/i],[l],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[l,F],h],[/(Klarna)\/([\w\.]+)/i,/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(alipay)client\/([\w\.]+)/i,/(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i],[l,h],[/\bgsa\/([\w\.]+) .*safari\//i],[h,[l,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[h,[l,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[h,[l,P+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[l,P+" WebView"],h],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[h,[l,"Android "+T]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[l,h],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[h,[l,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[h,l],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[l,[h,W,{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}]],[/(webkit|khtml)\/([\w\.]+)/i],[l,h],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[l,"Netscape"],h],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[h,[l,k+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/(links) \(([\w\.]+)/i,/panasonic;(viera)/i],[l,h],[/(cobalt)\/([\w\.]+)/i],[l,[h,/master.|lts./,""]]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i],[[m,"amd64"]],[/(ia32(?=;))/i],[[m,G]],[/((?:i[346]|x)86)[;\)]/i],[[m,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[m,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[m,"armhf"]],[/windows (ce|mobile); ppc;/i],[[m,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[m,/ower/,"",G]],[/(sun4\w)[;\)]/i],[[m,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[m,G]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[d,[u,j],[p,v]],[/\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[d,[u,j],[p,g]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[d,[u,S],[p,g]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[d,[u,S],[p,v]],[/(macintosh);/i],[d,[u,S]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[d,[u,L],[p,g]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[d,[u,E],[p,v]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[d,[u,E],[p,g]],[/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i],[[d,/_/g," "],[u,N],[p,g]],[/oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i,/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[d,/_/g," "],[u,N],[p,v]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[d,[u,"OPPO"],[p,g]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[d,[u,"Vivo"],[p,g]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[d,[u,"Realme"],[p,g]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[d,[u,x],[p,g]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[d,[u,x],[p,v]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[d,[u,D],[p,v]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[d,[u,D],[p,g]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[d,[u,"Lenovo"],[p,v]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[d,/_/g," "],[u,"Nokia"],[p,g]],[/(pixel c)\b/i],[d,[u,O],[p,v]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[d,[u,O],[p,g]],[/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[d,[u,A],[p,g]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[d,"Xperia Tablet"],[u,A],[p,v]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[d,[u,"OnePlus"],[p,g]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[d,[u,w],[p,v]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[d,/(.+)/g,"Fire Phone $1"],[u,w],[p,g]],[/(playbook);[-\w\),; ]+(rim)/i],[d,u,[p,v]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[d,[u,R],[p,g]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[d,[u,C],[p,v]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[d,[u,C],[p,g]],[/(nexus 9)/i],[d,[u,"HTC"],[p,v]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[u,[d,/_/g," "],[p,g]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[d,[u,"Acer"],[p,v]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[d,[u,"Meizu"],[p,g]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[d,[u,"Ulefone"],[p,g]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[u,d,[p,g]],[/(kobo)\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[u,d,[p,v]],[/(surface duo)/i],[d,[u,I],[p,v]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[d,[u,"Fairphone"],[p,g]],[/(u304aa)/i],[d,[u,"AT&T"],[p,g]],[/\bsie-(\w*)/i],[d,[u,"Siemens"],[p,g]],[/\b(rct\w+) b/i],[d,[u,"RCA"],[p,v]],[/\b(venue[\d ]{2,7}) b/i],[d,[u,"Dell"],[p,v]],[/\b(q(?:mv|ta)\w+) b/i],[d,[u,"Verizon"],[p,v]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[d,[u,"Barnes & Noble"],[p,v]],[/\b(tm\d{3}\w+) b/i],[d,[u,"NuVision"],[p,v]],[/\b(k88) b/i],[d,[u,"ZTE"],[p,v]],[/\b(nx\d{3}j) b/i],[d,[u,"ZTE"],[p,g]],[/\b(gen\d{3}) b.+49h/i],[d,[u,"Swiss"],[p,g]],[/\b(zur\d{3}) b/i],[d,[u,"Swiss"],[p,v]],[/\b((zeki)?tb.*\b) b/i],[d,[u,"Zeki"],[p,v]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[u,"Dragon Touch"],d,[p,v]],[/\b(ns-?\w{0,9}) b/i],[d,[u,"Insignia"],[p,v]],[/\b((nxa|next)-?\w{0,9}) b/i],[d,[u,"NextBook"],[p,v]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[u,"Voice"],d,[p,g]],[/\b(lvtel\-)?(v1[12]) b/i],[[u,"LvTel"],d,[p,g]],[/\b(ph-1) /i],[d,[u,"Essential"],[p,g]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[d,[u,"Envizen"],[p,v]],[/\b(trio[-\w\. ]+) b/i],[d,[u,"MachSpeed"],[p,v]],[/\btu_(1491) b/i],[d,[u,"Rotor"],[p,v]],[/(shield[\w ]+) b/i],[d,[u,"Nvidia"],[p,v]],[/(sprint) (\w+)/i],[u,d,[p,g]],[/(kin\.[onetw]{3})/i],[[d,/\./g," "],[u,I],[p,g]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[d,[u,B],[p,v]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[d,[u,B],[p,g]],[/smart-tv.+(samsung)/i],[u,[p,b]],[/hbbtv.+maple;(\d+)/i],[[d,/^/,"SmartTV"],[u,j],[p,b]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[u,D],[p,b]],[/(apple) ?tv/i],[u,[d,S+" TV"],[p,b]],[/crkey/i],[[d,P+"cast"],[u,O],[p,b]],[/droid.+aft(\w+)( bui|\))/i],[d,[u,w],[p,b]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[d,[u,L],[p,b]],[/(bravia[\w ]+)( bui|\))/i],[d,[u,A],[p,b]],[/(mitv-\w{5}) bui/i],[d,[u,N],[p,b]],[/Hbbtv.*(technisat) (.*);/i],[u,d,[p,b]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[u,q],[d,q],[p,b]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[p,b]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[u,d,[p,f]],[/droid.+; (shield) bui/i],[d,[u,"Nvidia"],[p,f]],[/(playstation [345portablevi]+)/i],[d,[u,A],[p,f]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[d,[u,I],[p,f]],[/((pebble))app/i],[u,d,[p,y]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[d,[u,S],[p,y]],[/droid.+; (glass) \d/i],[d,[u,O],[p,y]],[/droid.+; (wt63?0{2,3})\)/i],[d,[u,B],[p,y]],[/(quest( 2| pro)?)/i],[d,[u,F],[p,y]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[u,[p,_]],[/(aeobc)\b/i],[d,[u,w],[p,_]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],[d,[p,g]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[d,[p,v]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[p,v]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[p,g]],[/(android[-\w\. ]{0,9});.+buil/i],[d,[u,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[h,[l,"EdgeHTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[h,[l,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[l,h],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[h,l]],os:[[/microsoft (windows) (vista|xp)/i],[l,h],[/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i],[l,[h,W,K]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[h,W,K],[l,"Windows"]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[h,/_/g,"."],[l,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[l,U],[h,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[h,l],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[l,h],[/\(bb(10);/i],[h,[l,R]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[h,[l,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[h,[l,k+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[h,[l,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[h,[l,"watchOS"]],[/crkey\/([\d\.]+)/i],[h,[l,P+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[l,z],h],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux) ?([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[l,h],[/(sunos) ?([\w\.\d]*)/i],[[l,"Solaris"],h],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[l,h]]},Q=function(e,t){if(typeof e===o&&(t=e,e=i),!(this instanceof Q))return new Q(e,t).getResult();var f=typeof r!==s&&r.navigator?r.navigator:i,b=e||(f&&f.userAgent?f.userAgent:""),y=f&&f.userAgentData?f.userAgentData:i,_=t?function(e,t){var r={};for(var i in e)t[i]&&t[i].length%2==0?r[i]=t[i].concat(e[i]):r[i]=e[i];return r}(J,t):J,w=f&&f.userAgent==b;return this.getBrowser=function(){var e,t={};return t[l]=i,t[h]=i,H.call(t,b,_.browser),t[c]=typeof(e=t[h])===a?e.replace(/[^\d\.]/g,"").split(".")[0]:i,w&&f&&f.brave&&typeof f.brave.isBrave==n&&(t[l]="Brave"),t},this.getCPU=function(){var e={};return e[m]=i,H.call(e,b,_.cpu),e},this.getDevice=function(){var e={};return e[u]=i,e[d]=i,e[p]=i,H.call(e,b,_.device),w&&!e[p]&&y&&y.mobile&&(e[p]=g),w&&"Macintosh"==e[d]&&f&&typeof f.standalone!==s&&f.maxTouchPoints&&f.maxTouchPoints>2&&(e[d]="iPad",e[p]=v),e},this.getEngine=function(){var e={};return e[l]=i,e[h]=i,H.call(e,b,_.engine),e},this.getOS=function(){var e={};return e[l]=i,e[h]=i,H.call(e,b,_.os),w&&!e[l]&&y&&"Unknown"!=y.platform&&(e[l]=y.platform.replace(/chrome os/i,z).replace(/macos/i,U)),e},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return b},this.setUA=function(e){return b=typeof e===a&&e.length>500?q(e,500):e,this},this.setUA(b),this};Q.VERSION="1.0.37",Q.BROWSER=$([l,h,c]),Q.CPU=$([m]),Q.DEVICE=$([d,u,p,f,g,b,v,y,_]),Q.ENGINE=Q.OS=$([l,h]),e.exports&&(t=e.exports=Q),t.UAParser=Q;var Z=typeof r!==s&&(r.jQuery||r.Zepto);if(Z&&!Z.ua){var Y=new Q;Z.ua=Y.getResult(),Z.ua.get=function(){return Y.getUA()},Z.ua.set=function(e){Y.setUA(e);var t=Y.getResult();for(var r in t)Z.ua[r]=t[r]}}}("object"==typeof window?window:s)}(kr,kr.exports);var Or=kr.exports,Er={},Dr=s&&s.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Er,"__esModule",{value:!0}),Er.Logger=void 0;const Ir=Dr(Tr),xr="mediasoup-client";Er.Logger=class{constructor(e){e?(this._debug=(0,Ir.default)(`${xr}:${e}`),this._warn=(0,Ir.default)(`${xr}:WARN:${e}`),this._error=(0,Ir.default)(`${xr}:ERROR:${e}`)):(this._debug=(0,Ir.default)(xr),this._warn=(0,Ir.default)(`${xr}:WARN`),this._error=(0,Ir.default)(`${xr}:ERROR`)),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console)}get debug(){return this._debug}get warn(){return this._warn}get error(){return this._error}};var Mr={},jr=a(_r);Object.defineProperty(Mr,"__esModule",{value:!0}),Mr.EnhancedEventEmitter=void 0;const Lr=jr,Ar=new Er.Logger("EnhancedEventEmitter");class Nr extends Lr.EventEmitter{constructor(){super(),this.setMaxListeners(1/0)}emit(e,...t){return super.emit(e,...t)}safeEmit(e,...t){const r=super.listenerCount(e);try{return super.emit(e,...t)}catch(t){return Ar.error("safeEmit() | event listener threw an error [eventName:%s]:%o",e,t),Boolean(r)}}on(e,t){return super.on(e,t),this}off(e,t){return super.off(e,t),this}addListener(e,t){return super.on(e,t),this}prependListener(e,t){return super.prependListener(e,t),this}once(e,t){return super.once(e,t),this}prependOnceListener(e,t){return super.prependOnceListener(e,t),this}removeListener(e,t){return super.off(e,t),this}removeAllListeners(e){return super.removeAllListeners(e),this}listenerCount(e){return super.listenerCount(e)}listeners(e){return super.listeners(e)}rawListeners(e){return super.rawListeners(e)}}Mr.EnhancedEventEmitter=Nr;var Br={};Object.defineProperty(Br,"__esModule",{value:!0}),Br.InvalidStateError=Br.UnsupportedError=void 0;class Fr extends Error{constructor(e){super(e),this.name="UnsupportedError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,Fr):this.stack=new Error(e).stack}}Br.UnsupportedError=Fr;class zr extends Error{constructor(e){super(e),this.name="InvalidStateError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,zr):this.stack=new Error(e).stack}}Br.InvalidStateError=zr;var Ur={};Object.defineProperty(Ur,"__esModule",{value:!0}),Ur.generateRandomNumber=Ur.clone=void 0,Ur.clone=function(e){return void 0===e?void 0:Number.isNaN(e)?NaN:"function"==typeof structuredClone?structuredClone(e):JSON.parse(JSON.stringify(e))},Ur.generateRandomNumber=function(){return Math.round(1e7*Math.random())};var $r={},Vr={},Gr={},qr=s&&s.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Gr,"__esModule",{value:!0}),Gr.Logger=void 0;const Hr=qr(Tr),Wr="h264-profile-level-id";Gr.Logger=class{constructor(e){e?(this._debug=(0,Hr.default)(`${Wr}:${e}`),this._warn=(0,Hr.default)(`${Wr}:WARN:${e}`),this._error=(0,Hr.default)(`${Wr}:ERROR:${e}`)):(this._debug=(0,Hr.default)(Wr),this._warn=(0,Hr.default)(`${Wr}:WARN`),this._error=(0,Hr.default)(`${Wr}:ERROR`)),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console)}get debug(){return this._debug}get warn(){return this._warn}get error(){return this._error}},Object.defineProperty(Vr,"__esModule",{value:!0}),Vr.generateProfileLevelIdStringForAnswer=Vr.isSameProfile=Vr.parseSdpProfileLevelId=Vr.levelToString=Vr.profileToString=Vr.profileLevelIdToString=Vr.parseProfileLevelId=Vr.ProfileLevelId=Vr.Level=Vr.Profile=void 0;const Kr=new Gr.Logger;var Jr,Qr;!function(e){e[e.ConstrainedBaseline=1]="ConstrainedBaseline",e[e.Baseline=2]="Baseline",e[e.Main=3]="Main",e[e.ConstrainedHigh=4]="ConstrainedHigh",e[e.High=5]="High",e[e.PredictiveHigh444=6]="PredictiveHigh444"}(Jr||(Vr.Profile=Jr={})),function(e){e[e.L1_b=0]="L1_b",e[e.L1=10]="L1",e[e.L1_1=11]="L1_1",e[e.L1_2=12]="L1_2",e[e.L1_3=13]="L1_3",e[e.L2=20]="L2",e[e.L2_1=21]="L2_1",e[e.L2_2=22]="L2_2",e[e.L3=30]="L3",e[e.L3_1=31]="L3_1",e[e.L3_2=32]="L3_2",e[e.L4=40]="L4",e[e.L4_1=41]="L4_1",e[e.L4_2=42]="L4_2",e[e.L5=50]="L5",e[e.L5_1=51]="L5_1",e[e.L5_2=52]="L5_2"}(Qr||(Vr.Level=Qr={}));class Zr{constructor(e,t){this.profile=e,this.level=t}}Vr.ProfileLevelId=Zr;const Yr=new Zr(Jr.ConstrainedBaseline,Qr.L3_1);class Xr{constructor(e){this.mask=~si("x",e),this.masked_value=si("1",e)}isMatch(e){return this.masked_value===(e&this.mask)}}class ei{constructor(e,t,r){this.profile_idc=e,this.profile_iop=t,this.profile=r}}const ti=[new ei(66,new Xr("x1xx0000"),Jr.ConstrainedBaseline),new ei(77,new Xr("1xxx0000"),Jr.ConstrainedBaseline),new ei(88,new Xr("11xx0000"),Jr.ConstrainedBaseline),new ei(66,new Xr("x0xx0000"),Jr.Baseline),new ei(88,new Xr("10xx0000"),Jr.Baseline),new ei(77,new Xr("0x0x0000"),Jr.Main),new ei(100,new Xr("00000000"),Jr.High),new ei(100,new Xr("00001100"),Jr.ConstrainedHigh),new ei(244,new Xr("00000000"),Jr.PredictiveHigh444)];function ri(e){if("string"!=typeof e||6!==e.length)return;const t=parseInt(e,16);if(0===t)return;const r=255&t,i=t>>8&255,n=t>>16&255;let s;switch(r){case Qr.L1_1:s=0!=(16&i)?Qr.L1_b:Qr.L1_1;break;case Qr.L1:case Qr.L1_2:case Qr.L1_3:case Qr.L2:case Qr.L2_1:case Qr.L2_2:case Qr.L3:case Qr.L3_1:case Qr.L3_2:case Qr.L4:case Qr.L4_1:case Qr.L4_2:case Qr.L5:case Qr.L5_1:case Qr.L5_2:s=r;break;default:return void Kr.warn(`parseProfileLevelId() | unrecognized level_idc [str:${e}, level_idc:${r}]`)}for(const e of ti)if(n===e.profile_idc&&e.profile_iop.isMatch(i))return new Zr(e.profile,s);Kr.warn(`parseProfileLevelId() | unrecognized profile_idc/profile_iop combination [str:${e}, profile_idc:${n}, profile_iop:${i}]`)}function ii(e){if(e.level==Qr.L1_b)switch(e.profile){case Jr.ConstrainedBaseline:return"42f00b";case Jr.Baseline:return"42100b";case Jr.Main:return"4d100b";default:return void Kr.warn(`profileLevelIdToString() | Level 1_b not is allowed for profile ${e.profile}`)}let t;switch(e.profile){case Jr.ConstrainedBaseline:t="42e0";break;case Jr.Baseline:t="4200";break;case Jr.Main:t="4d00";break;case Jr.ConstrainedHigh:t="640c";break;case Jr.High:t="6400";break;case Jr.PredictiveHigh444:t="f400";break;default:return void Kr.warn(`profileLevelIdToString() | unrecognized profile ${e.profile}`)}let r=e.level.toString(16);return 1===r.length&&(r=`0${r}`),`${t}${r}`}function ni(e={}){const t=e["profile-level-id"];return t?ri(t):Yr}function si(e,t){return Number(t[0]===e)<<7|Number(t[1]===e)<<6|Number(t[2]===e)<<5|Number(t[3]===e)<<4|Number(t[4]===e)<<3|Number(t[5]===e)<<2|Number(t[6]===e)<<1|Number(t[7]===e)<<0}function oi(e={}){const t=e["level-asymmetry-allowed"];return!0===t||1===t||"1"===t}Vr.parseProfileLevelId=ri,Vr.profileLevelIdToString=ii,Vr.profileToString=function(e){switch(e){case Jr.ConstrainedBaseline:return"ConstrainedBaseline";case Jr.Baseline:return"Baseline";case Jr.Main:return"Main";case Jr.ConstrainedHigh:return"ConstrainedHigh";case Jr.High:return"High";case Jr.PredictiveHigh444:return"PredictiveHigh444";default:return void Kr.warn(`profileToString() | unrecognized profile ${e}`)}},Vr.levelToString=function(e){switch(e){case Qr.L1_b:return"1b";case Qr.L1:return"1";case Qr.L1_1:return"1.1";case Qr.L1_2:return"1.2";case Qr.L1_3:return"1.3";case Qr.L2:return"2";case Qr.L2_1:return"2.1";case Qr.L2_2:return"2.2";case Qr.L3:return"3";case Qr.L3_1:return"3.1";case Qr.L3_2:return"3.2";case Qr.L4:return"4";case Qr.L4_1:return"4.1";case Qr.L4_2:return"4.2";case Qr.L5:return"5";case Qr.L5_1:return"5.1";case Qr.L5_2:return"5.2";default:return void Kr.warn(`levelToString() | unrecognized level ${e}`)}},Vr.parseSdpProfileLevelId=ni,Vr.isSameProfile=function(e={},t={}){const r=ni(e),i=ni(t);return Boolean(r&&i&&r.profile===i.profile)},Vr.generateProfileLevelIdStringForAnswer=function(e={},t={}){if(!e["profile-level-id"]&&!t["profile-level-id"])return void Kr.warn("generateProfileLevelIdStringForAnswer() | profile-level-id missing in local and remote params");const r=ni(e),i=ni(t);if(!r)throw new TypeError("invalid local_profile_level_id");if(!i)throw new TypeError("invalid remote_profile_level_id");if(r.profile!==i.profile)throw new TypeError("H264 Profile mismatch");const n=oi(e)&&oi(t),s=r.level,o=i.level,a=function(e,t){return e===Qr.L1_b?t!==Qr.L1&&t!==Qr.L1_b:t===Qr.L1_b?e!==Qr.L1:e<t}(c=s,d=o)?c:d;var c,d;const l=n?s:a;return Kr.debug(`generateProfileLevelIdStringForAnswer() | result [profile:${r.profile}, level:${l}]`),ii(new Zr(r.profile,l))};var ai=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),ci=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),di=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&ai(t,e,r);return ci(t,e),t};Object.defineProperty($r,"__esModule",{value:!0}),$r.canReceive=$r.canSend=$r.generateProbatorRtpParameters=$r.reduceCodecs=$r.getSendingRemoteRtpParameters=$r.getSendingRtpParameters=$r.getRecvRtpCapabilities=$r.getExtendedRtpCapabilities=$r.validateSctpCapabilities=$r.validateSctpStreamParameters=$r.validateRtpParameters=$r.validateRtpCapabilities=void 0;const li=di(Vr),pi=di(Ur);function ui(e){if("object"!=typeof e)throw new TypeError("params is not an object");if(e.mid&&"string"!=typeof e.mid)throw new TypeError("params.mid is not a string");if(!Array.isArray(e.codecs))throw new TypeError("missing params.codecs");for(const t of e.codecs)gi(t);if(e.headerExtensions&&!Array.isArray(e.headerExtensions))throw new TypeError("params.headerExtensions is not an array");e.headerExtensions||(e.headerExtensions=[]);for(const t of e.headerExtensions)vi(t);if(e.encodings&&!Array.isArray(e.encodings))throw new TypeError("params.encodings is not an array");e.encodings||(e.encodings=[]);for(const t of e.encodings)bi(t);if(e.rtcp&&"object"!=typeof e.rtcp)throw new TypeError("params.rtcp is not an object");e.rtcp||(e.rtcp={}),function(e){if("object"!=typeof e)throw new TypeError("rtcp is not an object");if(e.cname&&"string"!=typeof e.cname)throw new TypeError("invalid rtcp.cname");e.reducedSize&&"boolean"==typeof e.reducedSize||(e.reducedSize=!0)}(e.rtcp)}function hi(e){const t=new RegExp("^(audio|video)/(.+)","i");if("object"!=typeof e)throw new TypeError("codec is not an object");if(!e.mimeType||"string"!=typeof e.mimeType)throw new TypeError("missing codec.mimeType");const r=t.exec(e.mimeType);if(!r)throw new TypeError("invalid codec.mimeType");if(e.kind=r[1].toLowerCase(),e.preferredPayloadType&&"number"!=typeof e.preferredPayloadType)throw new TypeError("invalid codec.preferredPayloadType");if("number"!=typeof e.clockRate)throw new TypeError("missing codec.clockRate");"audio"===e.kind?"number"!=typeof e.channels&&(e.channels=1):delete e.channels,e.parameters&&"object"==typeof e.parameters||(e.parameters={});for(const t of Object.keys(e.parameters)){let r=e.parameters[t];if(void 0===r&&(e.parameters[t]="",r=""),"string"!=typeof r&&"number"!=typeof r)throw new TypeError(`invalid codec parameter [key:${t}s, value:${r}]`);if("apt"===t&&"number"!=typeof r)throw new TypeError("invalid codec apt parameter")}e.rtcpFeedback&&Array.isArray(e.rtcpFeedback)||(e.rtcpFeedback=[]);for(const t of e.rtcpFeedback)mi(t)}function mi(e){if("object"!=typeof e)throw new TypeError("fb is not an object");if(!e.type||"string"!=typeof e.type)throw new TypeError("missing fb.type");e.parameter&&"string"==typeof e.parameter||(e.parameter="")}function fi(e){if("object"!=typeof e)throw new TypeError("ext is not an object");if("audio"!==e.kind&&"video"!==e.kind)throw new TypeError("invalid ext.kind");if(!e.uri||"string"!=typeof e.uri)throw new TypeError("missing ext.uri");if("number"!=typeof e.preferredId)throw new TypeError("missing ext.preferredId");if(e.preferredEncrypt&&"boolean"!=typeof e.preferredEncrypt)throw new TypeError("invalid ext.preferredEncrypt");if(e.preferredEncrypt||(e.preferredEncrypt=!1),e.direction&&"string"!=typeof e.direction)throw new TypeError("invalid ext.direction");e.direction||(e.direction="sendrecv")}function gi(e){const t=new RegExp("^(audio|video)/(.+)","i");if("object"!=typeof e)throw new TypeError("codec is not an object");if(!e.mimeType||"string"!=typeof e.mimeType)throw new TypeError("missing codec.mimeType");const r=t.exec(e.mimeType);if(!r)throw new TypeError("invalid codec.mimeType");if("number"!=typeof e.payloadType)throw new TypeError("missing codec.payloadType");if("number"!=typeof e.clockRate)throw new TypeError("missing codec.clockRate");"audio"===r[1].toLowerCase()?"number"!=typeof e.channels&&(e.channels=1):delete e.channels,e.parameters&&"object"==typeof e.parameters||(e.parameters={});for(const t of Object.keys(e.parameters)){let r=e.parameters[t];if(void 0===r&&(e.parameters[t]="",r=""),"string"!=typeof r&&"number"!=typeof r)throw new TypeError(`invalid codec parameter [key:${t}s, value:${r}]`);if("apt"===t&&"number"!=typeof r)throw new TypeError("invalid codec apt parameter")}e.rtcpFeedback&&Array.isArray(e.rtcpFeedback)||(e.rtcpFeedback=[]);for(const t of e.rtcpFeedback)mi(t)}function vi(e){if("object"!=typeof e)throw new TypeError("ext is not an object");if(!e.uri||"string"!=typeof e.uri)throw new TypeError("missing ext.uri");if("number"!=typeof e.id)throw new TypeError("missing ext.id");if(e.encrypt&&"boolean"!=typeof e.encrypt)throw new TypeError("invalid ext.encrypt");e.encrypt||(e.encrypt=!1),e.parameters&&"object"==typeof e.parameters||(e.parameters={});for(const t of Object.keys(e.parameters)){let r=e.parameters[t];if(void 0===r&&(e.parameters[t]="",r=""),"string"!=typeof r&&"number"!=typeof r)throw new TypeError("invalid header extension parameter")}}function bi(e){if("object"!=typeof e)throw new TypeError("encoding is not an object");if(e.ssrc&&"number"!=typeof e.ssrc)throw new TypeError("invalid encoding.ssrc");if(e.rid&&"string"!=typeof e.rid)throw new TypeError("invalid encoding.rid");if(e.rtx&&"object"!=typeof e.rtx)throw new TypeError("invalid encoding.rtx");if(e.rtx&&"number"!=typeof e.rtx.ssrc)throw new TypeError("missing encoding.rtx.ssrc");if(e.dtx&&"boolean"==typeof e.dtx||(e.dtx=!1),e.scalabilityMode&&"string"!=typeof e.scalabilityMode)throw new TypeError("invalid encoding.scalabilityMode")}function yi(e){return!!e&&/.+\/rtx$/i.test(e.mimeType)}function _i(e,t,{strict:r=!1,modify:i=!1}={}){const n=e.mimeType.toLowerCase();if(n!==t.mimeType.toLowerCase())return!1;if(e.clockRate!==t.clockRate)return!1;if(e.channels!==t.channels)return!1;switch(n){case"video/h264":if(r){if((e.parameters["packetization-mode"]||0)!==(t.parameters["packetization-mode"]||0))return!1;if(!li.isSameProfile(e.parameters,t.parameters))return!1;let r;try{r=li.generateProfileLevelIdStringForAnswer(e.parameters,t.parameters)}catch(e){return!1}i&&(r?(e.parameters["profile-level-id"]=r,t.parameters["profile-level-id"]=r):(delete e.parameters["profile-level-id"],delete t.parameters["profile-level-id"]))}break;case"video/vp9":if(r){if((e.parameters["profile-id"]||0)!==(t.parameters["profile-id"]||0))return!1}}return!0}function wi(e,t){return(!e.kind||!t.kind||e.kind===t.kind)&&e.uri===t.uri}function Si(e,t){const r=[];for(const i of e.rtcpFeedback||[]){const e=(t.rtcpFeedback||[]).find((e=>e.type===i.type&&(e.parameter===i.parameter||!e.parameter&&!i.parameter)));e&&r.push(e)}return r}$r.validateRtpCapabilities=function(e){if("object"!=typeof e)throw new TypeError("caps is not an object");if(e.codecs&&!Array.isArray(e.codecs))throw new TypeError("caps.codecs is not an array");e.codecs||(e.codecs=[]);for(const t of e.codecs)hi(t);if(e.headerExtensions&&!Array.isArray(e.headerExtensions))throw new TypeError("caps.headerExtensions is not an array");e.headerExtensions||(e.headerExtensions=[]);for(const t of e.headerExtensions)fi(t)},$r.validateRtpParameters=ui,$r.validateSctpStreamParameters=function(e){if("object"!=typeof e)throw new TypeError("params is not an object");if("number"!=typeof e.streamId)throw new TypeError("missing params.streamId");let t=!1;if("boolean"==typeof e.ordered?t=!0:e.ordered=!0,e.maxPacketLifeTime&&"number"!=typeof e.maxPacketLifeTime)throw new TypeError("invalid params.maxPacketLifeTime");if(e.maxRetransmits&&"number"!=typeof e.maxRetransmits)throw new TypeError("invalid params.maxRetransmits");if(e.maxPacketLifeTime&&e.maxRetransmits)throw new TypeError("cannot provide both maxPacketLifeTime and maxRetransmits");if(t&&e.ordered&&(e.maxPacketLifeTime||e.maxRetransmits))throw new TypeError("cannot be ordered with maxPacketLifeTime or maxRetransmits");if(t||!e.maxPacketLifeTime&&!e.maxRetransmits||(e.ordered=!1),e.label&&"string"!=typeof e.label)throw new TypeError("invalid params.label");if(e.protocol&&"string"!=typeof e.protocol)throw new TypeError("invalid params.protocol")},$r.validateSctpCapabilities=function(e){if("object"!=typeof e)throw new TypeError("caps is not an object");if(!e.numStreams||"object"!=typeof e.numStreams)throw new TypeError("missing caps.numStreams");!function(e){if("object"!=typeof e)throw new TypeError("numStreams is not an object");if("number"!=typeof e.OS)throw new TypeError("missing numStreams.OS");if("number"!=typeof e.MIS)throw new TypeError("missing numStreams.MIS")}(e.numStreams)},$r.getExtendedRtpCapabilities=function(e,t){const r={codecs:[],headerExtensions:[]};for(const i of t.codecs||[]){if(yi(i))continue;const t=(e.codecs||[]).find((e=>_i(e,i,{strict:!0,modify:!0})));if(!t)continue;const n={mimeType:t.mimeType,kind:t.kind,clockRate:t.clockRate,channels:t.channels,localPayloadType:t.preferredPayloadType,localRtxPayloadType:void 0,remotePayloadType:i.preferredPayloadType,remoteRtxPayloadType:void 0,localParameters:t.parameters,remoteParameters:i.parameters,rtcpFeedback:Si(t,i)};r.codecs.push(n)}for(const i of r.codecs){const r=e.codecs.find((e=>yi(e)&&e.parameters.apt===i.localPayloadType)),n=t.codecs.find((e=>yi(e)&&e.parameters.apt===i.remotePayloadType));r&&n&&(i.localRtxPayloadType=r.preferredPayloadType,i.remoteRtxPayloadType=n.preferredPayloadType)}for(const i of t.headerExtensions){const t=e.headerExtensions.find((e=>wi(e,i)));if(!t)continue;const n={kind:i.kind,uri:i.uri,sendId:t.preferredId,recvId:i.preferredId,encrypt:t.preferredEncrypt,direction:"sendrecv"};switch(i.direction){case"sendrecv":n.direction="sendrecv";break;case"recvonly":n.direction="sendonly";break;case"sendonly":n.direction="recvonly";break;case"inactive":n.direction="inactive"}r.headerExtensions.push(n)}return r},$r.getRecvRtpCapabilities=function(e){const t={codecs:[],headerExtensions:[]};for(const r of e.codecs){const e={mimeType:r.mimeType,kind:r.kind,preferredPayloadType:r.remotePayloadType,clockRate:r.clockRate,channels:r.channels,parameters:r.localParameters,rtcpFeedback:r.rtcpFeedback};if(t.codecs.push(e),!r.remoteRtxPayloadType)continue;const i={mimeType:`${r.kind}/rtx`,kind:r.kind,preferredPayloadType:r.remoteRtxPayloadType,clockRate:r.clockRate,parameters:{apt:r.remotePayloadType},rtcpFeedback:[]};t.codecs.push(i)}for(const r of e.headerExtensions){if("sendrecv"!==r.direction&&"recvonly"!==r.direction)continue;const e={kind:r.kind,uri:r.uri,preferredId:r.recvId,preferredEncrypt:r.encrypt,direction:r.direction};t.headerExtensions.push(e)}return t},$r.getSendingRtpParameters=function(e,t){const r={mid:void 0,codecs:[],headerExtensions:[],encodings:[],rtcp:{}};for(const i of t.codecs){if(i.kind!==e)continue;const t={mimeType:i.mimeType,payloadType:i.localPayloadType,clockRate:i.clockRate,channels:i.channels,parameters:i.localParameters,rtcpFeedback:i.rtcpFeedback};if(r.codecs.push(t),i.localRtxPayloadType){const e={mimeType:`${i.kind}/rtx`,payloadType:i.localRtxPayloadType,clockRate:i.clockRate,parameters:{apt:i.localPayloadType},rtcpFeedback:[]};r.codecs.push(e)}}for(const i of t.headerExtensions){if(i.kind&&i.kind!==e||"sendrecv"!==i.direction&&"sendonly"!==i.direction)continue;const t={uri:i.uri,id:i.sendId,encrypt:i.encrypt,parameters:{}};r.headerExtensions.push(t)}return r},$r.getSendingRemoteRtpParameters=function(e,t){const r={mid:void 0,codecs:[],headerExtensions:[],encodings:[],rtcp:{}};for(const i of t.codecs){if(i.kind!==e)continue;const t={mimeType:i.mimeType,payloadType:i.localPayloadType,clockRate:i.clockRate,channels:i.channels,parameters:i.remoteParameters,rtcpFeedback:i.rtcpFeedback};if(r.codecs.push(t),i.localRtxPayloadType){const e={mimeType:`${i.kind}/rtx`,payloadType:i.localRtxPayloadType,clockRate:i.clockRate,parameters:{apt:i.localPayloadType},rtcpFeedback:[]};r.codecs.push(e)}}for(const i of t.headerExtensions){if(i.kind&&i.kind!==e||"sendrecv"!==i.direction&&"sendonly"!==i.direction)continue;const t={uri:i.uri,id:i.sendId,encrypt:i.encrypt,parameters:{}};r.headerExtensions.push(t)}if(r.headerExtensions.some((e=>"http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01"===e.uri)))for(const e of r.codecs)e.rtcpFeedback=(e.rtcpFeedback||[]).filter((e=>"goog-remb"!==e.type));else if(r.headerExtensions.some((e=>"http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time"===e.uri)))for(const e of r.codecs)e.rtcpFeedback=(e.rtcpFeedback||[]).filter((e=>"transport-cc"!==e.type));else for(const e of r.codecs)e.rtcpFeedback=(e.rtcpFeedback||[]).filter((e=>"transport-cc"!==e.type&&"goog-remb"!==e.type));return r},$r.reduceCodecs=function(e,t){const r=[];if(t){for(let i=0;i<e.length;++i)if(_i(e[i],t)){r.push(e[i]),yi(e[i+1])&&r.push(e[i+1]);break}if(0===r.length)throw new TypeError("no matching codec found")}else r.push(e[0]),yi(e[1])&&r.push(e[1]);return r},$r.generateProbatorRtpParameters=function(e){ui(e=pi.clone(e));const t={mid:"probator",codecs:[],headerExtensions:[],encodings:[{ssrc:1234}],rtcp:{cname:"probator"}};return t.codecs.push(e.codecs[0]),t.codecs[0].payloadType=127,t.headerExtensions=e.headerExtensions,t},$r.canSend=function(e,t){return t.codecs.some((t=>t.kind===e))},$r.canReceive=function(e,t){if(ui(e),0===e.codecs.length)return!1;const r=e.codecs[0];return t.codecs.some((e=>e.remotePayloadType===r.payloadType))};var Ci={},Ri={},Ti={};Object.defineProperty(Ti,"__esModule",{value:!0}),Ti.Logger=void 0;const Pi=Tr,ki="awaitqueue";Ti.Logger=class{constructor(e){e?(this._debug=(0,Pi.default)(`${ki}:${e}`),this._warn=(0,Pi.default)(`${ki}:WARN:${e}`),this._error=(0,Pi.default)(`${ki}:ERROR:${e}`)):(this._debug=(0,Pi.default)(ki),this._warn=(0,Pi.default)(`${ki}:WARN`),this._error=(0,Pi.default)(`${ki}:ERROR`)),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console)}get debug(){return this._debug}get warn(){return this._warn}get error(){return this._error}},Object.defineProperty(Ri,"__esModule",{value:!0}),Ri.AwaitQueue=Ri.AwaitQueueRemovedTaskError=Ri.AwaitQueueStoppedError=void 0;const Oi=new Ti.Logger;class Ei extends Error{constructor(e){super(e??"AwaitQueue stopped"),this.name="AwaitQueueStoppedError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,Ei)}}Ri.AwaitQueueStoppedError=Ei;class Di extends Error{constructor(e){super(e??"AwaitQueue task removed"),this.name="AwaitQueueRemovedTaskError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,Di)}}Ri.AwaitQueueRemovedTaskError=Di;
2
2
  /*! queue-microtask. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
3
- let Ii;Ri.AwaitQueue=class{constructor(){this.pendingTasks=new Map,this.nextTaskId=0,this.stopping=!1}get size(){return this.pendingTasks.size}async push(e,t){if(t=t??e.name,Oi.debug(`push() [name:${t}]`),"function"!=typeof e)throw new TypeError("given task is not a function");if(t)try{Object.defineProperty(e,"name",{value:t})}catch(e){}return new Promise(((r,i)=>{const n={id:this.nextTaskId++,task:e,name:t,enqueuedAt:Date.now(),executedAt:void 0,completed:!1,resolve:e=>{if(n.completed)return;n.completed=!0,this.pendingTasks.delete(n.id),Oi.debug(`resolving task [name:${n.name}]`),r(e);const[t]=this.pendingTasks.values();t&&!t.executedAt&&this.execute(t)},reject:e=>{if(!n.completed&&(n.completed=!0,this.pendingTasks.delete(n.id),Oi.debug(`rejecting task [name:${n.name}]: %s`,String(e)),i(e),!this.stopping)){const[e]=this.pendingTasks.values();e&&!e.executedAt&&this.execute(e)}}};this.pendingTasks.set(n.id,n),1===this.pendingTasks.size&&this.execute(n)}))}stop(){Oi.debug("stop()"),this.stopping=!0;for(const e of this.pendingTasks.values())Oi.debug(`stop() | stopping task [name:${e.name}]`),e.reject(new Ei);this.stopping=!1}remove(e){Oi.debug(`remove() [taskIdx:${e}]`);const t=Array.from(this.pendingTasks.values())[e];t?t.reject(new Di):Oi.debug(`stop() | no task with given idx [taskIdx:${e}]`)}dump(){const e=Date.now();let t=0;return Array.from(this.pendingTasks.values()).map((r=>({idx:t++,task:r.task,name:r.name,enqueuedTime:r.executedAt?r.executedAt-r.enqueuedAt:e-r.enqueuedAt,executionTime:r.executedAt?e-r.executedAt:0})))}async execute(e){if(Oi.debug(`execute() [name:${e.name}]`),e.executedAt)throw new Error("task already being executed");e.executedAt=Date.now();try{const t=await e.task();e.resolve(t)}catch(t){e.reject(t)}}};var xi="function"==typeof queueMicrotask?queueMicrotask.bind("undefined"!=typeof window?window:s):e=>(Ii||(Ii=Promise.resolve())).then(e).catch((e=>setTimeout((()=>{throw e}),0))),Mi={};Object.defineProperty(Mi,"__esModule",{value:!0}),Mi.Producer=void 0;const ji=Mr,Li=Br,Ai=new Er.Logger("Producer");class Ni extends ji.EnhancedEventEmitter{constructor({id:e,localId:t,rtpSender:r,track:i,rtpParameters:n,stopTracks:s,disableTrackOnPause:o,zeroRtpOnPause:a,appData:c}){super(),this._closed=!1,this._observer=new ji.EnhancedEventEmitter,Ai.debug("constructor()"),this._id=e,this._localId=t,this._rtpSender=r,this._track=i,this._kind=i.kind,this._rtpParameters=n,this._paused=!!o&&!i.enabled,this._maxSpatialLayer=void 0,this._stopTracks=s,this._disableTrackOnPause=o,this._zeroRtpOnPause=a,this._appData=c||{},this.onTrackEnded=this.onTrackEnded.bind(this),this.handleTrack()}get id(){return this._id}get localId(){return this._localId}get closed(){return this._closed}get kind(){return this._kind}get rtpSender(){return this._rtpSender}get track(){return this._track}get rtpParameters(){return this._rtpParameters}get paused(){return this._paused}get maxSpatialLayer(){return this._maxSpatialLayer}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){this._closed||(Ai.debug("close()"),this._closed=!0,this.destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Ai.debug("transportClosed()"),this._closed=!0,this.destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new Li.InvalidStateError("closed");return new Promise(((e,t)=>{this.safeEmit("@getstats",e,t)}))}pause(){Ai.debug("pause()"),this._closed?Ai.error("pause() | Producer closed"):(this._paused=!0,this._track&&this._disableTrackOnPause&&(this._track.enabled=!1),this._zeroRtpOnPause&&new Promise(((e,t)=>{this.safeEmit("@pause",e,t)})).catch((()=>{})),this._observer.safeEmit("pause"))}resume(){Ai.debug("resume()"),this._closed?Ai.error("resume() | Producer closed"):(this._paused=!1,this._track&&this._disableTrackOnPause&&(this._track.enabled=!0),this._zeroRtpOnPause&&new Promise(((e,t)=>{this.safeEmit("@resume",e,t)})).catch((()=>{})),this._observer.safeEmit("resume"))}async replaceTrack({track:e}){if(Ai.debug("replaceTrack() [track:%o]",e),this._closed){if(e&&this._stopTracks)try{e.stop()}catch(e){}throw new Li.InvalidStateError("closed")}if(e&&"ended"===e.readyState)throw new Li.InvalidStateError("track ended");e!==this._track?(await new Promise(((t,r)=>{this.safeEmit("@replacetrack",e,t,r)})),this.destroyTrack(),this._track=e,this._track&&this._disableTrackOnPause&&(this._paused?this._paused&&(this._track.enabled=!1):this._track.enabled=!0),this.handleTrack()):Ai.debug("replaceTrack() | same track, ignored")}async setMaxSpatialLayer(e){if(this._closed)throw new Li.InvalidStateError("closed");if("video"!==this._kind)throw new Li.UnsupportedError("not a video Producer");if("number"!=typeof e)throw new TypeError("invalid spatialLayer");e!==this._maxSpatialLayer&&(await new Promise(((t,r)=>{this.safeEmit("@setmaxspatiallayer",e,t,r)})).catch((()=>{})),this._maxSpatialLayer=e)}async setRtpEncodingParameters(e){if(this._closed)throw new Li.InvalidStateError("closed");if("object"!=typeof e)throw new TypeError("invalid params");await new Promise(((t,r)=>{this.safeEmit("@setrtpencodingparameters",e,t,r)}))}onTrackEnded(){Ai.debug('track "ended" event'),this.safeEmit("trackended"),this._observer.safeEmit("trackended")}handleTrack(){this._track&&this._track.addEventListener("ended",this.onTrackEnded)}destroyTrack(){if(this._track)try{this._track.removeEventListener("ended",this.onTrackEnded),this._stopTracks&&this._track.stop()}catch(e){}}}Mi.Producer=Ni;var Bi={};Object.defineProperty(Bi,"__esModule",{value:!0}),Bi.Consumer=void 0;const Fi=Mr,zi=Br,Ui=new Er.Logger("Consumer");class $i extends Fi.EnhancedEventEmitter{constructor({id:e,localId:t,producerId:r,rtpReceiver:i,track:n,rtpParameters:s,appData:o}){super(),this._closed=!1,this._observer=new Fi.EnhancedEventEmitter,Ui.debug("constructor()"),this._id=e,this._localId=t,this._producerId=r,this._rtpReceiver=i,this._track=n,this._rtpParameters=s,this._paused=!n.enabled,this._appData=o||{},this.onTrackEnded=this.onTrackEnded.bind(this),this.handleTrack()}get id(){return this._id}get localId(){return this._localId}get producerId(){return this._producerId}get closed(){return this._closed}get kind(){return this._track.kind}get rtpReceiver(){return this._rtpReceiver}get track(){return this._track}get rtpParameters(){return this._rtpParameters}get paused(){return this._paused}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){this._closed||(Ui.debug("close()"),this._closed=!0,this.destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Ui.debug("transportClosed()"),this._closed=!0,this.destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new zi.InvalidStateError("closed");return new Promise(((e,t)=>{this.safeEmit("@getstats",e,t)}))}pause(){Ui.debug("pause()"),this._closed?Ui.error("pause() | Consumer closed"):this._paused?Ui.debug("pause() | Consumer is already paused"):(this._paused=!0,this._track.enabled=!1,this.emit("@pause"),this._observer.safeEmit("pause"))}resume(){Ui.debug("resume()"),this._closed?Ui.error("resume() | Consumer closed"):this._paused?(this._paused=!1,this._track.enabled=!0,this.emit("@resume"),this._observer.safeEmit("resume")):Ui.debug("resume() | Consumer is already resumed")}onTrackEnded(){Ui.debug('track "ended" event'),this.safeEmit("trackended"),this._observer.safeEmit("trackended")}handleTrack(){this._track.addEventListener("ended",this.onTrackEnded)}destroyTrack(){try{this._track.removeEventListener("ended",this.onTrackEnded),this._track.stop()}catch(e){}}}Bi.Consumer=$i;var Vi={};Object.defineProperty(Vi,"__esModule",{value:!0}),Vi.DataProducer=void 0;const Gi=Mr,qi=Br,Hi=new Er.Logger("DataProducer");class Wi extends Gi.EnhancedEventEmitter{constructor({id:e,dataChannel:t,sctpStreamParameters:r,appData:i}){super(),this._closed=!1,this._observer=new Gi.EnhancedEventEmitter,Hi.debug("constructor()"),this._id=e,this._dataChannel=t,this._sctpStreamParameters=r,this._appData=i||{},this.handleDataChannel()}get id(){return this._id}get closed(){return this._closed}get sctpStreamParameters(){return this._sctpStreamParameters}get readyState(){return this._dataChannel.readyState}get label(){return this._dataChannel.label}get protocol(){return this._dataChannel.protocol}get bufferedAmount(){return this._dataChannel.bufferedAmount}get bufferedAmountLowThreshold(){return this._dataChannel.bufferedAmountLowThreshold}set bufferedAmountLowThreshold(e){this._dataChannel.bufferedAmountLowThreshold=e}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){this._closed||(Hi.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Hi.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}send(e){if(Hi.debug("send()"),this._closed)throw new qi.InvalidStateError("closed");this._dataChannel.send(e)}handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(Hi.debug('DataChannel "open" event'),this.safeEmit("open"))})),this._dataChannel.addEventListener("error",(e=>{if(this._closed)return;let{error:t}=e;t||(t=new Error("unknown DataChannel error")),"sctp-failure"===t.errorDetail?Hi.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):Hi.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(Hi.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"),this._observer.safeEmit("close"))})),this._dataChannel.addEventListener("message",(()=>{this._closed||Hi.warn('DataChannel "message" event in a DataProducer, message discarded')})),this._dataChannel.addEventListener("bufferedamountlow",(()=>{this._closed||this.safeEmit("bufferedamountlow")}))}}Vi.DataProducer=Wi;var Ki={};Object.defineProperty(Ki,"__esModule",{value:!0}),Ki.DataConsumer=void 0;const Ji=Mr,Qi=new Er.Logger("DataConsumer");class Zi extends Ji.EnhancedEventEmitter{constructor({id:e,dataProducerId:t,dataChannel:r,sctpStreamParameters:i,appData:n}){super(),this._closed=!1,this._observer=new Ji.EnhancedEventEmitter,Qi.debug("constructor()"),this._id=e,this._dataProducerId=t,this._dataChannel=r,this._sctpStreamParameters=i,this._appData=n||{},this.handleDataChannel()}get id(){return this._id}get dataProducerId(){return this._dataProducerId}get closed(){return this._closed}get sctpStreamParameters(){return this._sctpStreamParameters}get readyState(){return this._dataChannel.readyState}get label(){return this._dataChannel.label}get protocol(){return this._dataChannel.protocol}get binaryType(){return this._dataChannel.binaryType}set binaryType(e){this._dataChannel.binaryType=e}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){this._closed||(Qi.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Qi.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(Qi.debug('DataChannel "open" event'),this.safeEmit("open"))})),this._dataChannel.addEventListener("error",(e=>{if(this._closed)return;let{error:t}=e;t||(t=new Error("unknown DataChannel error")),"sctp-failure"===t.errorDetail?Qi.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):Qi.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(Qi.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"),this._observer.safeEmit("close"))})),this._dataChannel.addEventListener("message",(e=>{this._closed||this.safeEmit("message",e.data)}))}}Ki.DataConsumer=Zi;var Yi=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Xi=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),en=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Yi(t,e,r);return Xi(t,e),t},tn=s&&s.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ci,"__esModule",{value:!0}),Ci.Transport=void 0;const rn=Ri,nn=tn(xi),sn=Er,on=Mr,an=Br,cn=en(Ur),dn=en($r),ln=Mi,pn=Bi,un=Vi,hn=Ki,mn=new sn.Logger("Transport");class fn{constructor(e){this.consumerOptions=e,this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}let gn=class extends on.EnhancedEventEmitter{constructor({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:n,sctpParameters:s,iceServers:o,iceTransportPolicy:a,additionalSettings:c,proprietaryConstraints:d,appData:l,handlerFactory:p,extendedRtpCapabilities:u,canProduceByKind:h}){super(),this._closed=!1,this._iceGatheringState="new",this._connectionState="new",this._producers=new Map,this._consumers=new Map,this._dataProducers=new Map,this._dataConsumers=new Map,this._probatorConsumerCreated=!1,this._awaitQueue=new rn.AwaitQueue,this._pendingConsumerTasks=[],this._consumerCreationInProgress=!1,this._pendingPauseConsumers=new Map,this._consumerPauseInProgress=!1,this._pendingResumeConsumers=new Map,this._consumerResumeInProgress=!1,this._pendingCloseConsumers=new Map,this._consumerCloseInProgress=!1,this._observer=new on.EnhancedEventEmitter,mn.debug("constructor() [id:%s, direction:%s]",t,e),this._id=t,this._direction=e,this._extendedRtpCapabilities=u,this._canProduceByKind=h,this._maxSctpMessageSize=s?s.maxMessageSize:null,delete(c=cn.clone(c)||{}).iceServers,delete c.iceTransportPolicy,delete c.bundlePolicy,delete c.rtcpMuxPolicy,delete c.sdpSemantics,this._handler=p(),this._handler.run({direction:e,iceParameters:r,iceCandidates:i,dtlsParameters:n,sctpParameters:s,iceServers:o,iceTransportPolicy:a,additionalSettings:c,proprietaryConstraints:d,extendedRtpCapabilities:u}),this._appData=l||{},this.handleHandler()}get id(){return this._id}get closed(){return this._closed}get direction(){return this._direction}get handler(){return this._handler}get iceGatheringState(){return this._iceGatheringState}get connectionState(){return this._connectionState}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){if(!this._closed){mn.debug("close()"),this._closed=!0,this._awaitQueue.stop(),this._handler.close(),this._connectionState="closed";for(const e of this._producers.values())e.transportClosed();this._producers.clear();for(const e of this._consumers.values())e.transportClosed();this._consumers.clear();for(const e of this._dataProducers.values())e.transportClosed();this._dataProducers.clear();for(const e of this._dataConsumers.values())e.transportClosed();this._dataConsumers.clear(),this._observer.safeEmit("close")}}async getStats(){if(this._closed)throw new an.InvalidStateError("closed");return this._handler.getTransportStats()}async restartIce({iceParameters:e}){if(mn.debug("restartIce()"),this._closed)throw new an.InvalidStateError("closed");if(!e)throw new TypeError("missing iceParameters");return this._awaitQueue.push((async()=>await this._handler.restartIce(e)),"transport.restartIce()")}async updateIceServers({iceServers:e}={}){if(mn.debug("updateIceServers()"),this._closed)throw new an.InvalidStateError("closed");if(!Array.isArray(e))throw new TypeError("missing iceServers");return this._awaitQueue.push((async()=>this._handler.updateIceServers(e)),"transport.updateIceServers()")}async produce({track:e,encodings:t,codecOptions:r,codec:i,stopTracks:n=!0,disableTrackOnPause:s=!0,zeroRtpOnPause:o=!1,appData:a={}}={}){if(mn.debug("produce() [track:%o]",e),this._closed)throw new an.InvalidStateError("closed");if(!e)throw new TypeError("missing track");if("send"!==this._direction)throw new an.UnsupportedError("not a sending Transport");if(!this._canProduceByKind[e.kind])throw new an.UnsupportedError(`cannot produce ${e.kind}`);if("ended"===e.readyState)throw new an.InvalidStateError("track ended");if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(0===this.listenerCount("produce"))throw new TypeError('no "produce" listener set into this transport');if(a&&"object"!=typeof a)throw new TypeError("if given, appData must be an object");return this._awaitQueue.push((async()=>{let c;if(t&&!Array.isArray(t))throw TypeError("encodings must be an array");t&&0===t.length?c=void 0:t&&(c=t.map((e=>{const t={active:!0};return!1===e.active&&(t.active=!1),"boolean"==typeof e.dtx&&(t.dtx=e.dtx),"string"==typeof e.scalabilityMode&&(t.scalabilityMode=e.scalabilityMode),"number"==typeof e.scaleResolutionDownBy&&(t.scaleResolutionDownBy=e.scaleResolutionDownBy),"number"==typeof e.maxBitrate&&(t.maxBitrate=e.maxBitrate),"number"==typeof e.maxFramerate&&(t.maxFramerate=e.maxFramerate),"boolean"==typeof e.adaptivePtime&&(t.adaptivePtime=e.adaptivePtime),"string"==typeof e.priority&&(t.priority=e.priority),"string"==typeof e.networkPriority&&(t.networkPriority=e.networkPriority),t})));const{localId:d,rtpParameters:l,rtpSender:p}=await this._handler.send({track:e,encodings:c,codecOptions:r,codec:i});try{dn.validateRtpParameters(l);const{id:t}=await new Promise(((t,r)=>{this.safeEmit("produce",{kind:e.kind,rtpParameters:l,appData:a},t,r)})),r=new ln.Producer({id:t,localId:d,rtpSender:p,track:e,rtpParameters:l,stopTracks:n,disableTrackOnPause:s,zeroRtpOnPause:o,appData:a});return this._producers.set(r.id,r),this.handleProducer(r),this._observer.safeEmit("newproducer",r),r}catch(e){throw this._handler.stopSending(d).catch((()=>{})),e}}),"transport.produce()").catch((t=>{if(n)try{e.stop()}catch(e){}throw t}))}async consume({id:e,producerId:t,kind:r,rtpParameters:i,streamId:n,appData:s={}}){if(mn.debug("consume()"),i=cn.clone(i),this._closed)throw new an.InvalidStateError("closed");if("recv"!==this._direction)throw new an.UnsupportedError("not a receiving Transport");if("string"!=typeof e)throw new TypeError("missing id");if("string"!=typeof t)throw new TypeError("missing producerId");if("audio"!==r&&"video"!==r)throw new TypeError(`invalid kind '${r}'`);if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(s&&"object"!=typeof s)throw new TypeError("if given, appData must be an object");if(!dn.canReceive(i,this._extendedRtpCapabilities))throw new an.UnsupportedError("cannot consume this Producer");const o=new fn({id:e,producerId:t,kind:r,rtpParameters:i,streamId:n,appData:s});return this._pendingConsumerTasks.push(o),(0,nn.default)((()=>{this._closed||!1===this._consumerCreationInProgress&&this.createPendingConsumers()})),o.promise}async produceData({ordered:e=!0,maxPacketLifeTime:t,maxRetransmits:r,label:i="",protocol:n="",appData:s={}}={}){if(mn.debug("produceData()"),this._closed)throw new an.InvalidStateError("closed");if("send"!==this._direction)throw new an.UnsupportedError("not a sending Transport");if(!this._maxSctpMessageSize)throw new an.UnsupportedError("SCTP not enabled by remote Transport");if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(0===this.listenerCount("producedata"))throw new TypeError('no "producedata" listener set into this transport');if(s&&"object"!=typeof s)throw new TypeError("if given, appData must be an object");return(t||r)&&(e=!1),this._awaitQueue.push((async()=>{const{dataChannel:o,sctpStreamParameters:a}=await this._handler.sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n});dn.validateSctpStreamParameters(a);const{id:c}=await new Promise(((e,t)=>{this.safeEmit("producedata",{sctpStreamParameters:a,label:i,protocol:n,appData:s},e,t)})),d=new un.DataProducer({id:c,dataChannel:o,sctpStreamParameters:a,appData:s});return this._dataProducers.set(d.id,d),this.handleDataProducer(d),this._observer.safeEmit("newdataproducer",d),d}),"transport.produceData()")}async consumeData({id:e,dataProducerId:t,sctpStreamParameters:r,label:i="",protocol:n="",appData:s={}}){if(mn.debug("consumeData()"),r=cn.clone(r),this._closed)throw new an.InvalidStateError("closed");if("recv"!==this._direction)throw new an.UnsupportedError("not a receiving Transport");if(!this._maxSctpMessageSize)throw new an.UnsupportedError("SCTP not enabled by remote Transport");if("string"!=typeof e)throw new TypeError("missing id");if("string"!=typeof t)throw new TypeError("missing dataProducerId");if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(s&&"object"!=typeof s)throw new TypeError("if given, appData must be an object");return dn.validateSctpStreamParameters(r),this._awaitQueue.push((async()=>{const{dataChannel:o}=await this._handler.receiveDataChannel({sctpStreamParameters:r,label:i,protocol:n}),a=new hn.DataConsumer({id:e,dataProducerId:t,dataChannel:o,sctpStreamParameters:r,appData:s});return this._dataConsumers.set(a.id,a),this.handleDataConsumer(a),this._observer.safeEmit("newdataconsumer",a),a}),"transport.consumeData()")}async createPendingConsumers(){this._consumerCreationInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingConsumerTasks.length)return void mn.debug("createPendingConsumers() | there is no Consumer to be created");const e=[...this._pendingConsumerTasks];let t;this._pendingConsumerTasks=[];const r=[];for(const t of e){const{id:e,kind:i,rtpParameters:n,streamId:s}=t.consumerOptions;r.push({trackId:e,kind:i,rtpParameters:n,streamId:s})}try{const i=await this._handler.receive(r);for(let r=0;r<i.length;++r){const n=e[r],s=i[r],{id:o,producerId:a,kind:c,rtpParameters:d,appData:l}=n.consumerOptions,{localId:p,rtpReceiver:u,track:h}=s,m=new pn.Consumer({id:o,localId:p,producerId:a,rtpReceiver:u,track:h,rtpParameters:d,appData:l});this._consumers.set(m.id,m),this.handleConsumer(m),this._probatorConsumerCreated||t||"video"!==c||(t=m),this._observer.safeEmit("newconsumer",m),n.resolve(m)}}catch(t){for(const r of e)r.reject(t)}if(t)try{const e=dn.generateProbatorRtpParameters(t.rtpParameters);await this._handler.receive([{trackId:"probator",kind:"video",rtpParameters:e}]),mn.debug("createPendingConsumers() | Consumer for RTP probation created"),this._probatorConsumerCreated=!0}catch(e){mn.error("createPendingConsumers() | failed to create Consumer for RTP probation:%o",e)}}),"transport.createPendingConsumers()").then((()=>{this._consumerCreationInProgress=!1,this._pendingConsumerTasks.length>0&&this.createPendingConsumers()})).catch((()=>{}))}pausePendingConsumers(){this._consumerPauseInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingPauseConsumers.size)return void mn.debug("pausePendingConsumers() | there is no Consumer to be paused");const e=Array.from(this._pendingPauseConsumers.values());this._pendingPauseConsumers.clear();try{const t=e.map((e=>e.localId));await this._handler.pauseReceiving(t)}catch(e){mn.error("pausePendingConsumers() | failed to pause Consumers:",e)}}),"transport.pausePendingConsumers").then((()=>{this._consumerPauseInProgress=!1,this._pendingPauseConsumers.size>0&&this.pausePendingConsumers()})).catch((()=>{}))}resumePendingConsumers(){this._consumerResumeInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingResumeConsumers.size)return void mn.debug("resumePendingConsumers() | there is no Consumer to be resumed");const e=Array.from(this._pendingResumeConsumers.values());this._pendingResumeConsumers.clear();try{const t=e.map((e=>e.localId));await this._handler.resumeReceiving(t)}catch(e){mn.error("resumePendingConsumers() | failed to resume Consumers:",e)}}),"transport.resumePendingConsumers").then((()=>{this._consumerResumeInProgress=!1,this._pendingResumeConsumers.size>0&&this.resumePendingConsumers()})).catch((()=>{}))}closePendingConsumers(){this._consumerCloseInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingCloseConsumers.size)return void mn.debug("closePendingConsumers() | there is no Consumer to be closed");const e=Array.from(this._pendingCloseConsumers.values());this._pendingCloseConsumers.clear();try{await this._handler.stopReceiving(e.map((e=>e.localId)))}catch(e){mn.error("closePendingConsumers() | failed to close Consumers:",e)}}),"transport.closePendingConsumers").then((()=>{this._consumerCloseInProgress=!1,this._pendingCloseConsumers.size>0&&this.closePendingConsumers()})).catch((()=>{}))}handleHandler(){const e=this._handler;e.on("@connect",(({iceParameters:e,dtlsParameters:t},r,i)=>{this._closed?i(new an.InvalidStateError("closed")):this.safeEmit("connect",{iceParameters:e,dtlsParameters:t},r,i)})),e.on("@icegatheringstatechange",(e=>{e!==this._iceGatheringState&&(mn.debug("ICE gathering state changed to %s",e),this._iceGatheringState=e,this._closed||this.safeEmit("icegatheringstatechange",e))})),e.on("@connectionstatechange",(e=>{e!==this._connectionState&&(mn.debug("connection state changed to %s",e),this._connectionState=e,this._closed||this.safeEmit("connectionstatechange",e))}))}handleProducer(e){e.on("@close",(()=>{this._producers.delete(e.id),this._closed||this._awaitQueue.push((async()=>await this._handler.stopSending(e.localId)),"producer @close event").catch((e=>mn.warn("producer.close() failed:%o",e)))})),e.on("@pause",((t,r)=>{this._awaitQueue.push((async()=>await this._handler.pauseSending(e.localId)),"producer @pause event").then(t).catch(r)})),e.on("@resume",((t,r)=>{this._awaitQueue.push((async()=>await this._handler.resumeSending(e.localId)),"producer @resume event").then(t).catch(r)})),e.on("@replacetrack",((t,r,i)=>{this._awaitQueue.push((async()=>await this._handler.replaceTrack(e.localId,t)),"producer @replacetrack event").then(r).catch(i)})),e.on("@setmaxspatiallayer",((t,r,i)=>{this._awaitQueue.push((async()=>await this._handler.setMaxSpatialLayer(e.localId,t)),"producer @setmaxspatiallayer event").then(r).catch(i)})),e.on("@setrtpencodingparameters",((t,r,i)=>{this._awaitQueue.push((async()=>await this._handler.setRtpEncodingParameters(e.localId,t)),"producer @setrtpencodingparameters event").then(r).catch(i)})),e.on("@getstats",((t,r)=>{if(this._closed)return r(new an.InvalidStateError("closed"));this._handler.getSenderStats(e.localId).then(t).catch(r)}))}handleConsumer(e){e.on("@close",(()=>{this._consumers.delete(e.id),this._pendingPauseConsumers.delete(e.id),this._pendingResumeConsumers.delete(e.id),this._closed||(this._pendingCloseConsumers.set(e.id,e),!1===this._consumerCloseInProgress&&this.closePendingConsumers())})),e.on("@pause",(()=>{this._pendingResumeConsumers.has(e.id)&&this._pendingResumeConsumers.delete(e.id),this._pendingPauseConsumers.set(e.id,e),(0,nn.default)((()=>{this._closed||!1===this._consumerPauseInProgress&&this.pausePendingConsumers()}))})),e.on("@resume",(()=>{this._pendingPauseConsumers.has(e.id)&&this._pendingPauseConsumers.delete(e.id),this._pendingResumeConsumers.set(e.id,e),(0,nn.default)((()=>{this._closed||!1===this._consumerResumeInProgress&&this.resumePendingConsumers()}))})),e.on("@getstats",((t,r)=>{if(this._closed)return r(new an.InvalidStateError("closed"));this._handler.getReceiverStats(e.localId).then(t).catch(r)}))}handleDataProducer(e){e.on("@close",(()=>{this._dataProducers.delete(e.id)}))}handleDataConsumer(e){e.on("@close",(()=>{this._dataConsumers.delete(e.id)}))}};Ci.Transport=gn;var vn={},bn={},yn={},_n={exports:{}},wn=_n.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(e){return e.encoding?"rtpmap:%d %s/%s/%s":e.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(e){return null!=e.address?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(e){return null!=e.subtype?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(e){return"extmap:%d"+(e.direction?"/%s":"%v")+(e["encrypt-uri"]?" %s":"%v")+" %s"+(e.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(e){return null!=e.sessionConfig?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(e){var t="candidate:%s %d %s %d %s %d typ %s";return t+=null!=e.raddr?" raddr %s rport %d":"%v%v",t+=null!=e.tcptype?" tcptype %s":"%v",null!=e.generation&&(t+=" generation %d"),t+=null!=e["network-id"]?" network-id %d":"%v",t+=null!=e["network-cost"]?" network-cost %d":"%v"}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(e){var t="ssrc:%d";return null!=e.attribute&&(t+=" %s",null!=e.value&&(t+=":%s")),t}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(e){return null!=e.maxMessageSize?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(e){return e.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(e){return"imageattr:%s %s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(e){return"simulcast:%s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(e){return"ts-refclk:%s"+(null!=e.clksrcExt?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(e){var t="mediaclk:";return t+=null!=e.id?"id=%s %s":"%v%s",t+=null!=e.mediaClockValue?"=%s":"",t+=null!=e.rateNumerator?" rate=%s":"",t+=null!=e.rateDenominator?"/%s":""}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(wn).forEach((function(e){wn[e].forEach((function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")}))}));var Sn=_n.exports;!function(e){var t=function(e){return String(Number(e))===e?Number(e):e},r=function(e,r,i){var n=e.name&&e.names;e.push&&!r[e.push]?r[e.push]=[]:n&&!r[e.name]&&(r[e.name]={});var s=e.push?{}:n?r[e.name]:r;!function(e,r,i,n){if(n&&!i)r[n]=t(e[1]);else for(var s=0;s<i.length;s+=1)null!=e[s+1]&&(r[i[s]]=t(e[s+1]))}(i.match(e.reg),s,e.names,e.name),e.push&&r[e.push].push(s)},i=Sn,n=RegExp.prototype.test.bind(/^([a-z])=(.*)/);e.parse=function(e){var t={},s=[],o=t;return e.split(/(\r\n|\r|\n)/).filter(n).forEach((function(e){var t=e[0],n=e.slice(2);"m"===t&&(s.push({rtp:[],fmtp:[]}),o=s[s.length-1]);for(var a=0;a<(i[t]||[]).length;a+=1){var c=i[t][a];if(c.reg.test(n))return r(c,o,n)}})),t.media=s,t};var s=function(e,r){var i=r.split(/=(.+)/,2);return 2===i.length?e[i[0]]=t(i[1]):1===i.length&&r.length>1&&(e[i[0]]=void 0),e};e.parseParams=function(e){return e.split(/;\s?/).reduce(s,{})},e.parseFmtpConfig=e.parseParams,e.parsePayloads=function(e){return e.toString().split(" ").map(Number)},e.parseRemoteCandidates=function(e){for(var r=[],i=e.split(" ").map(t),n=0;n<i.length;n+=3)r.push({component:i[n],ip:i[n+1],port:i[n+2]});return r},e.parseImageAttributes=function(e){return e.split(" ").map((function(e){return e.substring(1,e.length-1).split(",").reduce(s,{})}))},e.parseSimulcastStreamList=function(e){return e.split(";").map((function(e){return e.split(",").map((function(e){var r,i=!1;return"~"!==e[0]?r=t(e):(r=t(e.substring(1,e.length)),i=!0),{scid:r,paused:i}}))}))}}(yn);var Cn=Sn,Rn=/%[sdv%]/g,Tn=function(e){var t=1,r=arguments,i=r.length;return e.replace(Rn,(function(e){if(t>=i)return e;var n=r[t];switch(t+=1,e){case"%%":return"%";case"%s":return String(n);case"%d":return Number(n);case"%v":return""}}))},Pn=function(e,t,r){var i=[e+"="+(t.format instanceof Function?t.format(t.push?r:r[t.name]):t.format)];if(t.names)for(var n=0;n<t.names.length;n+=1){var s=t.names[n];t.name?i.push(r[t.name][s]):i.push(r[t.names[n]])}else i.push(r[t.name]);return Tn.apply(null,i)},kn=["v","o","s","i","u","e","p","c","b","t","r","z","a"],On=["i","c","b","a"],En=yn,Dn=function(e,t){t=t||{},null==e.version&&(e.version=0),null==e.name&&(e.name=" "),e.media.forEach((function(e){null==e.payloads&&(e.payloads="")}));var r=t.outerOrder||kn,i=t.innerOrder||On,n=[];return r.forEach((function(t){Cn[t].forEach((function(r){r.name in e&&null!=e[r.name]?n.push(Pn(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){n.push(Pn(t,r,e))}))}))})),e.media.forEach((function(e){n.push(Pn("m",Cn.m[0],e)),i.forEach((function(t){Cn[t].forEach((function(r){r.name in e&&null!=e[r.name]?n.push(Pn(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){n.push(Pn(t,r,e))}))}))}))})),n.join("\r\n")+"\r\n"},In=bn.write=Dn,xn=bn.parse=En.parse;bn.parseParams=En.parseParams,bn.parseFmtpConfig=En.parseFmtpConfig,bn.parsePayloads=En.parsePayloads,bn.parseRemoteCandidates=En.parseRemoteCandidates,bn.parseImageAttributes=En.parseImageAttributes,bn.parseSimulcastStreamList=En.parseSimulcastStreamList;var Mn={},jn=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Ln=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),An=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&jn(t,e,r);return Ln(t,e),t};Object.defineProperty(Mn,"__esModule",{value:!0}),Mn.applyCodecParameters=Mn.getCname=Mn.extractDtlsParameters=Mn.extractIceParameters=Mn.extractRtpCapabilities=void 0;const Nn=An(bn);Mn.extractRtpCapabilities=function({sdpObject:e}){const t=new Map,r=[];let i=!1,n=!1;for(const s of e.media){const e=s.type;switch(e){case"audio":if(i)continue;i=!0;break;case"video":if(n)continue;n=!0;break;default:continue}for(const r of s.rtp){const i={kind:e,mimeType:`${e}/${r.codec}`,preferredPayloadType:r.payload,clockRate:r.rate,channels:r.encoding,parameters:{},rtcpFeedback:[]};t.set(i.preferredPayloadType,i)}for(const e of s.fmtp||[]){const r=Nn.parseParams(e.config),i=t.get(e.payload);i&&(r&&r.hasOwnProperty("profile-level-id")&&(r["profile-level-id"]=String(r["profile-level-id"])),i.parameters=r)}for(const r of s.rtcpFb||[]){const i={type:r.type,parameter:r.subtype};if(i.parameter||delete i.parameter,"*"!==r.payload){const e=t.get(r.payload);if(!e)continue;e.rtcpFeedback.push(i)}else for(const r of t.values())r.kind!==e||/.+\/rtx$/i.test(r.mimeType)||r.rtcpFeedback.push(i)}for(const t of s.ext||[]){if(t["encrypt-uri"])continue;const i={kind:e,uri:t.uri,preferredId:t.value};r.push(i)}}return{codecs:Array.from(t.values()),headerExtensions:r}},Mn.extractIceParameters=function({sdpObject:e}){let t=e.iceUfrag,r=e.icePwd;if(!t||!r){const i=(e.media||[]).find((e=>0!==e.port));i&&(t??(t=i.iceUfrag),r??(r=i.icePwd))}if(!t)throw new Error("no a=iceUfrag found at SDP session or media level");if(!r)throw new Error("no a=icePwd found at SDP session or media level");return{usernameFragment:t,password:r}},Mn.extractDtlsParameters=function({sdpObject:e}){let t,r=e.setup,i=e.fingerprint;if(!r||!i){const t=(e.media||[]).find((e=>0!==e.port));t&&(r??(r=t.setup),i??(i=t.fingerprint))}if(!r)throw new Error("no a=setup found at SDP session or media level");if(!i)throw new Error("no a=fingerprint found at SDP session or media level");switch(r){case"active":t="client";break;case"passive":t="server";break;case"actpass":t="auto"}return{role:t,fingerprints:[{algorithm:i.type,value:i.hash}]}},Mn.getCname=function({offerMediaObject:e}){const t=(e.ssrcs||[]).find((e=>"cname"===e.attribute));return t?t.value:""},Mn.applyCodecParameters=function({offerRtpParameters:e,answerMediaObject:t}){for(const r of e.codecs){const e=r.mimeType.toLowerCase();if("audio/opus"!==e)continue;if(!(t.rtp||[]).find((e=>e.payload===r.payloadType)))continue;t.fmtp=t.fmtp||[];let i=t.fmtp.find((e=>e.payload===r.payloadType));i||(i={payload:r.payloadType,config:""},t.fmtp.push(i));const n=Nn.parseParams(i.config);switch(e){case"audio/opus":{const e=r.parameters["sprop-stereo"];void 0!==e&&(n.stereo=e?1:0);break}}i.config="";for(const e of Object.keys(n))i.config&&(i.config+=";"),i.config+=`${e}=${n[e]}`}};var Bn={};Object.defineProperty(Bn,"__esModule",{value:!0}),Bn.addLegacySimulcast=Bn.getRtpEncodings=void 0,Bn.getRtpEncodings=function({offerMediaObject:e}){const t=new Set;for(const r of e.ssrcs||[]){const e=r.id;t.add(e)}if(0===t.size)throw new Error("no a=ssrc lines found");const r=new Map;for(const i of e.ssrcGroups||[]){if("FID"!==i.semantics)continue;let[e,n]=i.ssrcs.split(/\s+/);e=Number(e),n=Number(n),t.has(e)&&(t.delete(e),t.delete(n),r.set(e,n))}for(const e of t)r.set(e,null);const i=[];for(const[e,t]of r){const r={ssrc:e};t&&(r.rtx={ssrc:t}),i.push(r)}return i},Bn.addLegacySimulcast=function({offerMediaObject:e,numStreams:t}){if(t<=1)throw new TypeError("numStreams must be greater than 1");const r=(e.ssrcs||[]).find((e=>"msid"===e.attribute));if(!r)throw new Error("a=ssrc line with msid information not found");const[i,n]=r.value.split(" "),s=r.id;let o;(e.ssrcGroups||[]).some((e=>{if("FID"!==e.semantics)return!1;const t=e.ssrcs.split(/\s+/);return Number(t[0])===s&&(o=Number(t[1]),!0)}));const a=e.ssrcs.find((e=>"cname"===e.attribute));if(!a)throw new Error("a=ssrc line with cname information not found");const c=a.value,d=[],l=[];for(let e=0;e<t;++e)d.push(s+e),o&&l.push(o+e);e.ssrcGroups=[],e.ssrcs=[],e.ssrcGroups.push({semantics:"SIM",ssrcs:d.join(" ")});for(let t=0;t<d.length;++t){const r=d[t];e.ssrcs.push({id:r,attribute:"cname",value:c}),e.ssrcs.push({id:r,attribute:"msid",value:`${i} ${n}`})}for(let t=0;t<l.length;++t){const r=d[t],s=l[t];e.ssrcs.push({id:s,attribute:"cname",value:c}),e.ssrcs.push({id:s,attribute:"msid",value:`${i} ${n}`}),e.ssrcGroups.push({semantics:"FID",ssrcs:`${r} ${s}`})}};var Fn={};Object.defineProperty(Fn,"__esModule",{value:!0}),Fn.addNackSuppportForOpus=void 0,Fn.addNackSuppportForOpus=function(e){for(const t of e.codecs||[])"audio/opus"!==t.mimeType.toLowerCase()&&"audio/multiopus"!==t.mimeType.toLowerCase()||t.rtcpFeedback?.some((e=>"nack"===e.type&&!e.parameter))||(t.rtcpFeedback||(t.rtcpFeedback=[]),t.rtcpFeedback.push({type:"nack"}))};var zn={};Object.defineProperty(zn,"__esModule",{value:!0}),zn.HandlerInterface=void 0;const Un=Mr;class $n extends Un.EnhancedEventEmitter{constructor(){super()}}zn.HandlerInterface=$n;var Vn={},Gn={},qn=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Hn=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Wn=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&qn(t,e,r);return Hn(t,e),t};Object.defineProperty(Gn,"__esModule",{value:!0}),Gn.OfferMediaSection=Gn.AnswerMediaSection=Gn.MediaSection=void 0;const Kn=Wn(bn),Jn=Wn(Ur);class Qn{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:i=!1}){if(this._mediaObject={},this._planB=i,e&&this.setIceParameters(e),t){this._mediaObject.candidates=[];for(const e of t){const t={component:1};t.foundation=e.foundation,t.ip=e.address??e.ip,t.port=e.port,t.priority=e.priority,t.transport=e.protocol,t.type=e.type,e.tcpType&&(t.tcptype=e.tcpType),this._mediaObject.candidates.push(t)}this._mediaObject.endOfCandidates="end-of-candidates",this._mediaObject.iceOptions="renomination"}r&&this.setDtlsRole(r.role)}get mid(){return String(this._mediaObject.mid)}get closed(){return 0===this._mediaObject.port}getObject(){return this._mediaObject}setIceParameters(e){this._mediaObject.iceUfrag=e.usernameFragment,this._mediaObject.icePwd=e.password}pause(){this._mediaObject.direction="inactive"}disable(){this.pause(),delete this._mediaObject.ext,delete this._mediaObject.ssrcs,delete this._mediaObject.ssrcGroups,delete this._mediaObject.simulcast,delete this._mediaObject.simulcast_03,delete this._mediaObject.rids,delete this._mediaObject.extmapAllowMixed}close(){this.disable(),this._mediaObject.port=0}}Gn.MediaSection=Qn;Gn.AnswerMediaSection=class extends Qn{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:n,planB:s=!1,offerMediaObject:o,offerRtpParameters:a,answerRtpParameters:c,codecOptions:d,extmapAllowMixed:l=!1}){switch(super({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:s}),this._mediaObject.mid=String(o.mid),this._mediaObject.type=o.type,this._mediaObject.protocol=o.protocol,n?(this._mediaObject.connection={ip:n.ip,version:n.ipVersion},this._mediaObject.port=n.port):(this._mediaObject.connection={ip:"127.0.0.1",version:4},this._mediaObject.port=7),o.type){case"audio":case"video":this._mediaObject.direction="recvonly",this._mediaObject.rtp=[],this._mediaObject.rtcpFb=[],this._mediaObject.fmtp=[];for(const e of c.codecs){const t={payload:e.payloadType,codec:Zn(e),rate:e.clockRate};e.channels>1&&(t.encoding=e.channels),this._mediaObject.rtp.push(t);const r=Jn.clone(e.parameters)??{};let i=Jn.clone(e.rtcpFeedback)??[];if(d){const{opusStereo:t,opusFec:n,opusDtx:s,opusMaxPlaybackRate:o,opusMaxAverageBitrate:c,opusPtime:l,opusNack:p,videoGoogleStartBitrate:u,videoGoogleMaxBitrate:h,videoGoogleMinBitrate:m}=d,f=a.codecs.find((t=>t.payloadType===e.payloadType));switch(e.mimeType.toLowerCase()){case"audio/opus":case"audio/multiopus":void 0!==t&&(f.parameters["sprop-stereo"]=t?1:0,r.stereo=t?1:0),void 0!==n&&(f.parameters.useinbandfec=n?1:0,r.useinbandfec=n?1:0),void 0!==s&&(f.parameters.usedtx=s?1:0,r.usedtx=s?1:0),void 0!==o&&(r.maxplaybackrate=o),void 0!==c&&(r.maxaveragebitrate=c),void 0!==l&&(f.parameters.ptime=l,r.ptime=l),p||(f.rtcpFeedback=f.rtcpFeedback.filter((e=>"nack"!==e.type||e.parameter)),i=i.filter((e=>"nack"!==e.type||e.parameter)));break;case"video/vp8":case"video/vp9":case"video/h264":case"video/h265":void 0!==u&&(r["x-google-start-bitrate"]=u),void 0!==h&&(r["x-google-max-bitrate"]=h),void 0!==m&&(r["x-google-min-bitrate"]=m)}}const n={payload:e.payloadType,config:""};for(const e of Object.keys(r))n.config&&(n.config+=";"),n.config+=`${e}=${r[e]}`;n.config&&this._mediaObject.fmtp.push(n);for(const t of i)this._mediaObject.rtcpFb.push({payload:e.payloadType,type:t.type,subtype:t.parameter})}this._mediaObject.payloads=c.codecs.map((e=>e.payloadType)).join(" "),this._mediaObject.ext=[];for(const e of c.headerExtensions){(o.ext||[]).some((t=>t.uri===e.uri))&&this._mediaObject.ext.push({uri:e.uri,value:e.id})}if(l&&"extmap-allow-mixed"===o.extmapAllowMixed&&(this._mediaObject.extmapAllowMixed="extmap-allow-mixed"),o.simulcast){this._mediaObject.simulcast={dir1:"recv",list1:o.simulcast.list1},this._mediaObject.rids=[];for(const e of o.rids||[])"send"===e.direction&&this._mediaObject.rids.push({id:e.id,direction:"recv"})}else if(o.simulcast_03){this._mediaObject.simulcast_03={value:o.simulcast_03.value.replace(/send/g,"recv")},this._mediaObject.rids=[];for(const e of o.rids||[])"send"===e.direction&&this._mediaObject.rids.push({id:e.id,direction:"recv"})}this._mediaObject.rtcpMux="rtcp-mux",this._mediaObject.rtcpRsize="rtcp-rsize",this._planB&&"video"===this._mediaObject.type&&(this._mediaObject.xGoogleFlag="conference");break;case"application":"number"==typeof o.sctpPort?(this._mediaObject.payloads="webrtc-datachannel",this._mediaObject.sctpPort=i.port,this._mediaObject.maxMessageSize=i.maxMessageSize):o.sctpmap&&(this._mediaObject.payloads=i.port,this._mediaObject.sctpmap={app:"webrtc-datachannel",sctpmapNumber:i.port,maxMessageSize:i.maxMessageSize})}}setDtlsRole(e){switch(e){case"client":this._mediaObject.setup="active";break;case"server":this._mediaObject.setup="passive";break;case"auto":this._mediaObject.setup="actpass"}}resume(){this._mediaObject.direction="recvonly"}muxSimulcastStreams(e){if(!this._mediaObject.simulcast||!this._mediaObject.simulcast.list1)return;const t={};for(const r of e)r.rid&&(t[r.rid]=r);const r=this._mediaObject.simulcast.list1,i=Kn.parseSimulcastStreamList(r);for(const e of i)for(const r of e)r.paused=!t[r.scid]?.active;this._mediaObject.simulcast.list1=i.map((e=>e.map((e=>`${e.paused?"~":""}${e.scid}`)).join(","))).join(";")}};function Zn(e){const t=new RegExp("^(audio|video)/(.+)","i").exec(e.mimeType);if(!t)throw new TypeError("invalid codec.mimeType");return t[2]}Gn.OfferMediaSection=class extends Qn{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:n,planB:s=!1,mid:o,kind:a,offerRtpParameters:c,streamId:d,trackId:l,oldDataChannelSpec:p=!1}){switch(super({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:s}),this._mediaObject.mid=String(o),this._mediaObject.type=a,n?(this._mediaObject.connection={ip:n.ip,version:n.ipVersion},this._mediaObject.protocol="RTP/AVP",this._mediaObject.port=n.port):(this._mediaObject.connection={ip:"127.0.0.1",version:4},this._mediaObject.protocol=i?"UDP/DTLS/SCTP":"UDP/TLS/RTP/SAVPF",this._mediaObject.port=7),a){case"audio":case"video":{this._mediaObject.direction="sendonly",this._mediaObject.rtp=[],this._mediaObject.rtcpFb=[],this._mediaObject.fmtp=[],this._planB||(this._mediaObject.msid=`${d||"-"} ${l}`);for(const e of c.codecs){const t={payload:e.payloadType,codec:Zn(e),rate:e.clockRate};e.channels>1&&(t.encoding=e.channels),this._mediaObject.rtp.push(t);const r={payload:e.payloadType,config:""};for(const t of Object.keys(e.parameters))r.config&&(r.config+=";"),r.config+=`${t}=${e.parameters[t]}`;r.config&&this._mediaObject.fmtp.push(r);for(const t of e.rtcpFeedback)this._mediaObject.rtcpFb.push({payload:e.payloadType,type:t.type,subtype:t.parameter})}this._mediaObject.payloads=c.codecs.map((e=>e.payloadType)).join(" "),this._mediaObject.ext=[];for(const e of c.headerExtensions)this._mediaObject.ext.push({uri:e.uri,value:e.id});this._mediaObject.rtcpMux="rtcp-mux",this._mediaObject.rtcpRsize="rtcp-rsize";const e=c.encodings[0],t=e.ssrc,r=e.rtx&&e.rtx.ssrc?e.rtx.ssrc:void 0;this._mediaObject.ssrcs=[],this._mediaObject.ssrcGroups=[],c.rtcp.cname&&this._mediaObject.ssrcs.push({id:t,attribute:"cname",value:c.rtcp.cname}),this._planB&&this._mediaObject.ssrcs.push({id:t,attribute:"msid",value:`${d||"-"} ${l}`}),r&&(c.rtcp.cname&&this._mediaObject.ssrcs.push({id:r,attribute:"cname",value:c.rtcp.cname}),this._planB&&this._mediaObject.ssrcs.push({id:r,attribute:"msid",value:`${d||"-"} ${l}`}),this._mediaObject.ssrcGroups.push({semantics:"FID",ssrcs:`${t} ${r}`}));break}case"application":p?(this._mediaObject.payloads=i.port,this._mediaObject.sctpmap={app:"webrtc-datachannel",sctpmapNumber:i.port,maxMessageSize:i.maxMessageSize}):(this._mediaObject.payloads="webrtc-datachannel",this._mediaObject.sctpPort=i.port,this._mediaObject.maxMessageSize=i.maxMessageSize)}}setDtlsRole(e){this._mediaObject.setup="actpass"}resume(){this._mediaObject.direction="sendonly"}planBReceive({offerRtpParameters:e,streamId:t,trackId:r}){const i=e.encodings[0],n=i.ssrc,s=i.rtx&&i.rtx.ssrc?i.rtx.ssrc:void 0,o=this._mediaObject.payloads.split(" ");for(const t of e.codecs){if(o.includes(String(t.payloadType)))continue;const e={payload:t.payloadType,codec:Zn(t),rate:t.clockRate};t.channels>1&&(e.encoding=t.channels),this._mediaObject.rtp.push(e);const r={payload:t.payloadType,config:""};for(const e of Object.keys(t.parameters))r.config&&(r.config+=";"),r.config+=`${e}=${t.parameters[e]}`;r.config&&this._mediaObject.fmtp.push(r);for(const e of t.rtcpFeedback)this._mediaObject.rtcpFb.push({payload:t.payloadType,type:e.type,subtype:e.parameter})}this._mediaObject.payloads+=` ${e.codecs.filter((e=>!this._mediaObject.payloads.includes(e.payloadType))).map((e=>e.payloadType)).join(" ")}`,this._mediaObject.payloads=this._mediaObject.payloads.trim(),e.rtcp.cname&&this._mediaObject.ssrcs.push({id:n,attribute:"cname",value:e.rtcp.cname}),this._mediaObject.ssrcs.push({id:n,attribute:"msid",value:`${t||"-"} ${r}`}),s&&(e.rtcp.cname&&this._mediaObject.ssrcs.push({id:s,attribute:"cname",value:e.rtcp.cname}),this._mediaObject.ssrcs.push({id:s,attribute:"msid",value:`${t||"-"} ${r}`}),this._mediaObject.ssrcGroups.push({semantics:"FID",ssrcs:`${n} ${s}`}))}planBStopReceiving({offerRtpParameters:e}){const t=e.encodings[0],r=t.ssrc,i=t.rtx&&t.rtx.ssrc?t.rtx.ssrc:void 0;this._mediaObject.ssrcs=this._mediaObject.ssrcs.filter((e=>e.id!==r&&e.id!==i)),i&&(this._mediaObject.ssrcGroups=this._mediaObject.ssrcGroups.filter((e=>e.ssrcs!==`${r} ${i}`)))}};var Yn=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Xn=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),es=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Yn(t,e,r);return Xn(t,e),t};Object.defineProperty(Vn,"__esModule",{value:!0}),Vn.RemoteSdp=void 0;const ts=es(bn),rs=Gn,is=new Er.Logger("RemoteSdp");Vn.RemoteSdp=class{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:n,planB:s=!1}){if(this._mediaSections=[],this._midToIndex=new Map,this._iceParameters=e,this._iceCandidates=t,this._dtlsParameters=r,this._sctpParameters=i,this._plainRtpParameters=n,this._planB=s,this._sdpObject={version:0,origin:{address:"0.0.0.0",ipVer:4,netType:"IN",sessionId:1e4,sessionVersion:0,username:"mediasoup-client"},name:"-",timing:{start:0,stop:0},media:[]},e&&e.iceLite&&(this._sdpObject.icelite="ice-lite"),r){this._sdpObject.msidSemantic={semantic:"WMS",token:"*"};const e=this._dtlsParameters.fingerprints.length;this._sdpObject.fingerprint={type:r.fingerprints[e-1].algorithm,hash:r.fingerprints[e-1].value},this._sdpObject.groups=[{type:"BUNDLE",mids:""}]}n&&(this._sdpObject.origin.address=n.ip,this._sdpObject.origin.ipVer=n.ipVersion)}updateIceParameters(e){is.debug("updateIceParameters() [iceParameters:%o]",e),this._iceParameters=e,this._sdpObject.icelite=e.iceLite?"ice-lite":void 0;for(const t of this._mediaSections)t.setIceParameters(e)}updateDtlsRole(e){is.debug("updateDtlsRole() [role:%s]",e),this._dtlsParameters.role=e;for(const t of this._mediaSections)t.setDtlsRole(e)}getNextMediaSectionIdx(){for(let e=0;e<this._mediaSections.length;++e){const t=this._mediaSections[e];if(t.closed)return{idx:e,reuseMid:t.mid}}return{idx:this._mediaSections.length}}send({offerMediaObject:e,reuseMid:t,offerRtpParameters:r,answerRtpParameters:i,codecOptions:n,extmapAllowMixed:s=!1}){const o=new rs.AnswerMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,plainRtpParameters:this._plainRtpParameters,planB:this._planB,offerMediaObject:e,offerRtpParameters:r,answerRtpParameters:i,codecOptions:n,extmapAllowMixed:s});t?this._replaceMediaSection(o,t):this._midToIndex.has(o.mid)?this._replaceMediaSection(o):this._addMediaSection(o)}receive({mid:e,kind:t,offerRtpParameters:r,streamId:i,trackId:n}){const s=this._midToIndex.get(e);let o;if(void 0!==s&&(o=this._mediaSections[s]),o)o.planBReceive({offerRtpParameters:r,streamId:i,trackId:n}),this._replaceMediaSection(o);else{o=new rs.OfferMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,plainRtpParameters:this._plainRtpParameters,planB:this._planB,mid:e,kind:t,offerRtpParameters:r,streamId:i,trackId:n});const s=this._mediaSections.find((e=>e.closed));s?this._replaceMediaSection(o,s.mid):this._addMediaSection(o)}}pauseMediaSection(e){this._findMediaSection(e).pause()}resumeSendingMediaSection(e){this._findMediaSection(e).resume()}resumeReceivingMediaSection(e){this._findMediaSection(e).resume()}disableMediaSection(e){this._findMediaSection(e).disable()}closeMediaSection(e){const t=this._findMediaSection(e);return e===this._firstMid?(is.debug("closeMediaSection() | cannot close first media section, disabling it instead [mid:%s]",e),this.disableMediaSection(e),!1):(t.close(),this._regenerateBundleMids(),!0)}muxMediaSectionSimulcast(e,t){const r=this._findMediaSection(e);r.muxSimulcastStreams(t),this._replaceMediaSection(r)}planBStopReceiving({mid:e,offerRtpParameters:t}){const r=this._findMediaSection(e);r.planBStopReceiving({offerRtpParameters:t}),this._replaceMediaSection(r)}sendSctpAssociation({offerMediaObject:e}){const t=new rs.AnswerMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,sctpParameters:this._sctpParameters,plainRtpParameters:this._plainRtpParameters,offerMediaObject:e});this._addMediaSection(t)}receiveSctpAssociation({oldDataChannelSpec:e=!1}={}){const t=new rs.OfferMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,sctpParameters:this._sctpParameters,plainRtpParameters:this._plainRtpParameters,mid:"datachannel",kind:"application",oldDataChannelSpec:e});this._addMediaSection(t)}getSdp(){return this._sdpObject.origin.sessionVersion++,ts.write(this._sdpObject)}_addMediaSection(e){this._firstMid||(this._firstMid=e.mid),this._mediaSections.push(e),this._midToIndex.set(e.mid,this._mediaSections.length-1),this._sdpObject.media.push(e.getObject()),this._regenerateBundleMids()}_replaceMediaSection(e,t){if("string"==typeof t){const r=this._midToIndex.get(t);if(void 0===r)throw new Error(`no media section found for reuseMid '${t}'`);const i=this._mediaSections[r];this._mediaSections[r]=e,this._midToIndex.delete(i.mid),this._midToIndex.set(e.mid,r),this._sdpObject.media[r]=e.getObject(),this._regenerateBundleMids()}else{const t=this._midToIndex.get(e.mid);if(void 0===t)throw new Error(`no media section found with mid '${e.mid}'`);this._mediaSections[t]=e,this._sdpObject.media[t]=e.getObject()}}_findMediaSection(e){const t=this._midToIndex.get(e);if(void 0===t)throw new Error(`no media section found with mid '${e}'`);return this._mediaSections[t]}_regenerateBundleMids(){this._dtlsParameters&&(this._sdpObject.groups[0].mids=this._mediaSections.filter((e=>!e.closed)).map((e=>e.mid)).join(" "))}};var ns={};Object.defineProperty(ns,"__esModule",{value:!0}),ns.parse=void 0;const ss=new RegExp("^[LS]([1-9]\\d{0,1})T([1-9]\\d{0,1})");ns.parse=function(e){const t=ss.exec(e||"");return t?{spatialLayers:Number(t[1]),temporalLayers:Number(t[2])}:{spatialLayers:1,temporalLayers:1}};var os=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),as=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),cs=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&os(t,e,r);return as(t,e),t};Object.defineProperty(vn,"__esModule",{value:!0});var ds=vn.Chrome111=void 0;const ls=cs(bn),ps=Er,us=cs(Ur),hs=cs($r),ms=cs(Mn),fs=cs(Bn),gs=cs(Fn),vs=Br,bs=zn,ys=Vn,_s=ns,ws=new ps.Logger("Chrome111"),Ss={OS:1024,MIS:1024};class Cs extends bs.HandlerInterface{static createFactory(){return()=>new Cs}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome111"}close(){if(ws.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){ws.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=ls.parse(t.sdp),i=ms.extractRtpCapabilities({sdpObject:r});return gs.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return ws.debug("getNativeSctpCapabilities()"),{numStreams:Ss}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),ws.debug("run()"),this._direction=e,this._remoteSdp=new ys.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:hs.getSendingRtpParameters("audio",d),video:hs.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:hs.getSendingRemoteRtpParameters("audio",d),video:hs.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):(ws.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})))}async updateIceServers(e){this.assertNotClosed(),ws.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),ws.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});ws.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};ws.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};ws.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();ws.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){if(this.assertNotClosed(),this.assertSendDirection(),ws.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1){t.forEach(((e,t)=>{e.rid=`r${t}`}));let e=1,r=1;for(const e of t){const t=e.scalabilityMode?(0,_s.parse)(e.scalabilityMode).temporalLayers:3;t>r&&(r=t)}for(const i of t)i.rid="r"+e++,i.scalabilityMode=`L1T${r}`}const n=us.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=hs.reduceCodecs(n.codecs,i);const s=us.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=hs.reduceCodecs(s.codecs,i);const o=this._remoteSdp.getNextMediaSectionIdx(),a=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t}),c=await this._pc.createOffer();let d=ls.parse(c.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:d}),ws.debug("send() | calling pc.setLocalDescription() [offer:%o]",c),await this._pc.setLocalDescription(c);const l=a.mid;n.mid=l,d=ls.parse(this._pc.localDescription.sdp);const p=d.media[o.idx];if(n.rtcp.cname=ms.getCname({offerMediaObject:p}),t)if(1===t.length){const e=fs.getRtpEncodings({offerMediaObject:p});Object.assign(e[0],t[0]),n.encodings=e}else n.encodings=t;else n.encodings=fs.getRtpEncodings({offerMediaObject:p});this._remoteSdp.send({offerMediaObject:p,reuseMid:o.reuseMid,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const u={type:"answer",sdp:this._remoteSdp.getSdp()};return ws.debug("send() | calling pc.setRemoteDescription() [answer:%o]",u),await this._pc.setRemoteDescription(u),this._mapMidTransceiver.set(l,a),{localId:l,rtpParameters:n,rtpSender:a.sender}}async stopSending(e){if(this.assertSendDirection(),ws.debug("stopSending() [localId:%s]",e),this._closed)return;const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();ws.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};ws.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),ws.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();ws.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};ws.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),ws.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(this._remoteSdp.resumeSendingMediaSection(e),!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly";const r=await this._pc.createOffer();ws.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};ws.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?ws.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):ws.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),ws.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();ws.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};ws.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),ws.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();ws.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};ws.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};ws.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Ss.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=ls.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),ws.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};ws.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;ws.debug("receive() [trackId:%s, kind:%s]",e,i);const o=n.mid||String(this._mapMidTransceiver.size);r.set(e,o),this._remoteSdp.receive({mid:o,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};ws.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=ls.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,n=r.get(e),o=s.media.find((e=>String(e.mid)===n));ms.applyCodecParameters({offerRtpParameters:i,answerMediaObject:o})}n={type:"answer",sdp:ls.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),ws.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const i of e){const{trackId:e}=i,n=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),t.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){ws.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};ws.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();ws.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){ws.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};ws.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();ws.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){ws.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};ws.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();ws.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:o,protocol:r};ws.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};ws.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=ls.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}ws.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=ls.parse(this._pc.localDescription.sdp));const r=ms.extractIceParameters({sdpObject:t}),i=ms.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new vs.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}ds=vn.Chrome111=Cs;var Rs={},Ts=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Ps=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ks=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Ts(t,e,r);return Ps(t,e),t};Object.defineProperty(Rs,"__esModule",{value:!0}),Rs.Chrome74=void 0;const Os=ks(bn),Es=Er,Ds=ks(Ur),Is=ks($r),xs=ks(Mn),Ms=ks(Bn),js=ks(Fn),Ls=Br,As=zn,Ns=Vn,Bs=ns,Fs=new Es.Logger("Chrome74"),zs={OS:1024,MIS:1024};class Us extends As.HandlerInterface{static createFactory(){return()=>new Us}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome74"}close(){if(Fs.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Fs.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=Os.parse(t.sdp),i=xs.extractRtpCapabilities({sdpObject:r});return js.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Fs.debug("getNativeSctpCapabilities()"),{numStreams:zs}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){Fs.debug("run()"),this._direction=e,this._remoteSdp=new Ns.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:Is.getSendingRtpParameters("audio",d),video:Is.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Is.getSendingRemoteRtpParameters("audio",d),video:Is.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):(Fs.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})))}async updateIceServers(e){this.assertNotClosed(),Fs.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),Fs.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Fs.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Fs.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Fs.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Fs.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertNotClosed(),this.assertSendDirection(),Fs.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1&&t.forEach(((e,t)=>{e.rid=`r${t}`}));const n=Ds.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=Is.reduceCodecs(n.codecs,i);const s=Ds.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=Is.reduceCodecs(s.codecs,i);const o=this._remoteSdp.getNextMediaSectionIdx(),a=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t});let c,d=await this._pc.createOffer(),l=Os.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l});let p=!1;const u=(0,Bs.parse)((t||[{}])[0].scalabilityMode);t&&1===t.length&&u.spatialLayers>1&&"video/vp9"===n.codecs[0].mimeType.toLowerCase()&&(Fs.debug("send() | enabling legacy simulcast for VP9 SVC"),p=!0,l=Os.parse(d.sdp),c=l.media[o.idx],Ms.addLegacySimulcast({offerMediaObject:c,numStreams:u.spatialLayers}),d={type:"offer",sdp:Os.write(l)}),Fs.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);const h=a.mid;if(n.mid=h,l=Os.parse(this._pc.localDescription.sdp),c=l.media[o.idx],n.rtcp.cname=xs.getCname({offerMediaObject:c}),t)if(1===t.length){let e=Ms.getRtpEncodings({offerMediaObject:c});Object.assign(e[0],t[0]),p&&(e=[e[0]]),n.encodings=e}else n.encodings=t;else n.encodings=Ms.getRtpEncodings({offerMediaObject:c});if(n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(const e of n.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${u.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:o.reuseMid,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return Fs.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),this._mapMidTransceiver.set(h,a),{localId:h,rtpParameters:n,rtpSender:a.sender}}async stopSending(e){if(this.assertSendDirection(),Fs.debug("stopSending() [localId:%s]",e),this._closed)return;const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();Fs.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Fs.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Fs.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();Fs.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Fs.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Fs.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(this._remoteSdp.resumeSendingMediaSection(e),!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly";const r=await this._pc.createOffer();Fs.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Fs.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Fs.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Fs.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),Fs.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Fs.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Fs.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Fs.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Fs.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Fs.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};Fs.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%zs.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Os.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Fs.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};Fs.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;Fs.debug("receive() [trackId:%s, kind:%s]",e,i);const o=n.mid||String(this._mapMidTransceiver.size);r.set(e,o),this._remoteSdp.receive({mid:o,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Fs.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=Os.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,n=r.get(e),o=s.media.find((e=>String(e.mid)===n));xs.applyCodecParameters({offerRtpParameters:i,answerMediaObject:o})}n={type:"answer",sdp:Os.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),Fs.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const i of e){const{trackId:e}=i,n=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),t.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Fs.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Fs.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Fs.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Fs.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Fs.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Fs.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Fs.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Fs.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Fs.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:o,protocol:r};Fs.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};Fs.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Os.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Fs.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Os.parse(this._pc.localDescription.sdp));const r=xs.extractIceParameters({sdpObject:t}),i=xs.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new Ls.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Rs.Chrome74=Us;var $s={},Vs=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Gs=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),qs=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Vs(t,e,r);return Gs(t,e),t};Object.defineProperty($s,"__esModule",{value:!0}),$s.Chrome70=void 0;const Hs=qs(bn),Ws=Er,Ks=qs(Ur),Js=qs($r),Qs=qs(Mn),Zs=qs(Bn),Ys=zn,Xs=Vn,eo=ns,to=new Ws.Logger("Chrome70"),ro={OS:1024,MIS:1024};class io extends Ys.HandlerInterface{static createFactory(){return()=>new io}constructor(){super(),this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome70"}close(){if(to.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){to.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=Hs.parse(t.sdp);return Qs.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return to.debug("getNativeSctpCapabilities()"),{numStreams:ro}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){to.debug("run()"),this._direction=e,this._remoteSdp=new Xs.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:Js.getSendingRtpParameters("audio",d),video:Js.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Js.getSendingRemoteRtpParameters("audio",d),video:Js.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(to.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){to.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(to.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});to.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};to.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};to.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();to.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertSendDirection(),to.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const n=Ks.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=Js.reduceCodecs(n.codecs,i);const s=Ks.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=Js.reduceCodecs(s.codecs,i);const o=this._remoteSdp.getNextMediaSectionIdx(),a=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});let c,d=await this._pc.createOffer(),l=Hs.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l}),t&&t.length>1&&(to.debug("send() | enabling legacy simulcast"),l=Hs.parse(d.sdp),c=l.media[o.idx],Zs.addLegacySimulcast({offerMediaObject:c,numStreams:t.length}),d={type:"offer",sdp:Hs.write(l)});let p=!1;const u=(0,eo.parse)((t||[{}])[0].scalabilityMode);if(t&&1===t.length&&u.spatialLayers>1&&"video/vp9"===n.codecs[0].mimeType.toLowerCase()&&(to.debug("send() | enabling legacy simulcast for VP9 SVC"),p=!0,l=Hs.parse(d.sdp),c=l.media[o.idx],Zs.addLegacySimulcast({offerMediaObject:c,numStreams:u.spatialLayers}),d={type:"offer",sdp:Hs.write(l)}),to.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d),t){to.debug("send() | applying given encodings");const e=a.sender.getParameters();for(let r=0;r<(e.encodings||[]).length;++r){const i=e.encodings[r],n=t[r];if(!n)break;e.encodings[r]=Object.assign(i,n)}await a.sender.setParameters(e)}const h=a.mid;if(n.mid=h,l=Hs.parse(this._pc.localDescription.sdp),c=l.media[o.idx],n.rtcp.cname=Qs.getCname({offerMediaObject:c}),n.encodings=Zs.getRtpEncodings({offerMediaObject:c}),t)for(let e=0;e<n.encodings.length;++e)t[e]&&Object.assign(n.encodings[e],t[e]);if(p&&(n.encodings=[n.encodings[0]]),n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(const e of n.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:o.reuseMid,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return to.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),this._mapMidTransceiver.set(h,a),{localId:h,rtpParameters:n,rtpSender:a.sender}}async stopSending(e){this.assertSendDirection(),to.debug("stopSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();to.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};to.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){this.assertSendDirection(),t?to.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):to.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertSendDirection(),to.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();to.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};to.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertSendDirection(),to.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();to.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};to.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:n};to.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%ro.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Hs.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),to.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};to.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;to.debug("receive() [trackId:%s, kind:%s]",e,i);const o=n.mid||String(this._mapMidTransceiver.size);r.set(e,o),this._remoteSdp.receive({mid:o,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};to.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=Hs.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,n=r.get(e),o=s.media.find((e=>String(e.mid)===n));Qs.applyCodecParameters({offerRtpParameters:i,answerMediaObject:o})}n={type:"answer",sdp:Hs.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),to.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const i of e){const{trackId:e}=i,n=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),t.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){to.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};to.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();to.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmitTime:s,maxRetransmits:o,protocol:r};to.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};to.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Hs.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}to.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Hs.parse(this._pc.localDescription.sdp));const r=Qs.extractIceParameters({sdpObject:t}),i=Qs.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}$s.Chrome70=io;var no={},so={};Object.defineProperty(so,"__esModule",{value:!0}),so.addLegacySimulcast=so.getRtpEncodings=void 0,so.getRtpEncodings=function({offerMediaObject:e,track:t}){const r=new Set;for(const i of e.ssrcs||[]){if("msid"!==i.attribute)continue;if(i.value.split(" ")[1]===t.id){const e=i.id;r.add(e)}}if(0===r.size)throw new Error(`a=ssrc line with msid information not found [track.id:${t.id}]`);const i=new Map;for(const t of e.ssrcGroups||[]){if("FID"!==t.semantics)continue;let[e,n]=t.ssrcs.split(/\s+/);e=Number(e),n=Number(n),r.has(e)&&(r.delete(e),r.delete(n),i.set(e,n))}for(const e of r)i.set(e,null);const n=[];for(const[e,t]of i){const r={ssrc:e};t&&(r.rtx={ssrc:t}),n.push(r)}return n},so.addLegacySimulcast=function({offerMediaObject:e,track:t,numStreams:r}){if(r<=1)throw new TypeError("numStreams must be greater than 1");let i,n,s;if(!(e.ssrcs||[]).find((e=>{if("msid"!==e.attribute)return!1;return e.value.split(" ")[1]===t.id&&(i=e.id,s=e.value.split(" ")[0],!0)})))throw new Error(`a=ssrc line with msid information not found [track.id:${t.id}]`);(e.ssrcGroups||[]).some((e=>{if("FID"!==e.semantics)return!1;const t=e.ssrcs.split(/\s+/);return Number(t[0])===i&&(n=Number(t[1]),!0)}));const o=e.ssrcs.find((e=>"cname"===e.attribute&&e.id===i));if(!o)throw new Error(`a=ssrc line with cname information not found [track.id:${t.id}]`);const a=o.value,c=[],d=[];for(let e=0;e<r;++e)c.push(i+e),n&&d.push(n+e);e.ssrcGroups=e.ssrcGroups||[],e.ssrcs=e.ssrcs||[],e.ssrcGroups.push({semantics:"SIM",ssrcs:c.join(" ")});for(let r=0;r<c.length;++r){const i=c[r];e.ssrcs.push({id:i,attribute:"cname",value:a}),e.ssrcs.push({id:i,attribute:"msid",value:`${s} ${t.id}`})}for(let r=0;r<d.length;++r){const i=c[r],n=d[r];e.ssrcs.push({id:n,attribute:"cname",value:a}),e.ssrcs.push({id:n,attribute:"msid",value:`${s} ${t.id}`}),e.ssrcGroups.push({semantics:"FID",ssrcs:`${i} ${n}`})}};var oo=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),ao=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),co=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&oo(t,e,r);return ao(t,e),t};Object.defineProperty(no,"__esModule",{value:!0}),no.Chrome67=void 0;const lo=co(bn),po=Er,uo=co(Ur),ho=co($r),mo=co(Mn),fo=co(so),go=zn,vo=Vn,bo=new po.Logger("Chrome67"),yo={OS:1024,MIS:1024};class _o extends go.HandlerInterface{static createFactory(){return()=>new _o}constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdRtpSender=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome67"}close(){if(bo.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){bo.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=lo.parse(t.sdp);return mo.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return bo.debug("getNativeSctpCapabilities()"),{numStreams:yo}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){bo.debug("run()"),this._direction=e,this._remoteSdp=new vo.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:ho.getSendingRtpParameters("audio",d),video:ho.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:ho.getSendingRemoteRtpParameters("audio",d),video:ho.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(bo.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){bo.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(bo.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});bo.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};bo.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};bo.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();bo.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertSendDirection(),bo.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&bo.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let n,s=await this._pc.createOffer(),o=lo.parse(s.sdp);const a=uo.clone(this._sendingRtpParametersByKind[e.kind]);a.codecs=ho.reduceCodecs(a.codecs);const c=uo.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=ho.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(bo.debug("send() | enabling simulcast"),o=lo.parse(s.sdp),n=o.media.find((e=>"video"===e.type)),fo.addLegacySimulcast({offerMediaObject:n,track:e,numStreams:t.length}),s={type:"offer",sdp:lo.write(o)}),bo.debug("send() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s),o=lo.parse(this._pc.localDescription.sdp),n=o.media.find((t=>t.type===e.kind)),a.rtcp.cname=mo.getCname({offerMediaObject:n}),a.encodings=fo.getRtpEncodings({offerMediaObject:n,track:e}),t)for(let e=0;e<a.encodings.length;++e)t[e]&&Object.assign(a.encodings[e],t[e]);if(a.encodings.length>1&&"video/vp8"===a.codecs[0].mimeType.toLowerCase())for(const e of a.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:n,offerRtpParameters:a,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};bo.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);this._nextSendLocalId++;const p=this._pc.getSenders().find((t=>t.track===e));return this._mapSendLocalIdRtpSender.set(l,p),{localId:l,rtpParameters:a,rtpSender:p}}async stopSending(e){this.assertSendDirection(),bo.debug("stopSending() [localId:%s]",e);const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");this._pc.removeTrack(t),t.track&&this._sendStream.removeTrack(t.track),this._mapSendLocalIdRtpSender.delete(e);const r=await this._pc.createOffer();bo.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void bo.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const i={type:"answer",sdp:this._remoteSdp.getSdp()};bo.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){this.assertSendDirection(),t?bo.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):bo.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.track;await r.replaceTrack(t),i&&this._sendStream.removeTrack(i),t&&this._sendStream.addTrack(t)}async setMaxSpatialLayer(e,t){this.assertSendDirection(),bo.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.setParameters(i)}async setRtpEncodingParameters(e,t){this.assertSendDirection(),bo.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.setParameters(i)}async getSenderStats(e){this.assertSendDirection();const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");return t.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:n};bo.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%yo.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=lo.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),bo.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};bo.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:i,streamId:n}=t;bo.debug("receive() [trackId:%s, kind:%s]",e,r);const s=r;this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:i,streamId:n||i.rtcp.cname,trackId:e})}const r={type:"offer",sdp:this._remoteSdp.getSdp()};bo.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer();const n=lo.parse(i.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,s=n.media.find((e=>String(e.mid)===i));mo.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}i={type:"answer",sdp:lo.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),bo.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const r of e){const{kind:e,trackId:i,rtpParameters:n}=r,s=i,o=e,a=this._pc.getReceivers().find((e=>e.track&&e.track.id===s));if(!a)throw new Error("new RTCRtpReceiver not");this._mapRecvLocalIdInfo.set(s,{mid:o,rtpParameters:n,rtpReceiver:a}),t.push({localId:s,track:a.track,rtpReceiver:a})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){bo.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};bo.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();bo.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){this.assertRecvDirection();const{rtpReceiver:t}=this._mapRecvLocalIdInfo.get(e)||{};if(!t)throw new Error("associated RTCRtpReceiver not found");return t.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmitTime:s,maxRetransmits:o,protocol:r};bo.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};bo.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=lo.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}bo.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=lo.parse(this._pc.localDescription.sdp));const r=mo.extractIceParameters({sdpObject:t}),i=mo.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}no.Chrome67=_o;var wo={},So=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Co=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ro=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&So(t,e,r);return Co(t,e),t};Object.defineProperty(wo,"__esModule",{value:!0}),wo.Chrome55=void 0;const To=Ro(bn),Po=Er,ko=Br,Oo=Ro(Ur),Eo=Ro($r),Do=Ro(Mn),Io=Ro(so),xo=zn,Mo=Vn,jo=new Po.Logger("Chrome55"),Lo={OS:1024,MIS:1024};class Ao extends xo.HandlerInterface{static createFactory(){return()=>new Ao}constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdTrack=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome55"}close(){if(jo.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){jo.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=To.parse(t.sdp);return Do.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return jo.debug("getNativeSctpCapabilities()"),{numStreams:Lo}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){jo.debug("run()"),this._direction=e,this._remoteSdp=new Mo.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:Eo.getSendingRtpParameters("audio",d),video:Eo.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Eo.getSendingRemoteRtpParameters("audio",d),video:Eo.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(jo.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){jo.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(jo.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});jo.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};jo.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};jo.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();jo.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertSendDirection(),jo.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&jo.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let n,s=await this._pc.createOffer(),o=To.parse(s.sdp);const a=Oo.clone(this._sendingRtpParametersByKind[e.kind]);a.codecs=Eo.reduceCodecs(a.codecs);const c=Oo.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=Eo.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(jo.debug("send() | enabling simulcast"),o=To.parse(s.sdp),n=o.media.find((e=>"video"===e.type)),Io.addLegacySimulcast({offerMediaObject:n,track:e,numStreams:t.length}),s={type:"offer",sdp:To.write(o)}),jo.debug("send() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s),o=To.parse(this._pc.localDescription.sdp),n=o.media.find((t=>t.type===e.kind)),a.rtcp.cname=Do.getCname({offerMediaObject:n}),a.encodings=Io.getRtpEncodings({offerMediaObject:n,track:e}),t)for(let e=0;e<a.encodings.length;++e)t[e]&&Object.assign(a.encodings[e],t[e]);if(a.encodings.length>1&&"video/vp8"===a.codecs[0].mimeType.toLowerCase())for(const e of a.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:n,offerRtpParameters:a,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};jo.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);return this._nextSendLocalId++,this._mapSendLocalIdTrack.set(l,e),{localId:l,rtpParameters:a}}async stopSending(e){this.assertSendDirection(),jo.debug("stopSending() [localId:%s]",e);const t=this._mapSendLocalIdTrack.get(e);if(!t)throw new Error("track not found");this._mapSendLocalIdTrack.delete(e),this._sendStream.removeTrack(t),this._pc.addStream(this._sendStream);const r=await this._pc.createOffer();jo.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void jo.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const i={type:"answer",sdp:this._remoteSdp.getSdp()};jo.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){throw new ko.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new ko.UnsupportedError(" not implemented")}async setRtpEncodingParameters(e,t){throw new ko.UnsupportedError("not supported")}async getSenderStats(e){throw new ko.UnsupportedError("not implemented")}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:n};jo.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Lo.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=To.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),jo.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};jo.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:i,streamId:n}=t;jo.debug("receive() [trackId:%s, kind:%s]",e,r);const s=r;this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:i,streamId:n||i.rtcp.cname,trackId:e})}const r={type:"offer",sdp:this._remoteSdp.getSdp()};jo.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer();const n=To.parse(i.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,s=n.media.find((e=>String(e.mid)===i));Do.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}i={type:"answer",sdp:To.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),jo.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const r of e){const{kind:e,trackId:i,rtpParameters:n}=r,s=e,o=i,a=r.streamId||n.rtcp.cname,c=this._pc.getRemoteStreams().find((e=>e.id===a)).getTrackById(o);if(!c)throw new Error("remote track not found");this._mapRecvLocalIdInfo.set(o,{mid:s,rtpParameters:n}),t.push({localId:o,track:c})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){jo.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};jo.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();jo.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new ko.UnsupportedError("not implemented")}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmitTime:s,maxRetransmits:o,protocol:r};jo.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};jo.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=To.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}jo.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=To.parse(this._pc.localDescription.sdp));const r=Do.extractIceParameters({sdpObject:t}),i=Do.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}wo.Chrome55=Ao;var No={},Bo=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Fo=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),zo=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Bo(t,e,r);return Fo(t,e),t};Object.defineProperty(No,"__esModule",{value:!0}),No.Firefox60=void 0;const Uo=zo(bn),$o=Er,Vo=Br,Go=zo(Ur),qo=zo($r),Ho=zo(Mn),Wo=zo(Bn),Ko=zn,Jo=Vn,Qo=ns,Zo=new $o.Logger("Firefox60"),Yo={OS:16,MIS:2048};class Xo extends Ko.HandlerInterface{static createFactory(){return()=>new Xo}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Firefox60"}close(){if(Zo.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Zo.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require"}),t=document.createElement("canvas");t.getContext("2d");const r=t.captureStream().getVideoTracks()[0];try{e.addTransceiver("audio",{direction:"sendrecv"});const i=e.addTransceiver(r,{direction:"sendrecv"}),n=i.sender.getParameters(),s=[{rid:"r0",maxBitrate:1e5},{rid:"r1",maxBitrate:5e5}];n.encodings=s,await i.sender.setParameters(n);const o=await e.createOffer();try{t.remove()}catch(e){}try{r.stop()}catch(e){}try{e.close()}catch(e){}const a=Uo.parse(o.sdp);return Ho.extractRtpCapabilities({sdpObject:a})}catch(i){try{t.remove()}catch(e){}try{r.stop()}catch(e){}try{e.close()}catch(e){}throw i}}async getNativeSctpCapabilities(){return Zo.debug("getNativeSctpCapabilities()"),{numStreams:Yo}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),Zo.debug("run()"),this._direction=e,this._remoteSdp=new Jo.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:qo.getSendingRtpParameters("audio",d),video:qo.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:qo.getSendingRemoteRtpParameters("audio",d),video:qo.getSendingRemoteRtpParameters("video",d)},this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(Zo.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){throw this.assertNotClosed(),new Vo.UnsupportedError("not supported")}async restartIce(e){if(this.assertNotClosed(),Zo.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Zo.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Zo.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Zo.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Zo.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertNotClosed(),this.assertSendDirection(),Zo.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&(t=Go.clone(t)).length>1&&(t.forEach(((e,t)=>{e.rid=`r${t}`})),t.reverse());const n=Go.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=qo.reduceCodecs(n.codecs,i);const s=Go.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=qo.reduceCodecs(s.codecs,i);const o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});if(t){const e=o.sender.getParameters();e.encodings=t,await o.sender.setParameters(e)}const a=await this._pc.createOffer();let c=Uo.parse(a.sdp);this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:c});const d=(0,Qo.parse)((t||[{}])[0].scalabilityMode);Zo.debug("send() | calling pc.setLocalDescription() [offer:%o]",a),await this._pc.setLocalDescription(a);const l=o.mid;n.mid=l,c=Uo.parse(this._pc.localDescription.sdp);const p=c.media[c.media.length-1];if(n.rtcp.cname=Ho.getCname({offerMediaObject:p}),t)if(1===t.length){const e=Wo.getRtpEncodings({offerMediaObject:p});Object.assign(e[0],t[0]),n.encodings=e}else n.encodings=t.reverse();else n.encodings=Wo.getRtpEncodings({offerMediaObject:p});if(n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(const e of n.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${d.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:p,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const u={type:"answer",sdp:this._remoteSdp.getSdp()};return Zo.debug("send() | calling pc.setRemoteDescription() [answer:%o]",u),await this._pc.setRemoteDescription(u),this._mapMidTransceiver.set(l,o),{localId:l,rtpParameters:n,rtpSender:o.sender}}async stopSending(e){if(this.assertSendDirection(),Zo.debug("stopSending() [localId:%s]",e),this._closed)return;const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated transceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender),this._remoteSdp.disableMediaSection(t.mid);const r=await this._pc.createOffer();Zo.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Zo.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Zo.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();Zo.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Zo.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Zo.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly",this._remoteSdp.resumeSendingMediaSection(e);const r=await this._pc.createOffer();Zo.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Zo.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Zo.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Zo.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),Zo.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated transceiver not found");const i=r.sender.getParameters();t=i.encodings.length-1-t,i.encodings.forEach(((e,r)=>{e.active=r>=t})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Zo.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Zo.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Zo.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Zo.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Zo.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};Zo.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Yo.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Uo.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:t}),Zo.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};Zo.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;Zo.debug("receive() [trackId:%s, kind:%s]",e,i);const o=n.mid||String(this._mapMidTransceiver.size);r.set(e,o),this._remoteSdp.receive({mid:o,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Zo.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=Uo.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,o=r.get(e),a=s.media.find((e=>String(e.mid)===o));Ho.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a}),n={type:"answer",sdp:Uo.write(s)}}this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:s}),Zo.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const i of e){const{trackId:e}=i,n=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),t.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Zo.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Zo.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Zo.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Zo.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Zo.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Zo.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Zo.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Zo.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Zo.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:o,protocol:r};Zo.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};Zo.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Uo.parse(t.sdp);await this.setupTransport({localDtlsRole:"client",localSdpObject:e})}Zo.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Uo.parse(this._pc.localDescription.sdp));const r=Ho.extractIceParameters({sdpObject:t}),i=Ho.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new Vo.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}No.Firefox60=Xo;var ea={},ta=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),ra=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ia=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&ta(t,e,r);return ra(t,e),t};Object.defineProperty(ea,"__esModule",{value:!0}),ea.Safari12=void 0;const na=ia(bn),sa=Er,oa=ia(Ur),aa=ia($r),ca=ia(Mn),da=ia(Bn),la=ia(Fn),pa=Br,ua=zn,ha=Vn,ma=ns,fa=new sa.Logger("Safari12"),ga={OS:1024,MIS:1024};class va extends ua.HandlerInterface{static createFactory(){return()=>new va}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Safari12"}close(){if(fa.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){fa.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=na.parse(t.sdp),i=ca.extractRtpCapabilities({sdpObject:r});return la.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return fa.debug("getNativeSctpCapabilities()"),{numStreams:ga}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),fa.debug("run()"),this._direction=e,this._remoteSdp=new ha.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:aa.getSendingRtpParameters("audio",d),video:aa.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:aa.getSendingRemoteRtpParameters("audio",d),video:aa.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(fa.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){this.assertNotClosed(),fa.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),fa.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});fa.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};fa.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};fa.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();fa.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertNotClosed(),this.assertSendDirection(),fa.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const n=oa.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=aa.reduceCodecs(n.codecs,i);const s=oa.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=aa.reduceCodecs(s.codecs,i);const o=this._remoteSdp.getNextMediaSectionIdx(),a=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});let c,d=await this._pc.createOffer(),l=na.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l});const p=(0,ma.parse)((t||[{}])[0].scalabilityMode);t&&t.length>1&&(fa.debug("send() | enabling legacy simulcast"),l=na.parse(d.sdp),c=l.media[o.idx],da.addLegacySimulcast({offerMediaObject:c,numStreams:t.length}),d={type:"offer",sdp:na.write(l)}),fa.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);const u=a.mid;if(n.mid=u,l=na.parse(this._pc.localDescription.sdp),c=l.media[o.idx],n.rtcp.cname=ca.getCname({offerMediaObject:c}),n.encodings=da.getRtpEncodings({offerMediaObject:c}),t)for(let e=0;e<n.encodings.length;++e)t[e]&&Object.assign(n.encodings[e],t[e]);if(n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(const e of n.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${p.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:o.reuseMid,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r});const h={type:"answer",sdp:this._remoteSdp.getSdp()};return fa.debug("send() | calling pc.setRemoteDescription() [answer:%o]",h),await this._pc.setRemoteDescription(h),this._mapMidTransceiver.set(u,a),{localId:u,rtpParameters:n,rtpSender:a.sender}}async stopSending(e){if(this.assertSendDirection(),this._closed)return;fa.debug("stopSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();fa.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};fa.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),fa.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();fa.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};fa.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),fa.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly",this._remoteSdp.resumeSendingMediaSection(e);const r=await this._pc.createOffer();fa.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};fa.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?fa.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):fa.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),fa.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();fa.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};fa.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),fa.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();fa.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};fa.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};fa.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%ga.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=na.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),fa.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};fa.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;fa.debug("receive() [trackId:%s, kind:%s]",e,i);const o=n.mid||String(this._mapMidTransceiver.size);r.set(e,o),this._remoteSdp.receive({mid:o,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};fa.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=na.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,n=r.get(e),o=s.media.find((e=>String(e.mid)===n));ca.applyCodecParameters({offerRtpParameters:i,answerMediaObject:o})}n={type:"answer",sdp:na.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),fa.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const i of e){const{trackId:e}=i,n=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),t.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){fa.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};fa.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();fa.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){fa.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};fa.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();fa.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){fa.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};fa.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();fa.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:o,protocol:r};fa.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};fa.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=na.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}fa.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=na.parse(this._pc.localDescription.sdp));const r=ca.extractIceParameters({sdpObject:t}),i=ca.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new pa.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}ea.Safari12=va;var ba={},ya=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),_a=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),wa=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&ya(t,e,r);return _a(t,e),t};Object.defineProperty(ba,"__esModule",{value:!0}),ba.Safari11=void 0;const Sa=wa(bn),Ca=Er,Ra=wa(Ur),Ta=wa($r),Pa=wa(Mn),ka=wa(so),Oa=zn,Ea=Vn,Da=new Ca.Logger("Safari11"),Ia={OS:1024,MIS:1024};class xa extends Oa.HandlerInterface{static createFactory(){return()=>new xa}constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdRtpSender=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Safari11"}close(){if(Da.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){Da.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=Sa.parse(t.sdp);return Pa.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Da.debug("getNativeSctpCapabilities()"),{numStreams:Ia}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){Da.debug("run()"),this._direction=e,this._remoteSdp=new Ea.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:Ta.getSendingRtpParameters("audio",d),video:Ta.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Ta.getSendingRemoteRtpParameters("audio",d),video:Ta.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(Da.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){Da.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Da.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Da.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Da.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Da.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Da.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertSendDirection(),Da.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&Da.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let n,s=await this._pc.createOffer(),o=Sa.parse(s.sdp);const a=Ra.clone(this._sendingRtpParametersByKind[e.kind]);a.codecs=Ta.reduceCodecs(a.codecs);const c=Ra.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=Ta.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(Da.debug("send() | enabling simulcast"),o=Sa.parse(s.sdp),n=o.media.find((e=>"video"===e.type)),ka.addLegacySimulcast({offerMediaObject:n,track:e,numStreams:t.length}),s={type:"offer",sdp:Sa.write(o)}),Da.debug("send() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s),o=Sa.parse(this._pc.localDescription.sdp),n=o.media.find((t=>t.type===e.kind)),a.rtcp.cname=Pa.getCname({offerMediaObject:n}),a.encodings=ka.getRtpEncodings({offerMediaObject:n,track:e}),t)for(let e=0;e<a.encodings.length;++e)t[e]&&Object.assign(a.encodings[e],t[e]);if(a.encodings.length>1&&"video/vp8"===a.codecs[0].mimeType.toLowerCase())for(const e of a.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:n,offerRtpParameters:a,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};Da.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);this._nextSendLocalId++;const p=this._pc.getSenders().find((t=>t.track===e));return this._mapSendLocalIdRtpSender.set(l,p),{localId:l,rtpParameters:a,rtpSender:p}}async stopSending(e){this.assertSendDirection();const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");t.track&&this._sendStream.removeTrack(t.track),this._mapSendLocalIdRtpSender.delete(e);const r=await this._pc.createOffer();Da.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void Da.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const i={type:"answer",sdp:this._remoteSdp.getSdp()};Da.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){this.assertSendDirection(),t?Da.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Da.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.track;await r.replaceTrack(t),i&&this._sendStream.removeTrack(i),t&&this._sendStream.addTrack(t)}async setMaxSpatialLayer(e,t){this.assertSendDirection(),Da.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.setParameters(i)}async setRtpEncodingParameters(e,t){this.assertSendDirection(),Da.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.setParameters(i)}async getSenderStats(e){this.assertSendDirection();const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");return t.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};Da.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Ia.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Sa.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Da.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};Da.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:i,streamId:n}=t;Da.debug("receive() [trackId:%s, kind:%s]",e,r);const s=r;this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:i,streamId:n||i.rtcp.cname,trackId:e})}const r={type:"offer",sdp:this._remoteSdp.getSdp()};Da.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer();const n=Sa.parse(i.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,s=n.media.find((e=>String(e.mid)===i));Pa.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}i={type:"answer",sdp:Sa.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),Da.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const r of e){const{kind:e,trackId:i,rtpParameters:n}=r,s=e,o=i,a=this._pc.getReceivers().find((e=>e.track&&e.track.id===o));if(!a)throw new Error("new RTCRtpReceiver not");this._mapRecvLocalIdInfo.set(o,{mid:s,rtpParameters:n,rtpReceiver:a}),t.push({localId:o,track:a.track,rtpReceiver:a})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){Da.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Da.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Da.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertRecvDirection();const{rtpReceiver:t}=this._mapRecvLocalIdInfo.get(e)||{};if(!t)throw new Error("associated RTCRtpReceiver not found");return t.getStats()}async pauseReceiving(e){}async resumeReceiving(e){}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:o,protocol:r};Da.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};Da.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Sa.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Da.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Sa.parse(this._pc.localDescription.sdp));const r=Pa.extractIceParameters({sdpObject:t}),i=Pa.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}ba.Safari11=xa;var Ma={},ja={},La=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Aa=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Na=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&La(t,e,r);return Aa(t,e),t};Object.defineProperty(ja,"__esModule",{value:!0}),ja.mangleRtpParameters=ja.getCapabilities=void 0;const Ba=Na(Ur);ja.getCapabilities=function(){const e=RTCRtpReceiver.getCapabilities(),t=Ba.clone(e);for(const e of t.codecs??[]){if(e.channels=e.numChannels,delete e.numChannels,e.mimeType=e.mimeType||`${e.kind}/${e.name}`,e.parameters){const t=e.parameters;t.apt&&(t.apt=Number(t.apt)),t["packetization-mode"]&&(t["packetization-mode"]=Number(t["packetization-mode"]))}for(const t of e.rtcpFeedback||[])t.parameter||(t.parameter="")}return t},ja.mangleRtpParameters=function(e){const t=Ba.clone(e);t.mid&&(t.muxId=t.mid,delete t.mid);for(const e of t.codecs)e.channels&&(e.numChannels=e.channels,delete e.channels),e.mimeType&&!e.name&&(e.name=e.mimeType.split("/")[1]),delete e.mimeType;return t};var Fa=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),za=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ua=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Fa(t,e,r);return za(t,e),t};Object.defineProperty(Ma,"__esModule",{value:!0}),Ma.Edge11=void 0;const $a=Er,Va=Br,Ga=Ua(Ur),qa=Ua($r),Ha=Ua(ja),Wa=zn,Ka=new $a.Logger("Edge11");class Ja extends Wa.HandlerInterface{static createFactory(){return()=>new Ja}constructor(){super(),this._rtpSenders=new Map,this._rtpReceivers=new Map,this._nextSendLocalId=0,this._transportReady=!1}get name(){return"Edge11"}close(){Ka.debug("close()");try{this._iceGatherer.close()}catch(e){}try{this._iceTransport.stop()}catch(e){}try{this._dtlsTransport.stop()}catch(e){}for(const e of this._rtpSenders.values())try{e.stop()}catch(e){}for(const e of this._rtpReceivers.values())try{e.stop()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){return Ka.debug("getNativeRtpCapabilities()"),Ha.getCapabilities()}async getNativeSctpCapabilities(){return Ka.debug("getNativeSctpCapabilities()"),{numStreams:{OS:0,MIS:0}}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){Ka.debug("run()"),this._sendingRtpParametersByKind={audio:qa.getSendingRtpParameters("audio",d),video:qa.getSendingRtpParameters("video",d)},this._remoteIceParameters=t,this._remoteIceCandidates=r,this._remoteDtlsParameters=i,this._cname=`CNAME-${Ga.generateRandomNumber()}`,this.setIceGatherer({iceServers:s,iceTransportPolicy:o}),this.setIceTransport(),this.setDtlsTransport()}async updateIceServers(e){throw new Va.UnsupportedError("not supported")}async restartIce(e){if(Ka.debug("restartIce()"),this._remoteIceParameters=e,this._transportReady){Ka.debug("restartIce() | calling iceTransport.start()"),this._iceTransport.start(this._iceGatherer,e,"controlling");for(const e of this._remoteIceCandidates)this._iceTransport.addRemoteCandidate(e);this._iceTransport.addRemoteCandidate({})}}async getTransportStats(){return this._iceTransport.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){Ka.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),this._transportReady||await this.setupTransport({localDtlsRole:"server"}),Ka.debug("send() | calling new RTCRtpSender()");const n=new RTCRtpSender(e,this._dtlsTransport),s=Ga.clone(this._sendingRtpParametersByKind[e.kind]);s.codecs=qa.reduceCodecs(s.codecs,i);const o=s.codecs.some((e=>/.+\/rtx$/i.test(e.mimeType)));t||(t=[{}]);for(const e of t)e.ssrc=Ga.generateRandomNumber(),o&&(e.rtx={ssrc:Ga.generateRandomNumber()});s.encodings=t,s.rtcp={cname:this._cname,reducedSize:!0,mux:!0};const a=Ha.mangleRtpParameters(s);Ka.debug("send() | calling rtpSender.send() [params:%o]",a),await n.send(a);const c=String(this._nextSendLocalId);return this._nextSendLocalId++,this._rtpSenders.set(c,n),{localId:c,rtpParameters:s,rtpSender:n}}async stopSending(e){Ka.debug("stopSending() [localId:%s]",e);const t=this._rtpSenders.get(e);if(!t)throw new Error("RTCRtpSender not found");this._rtpSenders.delete(e);try{Ka.debug("stopSending() | calling rtpSender.stop()"),t.stop()}catch(e){throw Ka.warn("stopSending() | rtpSender.stop() failed:%o",e),e}}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){t?Ka.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Ka.debug("replaceTrack() [localId:%s, no track]",e);const r=this._rtpSenders.get(e);if(!r)throw new Error("RTCRtpSender not found");r.setTrack(t)}async setMaxSpatialLayer(e,t){Ka.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._rtpSenders.get(e);if(!r)throw new Error("RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.setParameters(i)}async setRtpEncodingParameters(e,t){Ka.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._rtpSenders.get(e);if(!r)throw new Error("RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.setParameters(i)}async getSenderStats(e){const t=this._rtpSenders.get(e);if(!t)throw new Error("RTCRtpSender not found");return t.getStats()}async sendDataChannel(e){throw new Va.UnsupportedError("not implemented")}async receive(e){const t=[];for(const t of e){const{trackId:e,kind:r}=t;Ka.debug("receive() [trackId:%s, kind:%s]",e,r)}this._transportReady||await this.setupTransport({localDtlsRole:"server"});for(const r of e){const{trackId:e,kind:i,rtpParameters:n}=r;Ka.debug("receive() | calling new RTCRtpReceiver()");const s=new RTCRtpReceiver(this._dtlsTransport,i);s.addEventListener("error",(e=>{Ka.error('rtpReceiver "error" event [event:%o]',e)}));const o=Ha.mangleRtpParameters(n);Ka.debug("receive() | calling rtpReceiver.receive() [params:%o]",o),await s.receive(o);const a=e;this._rtpReceivers.set(a,s),t.push({localId:a,track:s.track,rtpReceiver:s})}return t}async stopReceiving(e){for(const t of e){Ka.debug("stopReceiving() [localId:%s]",t);const e=this._rtpReceivers.get(t);if(!e)throw new Error("RTCRtpReceiver not found");this._rtpReceivers.delete(t);try{Ka.debug("stopReceiving() | calling rtpReceiver.stop()"),e.stop()}catch(e){Ka.warn("stopReceiving() | rtpReceiver.stop() failed:%o",e)}}}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){const t=this._rtpReceivers.get(e);if(!t)throw new Error("RTCRtpReceiver not found");return t.getStats()}async receiveDataChannel(e){throw new Va.UnsupportedError("not implemented")}setIceGatherer({iceServers:e,iceTransportPolicy:t}){const r=new RTCIceGatherer({iceServers:e||[],gatherPolicy:t||"all"});r.addEventListener("error",(e=>{Ka.error('iceGatherer "error" event [event:%o]',e)}));try{r.gather()}catch(e){Ka.debug("setIceGatherer() | iceGatherer.gather() failed: %s",e.toString())}this._iceGatherer=r}setIceTransport(){const e=new RTCIceTransport(this._iceGatherer);e.addEventListener("statechange",(()=>{switch(e.state){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})),e.addEventListener("icestatechange",(()=>{switch(e.state){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})),e.addEventListener("candidatepairchange",(e=>{Ka.debug('iceTransport "candidatepairchange" event [pair:%o]',e.pair)})),this._iceTransport=e}setDtlsTransport(){const e=new RTCDtlsTransport(this._iceTransport);e.addEventListener("statechange",(()=>{Ka.debug('dtlsTransport "statechange" event [state:%s]',e.state)})),e.addEventListener("dtlsstatechange",(()=>{Ka.debug('dtlsTransport "dtlsstatechange" event [state:%s]',e.state),"closed"===e.state&&this.emit("@connectionstatechange","closed")})),e.addEventListener("error",(e=>{Ka.error('dtlsTransport "error" event [event:%o]',e)})),this._dtlsTransport=e}async setupTransport({localDtlsRole:e}){Ka.debug("setupTransport()");const t=this._iceGatherer.getLocalParameters(),r=this._dtlsTransport.getLocalParameters();r.role=e,await new Promise(((e,i)=>{this.safeEmit("@connect",{iceParameters:t,dtlsParameters:r},e,i)})),this._iceTransport.start(this._iceGatherer,this._remoteIceParameters,"controlling");for(const e of this._remoteIceCandidates)this._iceTransport.addRemoteCandidate(e);this._iceTransport.addRemoteCandidate({}),this._remoteDtlsParameters.fingerprints=this._remoteDtlsParameters.fingerprints.filter((e=>"sha-256"===e.algorithm||"sha-384"===e.algorithm||"sha-512"===e.algorithm)),this._dtlsTransport.start(this._remoteDtlsParameters),this._transportReady=!0}}Ma.Edge11=Ja;var Qa={},Za=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Ya=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Xa=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Za(t,e,r);return Ya(t,e),t};Object.defineProperty(Qa,"__esModule",{value:!0}),Qa.ReactNativeUnifiedPlan=void 0;const ec=Xa(bn),tc=Er,rc=Xa(Ur),ic=Xa($r),nc=Xa(Mn),sc=Xa(Bn),oc=Xa(Fn),ac=Br,cc=zn,dc=Vn,lc=ns,pc=new tc.Logger("ReactNativeUnifiedPlan"),uc={OS:1024,MIS:1024};class hc extends cc.HandlerInterface{static createFactory(){return()=>new hc}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"ReactNativeUnifiedPlan"}close(){if(pc.debug("close()"),!this._closed){if(this._closed=!0,this._sendStream.release(!1),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){pc.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=ec.parse(t.sdp),i=nc.extractRtpCapabilities({sdpObject:r});return oc.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return pc.debug("getNativeSctpCapabilities()"),{numStreams:uc}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),pc.debug("run()"),this._direction=e,this._remoteSdp=new dc.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:ic.getSendingRtpParameters("audio",d),video:ic.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:ic.getSendingRemoteRtpParameters("audio",d),video:ic.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(pc.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){this.assertNotClosed(),pc.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),pc.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});pc.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};pc.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};pc.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();pc.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertNotClosed(),this.assertSendDirection(),pc.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1&&t.forEach(((e,t)=>{e.rid=`r${t}`}));const n=rc.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=ic.reduceCodecs(n.codecs,i);const s=rc.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=ic.reduceCodecs(s.codecs,i);const o=this._remoteSdp.getNextMediaSectionIdx(),a=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t});let c,d=await this._pc.createOffer(),l=ec.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l});let p=!1;const u=(0,lc.parse)((t||[{}])[0].scalabilityMode);t&&1===t.length&&u.spatialLayers>1&&"video/vp9"===n.codecs[0].mimeType.toLowerCase()&&(pc.debug("send() | enabling legacy simulcast for VP9 SVC"),p=!0,l=ec.parse(d.sdp),c=l.media[o.idx],sc.addLegacySimulcast({offerMediaObject:c,numStreams:u.spatialLayers}),d={type:"offer",sdp:ec.write(l)}),pc.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);let h=a.mid??void 0;if(h||pc.warn("send() | missing transceiver.mid (bug in react-native-webrtc, using a workaround"),n.mid=h,l=ec.parse(this._pc.localDescription.sdp),c=l.media[o.idx],n.rtcp.cname=nc.getCname({offerMediaObject:c}),t)if(1===t.length){let e=sc.getRtpEncodings({offerMediaObject:c});Object.assign(e[0],t[0]),p&&(e=[e[0]]),n.encodings=e}else n.encodings=t;else n.encodings=sc.getRtpEncodings({offerMediaObject:c});if(n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(const e of n.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${u.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:o.reuseMid,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return pc.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),h||(h=a.mid,n.mid=h),this._mapMidTransceiver.set(h,a),{localId:h,rtpParameters:n,rtpSender:a.sender}}async stopSending(e){if(this.assertSendDirection(),this._closed)return;pc.debug("stopSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();pc.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};pc.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),pc.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();pc.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};pc.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),pc.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(this._remoteSdp.resumeSendingMediaSection(e),!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly";const r=await this._pc.createOffer();pc.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};pc.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?pc.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):pc.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),pc.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();pc.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};pc.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),pc.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();pc.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};pc.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};pc.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%uc.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=ec.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),pc.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};pc.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;pc.debug("receive() [trackId:%s, kind:%s]",e,i);const o=n.mid||String(this._mapMidTransceiver.size);r.set(e,o),this._remoteSdp.receive({mid:o,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};pc.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=ec.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,n=r.get(e),o=s.media.find((e=>String(e.mid)===n));nc.applyCodecParameters({offerRtpParameters:i,answerMediaObject:o})}n={type:"answer",sdp:ec.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),pc.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const i of e){const{trackId:e}=i,n=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),t.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){pc.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};pc.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();pc.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){pc.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};pc.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();pc.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){pc.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};pc.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();pc.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:o,protocol:r};pc.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};pc.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=ec.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}pc.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=ec.parse(this._pc.localDescription.sdp));const r=nc.extractIceParameters({sdpObject:t}),i=nc.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new ac.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Qa.ReactNativeUnifiedPlan=hc;var mc={},fc=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),gc=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),vc=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&fc(t,e,r);return gc(t,e),t};Object.defineProperty(mc,"__esModule",{value:!0}),mc.ReactNative=void 0;const bc=vc(bn),yc=Er,_c=Br,wc=vc(Ur),Sc=vc($r),Cc=vc(Mn),Rc=vc(so),Tc=zn,Pc=Vn,kc=new yc.Logger("ReactNative"),Oc={OS:1024,MIS:1024};class Ec extends Tc.HandlerInterface{static createFactory(){return()=>new Ec}constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdTrack=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"ReactNative"}close(){if(kc.debug("close()"),this._sendStream.release(!1),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){kc.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=bc.parse(t.sdp);return Cc.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return kc.debug("getNativeSctpCapabilities()"),{numStreams:Oc}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){kc.debug("run()"),this._direction=e,this._remoteSdp=new Pc.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:Sc.getSendingRtpParameters("audio",d),video:Sc.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Sc.getSendingRemoteRtpParameters("audio",d),video:Sc.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(kc.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){kc.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(kc.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});kc.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};kc.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};kc.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();kc.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertSendDirection(),kc.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&kc.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let n,s=await this._pc.createOffer(),o=bc.parse(s.sdp);const a=wc.clone(this._sendingRtpParametersByKind[e.kind]);a.codecs=Sc.reduceCodecs(a.codecs);const c=wc.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=Sc.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(kc.debug("send() | enabling simulcast"),o=bc.parse(s.sdp),n=o.media.find((e=>"video"===e.type)),Rc.addLegacySimulcast({offerMediaObject:n,track:e,numStreams:t.length}),s={type:"offer",sdp:bc.write(o)}),kc.debug("send() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s),o=bc.parse(this._pc.localDescription.sdp),n=o.media.find((t=>t.type===e.kind)),a.rtcp.cname=Cc.getCname({offerMediaObject:n}),a.encodings=Rc.getRtpEncodings({offerMediaObject:n,track:e}),t)for(let e=0;e<a.encodings.length;++e)t[e]&&Object.assign(a.encodings[e],t[e]);if(a.encodings.length>1&&("video/vp8"===a.codecs[0].mimeType.toLowerCase()||"video/h264"===a.codecs[0].mimeType.toLowerCase()))for(const e of a.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:n,offerRtpParameters:a,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};kc.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);return this._nextSendLocalId++,this._mapSendLocalIdTrack.set(l,e),{localId:l,rtpParameters:a}}async stopSending(e){this.assertSendDirection(),kc.debug("stopSending() [localId:%s]",e);const t=this._mapSendLocalIdTrack.get(e);if(!t)throw new Error("track not found");this._mapSendLocalIdTrack.delete(e),this._sendStream.removeTrack(t),this._pc.addStream(this._sendStream);const r=await this._pc.createOffer();kc.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void kc.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const i={type:"answer",sdp:this._remoteSdp.getSdp()};kc.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){throw new _c.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new _c.UnsupportedError("not implemented")}async setRtpEncodingParameters(e,t){throw new _c.UnsupportedError("not implemented")}async getSenderStats(e){throw new _c.UnsupportedError("not implemented")}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:n};kc.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Oc.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=bc.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),kc.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};kc.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n}=t;kc.debug("receive() [trackId:%s, kind:%s]",e,i);const s=i;let o=t.streamId||n.rtcp.cname;kc.debug("receive() | forcing a random remote streamId to avoid well known bug in react-native-webrtc"),o+=`-hack-${wc.generateRandomNumber()}`,r.set(e,o),this._remoteSdp.receive({mid:s,kind:i,offerRtpParameters:n,streamId:o,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};kc.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=bc.parse(n.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,n=s.media.find((e=>String(e.mid)===i));Cc.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}n={type:"answer",sdp:bc.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),kc.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const i of e){const{kind:e,trackId:n,rtpParameters:s}=i,o=n,a=e,c=r.get(n),d=this._pc.getRemoteStreams().find((e=>e.id===c)).getTrackById(o);if(!d)throw new Error("remote track not found");this._mapRecvLocalIdInfo.set(o,{mid:a,rtpParameters:s}),t.push({localId:o,track:d})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){kc.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};kc.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();kc.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new _c.UnsupportedError("not implemented")}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmitTime:s,maxRetransmits:o,protocol:r};kc.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};kc.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=bc.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}kc.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=bc.parse(this._pc.localDescription.sdp));const r=Cc.extractIceParameters({sdpObject:t}),i=Cc.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}mc.ReactNative=Ec;var Dc=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Ic=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),xc=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Dc(t,e,r);return Ic(t,e),t};Object.defineProperty(Pr,"__esModule",{value:!0}),Pr.Device=Pr.detectDevice=void 0;const Mc=Or,jc=Er,Lc=Mr,Ac=Br,Nc=xc(Ur),Bc=xc($r),Fc=Ci,zc=vn,Uc=Rs,$c=$s,Vc=no,Gc=wo,qc=No,Hc=ea,Wc=ba,Kc=Ma,Jc=Qa,Qc=mc,Zc=new jc.Logger("Device");function Yc(){if("object"==typeof navigator&&"ReactNative"===navigator.product)return Zc.debug("detectDevice() | React-Native detected"),"undefined"==typeof RTCPeerConnection?void Zc.warn("detectDevice() | unsupported react-native-webrtc without RTCPeerConnection, forgot to call registerGlobals()?"):"undefined"!=typeof RTCRtpTransceiver?(Zc.debug("detectDevice() | ReactNative UnifiedPlan handler chosen"),"ReactNativeUnifiedPlan"):(Zc.debug("detectDevice() | ReactNative PlanB handler chosen"),"ReactNative");if("object"!=typeof navigator||"string"!=typeof navigator.userAgent)Zc.warn("detectDevice() | unknown device");else{const e=navigator.userAgent,t=new Mc.UAParser(e);Zc.debug("detectDevice() | browser detected [ua:%s, parsed:%o]",e,t.getResult());const r=t.getBrowser(),i=r.name?.toLowerCase(),n=parseInt(r.major??"0"),s=t.getEngine(),o=s.name?.toLowerCase(),a=t.getOS(),c=a.name?.toLowerCase(),d=parseFloat(a.version??"0"),l=t.getDevice(),p=l.model?.toLowerCase(),u="ios"===c||"ipad"===p,h=i&&["chrome","chromium","mobile chrome","chrome webview","chrome headless"].includes(i),m=i&&["firefox","mobile firefox","mobile focus"].includes(i),f=i&&["safari","mobile safari"].includes(i),g=i&&["edge"].includes(i);if((h||g)&&!u&&n>=111)return"Chrome111";if(h&&!u&&n>=74||g&&!u&&n>=88)return"Chrome74";if(h&&!u&&n>=70)return"Chrome70";if(h&&!u&&n>=67)return"Chrome67";if(h&&!u&&n>=55)return"Chrome55";if(m&&!u&&n>=60)return"Firefox60";if(m&&u&&d>=14.3)return"Safari12";if(f&&n>=12&&"undefined"!=typeof RTCRtpTransceiver&&RTCRtpTransceiver.prototype.hasOwnProperty("currentDirection"))return"Safari12";if(f&&n>=11)return"Safari11";if(g&&!u&&n>=11&&n<=18)return"Edge11";if("webkit"===o&&u&&"undefined"!=typeof RTCRtpTransceiver&&RTCRtpTransceiver.prototype.hasOwnProperty("currentDirection"))return"Safari12";if("blink"===o){const t=e.match(/(?:(?:Chrome|Chromium))[ /](\w+)/i);if(t){const e=Number(t[1]);return e>=111?"Chrome111":e>=74?"Chrome74":e>=70?"Chrome70":e>=67?"Chrome67":"Chrome55"}return"Chrome111"}Zc.warn("detectDevice() | browser not supported [name:%s, version:%s]",i,n)}}Pr.detectDevice=Yc;Pr.Device=class{constructor({handlerName:e,handlerFactory:t,Handler:r}={}){if(this._loaded=!1,this._observer=new Lc.EnhancedEventEmitter,Zc.debug("constructor()"),r){if(Zc.warn("constructor() | Handler option is DEPRECATED, use handlerName or handlerFactory instead"),"string"!=typeof r)throw new TypeError("non string Handler option no longer supported, use handlerFactory instead");e=r}if(e&&t)throw new TypeError("just one of handlerName or handlerInterface can be given");if(t)this._handlerFactory=t;else{if(e)Zc.debug("constructor() | handler given: %s",e);else{if(!(e=Yc()))throw new Ac.UnsupportedError("device not supported");Zc.debug("constructor() | detected handler: %s",e)}switch(e){case"Chrome111":this._handlerFactory=zc.Chrome111.createFactory();break;case"Chrome74":this._handlerFactory=Uc.Chrome74.createFactory();break;case"Chrome70":this._handlerFactory=$c.Chrome70.createFactory();break;case"Chrome67":this._handlerFactory=Vc.Chrome67.createFactory();break;case"Chrome55":this._handlerFactory=Gc.Chrome55.createFactory();break;case"Firefox60":this._handlerFactory=qc.Firefox60.createFactory();break;case"Safari12":this._handlerFactory=Hc.Safari12.createFactory();break;case"Safari11":this._handlerFactory=Wc.Safari11.createFactory();break;case"Edge11":this._handlerFactory=Kc.Edge11.createFactory();break;case"ReactNativeUnifiedPlan":this._handlerFactory=Jc.ReactNativeUnifiedPlan.createFactory();break;case"ReactNative":this._handlerFactory=Qc.ReactNative.createFactory();break;default:throw new TypeError(`unknown handlerName "${e}"`)}}const i=this._handlerFactory();this._handlerName=i.name,i.close(),this._extendedRtpCapabilities=void 0,this._recvRtpCapabilities=void 0,this._canProduceByKind={audio:!1,video:!1},this._sctpCapabilities=void 0}get handlerName(){return this._handlerName}get loaded(){return this._loaded}get rtpCapabilities(){if(!this._loaded)throw new Ac.InvalidStateError("not loaded");return this._recvRtpCapabilities}get sctpCapabilities(){if(!this._loaded)throw new Ac.InvalidStateError("not loaded");return this._sctpCapabilities}get observer(){return this._observer}async load({routerRtpCapabilities:e}){let t;Zc.debug("load() [routerRtpCapabilities:%o]",e),e=Nc.clone(e);try{if(this._loaded)throw new Ac.InvalidStateError("already loaded");Bc.validateRtpCapabilities(e),t=this._handlerFactory();const r=await t.getNativeRtpCapabilities();Zc.debug("load() | got native RTP capabilities:%o",r),Bc.validateRtpCapabilities(r),this._extendedRtpCapabilities=Bc.getExtendedRtpCapabilities(r,e),Zc.debug("load() | got extended RTP capabilities:%o",this._extendedRtpCapabilities),this._canProduceByKind.audio=Bc.canSend("audio",this._extendedRtpCapabilities),this._canProduceByKind.video=Bc.canSend("video",this._extendedRtpCapabilities),this._recvRtpCapabilities=Bc.getRecvRtpCapabilities(this._extendedRtpCapabilities),Bc.validateRtpCapabilities(this._recvRtpCapabilities),Zc.debug("load() | got receiving RTP capabilities:%o",this._recvRtpCapabilities),this._sctpCapabilities=await t.getNativeSctpCapabilities(),Zc.debug("load() | got native SCTP capabilities:%o",this._sctpCapabilities),Bc.validateSctpCapabilities(this._sctpCapabilities),Zc.debug("load() succeeded"),this._loaded=!0,t.close()}catch(e){throw t&&t.close(),e}}canProduce(e){if(!this._loaded)throw new Ac.InvalidStateError("not loaded");if("audio"!==e&&"video"!==e)throw new TypeError(`invalid kind "${e}"`);return this._canProduceByKind[e]}createSendTransport({id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,appData:d}){return Zc.debug("createSendTransport()"),this.createTransport({direction:"send",id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,appData:d})}createRecvTransport({id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,appData:d}){return Zc.debug("createRecvTransport()"),this.createTransport({direction:"recv",id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,appData:d})}createTransport({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:n,sctpParameters:s,iceServers:o,iceTransportPolicy:a,additionalSettings:c,proprietaryConstraints:d,appData:l}){if(!this._loaded)throw new Ac.InvalidStateError("not loaded");if("string"!=typeof t)throw new TypeError("missing id");if("object"!=typeof r)throw new TypeError("missing iceParameters");if(!Array.isArray(i))throw new TypeError("missing iceCandidates");if("object"!=typeof n)throw new TypeError("missing dtlsParameters");if(s&&"object"!=typeof s)throw new TypeError("wrong sctpParameters");if(l&&"object"!=typeof l)throw new TypeError("if given, appData must be an object");const p=new Fc.Transport({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:n,sctpParameters:s,iceServers:o,iceTransportPolicy:a,additionalSettings:c,proprietaryConstraints:d,appData:l,handlerFactory:this._handlerFactory,extendedRtpCapabilities:this._extendedRtpCapabilities,canProduceByKind:this._canProduceByKind});return this._observer.safeEmit("newtransport",p),p}};var Xc={},ed={};Object.defineProperty(ed,"__esModule",{value:!0});var td={};Object.defineProperty(td,"__esModule",{value:!0}),function(e){var t=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),r=s&&s.__exportStar||function(e,r){for(var i in e)"default"===i||Object.prototype.hasOwnProperty.call(r,i)||t(r,e,i)};Object.defineProperty(e,"__esModule",{value:!0}),r(Pr,e),r(Ci,e),r(Mi,e),r(Bi,e),r(Vi,e),r(Ki,e),r(ed,e),r(td,e),r(zn,e),r(Br,e)}(Xc),function(e){var t=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),r=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var i={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&t(i,e,n);return r(i,e),i},n=s&&s.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.debug=e.parseScalabilityMode=e.detectDevice=e.Device=e.version=e.types=void 0;const o=n(Tr);e.debug=o.default;const a=Pr;Object.defineProperty(e,"Device",{enumerable:!0,get:function(){return a.Device}}),Object.defineProperty(e,"detectDevice",{enumerable:!0,get:function(){return a.detectDevice}});const c=i(Xc);e.types=c,e.version="3.7.3";var d=ns;Object.defineProperty(e,"parseScalabilityMode",{enumerable:!0,get:function(){return d.parse}})}(wr);let rd=!0,id=!0;function nd(e,t,r){const i=e.match(t);return i&&i.length>=r&&parseInt(i[r],10)}function sd(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 s=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,s),n.apply(this,[e,s])};const s=i.removeEventListener;i.removeEventListener=function(e,r){if(e!==t||!this._eventMap||!this._eventMap[t])return s.apply(this,arguments);if(!this._eventMap[t].has(r))return s.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,s.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 od(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(rd=e,e?"adapter.js logging disabled":"adapter.js logging enabled")}function ad(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(id=!e,"adapter.js deprecation warnings "+(e?"disabled":"enabled"))}function cd(){if("object"==typeof window){if(rd)return;"undefined"!=typeof console&&"function"==typeof console.log&&console.log.apply(console,arguments)}}function dd(e,t){id&&console.warn(e+" is deprecated, please use "+t+" instead.")}function ld(e){return"[object Object]"===Object.prototype.toString.call(e)}function pd(e){return ld(e)?Object.keys(e).reduce((function(t,r){const i=ld(e[r]),n=i?pd(e[r]):e[r],s=i&&!Object.keys(n).length;return void 0===n||s?t:Object.assign(t,{[r]:n})}),{}):e}function ud(e,t,r){t&&!r.has(t.id)&&(r.set(t.id,t),Object.keys(t).forEach((i=>{i.endsWith("Id")?ud(e,e.get(t[i]),r):i.endsWith("Ids")&&t[i].forEach((t=>{ud(e,e.get(t),r)}))})))}function hd(e,t,r){const i=r?"outbound-rtp":"inbound-rtp",n=new Map;if(null===t)return n;const s=[];return e.forEach((e=>{"track"===e.type&&e.trackIdentifier===t.id&&s.push(e)})),s.forEach((t=>{e.forEach((r=>{r.type===i&&r.trackId===t.id&&ud(e,r,n)}))})),n}const md=cd;function fd(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 s=e.video.facingMode;s=s&&("object"==typeof s?s:{ideal:s});const o=t.version<66;if(s&&("user"===s.exact||"environment"===s.exact||"user"===s.ideal||"environment"===s.ideal)&&(!r.mediaDevices.getSupportedConstraints||!r.mediaDevices.getSupportedConstraints().facingMode||o)){let t;if(delete e.video.facingMode,"environment"===s.exact||"environment"===s.ideal?t=["back","rear"]:"user"!==s.exact&&"user"!==s.ideal||(t=["front"]),t)return r.mediaDevices.enumerateDevices().then((r=>{let o=(r=r.filter((e=>"videoinput"===e.kind))).find((e=>t.some((t=>e.label.toLowerCase().includes(t)))));return!o&&r.length&&t.includes("back")&&(o=r[r.length-1]),o&&(e.video.deviceId=s.exact?{exact:o.deviceId}:{ideal:o.deviceId}),e.video=i(e.video),md("chrome: "+JSON.stringify(e)),n(e)}))}e.video=i(e.video)}return md("chrome: "+JSON.stringify(e)),n(e)},s=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(s(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(s(e))))))}}}function gd(e){e.MediaStream=e.MediaStream||e.webkitMediaStream}function vd(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 sd(e,"track",(e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e)))}function bd(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 yd(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},s=function(e){return new Map(Object.keys(e).map((t=>[t,e[t]])))};if(arguments.length>=2){const i=function(e){r(s(n(e)))};return t.apply(this,[i,e])}return new Promise(((e,r)=>{t.apply(this,[function(t){e(s(n(t)))},r])})).then(r,i)}}function _d(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=>hd(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}),sd(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>hd(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 wd(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 Sd(e,t){if(!e.RTCPeerConnection)return;if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65)return wd(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 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(n.id,"g"),i.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");if(this.getSenders().find((e=>e.track===t)))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};const n=this._streams[r.id];if(n)n.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=s(this,t);e[0].apply(null,[r])},t=>{e[1]&&e[1].apply(null,t)},arguments[2]]):r.apply(this,arguments).then((e=>s(this,e)))}};e.RTCPeerConnection.prototype[t]=i[t]}));const o=e.RTCPeerConnection.prototype.setLocalDescription;e.RTCPeerConnection.prototype.setLocalDescription=function(){return arguments.length&&arguments[0].type?(arguments[0]=function(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})}(this,arguments[0]),o.apply(this,arguments)):o.apply(this,arguments)};const a=Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(e.RTCPeerConnection.prototype,"localDescription",{get(){const e=a.get.apply(this);return""===e.type?e:s(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 Cd(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 Rd(e,t){sd(e,"negotiationneeded",(e=>{const r=e.target;if(!(t.version<72||r.getConfiguration&&"plan-b"===r.getConfiguration().sdpSemantics)||"stable"===r.signalingState)return e}))}var Td=Object.freeze({__proto__:null,fixNegotiationNeeded:Rd,shimAddTrackRemoveTrack:Sd,shimAddTrackRemoveTrackWithNative:wd,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,s=r.video&&r.video.frameRate;return r.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:t,maxFrameRate:s||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"))},shimGetSendersWithDtmf:bd,shimGetStats:yd,shimGetUserMedia:fd,shimMediaStream:gd,shimOnTrack:vd,shimPeerConnection:Cd,shimSenderReceiverGetStats:_d});function Pd(e,t){const r=e&&e.navigator,i=e&&e.MediaStreamTrack;if(r.getUserMedia=function(e,t,i){dd("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 kd(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 Od(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,s]=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,s)}}function Ed(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 Dd(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}),sd(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function Id(e){e.RTCPeerConnection&&!("removeStream"in e.RTCPeerConnection.prototype)&&(e.RTCPeerConnection.prototype.removeStream=function(e){dd("removeStream","removeTrack"),this.getSenders().forEach((t=>{t.track&&e.getTracks().includes(t.track)&&this.removeTrack(t)}))})}function xd(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)}function Md(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.addTransceiver;t&&(e.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];let e=arguments[1]&&arguments[1].sendEncodings;void 0===e&&(e=[]),e=[...e];const r=e.length>0;r&&e.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,t.sendEncodings=e,this.setParametersPromises.push(t.setParameters(r).then((()=>{delete t.sendEncodings})).catch((()=>{delete t.sendEncodings}))))}return i})}function jd(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 Ld(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 Ad(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 Nd=Object.freeze({__proto__:null,shimAddTransceiver:Md,shimCreateAnswer:Ad,shimCreateOffer:Ld,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)})},shimGetParameters:jd,shimGetUserMedia:Pd,shimOnTrack:kd,shimPeerConnection:Od,shimRTCDataChannel:xd,shimReceiverGetStats:Dd,shimRemoveStream:Id,shimSenderGetStats:Ed});function Bd(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 Fd(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 zd(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype,r=t.createOffer,i=t.createAnswer,n=t.setLocalDescription,s=t.setRemoteDescription,o=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=s.apply(this,[e]);return r?(i.then(t,r),Promise.resolve()):i},t.setRemoteDescription=a,a=function(e,t,r){const i=o.apply(this,[e]);return r?(i.then(t,r),Promise.resolve()):i},t.addIceCandidate=a}function Ud(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($d(e))}!t.getUserMedia&&t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=function(e,r,i){t.mediaDevices.getUserMedia(e).then(r,i)}.bind(t))}function $d(e){return e&&void 0!==e.video?Object.assign({},e,{video:pd(e.video)}):e}function Vd(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];void 0===i.urls&&i.url?(dd("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 Gd(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 qd(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",{direction:"recvonly"}),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",{direction:"recvonly"})}return t.apply(this,arguments)}}function Hd(e){"object"!=typeof e||e.AudioContext||(e.AudioContext=e.webkitAudioContext)}var Wd=Object.freeze({__proto__:null,shimAudioContext:Hd,shimCallbacksAPI:zd,shimConstraints:$d,shimCreateOfferLegacy:qd,shimGetUserMedia:Ud,shimLocalStreamsAPI:Bd,shimRTCIceServerUrls:Vd,shimRemoteStreamsAPI:Fd,shimTrackEventTransceiver:Gd}),Kd={exports:{}};!function(e){const t={generateIdentifier:function(){return Math.random().toString(36).substring(2,12)}};t.localCName=t.generateIdentifier(),t.splitLines=function(e){return e.trim().split("\n").map((e=>e.trim()))},t.splitSections=function(e){return e.split("\nm=").map(((e,t)=>(t>0?"m="+e:e).trim()+"\r\n"))},t.getDescription=function(e){const r=t.splitSections(e);return r&&r[0]},t.getMediaSections=function(e){const r=t.splitSections(e);return r.shift(),r},t.matchPrefix=function(e,r){return t.splitLines(e).filter((e=>0===e.indexOf(r)))},t.parseCandidate=function(e){let t;t=0===e.indexOf("a=candidate:")?e.substring(12).split(" "):e.substring(10).split(" ");const r={foundation:t[0],component:{1:"rtp",2:"rtcp"}[t[1]]||t[1],protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],address:t[4],port:parseInt(t[5],10),type:t[7]};for(let e=8;e<t.length;e+=2)switch(t[e]){case"raddr":r.relatedAddress=t[e+1];break;case"rport":r.relatedPort=parseInt(t[e+1],10);break;case"tcptype":r.tcpType=t[e+1];break;case"ufrag":r.ufrag=t[e+1],r.usernameFragment=t[e+1];break;default:void 0===r[t[e]]&&(r[t[e]]=t[e+1])}return r},t.writeCandidate=function(e){const t=[];t.push(e.foundation);const r=e.component;"rtp"===r?t.push(1):"rtcp"===r?t.push(2):t.push(r),t.push(e.protocol.toUpperCase()),t.push(e.priority),t.push(e.address||e.ip),t.push(e.port);const i=e.type;return t.push("typ"),t.push(i),"host"!==i&&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.substring(14).split(" ")},t.parseRtpMap=function(e){let t=e.substring(9).split(" ");const 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){let t=e.payloadType;void 0!==e.preferredPayloadType&&(t=e.preferredPayloadType);const r=e.channels||e.numChannels||1;return"a=rtpmap:"+t+" "+e.name+"/"+e.clockRate+(1!==r?"/"+r:"")+"\r\n"},t.parseExtmap=function(e){const t=e.substring(9).split(" ");return{id:parseInt(t[0],10),direction:t[0].indexOf("/")>0?t[0].split("/")[1]:"sendrecv",uri:t[1],attributes:t.slice(2).join(" ")}},t.writeExtmap=function(e){return"a=extmap:"+(e.id||e.preferredId)+(e.direction&&"sendrecv"!==e.direction?"/"+e.direction:"")+" "+e.uri+(e.attributes?" "+e.attributes:"")+"\r\n"},t.parseFmtp=function(e){const t={};let r;const i=e.substring(e.indexOf(" ")+1).split(";");for(let e=0;e<i.length;e++)r=i[e].trim().split("="),t[r[0].trim()]=r[1];return t},t.writeFmtp=function(e){let t="",r=e.payloadType;if(void 0!==e.preferredPayloadType&&(r=e.preferredPayloadType),e.parameters&&Object.keys(e.parameters).length){const i=[];Object.keys(e.parameters).forEach((t=>{void 0!==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){const t=e.substring(e.indexOf(" ")+1).split(" ");return{type:t.shift(),parameter:t.join(" ")}},t.writeRtcpFb=function(e){let t="",r=e.payloadType;return void 0!==e.preferredPayloadType&&(r=e.preferredPayloadType),e.rtcpFeedback&&e.rtcpFeedback.length&&e.rtcpFeedback.forEach((e=>{t+="a=rtcp-fb:"+r+" "+e.type+(e.parameter&&e.parameter.length?" "+e.parameter:"")+"\r\n"})),t},t.parseSsrcMedia=function(e){const t=e.indexOf(" "),r={ssrc:parseInt(e.substring(7,t),10)},i=e.indexOf(":",t);return i>-1?(r.attribute=e.substring(t+1,i),r.value=e.substring(i+1)):r.attribute=e.substring(t+1),r},t.parseSsrcGroup=function(e){const t=e.substring(13).split(" ");return{semantics:t.shift(),ssrcs:t.map((e=>parseInt(e,10)))}},t.getMid=function(e){const r=t.matchPrefix(e,"a=mid:")[0];if(r)return r.substring(6)},t.parseFingerprint=function(e){const t=e.substring(14).split(" ");return{algorithm:t[0].toLowerCase(),value:t[1].toUpperCase()}},t.getDtlsParameters=function(e,r){return{role:"auto",fingerprints:t.matchPrefix(e+r,"a=fingerprint:").map(t.parseFingerprint)}},t.writeDtlsParameters=function(e,t){let r="a=setup:"+t+"\r\n";return e.fingerprints.forEach((e=>{r+="a=fingerprint:"+e.algorithm+" "+e.value+"\r\n"})),r},t.parseCryptoLine=function(e){const t=e.substring(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;const t=e.substring(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){const i=t.matchPrefix(e+r,"a=ice-ufrag:")[0],n=t.matchPrefix(e+r,"a=ice-pwd:")[0];return i&&n?{usernameFragment:i.substring(12),password:n.substring(10)}:null},t.writeIceParameters=function(e){let t="a=ice-ufrag:"+e.usernameFragment+"\r\na=ice-pwd:"+e.password+"\r\n";return e.iceLite&&(t+="a=ice-lite\r\n"),t},t.parseRtpParameters=function(e){const r={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},i=t.splitLines(e)[0].split(" ");r.profile=i[2];for(let n=3;n<i.length;n++){const s=i[n],o=t.matchPrefix(e,"a=rtpmap:"+s+" ")[0];if(o){const i=t.parseRtpMap(o),n=t.matchPrefix(e,"a=fmtp:"+s+" ");switch(i.parameters=n.length?t.parseFmtp(n[0]):{},i.rtcpFeedback=t.matchPrefix(e,"a=rtcp-fb:"+s+" ").map(t.parseRtcpFb),r.codecs.push(i),i.name.toUpperCase()){case"RED":case"ULPFEC":r.fecMechanisms.push(i.name.toUpperCase())}}}t.matchPrefix(e,"a=extmap:").forEach((e=>{r.headerExtensions.push(t.parseExtmap(e))}));const n=t.matchPrefix(e,"a=rtcp-fb:* ").map(t.parseRtcpFb);return r.codecs.forEach((e=>{n.forEach((t=>{e.rtcpFeedback.find((e=>e.type===t.type&&e.parameter===t.parameter))||e.rtcpFeedback.push(t)}))})),r},t.writeRtpDescription=function(e,r){let i="";i+="m="+e+" ",i+=r.codecs.length>0?"9":"0",i+=" "+(r.profile||"UDP/TLS/RTP/SAVPF")+" ",i+=r.codecs.map((e=>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((e=>{i+=t.writeRtpMap(e),i+=t.writeFmtp(e),i+=t.writeRtcpFb(e)}));let n=0;return r.codecs.forEach((e=>{e.maxptime>n&&(n=e.maxptime)})),n>0&&(i+="a=maxptime:"+n+"\r\n"),r.headerExtensions&&r.headerExtensions.forEach((e=>{i+=t.writeExtmap(e)})),i},t.parseRtpEncodingParameters=function(e){const r=[],i=t.parseRtpParameters(e),n=-1!==i.fecMechanisms.indexOf("RED"),s=-1!==i.fecMechanisms.indexOf("ULPFEC"),o=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"cname"===e.attribute)),a=o.length>0&&o[0].ssrc;let c;const d=t.matchPrefix(e,"a=ssrc-group:FID").map((e=>e.substring(17).split(" ").map((e=>parseInt(e,10)))));d.length>0&&d[0].length>1&&d[0][0]===a&&(c=d[0][1]),i.codecs.forEach((e=>{if("RTX"===e.name.toUpperCase()&&e.parameters.apt){let t={ssrc:a,codecPayloadType:parseInt(e.parameters.apt,10)};a&&c&&(t.rtx={ssrc:c}),r.push(t),n&&(t=JSON.parse(JSON.stringify(t)),t.fec={ssrc:a,mechanism:s?"red+ulpfec":"red"},r.push(t))}})),0===r.length&&a&&r.push({ssrc:a});let l=t.matchPrefix(e,"b=");return l.length&&(l=0===l[0].indexOf("b=TIAS:")?parseInt(l[0].substring(7),10):0===l[0].indexOf("b=AS:")?1e3*parseInt(l[0].substring(5),10)*.95-16e3:void 0,r.forEach((e=>{e.maxBitrate=l}))),r},t.parseRtcpParameters=function(e){const r={},i=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"cname"===e.attribute))[0];i&&(r.cname=i.value,r.ssrc=i.ssrc);const n=t.matchPrefix(e,"a=rtcp-rsize");r.reducedSize=n.length>0,r.compound=0===n.length;const s=t.matchPrefix(e,"a=rtcp-mux");return r.mux=s.length>0,r},t.writeRtcpParameters=function(e){let t="";return e.reducedSize&&(t+="a=rtcp-rsize\r\n"),e.mux&&(t+="a=rtcp-mux\r\n"),void 0!==e.ssrc&&e.cname&&(t+="a=ssrc:"+e.ssrc+" cname:"+e.cname+"\r\n"),t},t.parseMsid=function(e){let r;const i=t.matchPrefix(e,"a=msid:");if(1===i.length)return r=i[0].substring(7).split(" "),{stream:r[0],track:r[1]};const n=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"msid"===e.attribute));return n.length>0?(r=n[0].value.split(" "),{stream:r[0],track:r[1]}):void 0},t.parseSctpDescription=function(e){const r=t.parseMLine(e),i=t.matchPrefix(e,"a=max-message-size:");let n;i.length>0&&(n=parseInt(i[0].substring(19),10)),isNaN(n)&&(n=65536);const s=t.matchPrefix(e,"a=sctp-port:");if(s.length>0)return{port:parseInt(s[0].substring(12),10),protocol:r.fmt,maxMessageSize:n};const o=t.matchPrefix(e,"a=sctpmap:");if(o.length>0){const e=o[0].substring(10).split(" ");return{port:parseInt(e[0],10),protocol:e[1],maxMessageSize:n}}},t.writeSctpDescription=function(e,t){let 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,22)},t.writeSessionBoilerplate=function(e,r,i){let n;const s=void 0!==r?r:2;n=e||t.generateSessionId();return"v=0\r\no="+(i||"thisisadapterortc")+" "+n+" "+s+" IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},t.getDirection=function(e,r){const i=t.splitLines(e);for(let e=0;e<i.length;e++)switch(i[e]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return i[e].substring(2)}return r?t.getDirection(r):"sendrecv"},t.getKind=function(e){return t.splitLines(e)[0].split(" ")[0].substring(2)},t.isRejected=function(e){return"0"===e.split(" ",2)[1]},t.parseMLine=function(e){const r=t.splitLines(e)[0].substring(2).split(" ");return{kind:r[0],port:parseInt(r[1],10),protocol:r[2],fmt:r.slice(3).join(" ")}},t.parseOLine=function(e){const r=t.matchPrefix(e,"o=")[0].substring(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;const r=t.splitLines(e);for(let e=0;e<r.length;e++)if(r[e].length<2||"="!==r[e].charAt(1))return!1;return!0},e.exports=t}(Kd);var Jd=Kd.exports,Qd=o(Jd),Zd=i({__proto__:null,default:Qd},[Jd]);function Yd(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.substring(2)),e.candidate&&e.candidate.length){const r=new t(e),i=Qd.parseCandidate(e.candidate);for(const e in i)e in r||Object.defineProperty(r,e,{value:i[e]});return r.toJSON=function(){return{candidate:r.candidate,sdpMid:r.sdpMid,sdpMLineIndex:r.sdpMLineIndex,usernameFragment:r.usernameFragment}},r}return new t(e)},e.RTCIceCandidate.prototype=t.prototype,sd(e,"icecandidate",(t=>(t.candidate&&Object.defineProperty(t,"candidate",{value:new e.RTCIceCandidate(t.candidate),writable:"false"}),t)))}function Xd(e){!e.RTCIceCandidate||e.RTCIceCandidate&&"relayProtocol"in e.RTCIceCandidate.prototype||sd(e,"icecandidate",(e=>{if(e.candidate){const t=Qd.parseCandidate(e.candidate.candidate);"relay"===t.type&&(e.candidate.relayProtocol={0:"tls",1:"tcp",2:"udp"}[t.priority>>24])}return e}))}function el(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=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(function(e){if(!e||!e.sdp)return!1;const t=Qd.splitSections(e.sdp);return t.shift(),t.some((e=>{const t=Qd.parseMLine(e);return t&&"application"===t.kind&&-1!==t.protocol.indexOf("SCTP")}))}(arguments[0])){const e=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}(arguments[0]),r=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}(e),i=function(e,r){let i=65536;"firefox"===t.browser&&57===t.version&&(i=65535);const n=Qd.matchPrefix(e.sdp,"a=max-message-size:");return n.length>0?i=parseInt(n[0].substring(19),10):"firefox"===t.browser&&-1!==r&&(i=2147483637),i}(arguments[0],e);let n;n=0===r&&0===i?Number.POSITIVE_INFINITY:0===r||0===i?Math.max(r,i):Math.min(r,i);const s={};Object.defineProperty(s,"maxMessageSize",{get:()=>n}),this._sctp=s}return r.apply(this,arguments)}}function tl(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},sd(e,"datachannel",(e=>(t(e.channel,e.target),e)))}function rl(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 il(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 nl(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())})}function sl(e,t){if(!e.RTCPeerConnection||!e.RTCPeerConnection.prototype)return;const r=e.RTCPeerConnection.prototype.setLocalDescription;r&&0!==r.length&&(e.RTCPeerConnection.prototype.setLocalDescription=function(){let e=arguments[0]||{};if("object"!=typeof e||e.type&&e.sdp)return r.apply(this,arguments);if(e={type:e.type,sdp:e.sdp},!e.type)switch(this.signalingState){case"stable":case"have-local-offer":case"have-remote-pranswer":e.type="offer";break;default:e.type="answer"}if(e.sdp||"offer"!==e.type&&"answer"!==e.type)return r.apply(this,[e]);return("offer"===e.type?this.createOffer:this.createAnswer).apply(this).then((e=>r.apply(this,[e])))})}var ol=Object.freeze({__proto__:null,removeExtmapAllowMixed:il,shimAddIceCandidateNullOrEmpty:nl,shimConnectionState:rl,shimMaxMessageSize:el,shimParameterlessSetLocalDescription:sl,shimRTCIceCandidate:Yd,shimRTCIceCandidateRelayProtocol:Xd,shimSendThrowTypeError:tl});const al=function({window:e}={},t={shimChrome:!0,shimFirefox:!0,shimSafari:!0}){const r=cd,i=function(e){const t={browser:null,version:null};if(void 0===e||!e.navigator||!e.navigator.userAgent)return t.browser="Not a browser.",t;const{navigator:r}=e;if(r.mozGetUserMedia)t.browser="firefox",t.version=nd(r.userAgent,/Firefox\/(\d+)\./,1);else if(r.webkitGetUserMedia||!1===e.isSecureContext&&e.webkitRTCPeerConnection)t.browser="chrome",t.version=nd(r.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else{if(!e.RTCPeerConnection||!r.userAgent.match(/AppleWebKit\/(\d+)\./))return t.browser="Not a supported browser.",t;t.browser="safari",t.version=nd(r.userAgent,/AppleWebKit\/(\d+)\./,1),t.supportsUnifiedPlan=e.RTCRtpTransceiver&&"currentDirection"in e.RTCRtpTransceiver.prototype}return t}(e),n={browserDetails:i,commonShim:ol,extractVersion:nd,disableLog:od,disableWarnings:ad,sdp:Zd};switch(i.browser){case"chrome":if(!Td||!Cd||!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=Td,nl(e,i),sl(e),fd(e,i),gd(e),Cd(e,i),vd(e),Sd(e,i),bd(e),yd(e),_d(e),Rd(e,i),Yd(e),Xd(e),rl(e),el(e,i),tl(e),il(e,i);break;case"firefox":if(!Nd||!Od||!t.shimFirefox)return r("Firefox shim is not included in this adapter release."),n;r("adapter.js shimming firefox."),n.browserShim=Nd,nl(e,i),sl(e),Pd(e,i),Od(e,i),kd(e),Id(e),Ed(e),Dd(e),xd(e),Md(e),jd(e),Ld(e),Ad(e),Yd(e),rl(e),el(e,i),tl(e);break;case"safari":if(!Wd||!t.shimSafari)return r("Safari shim is not included in this adapter release."),n;r("adapter.js shimming safari."),n.browserShim=Wd,nl(e,i),sl(e),Vd(e),qd(e),zd(e),Bd(e),Fd(e),Gd(e),Ud(e),Hd(e),Yd(e),Xd(e),el(e,i),tl(e),il(e,i);break;default:r("Unsupported browser!")}return n}({window:"undefined"==typeof window?void 0:window});function cl(e){return{id:e.id,tracks:e.getTracks().map((function(e){return{id:e.id,kind:e.kind,label:e.label,enabled:e.enabled,muted:e.muted,readyState:e.readyState}}))}}var dl=function(e,t,r){var i=0,n=!!window.mozRTCPeerConnection,s=!!window.RTCIceGatherer,o={};if(r.forEach((function(r){if(window[r+"RTCPeerConnection"]&&("webkit"!==r||!s)){var a=window[r+"RTCPeerConnection"],c=function(r,c){var d=new a(r,c),l="PC_"+i++;d.__rtcStatsId=l,r||(r={nullConfig:!0}),((r=JSON.parse(JSON.stringify(r)))&&r.iceServers||[]).forEach((function(e){delete e.credential})),r.browserType=n?"moz":s?"edge":"webkit",e("create",l,r),c&&e("constraints",l,c),d.addEventListener("icecandidate",(function(t){e("onicecandidate",l,t.candidate)})),d.addEventListener("addstream",(function(t){e("onaddstream",l,t.stream.id+" "+t.stream.getTracks().map((function(e){return e.kind+":"+e.id})))})),d.addEventListener("track",(function(t){e("ontrack",l,t.track.kind+":"+t.track.id+" "+t.streams.map((function(e){return"stream:"+e.id})))})),d.addEventListener("removestream",(function(t){e("onremovestream",l,t.stream.id+" "+t.stream.getTracks().map((function(e){return e.kind+":"+e.id})))})),d.addEventListener("signalingstatechange",(function(){e("onsignalingstatechange",l,d.signalingState)})),d.addEventListener("iceconnectionstatechange",(function(){e("oniceconnectionstatechange",l,d.iceConnectionState)})),d.addEventListener("icegatheringstatechange",(function(){e("onicegatheringstatechange",l,d.iceGatheringState)})),d.addEventListener("connectionstatechange",(function(){e("onconnectionstatechange",l,d.connectionState)})),d.addEventListener("negotiationneeded",(function(){e("onnegotiationneeded",l,void 0)})),d.addEventListener("datachannel",(function(t){e("ondatachannel",l,[t.channel.id,t.channel.label])}));var p=function(){d.getStats(null).then((function(t){var r=function(e){if(!e.entries)return e;var t={};return e.forEach((function(e,r){t[r]=e})),t}(t),i=JSON.parse(JSON.stringify(r));e("getstats",l,function(e,t){t=JSON.parse(JSON.stringify(t)),Object.keys(t).forEach((function(r){var i=t[r];delete i.id,e[r]&&Object.keys(i).forEach((function(n){i[n]===e[r][n]&&delete t[r][n],(0===Object.keys(i).length||1===Object.keys(i).length&&i.timestamp)&&delete t[r]}))}));var r=-1/0;return Object.keys(t).forEach((function(e){var i=t[e];i.timestamp>r&&(r=i.timestamp)})),Object.keys(t).forEach((function(e){var i=t[e];i.timestamp===r&&(i.timestamp=0)})),t.timestamp=r,t}(o[l]||{},r)),o[l]=i}))};if(!s&&t)var u=window.setInterval((function(){"closed"!==d.signalingState?p():window.clearInterval(u)}),t);return s||d.addEventListener("connectionstatechange",(function(){"connected"!==d.connectionState&&"failed"!==d.connectionState||p()})),d};["createDataChannel","close"].forEach((function(t){var r=a.prototype[t];r&&(a.prototype[t]=function(){return e(t,this.__rtcStatsId,arguments),r.apply(this,arguments)})})),["addStream","removeStream"].forEach((function(t){var r=a.prototype[t];r&&(a.prototype[t]=function(){var i=arguments[0],n=i.getTracks().map((function(e){return e.kind+":"+e.id})).join(",");return e(t,this.__rtcStatsId,i.id+" "+n),r.apply(this,arguments)})})),["addTrack"].forEach((function(t){var r=a.prototype[t];r&&(a.prototype[t]=function(){var i=arguments[0],n=[].slice.call(arguments,1);return e(t,this.__rtcStatsId,i.kind+":"+i.id+" "+(n.map((function(e){return"stream:"+e.id})).join(";")||"-")),r.apply(this,arguments)})})),["removeTrack"].forEach((function(t){var r=a.prototype[t];r&&(a.prototype[t]=function(){var i=arguments[0].track;return e(t,this.__rtcStatsId,i?i.kind+":"+i.id:"null"),r.apply(this,arguments)})})),["createOffer","createAnswer"].forEach((function(t){var r=a.prototype[t];r&&(a.prototype[t]=function(){var i,n=this.__rtcStatsId,s=arguments;return 1===arguments.length&&"object"==typeof arguments[0]?i=arguments[0]:3===arguments.length&&"object"==typeof arguments[2]&&(i=arguments[2]),e(t,this.__rtcStatsId,i),r.apply(this,i?[i]:void 0).then((function(r){if(e(t+"OnSuccess",n,r),!(s.length>0&&"function"==typeof s[0]))return r;s[0].apply(null,[r])}),(function(r){if(e(t+"OnFailure",n,r.toString()),!(s.length>1&&"function"==typeof s[1]))throw r;s[1].apply(null,[r])}))})})),["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){var r=a.prototype[t];r&&(a.prototype[t]=function(){var i=this.__rtcStatsId,n=arguments;return e(t,this.__rtcStatsId,n[0]),r.apply(this,[n[0]]).then((function(){e(t+"OnSuccess",i,void 0),n.length>=2&&"function"==typeof n[1]&&n[1].apply(null,[])}),(function(r){if(e(t+"OnFailure",i,r.toString()),!(n.length>=3&&"function"==typeof n[2]))throw r;n[2].apply(null,[r])}))})})),a.generateCertificate&&Object.defineProperty(c,"generateCertificate",{get:function(){return arguments.length?a.generateCertificate.apply(null,arguments):a.generateCertificate}}),window[r+"RTCPeerConnection"]=c,window[r+"RTCPeerConnection"].prototype=a.prototype}})),r.forEach((function(t){var r=t+(t.length?"GetUserMedia":"getUserMedia");if(navigator[r]){var i=navigator[r].bind(navigator);navigator[r]=function(){e("getUserMedia",null,arguments[0]);var t=arguments[1],r=arguments[2];i(arguments[0],(function(r){e("getUserMediaOnSuccess",null,cl(r)),t&&t(r)}),(function(t){e("getUserMediaOnFailure",null,t.name),r&&r(t)}))}.bind(navigator)}})),navigator.mediaDevices&&navigator.mediaDevices.getUserMedia){var a=navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);navigator.mediaDevices.getUserMedia=function(){return e("navigator.mediaDevices.getUserMedia",null,arguments[0]),a.apply(navigator.mediaDevices,arguments).then((function(t){return e("navigator.mediaDevices.getUserMediaOnSuccess",null,cl(t)),t}),(function(t){return e("navigator.mediaDevices.getUserMediaOnFailure",null,t.name),Promise.reject(t)}))}.bind(navigator.mediaDevices)}if(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia){var c=navigator.mediaDevices.getDisplayMedia.bind(navigator.mediaDevices);navigator.mediaDevices.getDisplayMedia=function(){return e("navigator.mediaDevices.getDisplayMedia",null,arguments[0]),c.apply(navigator.mediaDevices,arguments).then((function(t){return e("navigator.mediaDevices.getDisplayMediaOnSuccess",null,cl(t)),t}),(function(t){return e("navigator.mediaDevices.getDisplayMediaOnFailure",null,t.name),Promise.reject(t)}))}.bind(navigator.mediaDevices)}return{resetDelta(){o={}}}},ll=o(dl);let pl;const ul=new Uint8Array(16);function hl(){if(!pl&&(pl="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!pl))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return pl(ul)}const ml=[];for(let KS=0;KS<256;++KS)ml.push((KS+256).toString(16).slice(1));var fl={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function gl(e,t,r){if(fl.randomUUID&&!t&&!e)return fl.randomUUID();const i=(e=e||{}).random||(e.rng||hl)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,t){r=r||0;for(let e=0;e<16;++e)t[r+e]=i[e];return t}return function(e,t=0){return ml[e[t+0]]+ml[e[t+1]]+ml[e[t+2]]+ml[e[t+3]]+"-"+ml[e[t+4]]+ml[e[t+5]]+"-"+ml[e[t+6]]+ml[e[t+7]]+"-"+ml[e[t+8]]+ml[e[t+9]]+"-"+ml[e[t+10]]+ml[e[t+11]]+ml[e[t+12]]+ml[e[t+13]]+ml[e[t+14]]+ml[e[t+15]]}(i)}var vl={},bl={},yl={};Object.defineProperty(yl,"__esModule",{value:!0}),yl.isCorrect=yl.isInSubnet=void 0,yl.isInSubnet=function(e){return!(this.subnetMask<e.subnetMask)&&this.mask(e.subnetMask)===e.mask()},yl.isCorrect=function(e){return function(){return this.addressMinusSuffix===this.correctForm()&&(this.subnetMask===e&&!this.parsedSubnet||this.parsedSubnet===String(this.subnetMask))}};var _l={};Object.defineProperty(_l,"__esModule",{value:!0}),_l.RE_SUBNET_STRING=_l.RE_ADDRESS=_l.GROUPS=_l.BITS=void 0,_l.BITS=32,_l.GROUPS=4,_l.RE_ADDRESS=/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/g,_l.RE_SUBNET_STRING=/\/\d{1,2}$/;var wl={};Object.defineProperty(wl,"__esModule",{value:!0}),wl.AddressError=void 0;class Sl extends Error{constructor(e,t){super(e),this.name="AddressError",null!==t&&(this.parseMessage=t)}}wl.AddressError=Sl;var Cl,Rl={exports:{}};Cl=Rl,function(){var e;function t(e,t,r){null!=e&&("number"==typeof e?this.fromNumber(e,t,r):null==t&&"string"!=typeof e?this.fromString(e,256):this.fromString(e,t))}function r(){return new t(null)}var i="undefined"!=typeof navigator;i&&"Microsoft Internet Explorer"==navigator.appName?(t.prototype.am=function(e,t,r,i,n,s){for(var o=32767&t,a=t>>15;--s>=0;){var c=32767&this[e],d=this[e++]>>15,l=a*c+d*o;n=((c=o*c+((32767&l)<<15)+r[i]+(1073741823&n))>>>30)+(l>>>15)+a*d+(n>>>30),r[i++]=1073741823&c}return n},e=30):i&&"Netscape"!=navigator.appName?(t.prototype.am=function(e,t,r,i,n,s){for(;--s>=0;){var o=t*this[e++]+r[i]+n;n=Math.floor(o/67108864),r[i++]=67108863&o}return n},e=26):(t.prototype.am=function(e,t,r,i,n,s){for(var o=16383&t,a=t>>14;--s>=0;){var c=16383&this[e],d=this[e++]>>14,l=a*c+d*o;n=((c=o*c+((16383&l)<<14)+r[i]+n)>>28)+(l>>14)+a*d,r[i++]=268435455&c}return n},e=28),t.prototype.DB=e,t.prototype.DM=(1<<e)-1,t.prototype.DV=1<<e,t.prototype.FV=Math.pow(2,52),t.prototype.F1=52-e,t.prototype.F2=2*e-52;var n,s,o="0123456789abcdefghijklmnopqrstuvwxyz",a=new Array;for(n="0".charCodeAt(0),s=0;s<=9;++s)a[n++]=s;for(n="a".charCodeAt(0),s=10;s<36;++s)a[n++]=s;for(n="A".charCodeAt(0),s=10;s<36;++s)a[n++]=s;function c(e){return o.charAt(e)}function d(e,t){var r=a[e.charCodeAt(t)];return null==r?-1:r}function l(e){var t=r();return t.fromInt(e),t}function p(e){var t,r=1;return 0!=(t=e>>>16)&&(e=t,r+=16),0!=(t=e>>8)&&(e=t,r+=8),0!=(t=e>>4)&&(e=t,r+=4),0!=(t=e>>2)&&(e=t,r+=2),0!=(t=e>>1)&&(e=t,r+=1),r}function u(e){this.m=e}function h(e){this.m=e,this.mp=e.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<<e.DB-15)-1,this.mt2=2*e.t}function m(e,t){return e&t}function f(e,t){return e|t}function g(e,t){return e^t}function v(e,t){return e&~t}function b(e){if(0==e)return-1;var t=0;return 0==(65535&e)&&(e>>=16,t+=16),0==(255&e)&&(e>>=8,t+=8),0==(15&e)&&(e>>=4,t+=4),0==(3&e)&&(e>>=2,t+=2),0==(1&e)&&++t,t}function y(e){for(var t=0;0!=e;)e&=e-1,++t;return t}function _(){}function w(e){return e}function S(e){this.r2=r(),this.q3=r(),t.ONE.dlShiftTo(2*e.t,this.r2),this.mu=this.r2.divide(e),this.m=e}u.prototype.convert=function(e){return e.s<0||e.compareTo(this.m)>=0?e.mod(this.m):e},u.prototype.revert=function(e){return e},u.prototype.reduce=function(e){e.divRemTo(this.m,null,e)},u.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},u.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},h.prototype.convert=function(e){var i=r();return e.abs().dlShiftTo(this.m.t,i),i.divRemTo(this.m,null,i),e.s<0&&i.compareTo(t.ZERO)>0&&this.m.subTo(i,i),i},h.prototype.revert=function(e){var t=r();return e.copyTo(t),this.reduce(t),t},h.prototype.reduce=function(e){for(;e.t<=this.mt2;)e[e.t++]=0;for(var t=0;t<this.m.t;++t){var r=32767&e[t],i=r*this.mpl+((r*this.mph+(e[t]>>15)*this.mpl&this.um)<<15)&e.DM;for(e[r=t+this.m.t]+=this.m.am(0,i,e,t,0,this.m.t);e[r]>=e.DV;)e[r]-=e.DV,e[++r]++}e.clamp(),e.drShiftTo(this.m.t,e),e.compareTo(this.m)>=0&&e.subTo(this.m,e)},h.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},h.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},t.prototype.copyTo=function(e){for(var t=this.t-1;t>=0;--t)e[t]=this[t];e.t=this.t,e.s=this.s},t.prototype.fromInt=function(e){this.t=1,this.s=e<0?-1:0,e>0?this[0]=e:e<-1?this[0]=e+this.DV:this.t=0},t.prototype.fromString=function(e,r){var i;if(16==r)i=4;else if(8==r)i=3;else if(256==r)i=8;else if(2==r)i=1;else if(32==r)i=5;else{if(4!=r)return void this.fromRadix(e,r);i=2}this.t=0,this.s=0;for(var n=e.length,s=!1,o=0;--n>=0;){var a=8==i?255&e[n]:d(e,n);a<0?"-"==e.charAt(n)&&(s=!0):(s=!1,0==o?this[this.t++]=a:o+i>this.DB?(this[this.t-1]|=(a&(1<<this.DB-o)-1)<<o,this[this.t++]=a>>this.DB-o):this[this.t-1]|=a<<o,(o+=i)>=this.DB&&(o-=this.DB))}8==i&&0!=(128&e[0])&&(this.s=-1,o>0&&(this[this.t-1]|=(1<<this.DB-o)-1<<o)),this.clamp(),s&&t.ZERO.subTo(this,this)},t.prototype.clamp=function(){for(var e=this.s&this.DM;this.t>0&&this[this.t-1]==e;)--this.t},t.prototype.dlShiftTo=function(e,t){var r;for(r=this.t-1;r>=0;--r)t[r+e]=this[r];for(r=e-1;r>=0;--r)t[r]=0;t.t=this.t+e,t.s=this.s},t.prototype.drShiftTo=function(e,t){for(var r=e;r<this.t;++r)t[r-e]=this[r];t.t=Math.max(this.t-e,0),t.s=this.s},t.prototype.lShiftTo=function(e,t){var r,i=e%this.DB,n=this.DB-i,s=(1<<n)-1,o=Math.floor(e/this.DB),a=this.s<<i&this.DM;for(r=this.t-1;r>=0;--r)t[r+o+1]=this[r]>>n|a,a=(this[r]&s)<<i;for(r=o-1;r>=0;--r)t[r]=0;t[o]=a,t.t=this.t+o+1,t.s=this.s,t.clamp()},t.prototype.rShiftTo=function(e,t){t.s=this.s;var r=Math.floor(e/this.DB);if(r>=this.t)t.t=0;else{var i=e%this.DB,n=this.DB-i,s=(1<<i)-1;t[0]=this[r]>>i;for(var o=r+1;o<this.t;++o)t[o-r-1]|=(this[o]&s)<<n,t[o-r]=this[o]>>i;i>0&&(t[this.t-r-1]|=(this.s&s)<<n),t.t=this.t-r,t.clamp()}},t.prototype.subTo=function(e,t){for(var r=0,i=0,n=Math.min(e.t,this.t);r<n;)i+=this[r]-e[r],t[r++]=i&this.DM,i>>=this.DB;if(e.t<this.t){for(i-=e.s;r<this.t;)i+=this[r],t[r++]=i&this.DM,i>>=this.DB;i+=this.s}else{for(i+=this.s;r<e.t;)i-=e[r],t[r++]=i&this.DM,i>>=this.DB;i-=e.s}t.s=i<0?-1:0,i<-1?t[r++]=this.DV+i:i>0&&(t[r++]=i),t.t=r,t.clamp()},t.prototype.multiplyTo=function(e,r){var i=this.abs(),n=e.abs(),s=i.t;for(r.t=s+n.t;--s>=0;)r[s]=0;for(s=0;s<n.t;++s)r[s+i.t]=i.am(0,n[s],r,s,0,i.t);r.s=0,r.clamp(),this.s!=e.s&&t.ZERO.subTo(r,r)},t.prototype.squareTo=function(e){for(var t=this.abs(),r=e.t=2*t.t;--r>=0;)e[r]=0;for(r=0;r<t.t-1;++r){var i=t.am(r,t[r],e,2*r,0,1);(e[r+t.t]+=t.am(r+1,2*t[r],e,2*r+1,i,t.t-r-1))>=t.DV&&(e[r+t.t]-=t.DV,e[r+t.t+1]=1)}e.t>0&&(e[e.t-1]+=t.am(r,t[r],e,2*r,0,1)),e.s=0,e.clamp()},t.prototype.divRemTo=function(e,i,n){var s=e.abs();if(!(s.t<=0)){var o=this.abs();if(o.t<s.t)return null!=i&&i.fromInt(0),void(null!=n&&this.copyTo(n));null==n&&(n=r());var a=r(),c=this.s,d=e.s,l=this.DB-p(s[s.t-1]);l>0?(s.lShiftTo(l,a),o.lShiftTo(l,n)):(s.copyTo(a),o.copyTo(n));var u=a.t,h=a[u-1];if(0!=h){var m=h*(1<<this.F1)+(u>1?a[u-2]>>this.F2:0),f=this.FV/m,g=(1<<this.F1)/m,v=1<<this.F2,b=n.t,y=b-u,_=null==i?r():i;for(a.dlShiftTo(y,_),n.compareTo(_)>=0&&(n[n.t++]=1,n.subTo(_,n)),t.ONE.dlShiftTo(u,_),_.subTo(a,a);a.t<u;)a[a.t++]=0;for(;--y>=0;){var w=n[--b]==h?this.DM:Math.floor(n[b]*f+(n[b-1]+v)*g);if((n[b]+=a.am(0,w,n,y,0,u))<w)for(a.dlShiftTo(y,_),n.subTo(_,n);n[b]<--w;)n.subTo(_,n)}null!=i&&(n.drShiftTo(u,i),c!=d&&t.ZERO.subTo(i,i)),n.t=u,n.clamp(),l>0&&n.rShiftTo(l,n),c<0&&t.ZERO.subTo(n,n)}}},t.prototype.invDigit=function(){if(this.t<1)return 0;var e=this[0];if(0==(1&e))return 0;var t=3&e;return(t=(t=(t=(t=t*(2-(15&e)*t)&15)*(2-(255&e)*t)&255)*(2-((65535&e)*t&65535))&65535)*(2-e*t%this.DV)%this.DV)>0?this.DV-t:-t},t.prototype.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},t.prototype.exp=function(e,i){if(e>4294967295||e<1)return t.ONE;var n=r(),s=r(),o=i.convert(this),a=p(e)-1;for(o.copyTo(n);--a>=0;)if(i.sqrTo(n,s),(e&1<<a)>0)i.mulTo(s,o,n);else{var c=n;n=s,s=c}return i.revert(n)},t.prototype.toString=function(e){if(this.s<0)return"-"+this.negate().toString(e);var t;if(16==e)t=4;else if(8==e)t=3;else if(2==e)t=1;else if(32==e)t=5;else{if(4!=e)return this.toRadix(e);t=2}var r,i=(1<<t)-1,n=!1,s="",o=this.t,a=this.DB-o*this.DB%t;if(o-- >0)for(a<this.DB&&(r=this[o]>>a)>0&&(n=!0,s=c(r));o>=0;)a<t?(r=(this[o]&(1<<a)-1)<<t-a,r|=this[--o]>>(a+=this.DB-t)):(r=this[o]>>(a-=t)&i,a<=0&&(a+=this.DB,--o)),r>0&&(n=!0),n&&(s+=c(r));return n?s:"0"},t.prototype.negate=function(){var e=r();return t.ZERO.subTo(this,e),e},t.prototype.abs=function(){return this.s<0?this.negate():this},t.prototype.compareTo=function(e){var t=this.s-e.s;if(0!=t)return t;var r=this.t;if(0!=(t=r-e.t))return this.s<0?-t:t;for(;--r>=0;)if(0!=(t=this[r]-e[r]))return t;return 0},t.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+p(this[this.t-1]^this.s&this.DM)},t.prototype.mod=function(e){var i=r();return this.abs().divRemTo(e,null,i),this.s<0&&i.compareTo(t.ZERO)>0&&e.subTo(i,i),i},t.prototype.modPowInt=function(e,t){var r;return r=e<256||t.isEven()?new u(t):new h(t),this.exp(e,r)},t.ZERO=l(0),t.ONE=l(1),_.prototype.convert=w,_.prototype.revert=w,_.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r)},_.prototype.sqrTo=function(e,t){e.squareTo(t)},S.prototype.convert=function(e){if(e.s<0||e.t>2*this.m.t)return e.mod(this.m);if(e.compareTo(this.m)<0)return e;var t=r();return e.copyTo(t),this.reduce(t),t},S.prototype.revert=function(e){return e},S.prototype.reduce=function(e){for(e.drShiftTo(this.m.t-1,this.r2),e.t>this.m.t+1&&(e.t=this.m.t+1,e.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);e.compareTo(this.r2)<0;)e.dAddOffset(1,this.m.t+1);for(e.subTo(this.r2,e);e.compareTo(this.m)>=0;)e.subTo(this.m,e)},S.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},S.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)};var C,R,T,P=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],k=(1<<26)/P[P.length-1];function O(){var e;e=(new Date).getTime(),R[T++]^=255&e,R[T++]^=e>>8&255,R[T++]^=e>>16&255,R[T++]^=e>>24&255,T>=L&&(T-=L)}if(t.prototype.chunkSize=function(e){return Math.floor(Math.LN2*this.DB/Math.log(e))},t.prototype.toRadix=function(e){if(null==e&&(e=10),0==this.signum()||e<2||e>36)return"0";var t=this.chunkSize(e),i=Math.pow(e,t),n=l(i),s=r(),o=r(),a="";for(this.divRemTo(n,s,o);s.signum()>0;)a=(i+o.intValue()).toString(e).substr(1)+a,s.divRemTo(n,s,o);return o.intValue().toString(e)+a},t.prototype.fromRadix=function(e,r){this.fromInt(0),null==r&&(r=10);for(var i=this.chunkSize(r),n=Math.pow(r,i),s=!1,o=0,a=0,c=0;c<e.length;++c){var l=d(e,c);l<0?"-"==e.charAt(c)&&0==this.signum()&&(s=!0):(a=r*a+l,++o>=i&&(this.dMultiply(n),this.dAddOffset(a,0),o=0,a=0))}o>0&&(this.dMultiply(Math.pow(r,o)),this.dAddOffset(a,0)),s&&t.ZERO.subTo(this,this)},t.prototype.fromNumber=function(e,r,i){if("number"==typeof r)if(e<2)this.fromInt(1);else for(this.fromNumber(e,i),this.testBit(e-1)||this.bitwiseTo(t.ONE.shiftLeft(e-1),f,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(r);)this.dAddOffset(2,0),this.bitLength()>e&&this.subTo(t.ONE.shiftLeft(e-1),this);else{var n=new Array,s=7&e;n.length=1+(e>>3),r.nextBytes(n),s>0?n[0]&=(1<<s)-1:n[0]=0,this.fromString(n,256)}},t.prototype.bitwiseTo=function(e,t,r){var i,n,s=Math.min(e.t,this.t);for(i=0;i<s;++i)r[i]=t(this[i],e[i]);if(e.t<this.t){for(n=e.s&this.DM,i=s;i<this.t;++i)r[i]=t(this[i],n);r.t=this.t}else{for(n=this.s&this.DM,i=s;i<e.t;++i)r[i]=t(n,e[i]);r.t=e.t}r.s=t(this.s,e.s),r.clamp()},t.prototype.changeBit=function(e,r){var i=t.ONE.shiftLeft(e);return this.bitwiseTo(i,r,i),i},t.prototype.addTo=function(e,t){for(var r=0,i=0,n=Math.min(e.t,this.t);r<n;)i+=this[r]+e[r],t[r++]=i&this.DM,i>>=this.DB;if(e.t<this.t){for(i+=e.s;r<this.t;)i+=this[r],t[r++]=i&this.DM,i>>=this.DB;i+=this.s}else{for(i+=this.s;r<e.t;)i+=e[r],t[r++]=i&this.DM,i>>=this.DB;i+=e.s}t.s=i<0?-1:0,i>0?t[r++]=i:i<-1&&(t[r++]=this.DV+i),t.t=r,t.clamp()},t.prototype.dMultiply=function(e){this[this.t]=this.am(0,e-1,this,0,0,this.t),++this.t,this.clamp()},t.prototype.dAddOffset=function(e,t){if(0!=e){for(;this.t<=t;)this[this.t++]=0;for(this[t]+=e;this[t]>=this.DV;)this[t]-=this.DV,++t>=this.t&&(this[this.t++]=0),++this[t]}},t.prototype.multiplyLowerTo=function(e,t,r){var i,n=Math.min(this.t+e.t,t);for(r.s=0,r.t=n;n>0;)r[--n]=0;for(i=r.t-this.t;n<i;++n)r[n+this.t]=this.am(0,e[n],r,n,0,this.t);for(i=Math.min(e.t,t);n<i;++n)this.am(0,e[n],r,n,0,t-n);r.clamp()},t.prototype.multiplyUpperTo=function(e,t,r){--t;var i=r.t=this.t+e.t-t;for(r.s=0;--i>=0;)r[i]=0;for(i=Math.max(t-this.t,0);i<e.t;++i)r[this.t+i-t]=this.am(t-i,e[i],r,0,0,this.t+i-t);r.clamp(),r.drShiftTo(1,r)},t.prototype.modInt=function(e){if(e<=0)return 0;var t=this.DV%e,r=this.s<0?e-1:0;if(this.t>0)if(0==t)r=this[0]%e;else for(var i=this.t-1;i>=0;--i)r=(t*r+this[i])%e;return r},t.prototype.millerRabin=function(e){var i=this.subtract(t.ONE),n=i.getLowestSetBit();if(n<=0)return!1;var s=i.shiftRight(n);(e=e+1>>1)>P.length&&(e=P.length);for(var o=r(),a=0;a<e;++a){o.fromInt(P[Math.floor(Math.random()*P.length)]);var c=o.modPow(s,this);if(0!=c.compareTo(t.ONE)&&0!=c.compareTo(i)){for(var d=1;d++<n&&0!=c.compareTo(i);)if(0==(c=c.modPowInt(2,this)).compareTo(t.ONE))return!1;if(0!=c.compareTo(i))return!1}}return!0},t.prototype.clone=function(){var e=r();return this.copyTo(e),e},t.prototype.intValue=function(){if(this.s<0){if(1==this.t)return this[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<<this.DB|this[0]},t.prototype.byteValue=function(){return 0==this.t?this.s:this[0]<<24>>24},t.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},t.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},t.prototype.toByteArray=function(){var e=this.t,t=new Array;t[0]=this.s;var r,i=this.DB-e*this.DB%8,n=0;if(e-- >0)for(i<this.DB&&(r=this[e]>>i)!=(this.s&this.DM)>>i&&(t[n++]=r|this.s<<this.DB-i);e>=0;)i<8?(r=(this[e]&(1<<i)-1)<<8-i,r|=this[--e]>>(i+=this.DB-8)):(r=this[e]>>(i-=8)&255,i<=0&&(i+=this.DB,--e)),0!=(128&r)&&(r|=-256),0==n&&(128&this.s)!=(128&r)&&++n,(n>0||r!=this.s)&&(t[n++]=r);return t},t.prototype.equals=function(e){return 0==this.compareTo(e)},t.prototype.min=function(e){return this.compareTo(e)<0?this:e},t.prototype.max=function(e){return this.compareTo(e)>0?this:e},t.prototype.and=function(e){var t=r();return this.bitwiseTo(e,m,t),t},t.prototype.or=function(e){var t=r();return this.bitwiseTo(e,f,t),t},t.prototype.xor=function(e){var t=r();return this.bitwiseTo(e,g,t),t},t.prototype.andNot=function(e){var t=r();return this.bitwiseTo(e,v,t),t},t.prototype.not=function(){for(var e=r(),t=0;t<this.t;++t)e[t]=this.DM&~this[t];return e.t=this.t,e.s=~this.s,e},t.prototype.shiftLeft=function(e){var t=r();return e<0?this.rShiftTo(-e,t):this.lShiftTo(e,t),t},t.prototype.shiftRight=function(e){var t=r();return e<0?this.lShiftTo(-e,t):this.rShiftTo(e,t),t},t.prototype.getLowestSetBit=function(){for(var e=0;e<this.t;++e)if(0!=this[e])return e*this.DB+b(this[e]);return this.s<0?this.t*this.DB:-1},t.prototype.bitCount=function(){for(var e=0,t=this.s&this.DM,r=0;r<this.t;++r)e+=y(this[r]^t);return e},t.prototype.testBit=function(e){var t=Math.floor(e/this.DB);return t>=this.t?0!=this.s:0!=(this[t]&1<<e%this.DB)},t.prototype.setBit=function(e){return this.changeBit(e,f)},t.prototype.clearBit=function(e){return this.changeBit(e,v)},t.prototype.flipBit=function(e){return this.changeBit(e,g)},t.prototype.add=function(e){var t=r();return this.addTo(e,t),t},t.prototype.subtract=function(e){var t=r();return this.subTo(e,t),t},t.prototype.multiply=function(e){var t=r();return this.multiplyTo(e,t),t},t.prototype.divide=function(e){var t=r();return this.divRemTo(e,t,null),t},t.prototype.remainder=function(e){var t=r();return this.divRemTo(e,null,t),t},t.prototype.divideAndRemainder=function(e){var t=r(),i=r();return this.divRemTo(e,t,i),new Array(t,i)},t.prototype.modPow=function(e,t){var i,n,s=e.bitLength(),o=l(1);if(s<=0)return o;i=s<18?1:s<48?3:s<144?4:s<768?5:6,n=s<8?new u(t):t.isEven()?new S(t):new h(t);var a=new Array,c=3,d=i-1,m=(1<<i)-1;if(a[1]=n.convert(this),i>1){var f=r();for(n.sqrTo(a[1],f);c<=m;)a[c]=r(),n.mulTo(f,a[c-2],a[c]),c+=2}var g,v,b=e.t-1,y=!0,_=r();for(s=p(e[b])-1;b>=0;){for(s>=d?g=e[b]>>s-d&m:(g=(e[b]&(1<<s+1)-1)<<d-s,b>0&&(g|=e[b-1]>>this.DB+s-d)),c=i;0==(1&g);)g>>=1,--c;if((s-=c)<0&&(s+=this.DB,--b),y)a[g].copyTo(o),y=!1;else{for(;c>1;)n.sqrTo(o,_),n.sqrTo(_,o),c-=2;c>0?n.sqrTo(o,_):(v=o,o=_,_=v),n.mulTo(_,a[g],o)}for(;b>=0&&0==(e[b]&1<<s);)n.sqrTo(o,_),v=o,o=_,_=v,--s<0&&(s=this.DB-1,--b)}return n.revert(o)},t.prototype.modInverse=function(e){var r=e.isEven();if(this.isEven()&&r||0==e.signum())return t.ZERO;for(var i=e.clone(),n=this.clone(),s=l(1),o=l(0),a=l(0),c=l(1);0!=i.signum();){for(;i.isEven();)i.rShiftTo(1,i),r?(s.isEven()&&o.isEven()||(s.addTo(this,s),o.subTo(e,o)),s.rShiftTo(1,s)):o.isEven()||o.subTo(e,o),o.rShiftTo(1,o);for(;n.isEven();)n.rShiftTo(1,n),r?(a.isEven()&&c.isEven()||(a.addTo(this,a),c.subTo(e,c)),a.rShiftTo(1,a)):c.isEven()||c.subTo(e,c),c.rShiftTo(1,c);i.compareTo(n)>=0?(i.subTo(n,i),r&&s.subTo(a,s),o.subTo(c,o)):(n.subTo(i,n),r&&a.subTo(s,a),c.subTo(o,c))}return 0!=n.compareTo(t.ONE)?t.ZERO:c.compareTo(e)>=0?c.subtract(e):c.signum()<0?(c.addTo(e,c),c.signum()<0?c.add(e):c):c},t.prototype.pow=function(e){return this.exp(e,new _)},t.prototype.gcd=function(e){var t=this.s<0?this.negate():this.clone(),r=e.s<0?e.negate():e.clone();if(t.compareTo(r)<0){var i=t;t=r,r=i}var n=t.getLowestSetBit(),s=r.getLowestSetBit();if(s<0)return t;for(n<s&&(s=n),s>0&&(t.rShiftTo(s,t),r.rShiftTo(s,r));t.signum()>0;)(n=t.getLowestSetBit())>0&&t.rShiftTo(n,t),(n=r.getLowestSetBit())>0&&r.rShiftTo(n,r),t.compareTo(r)>=0?(t.subTo(r,t),t.rShiftTo(1,t)):(r.subTo(t,r),r.rShiftTo(1,r));return s>0&&r.lShiftTo(s,r),r},t.prototype.isProbablePrime=function(e){var t,r=this.abs();if(1==r.t&&r[0]<=P[P.length-1]){for(t=0;t<P.length;++t)if(r[0]==P[t])return!0;return!1}if(r.isEven())return!1;for(t=1;t<P.length;){for(var i=P[t],n=t+1;n<P.length&&i<k;)i*=P[n++];for(i=r.modInt(i);t<n;)if(i%P[t++]==0)return!1}return r.millerRabin(e)},t.prototype.square=function(){var e=r();return this.squareTo(e),e},t.prototype.Barrett=S,null==R){var E;if(R=new Array,T=0,"undefined"!=typeof window&&window.crypto)if(window.crypto.getRandomValues){var D=new Uint8Array(32);for(window.crypto.getRandomValues(D),E=0;E<32;++E)R[T++]=D[E]}else if("Netscape"==navigator.appName&&navigator.appVersion<"5"){var I=window.crypto.random(32);for(E=0;E<I.length;++E)R[T++]=255&I.charCodeAt(E)}for(;T<L;)E=Math.floor(65536*Math.random()),R[T++]=E>>>8,R[T++]=255&E;T=0,O()}function x(){if(null==C){for(O(),(C=new j).init(R),T=0;T<R.length;++T)R[T]=0;T=0}return C.next()}function M(){}function j(){this.i=0,this.j=0,this.S=new Array}M.prototype.nextBytes=function(e){var t;for(t=0;t<e.length;++t)e[t]=x()},j.prototype.init=function(e){var t,r,i;for(t=0;t<256;++t)this.S[t]=t;for(r=0,t=0;t<256;++t)r=r+this.S[t]+e[t%e.length]&255,i=this.S[t],this.S[t]=this.S[r],this.S[r]=i;this.i=0,this.j=0},j.prototype.next=function(){var e;return this.i=this.i+1&255,this.j=this.j+this.S[this.i]&255,e=this.S[this.i],this.S[this.i]=this.S[this.j],this.S[this.j]=e,this.S[e+this.S[this.i]&255]};var L=256;Cl.exports={default:t,BigInteger:t,SecureRandom:M}}.call(s);var Tl=Rl.exports,Pl={};!function(e){!function(){var t={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function r(e){return function(e,i){var n,s,o,a,c,d,l,p,u,h=1,m=e.length,f="";for(s=0;s<m;s++)if("string"==typeof e[s])f+=e[s];else if("object"==typeof e[s]){if((a=e[s]).keys)for(n=i[h],o=0;o<a.keys.length;o++){if(null==n)throw new Error(r('[sprintf] Cannot access property "%s" of undefined value "%s"',a.keys[o],a.keys[o-1]));n=n[a.keys[o]]}else n=a.param_no?i[a.param_no]:i[h++];if(t.not_type.test(a.type)&&t.not_primitive.test(a.type)&&n instanceof Function&&(n=n()),t.numeric_arg.test(a.type)&&"number"!=typeof n&&isNaN(n))throw new TypeError(r("[sprintf] expecting number but found %T",n));switch(t.number.test(a.type)&&(p=n>=0),a.type){case"b":n=parseInt(n,10).toString(2);break;case"c":n=String.fromCharCode(parseInt(n,10));break;case"d":case"i":n=parseInt(n,10);break;case"j":n=JSON.stringify(n,null,a.width?parseInt(a.width):0);break;case"e":n=a.precision?parseFloat(n).toExponential(a.precision):parseFloat(n).toExponential();break;case"f":n=a.precision?parseFloat(n).toFixed(a.precision):parseFloat(n);break;case"g":n=a.precision?String(Number(n.toPrecision(a.precision))):parseFloat(n);break;case"o":n=(parseInt(n,10)>>>0).toString(8);break;case"s":n=String(n),n=a.precision?n.substring(0,a.precision):n;break;case"t":n=String(!!n),n=a.precision?n.substring(0,a.precision):n;break;case"T":n=Object.prototype.toString.call(n).slice(8,-1).toLowerCase(),n=a.precision?n.substring(0,a.precision):n;break;case"u":n=parseInt(n,10)>>>0;break;case"v":n=n.valueOf(),n=a.precision?n.substring(0,a.precision):n;break;case"x":n=(parseInt(n,10)>>>0).toString(16);break;case"X":n=(parseInt(n,10)>>>0).toString(16).toUpperCase()}t.json.test(a.type)?f+=n:(!t.number.test(a.type)||p&&!a.sign?u="":(u=p?"+":"-",n=n.toString().replace(t.sign,"")),d=a.pad_char?"0"===a.pad_char?"0":a.pad_char.charAt(1):" ",l=a.width-(u+n).length,c=a.width&&l>0?d.repeat(l):"",f+=a.align?u+n+c:"0"===d?u+c+n:c+u+n)}return f}(function(e){if(n[e])return n[e];var r,i=e,s=[],o=0;for(;i;){if(null!==(r=t.text.exec(i)))s.push(r[0]);else if(null!==(r=t.modulo.exec(i)))s.push("%");else{if(null===(r=t.placeholder.exec(i)))throw new SyntaxError("[sprintf] unexpected placeholder");if(r[2]){o|=1;var a=[],c=r[2],d=[];if(null===(d=t.key.exec(c)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(a.push(d[1]);""!==(c=c.substring(d[0].length));)if(null!==(d=t.key_access.exec(c)))a.push(d[1]);else{if(null===(d=t.index_access.exec(c)))throw new SyntaxError("[sprintf] failed to parse named argument key");a.push(d[1])}r[2]=a}else o|=2;if(3===o)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");s.push({placeholder:r[0],param_no:r[1],keys:r[2],sign:r[3],pad_char:r[4],align:r[5],width:r[6],precision:r[7],type:r[8]})}i=i.substring(r[0].length)}return n[e]=s}(e),arguments)}function i(e,t){return r.apply(null,[e].concat(t||[]))}var n=Object.create(null);e.sprintf=r,e.vsprintf=i,"undefined"!=typeof window&&(window.sprintf=r,window.vsprintf=i)}()}(Pl);var kl=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Ol=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),El=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&kl(t,e,r);return Ol(t,e),t};Object.defineProperty(bl,"__esModule",{value:!0}),bl.Address4=void 0;const Dl=El(yl),Il=El(_l),xl=wl,Ml=Tl,jl=Pl;class Ll{constructor(e){this.groups=Il.GROUPS,this.parsedAddress=[],this.parsedSubnet="",this.subnet="/32",this.subnetMask=32,this.v4=!0,this.isCorrect=Dl.isCorrect(Il.BITS),this.isInSubnet=Dl.isInSubnet,this.address=e;const t=Il.RE_SUBNET_STRING.exec(e);if(t){if(this.parsedSubnet=t[0].replace("/",""),this.subnetMask=parseInt(this.parsedSubnet,10),this.subnet=`/${this.subnetMask}`,this.subnetMask<0||this.subnetMask>Il.BITS)throw new xl.AddressError("Invalid subnet mask.");e=e.replace(Il.RE_SUBNET_STRING,"")}this.addressMinusSuffix=e,this.parsedAddress=this.parse(e)}static isValid(e){try{return new Ll(e),!0}catch(e){return!1}}parse(e){const t=e.split(".");if(!e.match(Il.RE_ADDRESS))throw new xl.AddressError("Invalid IPv4 address.");return t}correctForm(){return this.parsedAddress.map((e=>parseInt(e,10))).join(".")}static fromHex(e){const t=e.replace(/:/g,"").padStart(8,"0"),r=[];let i;for(i=0;i<8;i+=2){const e=t.slice(i,i+2);r.push(parseInt(e,16))}return new Ll(r.join("."))}static fromInteger(e){return Ll.fromHex(e.toString(16))}static fromArpa(e){const t=e.replace(/(\.in-addr\.arpa)?\.$/,"").split(".").reverse().join(".");return new Ll(t)}toHex(){return this.parsedAddress.map((e=>(0,jl.sprintf)("%02x",parseInt(e,10)))).join(":")}toArray(){return this.parsedAddress.map((e=>parseInt(e,10)))}toGroup6(){const e=[];let t;for(t=0;t<Il.GROUPS;t+=2){const r=(0,jl.sprintf)("%02x%02x",parseInt(this.parsedAddress[t],10),parseInt(this.parsedAddress[t+1],10));e.push((0,jl.sprintf)("%x",parseInt(r,16)))}return e.join(":")}bigInteger(){return new Ml.BigInteger(this.parsedAddress.map((e=>(0,jl.sprintf)("%02x",parseInt(e,10)))).join(""),16)}_startAddress(){return new Ml.BigInteger(this.mask()+"0".repeat(Il.BITS-this.subnetMask),2)}startAddress(){return Ll.fromBigInteger(this._startAddress())}startAddressExclusive(){const e=new Ml.BigInteger("1");return Ll.fromBigInteger(this._startAddress().add(e))}_endAddress(){return new Ml.BigInteger(this.mask()+"1".repeat(Il.BITS-this.subnetMask),2)}endAddress(){return Ll.fromBigInteger(this._endAddress())}endAddressExclusive(){const e=new Ml.BigInteger("1");return Ll.fromBigInteger(this._endAddress().subtract(e))}static fromBigInteger(e){return Ll.fromInteger(parseInt(e.toString(),10))}mask(e){return void 0===e&&(e=this.subnetMask),this.getBitsBase2(0,e)}getBitsBase2(e,t){return this.binaryZeroPad().slice(e,t)}reverseForm(e){e||(e={});const t=this.correctForm().split(".").reverse().join(".");return e.omitSuffix?t:(0,jl.sprintf)("%s.in-addr.arpa.",t)}isMulticast(){return this.isInSubnet(new Ll("224.0.0.0/4"))}binaryZeroPad(){return this.bigInteger().toString(2).padStart(Il.BITS,"0")}groupForV6(){const e=this.parsedAddress;return this.address.replace(Il.RE_ADDRESS,(0,jl.sprintf)('<span class="hover-group group-v4 group-6">%s</span>.<span class="hover-group group-v4 group-7">%s</span>',e.slice(0,2).join("."),e.slice(2,4).join(".")))}}bl.Address4=Ll;var Al={},Nl={};Object.defineProperty(Nl,"__esModule",{value:!0}),Nl.RE_URL_WITH_PORT=Nl.RE_URL=Nl.RE_ZONE_STRING=Nl.RE_SUBNET_STRING=Nl.RE_BAD_ADDRESS=Nl.RE_BAD_CHARACTERS=Nl.TYPES=Nl.SCOPES=Nl.GROUPS=Nl.BITS=void 0,Nl.BITS=128,Nl.GROUPS=8,Nl.SCOPES={0:"Reserved",1:"Interface local",2:"Link local",4:"Admin local",5:"Site local",8:"Organization local",14:"Global",15:"Reserved"},Nl.TYPES={"ff01::1/128":"Multicast (All nodes on this interface)","ff01::2/128":"Multicast (All routers on this interface)","ff02::1/128":"Multicast (All nodes on this link)","ff02::2/128":"Multicast (All routers on this link)","ff05::2/128":"Multicast (All routers in this site)","ff02::5/128":"Multicast (OSPFv3 AllSPF routers)","ff02::6/128":"Multicast (OSPFv3 AllDR routers)","ff02::9/128":"Multicast (RIP routers)","ff02::a/128":"Multicast (EIGRP routers)","ff02::d/128":"Multicast (PIM routers)","ff02::16/128":"Multicast (MLDv2 reports)","ff01::fb/128":"Multicast (mDNSv6)","ff02::fb/128":"Multicast (mDNSv6)","ff05::fb/128":"Multicast (mDNSv6)","ff02::1:2/128":"Multicast (All DHCP servers and relay agents on this link)","ff05::1:2/128":"Multicast (All DHCP servers and relay agents in this site)","ff02::1:3/128":"Multicast (All DHCP servers on this link)","ff05::1:3/128":"Multicast (All DHCP servers in this site)","::/128":"Unspecified","::1/128":"Loopback","ff00::/8":"Multicast","fe80::/10":"Link-local unicast"},Nl.RE_BAD_CHARACTERS=/([^0-9a-f:/%])/gi,Nl.RE_BAD_ADDRESS=/([0-9a-f]{5,}|:{3,}|[^:]:$|^:[^:]|\/$)/gi,Nl.RE_SUBNET_STRING=/\/\d{1,3}(?=%|$)/,Nl.RE_ZONE_STRING=/%.*$/,Nl.RE_URL=new RegExp(/^\[{0,1}([0-9a-f:]+)\]{0,1}/),Nl.RE_URL_WITH_PORT=new RegExp(/\[([0-9a-f:]+)\]:([0-9]{1,5})/);var Bl={};Object.defineProperty(Bl,"__esModule",{value:!0}),Bl.simpleGroup=Bl.spanLeadingZeroes=Bl.spanAll=Bl.spanAllZeroes=void 0;const Fl=Pl;function zl(e){return e.replace(/(0+)/g,'<span class="zero">$1</span>')}function Ul(e){return e.replace(/^(0+)/,'<span class="zero">$1</span>')}Bl.spanAllZeroes=zl,Bl.spanAll=function(e,t=0){return e.split("").map(((e,r)=>(0,Fl.sprintf)('<span class="digit value-%s position-%d">%s</span>',e,r+t,zl(e)))).join("")},Bl.spanLeadingZeroes=function(e){return e.split(":").map((e=>Ul(e))).join(":")},Bl.simpleGroup=function(e,t=0){return e.split(":").map(((e,r)=>/group-v4/.test(e)?e:(0,Fl.sprintf)('<span class="hover-group group-%d">%s</span>',r+t,Ul(e))))};var $l={},Vl=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Gl=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ql=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Vl(t,e,r);return Gl(t,e),t};Object.defineProperty($l,"__esModule",{value:!0}),$l.possibleElisions=$l.simpleRegularExpression=$l.ADDRESS_BOUNDARY=$l.padGroup=$l.groupPossibilities=void 0;const Hl=ql(Nl),Wl=Pl;function Kl(e){return(0,Wl.sprintf)("(%s)",e.join("|"))}function Jl(e){return e.length<4?(0,Wl.sprintf)("0{0,%d}%s",4-e.length,e):e}$l.groupPossibilities=Kl,$l.padGroup=Jl,$l.ADDRESS_BOUNDARY="[^A-Fa-f0-9:]",$l.simpleRegularExpression=function(e){const t=[];e.forEach(((e,r)=>{0===parseInt(e,16)&&t.push(r)}));const r=t.map((t=>e.map(((e,r)=>{if(r===t){const t=0===r||r===Hl.GROUPS-1?":":"";return Kl([Jl(e),t])}return Jl(e)})).join(":")));return r.push(e.map(Jl).join(":")),Kl(r)},$l.possibleElisions=function(e,t,r){const i=t?"":":",n=r?"":":",s=[];t||r||s.push("::"),t&&r&&s.push(""),(r&&!t||!r&&t)&&s.push(":"),s.push((0,Wl.sprintf)("%s(:0{1,4}){1,%d}",i,e-1)),s.push((0,Wl.sprintf)("(0{1,4}:){1,%d}%s",e-1,n)),s.push((0,Wl.sprintf)("(0{1,4}:){%d}0{1,4}",e-1));for(let t=1;t<e-1;t++)for(let r=1;r<e-t;r++)s.push((0,Wl.sprintf)("(0{1,4}:){%d}:(0{1,4}:){%d}0{1,4}",r,e-r-t-1));return Kl(s)};var Ql=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Zl=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Yl=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Ql(t,e,r);return Zl(t,e),t};Object.defineProperty(Al,"__esModule",{value:!0}),Al.Address6=void 0;const Xl=Yl(yl),ep=Yl(_l),tp=Yl(Nl),rp=Yl(Bl),ip=bl,np=$l,sp=wl,op=Tl,ap=Pl;function cp(e){if(!e)throw new Error("Assertion failed.")}function dp(e){return e=(e=e.replace(/^(0{1,})([1-9]+)$/,'<span class="parse-error">$1</span>$2')).replace(/^(0{1,})(0)$/,'<span class="parse-error">$1</span>$2')}function lp(e){return(0,ap.sprintf)("%04x",parseInt(e,16))}function pp(e){return 255&e}class up{constructor(e,t){this.addressMinusSuffix="",this.parsedSubnet="",this.subnet="/128",this.subnetMask=128,this.v4=!1,this.zone="",this.isInSubnet=Xl.isInSubnet,this.isCorrect=Xl.isCorrect(tp.BITS),this.groups=void 0===t?tp.GROUPS:t,this.address=e;const r=tp.RE_SUBNET_STRING.exec(e);if(r){if(this.parsedSubnet=r[0].replace("/",""),this.subnetMask=parseInt(this.parsedSubnet,10),this.subnet=`/${this.subnetMask}`,Number.isNaN(this.subnetMask)||this.subnetMask<0||this.subnetMask>tp.BITS)throw new sp.AddressError("Invalid subnet mask.");e=e.replace(tp.RE_SUBNET_STRING,"")}else if(/\//.test(e))throw new sp.AddressError("Invalid subnet mask.");const i=tp.RE_ZONE_STRING.exec(e);i&&(this.zone=i[0],e=e.replace(tp.RE_ZONE_STRING,"")),this.addressMinusSuffix=e,this.parsedAddress=this.parse(this.addressMinusSuffix)}static isValid(e){try{return new up(e),!0}catch(e){return!1}}static fromBigInteger(e){const t=e.toString(16).padStart(32,"0"),r=[];let i;for(i=0;i<tp.GROUPS;i++)r.push(t.slice(4*i,4*(i+1)));return new up(r.join(":"))}static fromURL(e){let t,r,i=null;if(-1!==e.indexOf("[")&&-1!==e.indexOf("]:")){if(r=tp.RE_URL_WITH_PORT.exec(e),null===r)return{error:"failed to parse address with port",address:null,port:null};t=r[1],i=r[2]}else if(-1!==e.indexOf("/")){if(e=e.replace(/^[a-z0-9]+:\/\//,""),r=tp.RE_URL.exec(e),null===r)return{error:"failed to parse address from URL",address:null,port:null};t=r[1]}else t=e;return i?(i=parseInt(i,10),(i<0||i>65536)&&(i=null)):i=null,{address:new up(t),port:i}}static fromAddress4(e){const t=new ip.Address4(e),r=tp.BITS-(ep.BITS-t.subnetMask);return new up(`::ffff:${t.correctForm()}/${r}`)}static fromArpa(e){let t=e.replace(/(\.ip6\.arpa)?\.$/,"");if(63!==t.length)throw new sp.AddressError("Invalid 'ip6.arpa' form.");const r=t.split(".").reverse();for(let e=7;e>0;e--){const t=4*e;r.splice(t,0,":")}return t=r.join(""),new up(t)}microsoftTranscription(){return(0,ap.sprintf)("%s.ipv6-literal.net",this.correctForm().replace(/:/g,"-"))}mask(e=this.subnetMask){return this.getBitsBase2(0,e)}possibleSubnets(e=128){const t=tp.BITS-this.subnetMask-Math.abs(e-tp.BITS);return t<0?"0":function(e){const t=/(\d+)(\d{3})/;for(;t.test(e);)e=e.replace(t,"$1,$2");return e}(new op.BigInteger("2",10).pow(t).toString(10))}_startAddress(){return new op.BigInteger(this.mask()+"0".repeat(tp.BITS-this.subnetMask),2)}startAddress(){return up.fromBigInteger(this._startAddress())}startAddressExclusive(){const e=new op.BigInteger("1");return up.fromBigInteger(this._startAddress().add(e))}_endAddress(){return new op.BigInteger(this.mask()+"1".repeat(tp.BITS-this.subnetMask),2)}endAddress(){return up.fromBigInteger(this._endAddress())}endAddressExclusive(){const e=new op.BigInteger("1");return up.fromBigInteger(this._endAddress().subtract(e))}getScope(){let e=tp.SCOPES[this.getBits(12,16).intValue()];return"Global unicast"===this.getType()&&"Link local"!==e&&(e="Global"),e||"Unknown"}getType(){for(const e of Object.keys(tp.TYPES))if(this.isInSubnet(new up(e)))return tp.TYPES[e];return"Global unicast"}getBits(e,t){return new op.BigInteger(this.getBitsBase2(e,t),2)}getBitsBase2(e,t){return this.binaryZeroPad().slice(e,t)}getBitsBase16(e,t){const r=t-e;if(r%4!=0)throw new Error("Length of bits to retrieve must be divisible by four");return this.getBits(e,t).toString(16).padStart(r/4,"0")}getBitsPastSubnet(){return this.getBitsBase2(this.subnetMask,tp.BITS)}reverseForm(e){e||(e={});const t=Math.floor(this.subnetMask/4),r=this.canonicalForm().replace(/:/g,"").split("").slice(0,t).reverse().join(".");return t>0?e.omitSuffix?r:(0,ap.sprintf)("%s.ip6.arpa.",r):e.omitSuffix?"":"ip6.arpa."}correctForm(){let e,t=[],r=0;const i=[];for(e=0;e<this.parsedAddress.length;e++){const t=parseInt(this.parsedAddress[e],16);0===t&&r++,0!==t&&r>0&&(r>1&&i.push([e-r,e-1]),r=0)}r>1&&i.push([this.parsedAddress.length-r,this.parsedAddress.length-1]);const n=i.map((e=>e[1]-e[0]+1));if(i.length>0){const e=n.indexOf(Math.max(...n));t=function(e,t){const r=[],i=[];let n;for(n=0;n<e.length;n++)n<t[0]?r.push(e[n]):n>t[1]&&i.push(e[n]);return r.concat(["compact"]).concat(i)}(this.parsedAddress,i[e])}else t=this.parsedAddress;for(e=0;e<t.length;e++)"compact"!==t[e]&&(t[e]=parseInt(t[e],16).toString(16));let s=t.join(":");return s=s.replace(/^compact$/,"::"),s=s.replace(/^compact|compact$/,":"),s=s.replace(/compact/,""),s}binaryZeroPad(){return this.bigInteger().toString(2).padStart(tp.BITS,"0")}parse4in6(e){const t=e.split(":"),r=t.slice(-1)[0].match(ep.RE_ADDRESS);if(r){this.parsedAddress4=r[0],this.address4=new ip.Address4(this.parsedAddress4);for(let t=0;t<this.address4.groups;t++)if(/^0[0-9]+/.test(this.address4.parsedAddress[t]))throw new sp.AddressError("IPv4 addresses can't have leading zeroes.",e.replace(ep.RE_ADDRESS,this.address4.parsedAddress.map(dp).join(".")));this.v4=!0,t[t.length-1]=this.address4.toGroup6(),e=t.join(":")}return e}parse(e){const t=(e=this.parse4in6(e)).match(tp.RE_BAD_CHARACTERS);if(t)throw new sp.AddressError((0,ap.sprintf)("Bad character%s detected in address: %s",t.length>1?"s":"",t.join("")),e.replace(tp.RE_BAD_CHARACTERS,'<span class="parse-error">$1</span>'));const r=e.match(tp.RE_BAD_ADDRESS);if(r)throw new sp.AddressError((0,ap.sprintf)("Address failed regex: %s",r.join("")),e.replace(tp.RE_BAD_ADDRESS,'<span class="parse-error">$1</span>'));let i=[];const n=e.split("::");if(2===n.length){let e=n[0].split(":"),t=n[1].split(":");1===e.length&&""===e[0]&&(e=[]),1===t.length&&""===t[0]&&(t=[]);const r=this.groups-(e.length+t.length);if(!r)throw new sp.AddressError("Error parsing groups");this.elidedGroups=r,this.elisionBegin=e.length,this.elisionEnd=e.length+this.elidedGroups,i=i.concat(e);for(let e=0;e<r;e++)i.push("0");i=i.concat(t)}else{if(1!==n.length)throw new sp.AddressError("Too many :: groups found");i=e.split(":"),this.elidedGroups=0}if(i=i.map((e=>(0,ap.sprintf)("%x",parseInt(e,16)))),i.length!==this.groups)throw new sp.AddressError("Incorrect number of groups found");return i}canonicalForm(){return this.parsedAddress.map(lp).join(":")}decimal(){return this.parsedAddress.map((e=>(0,ap.sprintf)("%05d",parseInt(e,16)))).join(":")}bigInteger(){return new op.BigInteger(this.parsedAddress.map(lp).join(""),16)}to4(){const e=this.binaryZeroPad().split("");return ip.Address4.fromHex(new op.BigInteger(e.slice(96,128).join(""),2).toString(16))}to4in6(){const e=this.to4(),t=new up(this.parsedAddress.slice(0,6).join(":"),6).correctForm();let r="";return/:$/.test(t)||(r=":"),t+r+e.address}inspectTeredo(){const e=this.getBitsBase16(0,32),t=this.getBits(80,96).xor(new op.BigInteger("ffff",16)).toString(),r=ip.Address4.fromHex(this.getBitsBase16(32,64)),i=ip.Address4.fromHex(this.getBits(96,128).xor(new op.BigInteger("ffffffff",16)).toString(16)),n=this.getBits(64,80),s=this.getBitsBase2(64,80),o=n.testBit(15),a=n.testBit(14),c=n.testBit(8),d=n.testBit(9),l=new op.BigInteger(s.slice(2,6)+s.slice(8,16),2).toString(10);return{prefix:(0,ap.sprintf)("%s:%s",e.slice(0,4),e.slice(4,8)),server4:r.address,client4:i.address,flags:s,coneNat:o,microsoft:{reserved:a,universalLocal:d,groupIndividual:c,nonce:l},udpPort:t}}inspect6to4(){const e=this.getBitsBase16(0,16),t=ip.Address4.fromHex(this.getBitsBase16(16,48));return{prefix:(0,ap.sprintf)("%s",e.slice(0,4)),gateway:t.address}}to6to4(){if(!this.is4())return null;const e=["2002",this.getBitsBase16(96,112),this.getBitsBase16(112,128),"","/16"].join(":");return new up(e)}toByteArray(){const e=this.bigInteger().toByteArray();return 17===e.length&&0===e[0]?e.slice(1):e}toUnsignedByteArray(){return this.toByteArray().map(pp)}static fromByteArray(e){return this.fromUnsignedByteArray(e.map(pp))}static fromUnsignedByteArray(e){const t=new op.BigInteger("256",10);let r=new op.BigInteger("0",10),i=new op.BigInteger("1",10);for(let n=e.length-1;n>=0;n--)r=r.add(i.multiply(new op.BigInteger(e[n].toString(10),10))),i=i.multiply(t);return up.fromBigInteger(r)}isCanonical(){return this.addressMinusSuffix===this.canonicalForm()}isLinkLocal(){return"1111111010000000000000000000000000000000000000000000000000000000"===this.getBitsBase2(0,64)}isMulticast(){return"Multicast"===this.getType()}is4(){return this.v4}isTeredo(){return this.isInSubnet(new up("2001::/32"))}is6to4(){return this.isInSubnet(new up("2002::/16"))}isLoopback(){return"Loopback"===this.getType()}href(e){return e=void 0===e?"":(0,ap.sprintf)(":%s",e),(0,ap.sprintf)("http://[%s]%s/",this.correctForm(),e)}link(e){e||(e={}),void 0===e.className&&(e.className=""),void 0===e.prefix&&(e.prefix="/#address="),void 0===e.v4&&(e.v4=!1);let t=this.correctForm;return e.v4&&(t=this.to4in6),e.className?(0,ap.sprintf)('<a href="%1$s%2$s" class="%3$s">%2$s</a>',e.prefix,t.call(this),e.className):(0,ap.sprintf)('<a href="%1$s%2$s">%2$s</a>',e.prefix,t.call(this))}group(){if(0===this.elidedGroups)return rp.simpleGroup(this.address).join(":");cp("number"==typeof this.elidedGroups),cp("number"==typeof this.elisionBegin);const e=[],[t,r]=this.address.split("::");t.length?e.push(...rp.simpleGroup(t)):e.push("");const i=["hover-group"];for(let e=this.elisionBegin;e<this.elisionBegin+this.elidedGroups;e++)i.push((0,ap.sprintf)("group-%d",e));return e.push((0,ap.sprintf)('<span class="%s"></span>',i.join(" "))),r.length?e.push(...rp.simpleGroup(r,this.elisionEnd)):e.push(""),this.is4()&&(cp(this.address4 instanceof ip.Address4),e.pop(),e.push(this.address4.groupForV6())),e.join(":")}regularExpressionString(e=!1){let t=[];const r=new up(this.correctForm());if(0===r.elidedGroups)t.push((0,np.simpleRegularExpression)(r.parsedAddress));else if(r.elidedGroups===tp.GROUPS)t.push((0,np.possibleElisions)(tp.GROUPS));else{const e=r.address.split("::");e[0].length&&t.push((0,np.simpleRegularExpression)(e[0].split(":"))),cp("number"==typeof r.elidedGroups),t.push((0,np.possibleElisions)(r.elidedGroups,0!==e[0].length,0!==e[1].length)),e[1].length&&t.push((0,np.simpleRegularExpression)(e[1].split(":"))),t=[t.join(":")]}return e||(t=["(?=^|",np.ADDRESS_BOUNDARY,"|[^\\w\\:])(",...t,")(?=[^\\w\\:]|",np.ADDRESS_BOUNDARY,"|$)"]),t.join("")}regularExpression(e=!1){return new RegExp(this.regularExpressionString(e),"i")}}Al.Address6=up,function(e){var t=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),r=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var i={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&t(i,e,n);return r(i,e),i};Object.defineProperty(e,"__esModule",{value:!0}),e.v6=e.AddressError=e.Address6=e.Address4=void 0;const n=bl;Object.defineProperty(e,"Address4",{enumerable:!0,get:function(){return n.Address4}});const o=Al;Object.defineProperty(e,"Address6",{enumerable:!0,get:function(){return o.Address6}});const a=wl;Object.defineProperty(e,"AddressError",{enumerable:!0,get:function(){return a.AddressError}});const c=i(Bl);e.v6={helpers:c}}(vl);var hp={exports:{}};!function(e){(function(){var t,r,i,n,s,o,a,c;r={},null!==e&&e.exports?e.exports=r:this.ipaddr=r,a=function(e,t,r,i){var n,s;if(e.length!==t.length)throw new Error("ipaddr: cannot match CIDR for objects with different lengths");for(n=0;i>0;){if((s=r-i)<0&&(s=0),e[n]>>s!=t[n]>>s)return!1;i-=r,n+=1}return!0},r.subnetMatch=function(e,t,r){var i,n,s,o,a;for(s in null==r&&(r="unicast"),t)for(!(o=t[s])[0]||o[0]instanceof Array||(o=[o]),i=0,n=o.length;i<n;i++)if(a=o[i],e.kind()===a[0].kind()&&e.match.apply(e,a))return s;return r},r.IPv4=function(){function e(e){var t,r,i;if(4!==e.length)throw new Error("ipaddr: ipv4 octet count should be 4");for(t=0,r=e.length;t<r;t++)if(!(0<=(i=e[t])&&i<=255))throw new Error("ipaddr: ipv4 octet should fit in 8 bits");this.octets=e}return e.prototype.kind=function(){return"ipv4"},e.prototype.toString=function(){return this.octets.join(".")},e.prototype.toNormalizedString=function(){return this.toString()},e.prototype.toByteArray=function(){return this.octets.slice(0)},e.prototype.match=function(e,t){var r;if(void 0===t&&(e=(r=e)[0],t=r[1]),"ipv4"!==e.kind())throw new Error("ipaddr: cannot match ipv4 address with non-ipv4 one");return a(this.octets,e.octets,8,t)},e.prototype.SpecialRanges={unspecified:[[new e([0,0,0,0]),8]],broadcast:[[new e([255,255,255,255]),32]],multicast:[[new e([224,0,0,0]),4]],linkLocal:[[new e([169,254,0,0]),16]],loopback:[[new e([127,0,0,0]),8]],carrierGradeNat:[[new e([100,64,0,0]),10]],private:[[new e([10,0,0,0]),8],[new e([172,16,0,0]),12],[new e([192,168,0,0]),16]],reserved:[[new e([192,0,0,0]),24],[new e([192,0,2,0]),24],[new e([192,88,99,0]),24],[new e([198,51,100,0]),24],[new e([203,0,113,0]),24],[new e([240,0,0,0]),4]]},e.prototype.range=function(){return r.subnetMatch(this,this.SpecialRanges)},e.prototype.toIPv4MappedAddress=function(){return r.IPv6.parse("::ffff:"+this.toString())},e.prototype.prefixLengthFromSubnetMask=function(){var e,t,r,i,n,s,o;for(o={0:8,128:7,192:6,224:5,240:4,248:3,252:2,254:1,255:0},e=0,n=!1,t=r=3;r>=0;t=r+=-1){if(!((i=this.octets[t])in o))return null;if(s=o[i],n&&0!==s)return null;8!==s&&(n=!0),e+=s}return 32-e},e}(),i="(0?\\d+|0x[a-f0-9]+)",n={fourOctet:new RegExp("^"+i+"\\."+i+"\\."+i+"\\."+i+"$","i"),longValue:new RegExp("^"+i+"$","i")},r.IPv4.parser=function(e){var t,r,i,s,o;if(r=function(e){return"0"===e[0]&&"x"!==e[1]?parseInt(e,8):parseInt(e)},t=e.match(n.fourOctet))return function(){var e,n,s,o;for(o=[],e=0,n=(s=t.slice(1,6)).length;e<n;e++)i=s[e],o.push(r(i));return o}();if(t=e.match(n.longValue)){if((o=r(t[1]))>4294967295||o<0)throw new Error("ipaddr: address outside defined range");return function(){var e,t;for(t=[],s=e=0;e<=24;s=e+=8)t.push(o>>s&255);return t}().reverse()}return null},r.IPv6=function(){function e(e,t){var r,i,n,s,o,a;if(16===e.length)for(this.parts=[],r=i=0;i<=14;r=i+=2)this.parts.push(e[r]<<8|e[r+1]);else{if(8!==e.length)throw new Error("ipaddr: ipv6 part count should be 8 or 16");this.parts=e}for(n=0,s=(a=this.parts).length;n<s;n++)if(!(0<=(o=a[n])&&o<=65535))throw new Error("ipaddr: ipv6 part should fit in 16 bits");t&&(this.zoneId=t)}return e.prototype.kind=function(){return"ipv6"},e.prototype.toString=function(){return this.toNormalizedString().replace(/((^|:)(0(:|$))+)/,"::")},e.prototype.toRFC5952String=function(){var e,t,r,i,n;for(i=/((^|:)(0(:|$)){2,})/g,n=this.toNormalizedString(),e=0,t=-1;r=i.exec(n);)r[0].length>t&&(e=r.index,t=r[0].length);return t<0?n:n.substring(0,e)+"::"+n.substring(e+t)},e.prototype.toByteArray=function(){var e,t,r,i,n;for(e=[],t=0,r=(n=this.parts).length;t<r;t++)i=n[t],e.push(i>>8),e.push(255&i);return e},e.prototype.toNormalizedString=function(){var e,t,r;return e=function(){var e,r,i,n;for(n=[],e=0,r=(i=this.parts).length;e<r;e++)t=i[e],n.push(t.toString(16));return n}.call(this).join(":"),r="",this.zoneId&&(r="%"+this.zoneId),e+r},e.prototype.toFixedLengthString=function(){var e,t,r;return e=function(){var e,r,i,n;for(n=[],e=0,r=(i=this.parts).length;e<r;e++)t=i[e],n.push(t.toString(16).padStart(4,"0"));return n}.call(this).join(":"),r="",this.zoneId&&(r="%"+this.zoneId),e+r},e.prototype.match=function(e,t){var r;if(void 0===t&&(e=(r=e)[0],t=r[1]),"ipv6"!==e.kind())throw new Error("ipaddr: cannot match ipv6 address with non-ipv6 one");return a(this.parts,e.parts,16,t)},e.prototype.SpecialRanges={unspecified:[new e([0,0,0,0,0,0,0,0]),128],linkLocal:[new e([65152,0,0,0,0,0,0,0]),10],multicast:[new e([65280,0,0,0,0,0,0,0]),8],loopback:[new e([0,0,0,0,0,0,0,1]),128],uniqueLocal:[new e([64512,0,0,0,0,0,0,0]),7],ipv4Mapped:[new e([0,0,0,0,0,65535,0,0]),96],rfc6145:[new e([0,0,0,0,65535,0,0,0]),96],rfc6052:[new e([100,65435,0,0,0,0,0,0]),96],"6to4":[new e([8194,0,0,0,0,0,0,0]),16],teredo:[new e([8193,0,0,0,0,0,0,0]),32],reserved:[[new e([8193,3512,0,0,0,0,0,0]),32]]},e.prototype.range=function(){return r.subnetMatch(this,this.SpecialRanges)},e.prototype.isIPv4MappedAddress=function(){return"ipv4Mapped"===this.range()},e.prototype.toIPv4Address=function(){var e,t,i;if(!this.isIPv4MappedAddress())throw new Error("ipaddr: trying to convert a generic ipv6 address to ipv4");return e=(i=this.parts.slice(-2))[0],t=i[1],new r.IPv4([e>>8,255&e,t>>8,255&t])},e.prototype.prefixLengthFromSubnetMask=function(){var e,t,r,i,n,s,o;for(o={0:16,32768:15,49152:14,57344:13,61440:12,63488:11,64512:10,65024:9,65280:8,65408:7,65472:6,65504:5,65520:4,65528:3,65532:2,65534:1,65535:0},e=0,n=!1,t=r=7;r>=0;t=r+=-1){if(!((i=this.parts[t])in o))return null;if(s=o[i],n&&0!==s)return null;16!==s&&(n=!0),e+=s}return 128-e},e}(),s="(?:[0-9a-f]+::?)+",c="%[0-9a-z]{1,}",o={zoneIndex:new RegExp(c,"i"),native:new RegExp("^(::)?("+s+")?([0-9a-f]+)?(::)?("+c+")?$","i"),transitional:new RegExp("^((?:"+s+")|(?:::)(?:"+s+")?)"+i+"\\."+i+"\\."+i+"\\."+i+"("+c+")?$","i")},t=function(e,t){var r,i,n,s,a,c;if(e.indexOf("::")!==e.lastIndexOf("::"))return null;for((c=(e.match(o.zoneIndex)||[])[0])&&(c=c.substring(1),e=e.replace(/%.+$/,"")),r=0,i=-1;(i=e.indexOf(":",i+1))>=0;)r++;if("::"===e.substr(0,2)&&r--,"::"===e.substr(-2,2)&&r--,r>t)return null;for(a=t-r,s=":";a--;)s+="0:";return":"===(e=e.replace("::",s))[0]&&(e=e.slice(1)),":"===e[e.length-1]&&(e=e.slice(0,-1)),{parts:t=function(){var t,r,i,s;for(s=[],t=0,r=(i=e.split(":")).length;t<r;t++)n=i[t],s.push(parseInt(n,16));return s}(),zoneId:c}},r.IPv6.parser=function(e){var r,i,n,s,a,c,d;if(o.native.test(e))return t(e,8);if((s=e.match(o.transitional))&&(d=s[6]||"",(r=t(s[1].slice(0,-1)+d,6)).parts)){for(i=0,n=(c=[parseInt(s[2]),parseInt(s[3]),parseInt(s[4]),parseInt(s[5])]).length;i<n;i++)if(!(0<=(a=c[i])&&a<=255))return null;return r.parts.push(c[0]<<8|c[1]),r.parts.push(c[2]<<8|c[3]),{parts:r.parts,zoneId:r.zoneId}}return null},r.IPv4.isIPv4=r.IPv6.isIPv6=function(e){return null!==this.parser(e)},r.IPv4.isValid=function(e){try{return new this(this.parser(e)),!0}catch(e){return!1}},r.IPv4.isValidFourPartDecimal=function(e){return!(!r.IPv4.isValid(e)||!e.match(/^(0|[1-9]\d*)(\.(0|[1-9]\d*)){3}$/))},r.IPv6.isValid=function(e){var t;if("string"==typeof e&&-1===e.indexOf(":"))return!1;try{return new this((t=this.parser(e)).parts,t.zoneId),!0}catch(e){return!1}},r.IPv4.parse=function(e){var t;if(null===(t=this.parser(e)))throw new Error("ipaddr: string is not formatted like ip address");return new this(t)},r.IPv6.parse=function(e){var t;if(null===(t=this.parser(e)).parts)throw new Error("ipaddr: string is not formatted like ip address");return new this(t.parts,t.zoneId)},r.IPv4.parseCIDR=function(e){var t,r,i;if((r=e.match(/^(.+)\/(\d+)$/))&&(t=parseInt(r[2]))>=0&&t<=32)return i=[this.parse(r[1]),t],Object.defineProperty(i,"toString",{value:function(){return this.join("/")}}),i;throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range")},r.IPv4.subnetMaskFromPrefixLength=function(e){var t,r,i;if((e=parseInt(e))<0||e>32)throw new Error("ipaddr: invalid IPv4 prefix length");for(i=[0,0,0,0],r=0,t=Math.floor(e/8);r<t;)i[r]=255,r++;return t<4&&(i[t]=Math.pow(2,e%8)-1<<8-e%8),new this(i)},r.IPv4.broadcastAddressFromCIDR=function(e){var t,r,i,n,s;try{for(i=(t=this.parseCIDR(e))[0].toByteArray(),s=this.subnetMaskFromPrefixLength(t[1]).toByteArray(),n=[],r=0;r<4;)n.push(parseInt(i[r],10)|255^parseInt(s[r],10)),r++;return new this(n)}catch(e){throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},r.IPv4.networkAddressFromCIDR=function(e){var t,r,i,n,s;try{for(i=(t=this.parseCIDR(e))[0].toByteArray(),s=this.subnetMaskFromPrefixLength(t[1]).toByteArray(),n=[],r=0;r<4;)n.push(parseInt(i[r],10)&parseInt(s[r],10)),r++;return new this(n)}catch(e){throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},r.IPv6.parseCIDR=function(e){var t,r,i;if((r=e.match(/^(.+)\/(\d+)$/))&&(t=parseInt(r[2]))>=0&&t<=128)return i=[this.parse(r[1]),t],Object.defineProperty(i,"toString",{value:function(){return this.join("/")}}),i;throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range")},r.isValid=function(e){return r.IPv6.isValid(e)||r.IPv4.isValid(e)},r.parse=function(e){if(r.IPv6.isValid(e))return r.IPv6.parse(e);if(r.IPv4.isValid(e))return r.IPv4.parse(e);throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format")},r.parseCIDR=function(e){try{return r.IPv6.parseCIDR(e)}catch(t){try{return r.IPv4.parseCIDR(e)}catch(e){throw new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format")}}},r.fromByteArray=function(e){var t;if(4===(t=e.length))return new r.IPv4(e);if(16===t)return new r.IPv6(e);throw new Error("ipaddr: the binary input is neither an IPv6 nor IPv4 address")},r.process=function(e){var t;return"ipv6"===(t=this.parse(e)).kind()&&t.isIPv4MappedAddress()?t.toIPv4Address():t}}).call(s)}(hp);var mp=hp.exports,fp=function(e,t){if("string"==typeof t)return gp(e,t);if("object"==typeof t){for(var r=!1,i=0;i<t.length;i++)if(gp(e,t[i])){r=!0;break}return r}};function gp(e,t){try{var r=mp.process(e);if(-1===t.indexOf("/")){var i=mp.process(t);return"ipv6"===r.kind()&&"ipv6"===i.kind()?r.toNormalizedString()===i.toNormalizedString():r.toString()==i.toString()}var n=mp.parseCIDR(t);return r.match(n)}catch(e){return!1}}var vp=fp,bp=/^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,yp=["0.0.0.0/8","10.0.0.0/8","100.64.0.0/10","127.0.0.0/8","169.254.0.0/16","172.16.0.0/12","192.0.0.0/24","192.0.2.0/24","192.168.0.0/16","198.18.0.0/15","198.51.100.0/24","203.0.113.0/24","224.0.0.0/3"],_p=["10.0.0.0/8","172.16.0.0/12","192.168.0.0/16"];for(var wp=function(e){var t=[],r={originalIp:e,boiledIp:!1,isValid:!1,isBogon:!1,isApipa:!1,isMulticast:!1,isRfc1918:!1,isPublicIp:!1};if(bp.test(e)){r.isValid=!0;for(var i=e.split("."),n=0;n<4;n++)t.push(parseInt(i[n],10));r.boiledIp=t.join("."),vp(r.boiledIp,yp)&&(r.isBogon=!0),vp(r.boiledIp,"169.254.0.0/16")&&(r.isApipa=!0),vp(r.boiledIp,"224.0.0.0/4")&&(r.isMulticast=!0),vp(r.boiledIp,_p)?r.isRfc1918=!0:!1===r.isBogon&&(r.isPublicIp=!0)}return r},Sp=o(wp),Cp={exports:{}},Rp=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}$/i,Tp=[],Pp=0;Pp<256;Pp++)Tp[Pp]=(Pp+256).toString(16).substr(1);Cp.exports=function(e,t){var r;if(Buffer.isBuffer(e))r=function(e,t){var r=t||0,i=Tp;return i[e[r++]]+i[e[r++]]+i[e[r++]]+i[e[r++]]+"-"+i[e[r++]]+i[e[r++]]+"-"+i[e[r++]]+i[e[r++]]+"-"+i[e[r++]]+i[e[r++]]+"-"+i[e[r++]]+i[e[r++]]+i[e[r++]]+i[e[r++]]+i[e[r++]]+i[e[r++]]}(e);else{if("[object String]"!==Object.prototype.toString.call(e))return!1;r=e}if(r=r.toLowerCase(),!Rp.test(r))return!1;if(void 0===t)t=kp(r);else if(kp(r)!==t)return!1;switch(t){case 1:case 2:return!0;case 3:case 4:case 5:return-1!==["8","9","a","b"].indexOf(r.charAt(19));default:throw new Error("Invalid version provided.")}};var kp=Cp.exports.version=function(e){return 0|e.charAt(14)},Op=o(Cp.exports);const Ep=Object.create(null);Ep.open="0",Ep.close="1",Ep.ping="2",Ep.pong="3",Ep.message="4",Ep.upgrade="5",Ep.noop="6";const Dp=Object.create(null);Object.keys(Ep).forEach((e=>{Dp[Ep[e]]=e}));const Ip={type:"error",data:"parser error"},xp="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),Mp="function"==typeof ArrayBuffer,jp=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,Lp=({type:e,data:t},r,i)=>xp&&t instanceof Blob?r?i(t):Ap(t,i):Mp&&(t instanceof ArrayBuffer||jp(t))?r?i(t):Ap(new Blob([t]),i):i(Ep[e]+(t||"")),Ap=(e,t)=>{const r=new FileReader;return r.onload=function(){const e=r.result.split(",")[1];t("b"+(e||""))},r.readAsDataURL(e)};function Np(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let Bp;const Fp="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",zp="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let JS=0;JS<64;JS++)zp[Fp.charCodeAt(JS)]=JS;const Up="function"==typeof ArrayBuffer,$p=(e,t)=>{if("string"!=typeof e)return{type:"message",data:Gp(e,t)};const r=e.charAt(0);if("b"===r)return{type:"message",data:Vp(e.substring(1),t)};return Dp[r]?e.length>1?{type:Dp[r],data:e.substring(1)}:{type:Dp[r]}:Ip},Vp=(e,t)=>{if(Up){const r=(e=>{let t,r,i,n,s,o=.75*e.length,a=e.length,c=0;"="===e[e.length-1]&&(o--,"="===e[e.length-2]&&o--);const d=new ArrayBuffer(o),l=new Uint8Array(d);for(t=0;t<a;t+=4)r=zp[e.charCodeAt(t)],i=zp[e.charCodeAt(t+1)],n=zp[e.charCodeAt(t+2)],s=zp[e.charCodeAt(t+3)],l[c++]=r<<2|i>>4,l[c++]=(15&i)<<4|n>>2,l[c++]=(3&n)<<6|63&s;return d})(e);return Gp(r,t)}return{base64:!0,data:e}},Gp=(e,t)=>"blob"===t?e instanceof Blob?e:new Blob([e]):e instanceof ArrayBuffer?e:e.buffer,qp=String.fromCharCode(30);function Hp(){return new TransformStream({transform(e,t){!function(e,t){xp&&e.data instanceof Blob?e.data.arrayBuffer().then(Np).then(t):Mp&&(e.data instanceof ArrayBuffer||jp(e.data))?t(Np(e.data)):Lp(e,!1,(e=>{Bp||(Bp=new TextEncoder),t(Bp.encode(e))}))}(e,(r=>{const i=r.length;let n;if(i<126)n=new Uint8Array(1),new DataView(n.buffer).setUint8(0,i);else if(i<65536){n=new Uint8Array(3);const e=new DataView(n.buffer);e.setUint8(0,126),e.setUint16(1,i)}else{n=new Uint8Array(9);const e=new DataView(n.buffer);e.setUint8(0,127),e.setBigUint64(1,BigInt(i))}e.data&&"string"!=typeof e.data&&(n[0]|=128),t.enqueue(n),t.enqueue(r)}))}})}let Wp;function Kp(e){return e.reduce(((e,t)=>e+t.length),0)}function Jp(e,t){if(e[0].length===t)return e.shift();const r=new Uint8Array(t);let i=0;for(let n=0;n<t;n++)r[n]=e[0][i++],i===e[0].length&&(e.shift(),i=0);return e.length&&i<e[0].length&&(e[0]=e[0].slice(i)),r}function Qp(e){if(e)return function(e){for(var t in Qp.prototype)e[t]=Qp.prototype[t];return e}(e)}Qp.prototype.on=Qp.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},Qp.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this},Qp.prototype.off=Qp.prototype.removeListener=Qp.prototype.removeAllListeners=Qp.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var r,i=this._callbacks["$"+e];if(!i)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var n=0;n<i.length;n++)if((r=i[n])===t||r.fn===t){i.splice(n,1);break}return 0===i.length&&delete this._callbacks["$"+e],this},Qp.prototype.emit=function(e){this._callbacks=this._callbacks||{};for(var t=new Array(arguments.length-1),r=this._callbacks["$"+e],i=1;i<arguments.length;i++)t[i-1]=arguments[i];if(r){i=0;for(var n=(r=r.slice(0)).length;i<n;++i)r[i].apply(this,t)}return this},Qp.prototype.emitReserved=Qp.prototype.emit,Qp.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},Qp.prototype.hasListeners=function(e){return!!this.listeners(e).length};const Zp="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function Yp(e,...t){return t.reduce(((t,r)=>(e.hasOwnProperty(r)&&(t[r]=e[r]),t)),{})}const Xp=Zp.setTimeout,eu=Zp.clearTimeout;function tu(e,t){t.useNativeTimers?(e.setTimeoutFn=Xp.bind(Zp),e.clearTimeoutFn=eu.bind(Zp)):(e.setTimeoutFn=Zp.setTimeout.bind(Zp),e.clearTimeoutFn=Zp.clearTimeout.bind(Zp))}class ru extends Error{constructor(e,t,r){super(e),this.description=t,this.context=r,this.type="TransportError"}}class iu extends Qp{constructor(e){super(),this.writable=!1,tu(this,e),this.opts=e,this.query=e.query,this.socket=e.socket}onError(e,t,r){return super.emitReserved("error",new ru(e,t,r)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(e){"open"===this.readyState&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(e){const t=$p(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emitReserved("packet",e)}onClose(e){this.readyState="closed",super.emitReserved("close",e)}pause(e){}createUri(e,t={}){return e+"://"+this._hostname()+this._port()+this.opts.path+this._query(t)}_hostname(){const e=this.opts.hostname;return-1===e.indexOf(":")?e:"["+e+"]"}_port(){return this.opts.port&&(this.opts.secure&&Number(443!==this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""}_query(e){const t=function(e){let t="";for(let r in e)e.hasOwnProperty(r)&&(t.length&&(t+="&"),t+=encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t}(e);return t.length?"?"+t:""}}const nu="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),su=64,ou={};let au,cu=0,du=0;function lu(e){let t="";do{t=nu[e%su]+t,e=Math.floor(e/su)}while(e>0);return t}function pu(){const e=lu(+new Date);return e!==au?(cu=0,au=e):e+"."+lu(cu++)}for(;du<su;du++)ou[nu[du]]=du;let uu=!1;try{uu="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(QS){}const hu=uu;function mu(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||hu))return new XMLHttpRequest}catch(e){}if(!t)try{return new(Zp[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}function fu(){}const gu=null!=new mu({xdomain:!1}).responseType;class vu extends Qp{constructor(e,t){super(),tu(this,t),this.opts=t,this.method=t.method||"GET",this.uri=e,this.data=void 0!==t.data?t.data:null,this.create()}create(){var e;const t=Yp(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this.opts.xd;const r=this.xhr=new mu(t);try{r.open(this.method,this.uri,!0);try{if(this.opts.extraHeaders){r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0);for(let e in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(e)&&r.setRequestHeader(e,this.opts.extraHeaders[e])}}catch(e){}if("POST"===this.method)try{r.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{r.setRequestHeader("Accept","*/*")}catch(e){}null===(e=this.opts.cookieJar)||void 0===e||e.addCookies(r),"withCredentials"in r&&(r.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(r.timeout=this.opts.requestTimeout),r.onreadystatechange=()=>{var e;3===r.readyState&&(null===(e=this.opts.cookieJar)||void 0===e||e.parseCookies(r)),4===r.readyState&&(200===r.status||1223===r.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof r.status?r.status:0)}),0))},r.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=vu.requestsCount++,vu.requests[this.index]=this)}onError(e){this.emitReserved("error",e,this.xhr),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=fu,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete vu.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&(this.emitReserved("data",e),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}}if(vu.requestsCount=0,vu.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",bu);else if("function"==typeof addEventListener){addEventListener("onpagehide"in Zp?"pagehide":"unload",bu,!1)}function bu(){for(let e in vu.requests)vu.requests.hasOwnProperty(e)&&vu.requests[e].abort()}const yu="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),_u=Zp.WebSocket||Zp.MozWebSocket,wu="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();const Su={websocket:class extends iu{constructor(e){super(e),this.supportsBinary=!e.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const e=this.uri(),t=this.opts.protocols,r=wu?{}:Yp(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=wu?new _u(e,t,r):t?new _u(e,t):new _u(e)}catch(e){return this.emitReserved("error",e)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=e=>this.onClose({description:"websocket connection closed",context:e}),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const r=e[t],i=t===e.length-1;Lp(r,this.supportsBinary,(e=>{try{this.ws.send(e)}catch(e){}i&&yu((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){const e=this.opts.secure?"wss":"ws",t=this.query||{};return this.opts.timestampRequests&&(t[this.opts.timestampParam]=pu()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}check(){return!!_u}},webtransport:class extends iu{get name(){return"webtransport"}doOpen(){"function"==typeof WebTransport&&(this.transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name]),this.transport.closed.then((()=>{this.onClose()})).catch((e=>{this.onError("webtransport error",e)})),this.transport.ready.then((()=>{this.transport.createBidirectionalStream().then((e=>{const t=function(e,t){Wp||(Wp=new TextDecoder);const r=[];let i=0,n=-1,s=!1;return new TransformStream({transform(o,a){for(r.push(o);;){if(0===i){if(Kp(r)<1)break;const e=Jp(r,1);s=128==(128&e[0]),n=127&e[0],i=n<126?3:126===n?1:2}else if(1===i){if(Kp(r)<2)break;const e=Jp(r,2);n=new DataView(e.buffer,e.byteOffset,e.length).getUint16(0),i=3}else if(2===i){if(Kp(r)<8)break;const e=Jp(r,8),t=new DataView(e.buffer,e.byteOffset,e.length),s=t.getUint32(0);if(s>Math.pow(2,21)-1){a.enqueue(Ip);break}n=s*Math.pow(2,32)+t.getUint32(4),i=3}else{if(Kp(r)<n)break;const e=Jp(r,n);a.enqueue($p(s?e:Wp.decode(e),t)),i=0}if(0===n||n>e){a.enqueue(Ip);break}}}})}(Number.MAX_SAFE_INTEGER,this.socket.binaryType),r=e.readable.pipeThrough(t).getReader(),i=Hp();i.readable.pipeTo(e.writable),this.writer=i.writable.getWriter();const n=()=>{r.read().then((({done:e,value:t})=>{e||(this.onPacket(t),n())})).catch((e=>{}))};n();const s={type:"open"};this.query.sid&&(s.data=`{"sid":"${this.query.sid}"}`),this.writer.write(s).then((()=>this.onOpen()))}))})))}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const r=e[t],i=t===e.length-1;this.writer.write(r).then((()=>{i&&yu((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){var e;null===(e=this.transport)||void 0===e||e.close()}},polling:class extends iu{constructor(e){if(super(e),this.polling=!1,"undefined"!=typeof location){const t="https:"===location.protocol;let r=location.port;r||(r=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||r!==e.port}const t=e&&e.forceBase64;this.supportsBinary=gu&&!t,this.opts.withCredentials&&(this.cookieJar=void 0)}get name(){return"polling"}doOpen(){this.poll()}pause(e){this.readyState="pausing";const t=()=>{this.readyState="paused",e()};if(this.polling||!this.writable){let e=0;this.polling&&(e++,this.once("pollComplete",(function(){--e||t()}))),this.writable||(e++,this.once("drain",(function(){--e||t()})))}else t()}poll(){this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(e){((e,t)=>{const r=e.split(qp),i=[];for(let e=0;e<r.length;e++){const n=$p(r[e],t);if(i.push(n),"error"===n.type)break}return i})(e,this.socket.binaryType).forEach((e=>{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState&&this.poll())}doClose(){const e=()=>{this.write([{type:"close"}])};"open"===this.readyState?e():this.once("open",e)}write(e){this.writable=!1,((e,t)=>{const r=e.length,i=new Array(r);let n=0;e.forEach(((e,s)=>{Lp(e,!1,(e=>{i[s]=e,++n===r&&t(i.join(qp))}))}))})(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emitReserved("drain")}))}))}uri(){const e=this.opts.secure?"https":"http",t=this.query||{};return!1!==this.opts.timestampRequests&&(t[this.opts.timestampParam]=pu()),this.supportsBinary||t.sid||(t.b64=1),this.createUri(e,t)}request(e={}){return Object.assign(e,{xd:this.xd,cookieJar:this.cookieJar},this.opts),new vu(this.uri(),e)}doWrite(e,t){const r=this.request({method:"POST",data:e});r.on("success",t),r.on("error",((e,t)=>{this.onError("xhr post error",e,t)}))}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",((e,t)=>{this.onError("xhr poll error",e,t)})),this.pollXhr=e}}},Cu=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Ru=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function Tu(e){if(e.length>2e3)throw"URI too long";const t=e,r=e.indexOf("["),i=e.indexOf("]");-1!=r&&-1!=i&&(e=e.substring(0,r)+e.substring(r,i).replace(/:/g,";")+e.substring(i,e.length));let n=Cu.exec(e||""),s={},o=14;for(;o--;)s[Ru[o]]=n[o]||"";return-1!=r&&-1!=i&&(s.source=t,s.host=s.host.substring(1,s.host.length-1).replace(/;/g,":"),s.authority=s.authority.replace("[","").replace("]","").replace(/;/g,":"),s.ipv6uri=!0),s.pathNames=function(e,t){const r=/\/{2,9}/g,i=t.replace(r,"/").split("/");"/"!=t.slice(0,1)&&0!==t.length||i.splice(0,1);"/"==t.slice(-1)&&i.splice(i.length-1,1);return i}(0,s.path),s.queryKey=function(e,t){const r={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,i){t&&(r[t]=i)})),r}(0,s.query),s}let Pu=class e extends Qp{constructor(e,t={}){super(),this.binaryType="arraybuffer",this.writeBuffer=[],e&&"object"==typeof e&&(t=e,e=null),e?(e=Tu(e),t.hostname=e.host,t.secure="https"===e.protocol||"wss"===e.protocol,t.port=e.port,e.query&&(t.query=e.query)):t.host&&(t.hostname=Tu(t.host).host),tu(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=t.transports||["polling","websocket","webtransport"],this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=function(e){let t={},r=e.split("&");for(let e=0,i=r.length;e<i;e++){let i=r[e].split("=");t[decodeURIComponent(i[0])]=decodeURIComponent(i[1])}return t}(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&(this.beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){const t=Object.assign({},this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);const r=Object.assign({},this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[e]);return new Su[e](r)}open(){let t;if(this.opts.rememberUpgrade&&e.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))t="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);t=this.transports[0]}this.readyState="opening";try{t=this.createTransport(t)}catch(e){return this.transports.shift(),void this.open()}t.open(),this.setTransport(t)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(e=>this.onClose("transport close",e)))}probe(t){let r=this.createTransport(t),i=!1;e.priorWebsocketSuccess=!1;const n=()=>{i||(r.send([{type:"ping",data:"probe"}]),r.once("packet",(t=>{if(!i)if("pong"===t.type&&"probe"===t.data){if(this.upgrading=!0,this.emitReserved("upgrading",r),!r)return;e.priorWebsocketSuccess="websocket"===r.name,this.transport.pause((()=>{i||"closed"!==this.readyState&&(l(),this.setTransport(r),r.send([{type:"upgrade"}]),this.emitReserved("upgrade",r),r=null,this.upgrading=!1,this.flush())}))}else{const e=new Error("probe error");e.transport=r.name,this.emitReserved("upgradeError",e)}})))};function s(){i||(i=!0,l(),r.close(),r=null)}const o=e=>{const t=new Error("probe error: "+e);t.transport=r.name,s(),this.emitReserved("upgradeError",t)};function a(){o("transport closed")}function c(){o("socket closed")}function d(e){r&&e.name!==r.name&&s()}const l=()=>{r.removeListener("open",n),r.removeListener("error",o),r.removeListener("close",a),this.off("close",c),this.off("upgrading",d)};r.once("open",n),r.once("error",o),r.once("close",a),this.once("close",c),this.once("upgrading",d),-1!==this.upgrades.indexOf("webtransport")&&"webtransport"!==t?this.setTimeoutFn((()=>{i||r.open()}),200):r.open()}onOpen(){if(this.readyState="open",e.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade){let e=0;const t=this.upgrades.length;for(;e<t;e++)this.probe(this.upgrades[e])}}onPacket(e){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(this.emitReserved("packet",e),this.emitReserved("heartbeat"),this.resetPingTimeout(),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"ping":this.sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong");break;case"error":const t=new Error("server error");t.code=e.data,this.onError(t);break;case"message":this.emitReserved("data",e.data),this.emitReserved("message",e.data)}}onHandshake(e){this.emitReserved("handshake",e),this.id=e.sid,this.transport.query.sid=e.sid,this.upgrades=this.filterUpgrades(e.upgrades),this.pingInterval=e.pingInterval,this.pingTimeout=e.pingTimeout,this.maxPayload=e.maxPayload,this.onOpen(),"closed"!==this.readyState&&this.resetPingTimeout()}resetPingTimeout(){this.clearTimeoutFn(this.pingTimeoutTimer),this.pingTimeoutTimer=this.setTimeoutFn((()=>{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const e=this.getWritablePackets();this.transport.send(e),this.prevBufferLen=e.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let e=1;for(let r=0;r<this.writeBuffer.length;r++){const i=this.writeBuffer[r].data;if(i&&(e+="string"==typeof(t=i)?function(e){let t=0,r=0;for(let i=0,n=e.length;i<n;i++)t=e.charCodeAt(i),t<128?r+=1:t<2048?r+=2:t<55296||t>=57344?r+=3:(i++,r+=4);return r}(t):Math.ceil(1.33*(t.byteLength||t.size))),r>0&&e>this.maxPayload)return this.writeBuffer.slice(0,r);e+=2}var t;return this.writeBuffer}write(e,t,r){return this.sendPacket("message",e,t,r),this}send(e,t,r){return this.sendPacket("message",e,t,r),this}sendPacket(e,t,r,i){if("function"==typeof t&&(i=t,t=void 0),"function"==typeof r&&(i=r,r=null),"closing"===this.readyState||"closed"===this.readyState)return;(r=r||{}).compress=!1!==r.compress;const n={type:e,data:t,options:r};this.emitReserved("packetCreate",n),this.writeBuffer.push(n),i&&this.once("flush",i),this.flush()}close(){const e=()=>{this.onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},r=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?r():e()})):this.upgrading?r():e()),this}onError(t){e.priorWebsocketSuccess=!1,this.emitReserved("error",t),this.onClose("transport error",t)}onClose(e,t){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(e){const t=[];let r=0;const i=e.length;for(;r<i;r++)~this.transports.indexOf(e[r])&&t.push(e[r]);return t}};Pu.protocol=4;const ku="function"==typeof ArrayBuffer,Ou=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,Eu=Object.prototype.toString,Du="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Eu.call(Blob),Iu="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===Eu.call(File);function xu(e){return ku&&(e instanceof ArrayBuffer||Ou(e))||Du&&e instanceof Blob||Iu&&e instanceof File}function Mu(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,r=e.length;t<r;t++)if(Mu(e[t]))return!0;return!1}if(xu(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return Mu(e.toJSON(),!0);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&Mu(e[t]))return!0;return!1}function ju(e){const t=[],r=e.data,i=e;return i.data=Lu(r,t),i.attachments=t.length,{packet:i,buffers:t}}function Lu(e,t){if(!e)return e;if(xu(e)){const r={_placeholder:!0,num:t.length};return t.push(e),r}if(Array.isArray(e)){const r=new Array(e.length);for(let i=0;i<e.length;i++)r[i]=Lu(e[i],t);return r}if("object"==typeof e&&!(e instanceof Date)){const r={};for(const i in e)Object.prototype.hasOwnProperty.call(e,i)&&(r[i]=Lu(e[i],t));return r}return e}function Au(e,t){return e.data=Nu(e.data,t),delete e.attachments,e}function Nu(e,t){if(!e)return e;if(e&&!0===e._placeholder){if("number"==typeof e.num&&e.num>=0&&e.num<t.length)return t[e.num];throw new Error("illegal attachments")}if(Array.isArray(e))for(let r=0;r<e.length;r++)e[r]=Nu(e[r],t);else if("object"==typeof e)for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(e[r]=Nu(e[r],t));return e}const Bu=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];var Fu;!function(e){e[e.CONNECT=0]="CONNECT",e[e.DISCONNECT=1]="DISCONNECT",e[e.EVENT=2]="EVENT",e[e.ACK=3]="ACK",e[e.CONNECT_ERROR=4]="CONNECT_ERROR",e[e.BINARY_EVENT=5]="BINARY_EVENT",e[e.BINARY_ACK=6]="BINARY_ACK"}(Fu||(Fu={}));function zu(e){return"[object Object]"===Object.prototype.toString.call(e)}class Uu extends Qp{constructor(e){super(),this.reviver=e}add(e){let t;if("string"==typeof e){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");t=this.decodeString(e);const r=t.type===Fu.BINARY_EVENT;r||t.type===Fu.BINARY_ACK?(t.type=r?Fu.EVENT:Fu.ACK,this.reconstructor=new $u(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else{if(!xu(e)&&!e.base64)throw new Error("Unknown type: "+e);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t))}}decodeString(e){let t=0;const r={type:Number(e.charAt(0))};if(void 0===Fu[r.type])throw new Error("unknown packet type "+r.type);if(r.type===Fu.BINARY_EVENT||r.type===Fu.BINARY_ACK){const i=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const n=e.substring(i,t);if(n!=Number(n)||"-"!==e.charAt(t))throw new Error("Illegal attachments");r.attachments=Number(n)}if("/"===e.charAt(t+1)){const i=t+1;for(;++t;){if(","===e.charAt(t))break;if(t===e.length)break}r.nsp=e.substring(i,t)}else r.nsp="/";const i=e.charAt(t+1);if(""!==i&&Number(i)==i){const i=t+1;for(;++t;){const r=e.charAt(t);if(null==r||Number(r)!=r){--t;break}if(t===e.length)break}r.id=Number(e.substring(i,t+1))}if(e.charAt(++t)){const i=this.tryParse(e.substr(t));if(!Uu.isPayloadValid(r.type,i))throw new Error("invalid payload");r.data=i}return r}tryParse(e){try{return JSON.parse(e,this.reviver)}catch(e){return!1}}static isPayloadValid(e,t){switch(e){case Fu.CONNECT:return zu(t);case Fu.DISCONNECT:return void 0===t;case Fu.CONNECT_ERROR:return"string"==typeof t||zu(t);case Fu.EVENT:case Fu.BINARY_EVENT:return Array.isArray(t)&&("number"==typeof t[0]||"string"==typeof t[0]&&-1===Bu.indexOf(t[0]));case Fu.ACK:case Fu.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class $u{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){const e=Au(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}var Vu=Object.freeze({__proto__:null,Decoder:Uu,Encoder:class{constructor(e){this.replacer=e}encode(e){return e.type!==Fu.EVENT&&e.type!==Fu.ACK||!Mu(e)?[this.encodeAsString(e)]:this.encodeAsBinary({type:e.type===Fu.EVENT?Fu.BINARY_EVENT:Fu.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id})}encodeAsString(e){let t=""+e.type;return e.type!==Fu.BINARY_EVENT&&e.type!==Fu.BINARY_ACK||(t+=e.attachments+"-"),e.nsp&&"/"!==e.nsp&&(t+=e.nsp+","),null!=e.id&&(t+=e.id),null!=e.data&&(t+=JSON.stringify(e.data,this.replacer)),t}encodeAsBinary(e){const t=ju(e),r=this.encodeAsString(t.packet),i=t.buffers;return i.unshift(r),i}},get PacketType(){return Fu},protocol:5});function Gu(e,t,r){return e.on(t,r),function(){e.off(t,r)}}const qu=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class Hu extends Qp{constructor(e,t,r){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,r&&r.auth&&(this.auth=r.auth),this._opts=Object.assign({},r),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const e=this.io;this.subs=[Gu(e,"open",this.onopen.bind(this)),Gu(e,"packet",this.onpacket.bind(this)),Gu(e,"error",this.onerror.bind(this)),Gu(e,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...e){return e.unshift("message"),this.emit.apply(this,e),this}emit(e,...t){if(qu.hasOwnProperty(e))throw new Error('"'+e.toString()+'" is a reserved event name');if(t.unshift(e),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(t),this;const r={type:Fu.EVENT,data:t,options:{}};if(r.options.compress=!1!==this.flags.compress,"function"==typeof t[t.length-1]){const e=this.ids++,i=t.pop();this._registerAckCallback(e,i),r.id=e}const i=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return this.flags.volatile&&(!i||!this.connected)||(this.connected?(this.notifyOutgoingListeners(r),this.packet(r)):this.sendBuffer.push(r)),this.flags={},this}_registerAckCallback(e,t){var r;const i=null!==(r=this.flags.timeout)&&void 0!==r?r:this._opts.ackTimeout;if(void 0===i)return void(this.acks[e]=t);const n=this.io.setTimeoutFn((()=>{delete this.acks[e];for(let t=0;t<this.sendBuffer.length;t++)this.sendBuffer[t].id===e&&this.sendBuffer.splice(t,1);t.call(this,new Error("operation has timed out"))}),i);this.acks[e]=(...e)=>{this.io.clearTimeoutFn(n),t.apply(this,[null,...e])}}emitWithAck(e,...t){const r=void 0!==this.flags.timeout||void 0!==this._opts.ackTimeout;return new Promise(((i,n)=>{t.push(((e,t)=>r?e?n(e):i(t):i(e))),this.emit(e,...t)}))}_addToQueue(e){let t;"function"==typeof e[e.length-1]&&(t=e.pop());const r={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push(((e,...i)=>{if(r!==this._queue[0])return;return null!==e?r.tryCount>this._opts.retries&&(this._queue.shift(),t&&t(e)):(this._queue.shift(),t&&t(null,...i)),r.pending=!1,this._drainQueue()})),this._queue.push(r),this._drainQueue()}_drainQueue(e=!1){if(!this.connected||0===this._queue.length)return;const t=this._queue[0];t.pending&&!e||(t.pending=!0,t.tryCount++,this.flags=t.flags,this.emit.apply(this,t.args))}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){"function"==typeof this.auth?this.auth((e=>{this._sendConnectPacket(e)})):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:Fu.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},e):e})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e,t){this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t)}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case Fu.CONNECT:e.data&&e.data.sid?this.onconnect(e.data.sid,e.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case Fu.EVENT:case Fu.BINARY_EVENT:this.onevent(e);break;case Fu.ACK:case Fu.BINARY_ACK:this.onack(e);break;case Fu.DISCONNECT:this.ondisconnect();break;case Fu.CONNECT_ERROR:this.destroy();const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];null!=e.id&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){const t=this._anyListeners.slice();for(const r of t)r.apply(this,e)}super.emit.apply(this,e),this._pid&&e.length&&"string"==typeof e[e.length-1]&&(this._lastOffset=e[e.length-1])}ack(e){const t=this;let r=!1;return function(...i){r||(r=!0,t.packet({type:Fu.ACK,id:e,data:i}))}}onack(e){const t=this.acks[e.id];"function"==typeof t&&(t.apply(this,e.data),delete this.acks[e.id])}onconnect(e,t){this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((e=>{this.notifyOutgoingListeners(e),this.packet(e)})),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((e=>e())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:Fu.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}timeout(e){return this.flags.timeout=e,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){const t=this._anyListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(e),this}prependAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(e),this}offAnyOutgoing(e){if(!this._anyOutgoingListeners)return this;if(e){const t=this._anyOutgoingListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(e){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const t=this._anyOutgoingListeners.slice();for(const r of t)r.apply(this,e.data)}}}function Wu(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}Wu.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),r=Math.floor(t*this.jitter*e);e=0==(1&Math.floor(10*t))?e-r:e+r}return 0|Math.min(e,this.max)},Wu.prototype.reset=function(){this.attempts=0},Wu.prototype.setMin=function(e){this.ms=e},Wu.prototype.setMax=function(e){this.max=e},Wu.prototype.setJitter=function(e){this.jitter=e};class Ku extends Qp{constructor(e,t){var r;super(),this.nsps={},this.subs=[],e&&"object"==typeof e&&(t=e,e=void 0),(t=t||{}).path=t.path||"/socket.io",this.opts=t,tu(this,t),this.reconnection(!1!==t.reconnection),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(r=t.randomizationFactor)&&void 0!==r?r:.5),this.backoff=new Wu({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==t.timeout?2e4:t.timeout),this._readyState="closed",this.uri=e;const i=t.parser||Vu;this.encoder=new i.Encoder,this.decoder=new i.Decoder,this._autoConnect=!1!==t.autoConnect,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,this):this._reconnection}reconnectionAttempts(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}randomizationFactor(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(e){if(~this._readyState.indexOf("open"))return this;this.engine=new Pu(this.uri,this.opts);const t=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const i=Gu(t,"open",(function(){r.onopen(),e&&e()})),n=t=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",t),e?e(t):this.maybeReconnectOnOpen()},s=Gu(t,"error",n);if(!1!==this._timeout){const e=this._timeout,r=this.setTimeoutFn((()=>{i(),n(new Error("timeout")),t.close()}),e);this.opts.autoUnref&&r.unref(),this.subs.push((()=>{this.clearTimeoutFn(r)}))}return this.subs.push(i),this.subs.push(s),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(Gu(e,"ping",this.onping.bind(this)),Gu(e,"data",this.ondata.bind(this)),Gu(e,"error",this.onerror.bind(this)),Gu(e,"close",this.onclose.bind(this)),Gu(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(e){this.onclose("parse error",e)}}ondecoded(e){yu((()=>{this.emitReserved("packet",e)}),this.setTimeoutFn)}onerror(e){this.emitReserved("error",e)}socket(e,t){let r=this.nsps[e];return r?this._autoConnect&&!r.active&&r.connect():(r=new Hu(this,e,t),this.nsps[e]=r),r}_destroy(e){const t=Object.keys(this.nsps);for(const e of t){if(this.nsps[e].active)return}this._close()}_packet(e){const t=this.encoder.encode(e);for(let r=0;r<t.length;r++)this.engine.write(t[r],e.options)}cleanup(){this.subs.forEach((e=>e())),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e,t){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e,t),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const r=this.setTimeoutFn((()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((t=>{t?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):e.onreconnect()})))}),t);this.opts.autoUnref&&r.unref(),this.subs.push((()=>{this.clearTimeoutFn(r)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const Ju={};function Qu(e,t){"object"==typeof e&&(t=e,e=void 0);const r=function(e,t="",r){let i=e;r=r||"undefined"!=typeof location&&location,null==e&&(e=r.protocol+"//"+r.host),"string"==typeof e&&("/"===e.charAt(0)&&(e="/"===e.charAt(1)?r.protocol+e:r.host+e),/^(https?|wss?):\/\//.test(e)||(e=void 0!==r?r.protocol+"//"+e:"https://"+e),i=Tu(e)),i.port||(/^(http|ws)$/.test(i.protocol)?i.port="80":/^(http|ws)s$/.test(i.protocol)&&(i.port="443")),i.path=i.path||"/";const n=-1!==i.host.indexOf(":")?"["+i.host+"]":i.host;return i.id=i.protocol+"://"+n+":"+i.port+t,i.href=i.protocol+"://"+n+(r&&r.port===i.port?"":":"+i.port),i}(e,(t=t||{}).path||"/socket.io"),i=r.source,n=r.id,s=r.path,o=Ju[n]&&s in Ju[n].nsps;let a;return t.forceNew||t["force new connection"]||!1===t.multiplex||o?a=new Ku(i,t):(Ju[n]||(Ju[n]=new Ku(i,t)),a=Ju[n]),r.query&&!t.query&&(t.query=r.queryKey),a.socket(r.path,t)}function Zu(e,t,r,i){return new(r||(r=Promise))((function(n,s){function o(e){try{c(i.next(e))}catch(e){s(e)}}function a(e){try{c(i.throw(e))}catch(e){s(e)}}function c(e){e.done?n(e.value):function(e){return e instanceof r?e:new r((function(t){t(e)}))}(e.value).then(o,a)}c((i=i.apply(e,t||[])).next())}))}Object.assign(Qu,{Manager:Ku,Socket:Hu,io:Qu,connect:Qu}),"function"==typeof SuppressedError&&SuppressedError;let Yu=[],Xu=0;const eh=new WeakMap;if(window.RTCPeerConnection){const ZS=window.RTCPeerConnection;function YS(e){const t=new ZS(e);Yu.push(t),eh.set(t,{index:Xu++});const r=()=>{"closed"===t.connectionState&&((e=>{Yu=Yu.filter((t=>t!==e))})(t),t.removeEventListener("connectionstatechange",r))};return t.addEventListener("connectionstatechange",r),t}YS.prototype=ZS.prototype,window.RTCPeerConnection=YS}const th=new URLSearchParams(window.location.search).has("debug");class rh{constructor(){this._isEnabled=!1,this._debugger=null,this._isEnabled=th}isEnabled(){return this._isEnabled}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}info(...e){if(this._isEnabled)return console.info(...e)}warn(...e){if(this._isEnabled)return console.warn(...e)}error(...e){if(this._isEnabled)return console.error(...e)}withDebugLogger(e=null){return this._debugger=e,this}debug(...e){if(!this._isEnabled||!this._debugger)return;const t=[];e.forEach((e=>{if("function"==typeof e){const r=e();t.push(r)}else t.push(e)})),this._debugger.print(...t)}}class ih{static parse(e){let t;try{t=JSON.parse(e)}catch(e){return}if("object"==typeof t&&!Array.isArray(t))return t.request?ih._handleRequest(t):t.response?ih._handleResponse(t):t.message?ih._handleMessage(t):void 0}static _handleRequest(e){const t={request:!0};if("string"==typeof e.method&&"number"==typeof e.id)return t.id=e.id,t.method=e.method,t.data=e.data||{},t}static _handleResponse(e){const t={response:!0};if("number"==typeof e.id)return t.id=e.id,e.ok?(t.ok=!0,t.data=e.data||{}):(t.ok=!1,t.errorCode=e.errorCode,t.errorReason=e.errorReason),t}static _handleMessage(e){const t={message:!0};if("string"==typeof e.method)return t.method=e.method,t.data=e.data||{},t}static createRequest(e,t){return{request:!0,id:Math.round(1e7*Math.random()),method:e,data:t||{}}}static createSuccessResponse(e,t){return{response:!0,id:e.id,ok:!0,data:t||{}}}static createErrorResponse(e,t,r){return{response:!0,id:e.id,errorCode:t,errorReason:r}}static createMessage(e,t){return{message:!0,method:e,data:t||{}}}}const nh=new rh;class sh extends ur{constructor(e,t="whereby-sfu#v4"){super(),this.socket=null,this.wsUrl=e,this.protocol=t,this.sents=new Map,this._setupSocket()}_setupSocket(){this.socket=new WebSocket(this.wsUrl,this.protocol),this.socket.onopen=this._onOpen.bind(this),this.socket.onmessage=this._onMessage.bind(this),this.socket.onclose=this._onClose.bind(this),this.socket.onerror=this._onError.bind(this)}_tearDown(){null!==this.socket&&(this.socket.onopen=null,this.socket.onmessage=null,this.socket.onclose=null,this.socket.onerror=null,this.socket=null,this.sents.forEach((e=>e.close())),this.emit("close"))}close(){var e;null===(e=this.socket)||void 0===e||e.close()}_onOpen(){nh.info("Connected"),this.emit("open")}_onMessage(e){const t=ih.parse(e.data);nh.info("Received message",t),(null==t?void 0:t.response)?this._handleResponse(t):(null==t?void 0:t.message)&&this.emit("message",t)}_onClose(){nh.info("Disconnected"),this._tearDown()}_onError(e){nh.info("Error",e)}_handleResponse(e){const t=this.sents.get(e.id);if(e.ok)t.resolve(e.data);else{const r=new Error(e.errorReason);t.reject(r)}}send(e){try{this.socket&&this.socket.send(JSON.stringify(e))}catch(e){}}message(e,t={}){const r=ih.createMessage(e,t);this.send(r)}request(e,t={},r=1500*(15+.1*this.sents.size)){const i=ih.createRequest(e,t);return this.send(i),new Promise(((e,t)=>{const n={id:i.id,method:i.method,resolve:t=>{this.sents.delete(i.id)&&(clearTimeout(n.timer),e(t))},reject:e=>{this.sents.delete(i.id)&&(clearTimeout(n.timer),t(e))},timer:setTimeout((()=>{this.sents.delete(i.id)&&t(new Error("request timeout"))}),r),close:()=>{clearTimeout(n.timer),t(new Error("transport closed"))}};this.sents.set(i.id,n)}))}}const oh={codecOptions:{opusDtx:!0,opusFec:!0},encodings:[{dtx:!0}]},ah={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scaleResolutionDownBy:4,maxBitrate:15e4},{scaleResolutionDownBy:2,maxBitrate:5e5},{scaleResolutionDownBy:1,maxBitrate:1e6}]},ch={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scaleResolutionDownBy:2,maxBitrate:15e4},{scaleResolutionDownBy:1,maxBitrate:5e5}]},dh={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scalabilityMode:"L3T2_KEY"}]},lh={encodings:[{}]},ph={encodings:[{scaleResolutionDownBy:2,dtx:!0,maxBitrate:5e5},{scaleResolutionDownBy:1,dtx:!0,maxBitrate:15e5}]},uh={encodings:[{dtx:!0}]},hh=(e,t,r)=>{const{lowDataModeEnabled:i,simulcastScreenshareOn:n,vp9On:s}=r;return"audio"===e?oh:t?s?uh:n?ph:lh:s?dh:i?ch:ah},mh=()=>{let e=wr.detectDevice()||(/applecoremedia|applewebkit|safari/i.test(navigator.userAgent)?"Safari12":void 0);return/iphone|ipad/i.test(navigator.userAgent)&&(e="Safari12"),e};var fh;const gh=null!==(fh=al.default)&&void 0!==fh?fh:al;const vh=400;var bh;const yh="safari"===(null!==(bh=al.default)&&void 0!==bh?bh:al).browserDetails.browser,_h=e=>e.split(/[^\d]/g).map((e=>parseInt(e,10)));function wh({devices:e,videoId:t,audioId:r,options:i,type:n="ideal"}){const s=e.filter((e=>"audioinput"===e.kind)),o=e.filter((e=>"videoinput"===e.kind)),a=!r||!s.some((e=>e.deviceId===r)),c=!t||!o.some((e=>e.deviceId===t)),d=function({disableAEC:e,disableAGC:t,hd:r,lax:i,lowDataMode:n,preferredDeviceIds:s,resolution:o,simulcast:a,widescreen:c}){var d,l;let p=480,u=240;r&&(p=i||yh?720:{min:360,ideal:720}),a&&(!1===r?(p=360,u=270):u=360);const h={audio:Object.assign({},s.audioId&&{deviceId:s.audioId}),video:Object.assign(Object.assign({},s.videoId?{deviceId:s.videoId}:{facingMode:"user"}),{height:n?u:p,frameRate:n&&!a?15:24})};if(i)return(null===(d=h.audio)||void 0===d?void 0:d.deviceId)||(h.audio=!0),null===(l=h.video)||void 0===l||delete l.facingMode,h;if(o){const[e,t,r]=_h(o);e&&(h.video.width={exact:e}),t&&(h.video.height={exact:t}),r&&(h.video.frameRate={exact:r}),delete h.video.facingMode}else h.video.aspectRatio=c?16/9:4/3;return t&&(h.audio.autoGainControl=!1),e&&(h.audio.echoCancellation=!1),h}(Object.assign({preferredDeviceIds:{audioId:a?null:{[n]:r},videoId:c?null:{[n]:t}}},i));return!1!==r&&s.length||delete d.audio,!1!==t&&o.length||delete d.video,d}const Sh=new rh,Ch=/mobi/i.test(navigator.userAgent);class Rh extends Error{constructor(...e){super(...e),this.name="nodevices"}}function Th(e){return e.audio||e.video?navigator.mediaDevices.getUserMedia(e).catch((t=>{const r=`${t}, ${JSON.stringify(e,null,2)}`;throw Sh.error(`getUserMedia ${r}`),t})):Promise.reject(new Rh("No provided devices"))}function Ph(e,t,r,i){var n,s,o;let a={deviceId:null};return t?(a.label=t.label,t.getSettings&&(a=Object.assign(Object.assign({},a),t.getSettings())),a.deviceId?a:(t.getCapabilities&&(a.deviceId=t.getCapabilities().deviceId),a.deviceId?a:(t.label&&r&&(a.deviceId=null===(s=r.find((r=>t.label===r.label&&r.kind===e)))||void 0===s?void 0:s.deviceId),a.deviceId||(a.deviceId=null===(o=t.getConstraints())||void 0===o?void 0:o.deviceId,a.broken=1),a))):(i&&r&&(a.deviceId=null===(n=r.find((t=>t.deviceId===i&&t.kind===e)))||void 0===n?void 0:n.deviceId),a)}function kh(e,t){t&&"audio"!==t||e.getAudioTracks().forEach((e=>e.stop())),t&&"video"!==t||e.getVideoTracks().forEach((e=>e.stop()))}function Oh(e,{replaceStream:t,fallback:r=!0}={}){var i;return Zu(this,void 0,void 0,(function*(){let n,s,o,a=null;const c=!1===e.audioId?"video":!1===e.videoId&&"audio",d=Ch||"video"!==c,l=wh(e),p=(e,t)=>(e.details=Object.assign({constraints:l,constraint:e.constraint||(null==t?void 0:t.constraint),newConstraints:s,fallback:r,stopTracks:d},e!==n&&{error:String(n)}),e);d&&t&&kh(t,c);try{a=yield Th(l)}catch(s){if(n=s,!r)throw p(s);if("OverconstrainedError"===s.name){o={deviceId:{videoId:null,audioId:null},width:{lax:!0},height:{lax:!0},"":{audioId:null,videoId:null,lax:!0}}[s.constraint||""]}else if("NotFoundError"===s.name){if(l.audio&&l.video){try{a=yield Th(wh(Object.assign(Object.assign({},e),{audioId:!1})))}catch(e){if("NotFoundError"!==e.name)throw p(e,s)}try{a||(a=yield Th(wh(Object.assign(Object.assign({},e),{videoId:!1}))))}catch(e){throw p(e,s)}}}else if("NotAllowedError"===s.name||"NotReadableError"===s.name||"AbortError"===s.name)if(t&&!d)kh(t,c),o=e;else if("NotAllowedError"!==s.name){try{a=yield Th(wh(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{lax:!0})})))}catch(e){Sh.warn("Tried getting stream again with laxer constraints, but failed: "+(""+e))}const t=(""+s).toLowerCase(),r={audio:"audioId",video:"videoId"}[(null===(i=/(video|audio)/.exec(t))||void 0===i?void 0:i[0])||c||""];if(!a&&r)try{a=yield Th(wh(Object.assign(Object.assign({},e),{[r]:null})))}catch(e){Sh.warn(`Re-tried ${r} with no constraints, but failed: ${""+e}`)}if(!a){const t=r?[r]:["videoId","audioId"];for(const r of t){try{a=yield Th(wh(Object.assign(Object.assign({},e),{[r]:!1})))}catch(e){Sh.warn(`Re-tried without ${r}, but failed: ${""+e}`)}if(a)break}}}}if(o){const t=c?{audio:{videoId:!1},video:{audioId:!1}}[c]:{};s=wh(Object.assign(Object.assign(Object.assign(Object.assign({},e),o),{options:Object.assign(Object.assign({},e.options),{lax:o.lax})}),t));try{a=yield Th(s)}catch(e){throw p(e,n)}}if(!a)throw p(n);let u;return t&&(d||kh(t,c),u=function(e,t,r){const i=[];return r&&"audio"!==r||(i.push(...e.getAudioTracks()),t.getAudioTracks().forEach((t=>{t.replacement=!0,e.addTrack(t)}))),r&&"video"!==r||(i.push(...e.getVideoTracks()),t.getVideoTracks().forEach((t=>{t.replacement=!0,e.addTrack(t)}))),i.forEach((t=>{t.replaced=!0,e.removeTrack(t)})),i}(t,a,c),a=t),{error:n&&p(n),stream:a,replacedTracks:u}}))}function Eh({oldDevices:e,newDevices:t,currentAudioId:r,currentVideoId:i,currentSpeakerId:n}){const s=function(e,t){const[r,i]=[e,t].map((e=>e.filter((e=>e.kind&&e.deviceId)).reduce(((e,t)=>Object.assign(Object.assign({},e),{[t.kind]:Object.assign(Object.assign({},e[t.kind]),{[t.deviceId]:t})})),{}))),n={};return e.forEach((e=>{e.kind&&e.deviceId&&(n[e.kind]||(n[e.kind]={added:{},removed:{},changed:{}}),i[e.kind]&&i[e.kind][e.deviceId]||(n[e.kind].removed[e.deviceId]=e))})),t.forEach((e=>{e.kind&&e.deviceId&&(n[e.kind]||(n[e.kind]={added:{},removed:{},changed:{}}),r[e.kind]&&r[e.kind][e.deviceId]?r[e.kind][e.deviceId].label&&r[e.kind][e.deviceId].label!==e.label&&(n[e.kind].changed[e.deviceId]=e):n[e.kind].added[e.deviceId]=e)})),n}(e,t),o={},a={};return[["audioinput",r],["videoinput",i],["audiooutput",n]].forEach((([e,r])=>{const i=s[e=e||""];if(i){if(r){if(i.removed[r]&&(o[e]={deviceId:null},"audiooutput"===e)){const r=t.find((e=>"audiooutput"===e.kind));o[e]={deviceId:null==r?void 0:r.deviceId}}i.changed[r]&&(o[e]={deviceId:r})}if(Object.keys(i.added).length){const[t]=Object.keys(i.added).slice(0,1),r=i.added[t];a[e]={deviceId:r.deviceId,label:r.label,kind:r.kind}}}})),{addedDevices:a,changedDevices:o}}al.default;const Dh={id:gl(),connectionNumber:0},Ih=()=>{};let xh=Ih;const Mh=function(e,t=console){const r=[];let i,n,s,o,a,c,d,l,p,u,h,m,f=0,g=!1,v=0;const b={connected:!1,trace:(...e)=>{if(e.push(Date.now()),"customEvent"===e[0]&&"roomSessionId"===e[2].type){const t=c&&c[2].value.roomSessionId,r=e[2].value.roomSessionId;if(c=e,g&&r&&r!==t&&i)return void i.close();r&&(g=!0)}else"customEvent"===e[0]&&"clientId"===e[2].type?s=e:"customEvent"===e[0]&&"organizationId"===e[2].type?n=e:"customEvent"===e[0]&&"displayName"===e[2].type?o=e:"customEvent"===e[0]&&"userRole"===e[2].type?a=e:"customEvent"===e[0]&&"deviceId"===e[2].type?l=e:"customEvent"===e[0]&&"roomProduct"===e[2].type?p=e:"customEvent"===e[0]&&"roomMode"===e[2].type?u=e:"customEvent"===e[0]&&"sfuServer"===e[2].type?h=e:"customEvent"===e[0]&&"featureFlags"===e[2].type&&(m=e);i.readyState===WebSocket.OPEN?(f=0,i.send(JSON.stringify(e))):"getstats"===e[0]?v<20&&(v++,r.push(e)):"customEvent"===e[0]&&"insightsStats"===e[2].type||r.push(e),i.readyState===WebSocket.CLOSED&&d&&setTimeout((()=>{i.readyState===WebSocket.CLOSED&&d&&b.connect()}),1e3*f)},close:()=>{d=!1,i&&i.close()},connect:()=>{d=!0,f+=1,i&&i.close(),b.connected=!0,i=new WebSocket(e+window.location.pathname,"1.0"),i.onerror=e=>{b.connected=!1,t.warn("[RTCSTATS] WebSocket error",e)},i.onclose=e=>{b.connected=!1,t.info(`[RTCSTATS] Closed ${e.code}`),xh()},i.onopen=()=>{for(Dh.connectionNumber++,i.send(JSON.stringify(["clientInfo",null,Dh])),n&&i.send(JSON.stringify(n)),s&&i.send(JSON.stringify(s)),c&&i.send(JSON.stringify(c)),o&&i.send(JSON.stringify(o)),a&&i.send(JSON.stringify(a)),l&&i.send(JSON.stringify(l)),u&&i.send(JSON.stringify(u)),p&&i.send(JSON.stringify(p)),h&&i.send(JSON.stringify(h)),m&&i.send(JSON.stringify(m));r.length;)i.send(JSON.stringify(r.shift()));v=0}}};return b.connect(),b}("wss://rtcstats.srv.whereby.com"),jh=ll(Mh.trace,1e4,[""]);xh=(null==jh?void 0:jh.resetDelta)||Ih;const Lh={sendEvent:(e,t)=>{Mh.trace("customEvent",null,{type:e,value:t})},sendAudioMuted:e=>{Lh.sendEvent("audio_muted",{muted:e})},sendVideoMuted:e=>{Lh.sendEvent("video_muted",{muted:e})},server:Mh};var Ah;const Nh=null!==(Ah=al.default)&&void 0!==Ah?Ah:al,Bh=new rh,Fh=Nh.browserDetails.browser,zh=Nh.browserDetails.version;function Uh(e,t){let r=e.match(/a=ssrc-group:FID (\d+) (\d+)\r\n/),i=t.match(/a=ssrc-group:FID (\d+) (\d+)\r\n/);r||(r=e.match(/a=ssrc:(\d+) cname:(.*)\r\n/g)[1].match(/a=ssrc:(\d+)/),i=t.match(/a=ssrc:(\d+) cname:(.*)\r\n/g)[1].match(/a=ssrc:(\d+)/));for(let e=1;e<r.length;e++)t=t.replace(new RegExp(i[e],"g"),r[e]);return t}function $h(e){return"firefox"!==Fh?e:Qd.splitLines(e.trim()).map((e=>e.startsWith("a=msid-semantic:")?"a=msid-semantic: WMS *":e)).join("\r\n")+"\r\n"}function Vh(e){return function(e,t,r=!1,i=!1){var n,s;try{const o=xn(e);if((null===(n=null==o?void 0:o.ext)||void 0===n?void 0:n.length)&&o.ext.length>0)return e;if((null==o?void 0:o.media.length)<1)return e;const a=null==o?void 0:o.media.flatMap((e=>e.ext||[])),c=(null===(s=a.find((e=>e.uri===t)))||void 0===s?void 0:s.value)||[...new Set([0,15,...a.map((e=>e.value))])].sort(((e,t)=>e-t)).find(((e,t,r)=>e+1!==r[t+1]))+1;return o.media.forEach((e=>{var n;(r&&"audio"===e.type||i&&"video"===e.type)&&((null===(n=e.ext)||void 0===n?void 0:n.find((e=>e.uri===t)))||(Array.isArray(e.ext)?e.ext.push({value:c,uri:t}):e.ext=[{value:c,uri:t}]))})),In(o)}catch(e){console.error("Error during addAbsCaptureTimeExtMap: ",e)}return e}(e,"http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time",!0,!0)}function Gh(e,t,r=console){const i=e.getSenders().find((e=>e.track&&"video"===e.track.kind));if(!i)return Promise.resolve();const n=i.getParameters();return n.encodings&&0===n.encodings.length?Promise.resolve():(n.encodings||(n.encodings=[{}]),0===t?delete n.encodings[0].maxBitrate:n.encodings[0].maxBitrate=1e3*t,i.setParameters(n).catch((e=>{r.error("setParameters err: ",e)})))}var qh;const Hh=null!==(qh=al.default)&&void 0!==qh?qh:al,Wh=new rh;class Kh{constructor({peerConnectionId:e,bandwidth:t,maximumTurnBandwidth:r,deprioritizeH264Encoding:i}){this.peerConnectionId=e,this.relayCandidateSeen=!1,this.serverReflexiveCandidateSeen=!1,this.publicHostCandidateSeen=!1,this.ipv6HostCandidateSeen=!1,this.ipv6HostCandidateTeredoSeen=!1,this.ipv6HostCandidate6to4Seen=!1,this.mdnsHostCandidateSeen=!1,this.pc=null,this.wasEverConnected=!1,this.connectionStatus=null,this.stats={totalSent:0,totalRecv:0},this.bandwidth=t||0,this.maximumTurnBandwidth=r,this.pending=[],this.isOperationPending=!1,this.streamIds=[],this.streams=[],this.earlyIceCandidates=[],this.afterConnected=new Promise((e=>{this.registerConnected=e})),this.offerOptions={offerToReceiveAudio:!0,offerToReceiveVideo:!0},this._deprioritizeH264Encoding=i}setAndGetPeerConnection({clientId:e,constraints:t,peerConnectionConfig:r,shouldAddLocalVideo:i}){return this.peerConnectionConfig=r,this.shouldAddLocalVideo=i,this.clientId=e,this.pc=new RTCPeerConnection(r),this.signalingState=this.pc.signalingState,this.pc.addEventListener("signalingstatechange",(()=>{if(this.signalingState!==this.pc.signalingState&&(this.signalingState=this.pc.signalingState,"stable"===this.pc.signalingState)){this.isOperationPending=!1;const e=this.pending.shift();e&&e.apply()}})),this.pc}addStream(e){this.streamIds.push(e.id),this.streams.push(e),RTCPeerConnection.prototype.addTrack?(e.getAudioTracks().forEach((t=>{this.pc.addTrack(t,e)})),e.getVideoTracks().forEach((t=>{this.pc.addTrack(t,e)}))):this.pc.addStream(e)}addTrack(e,t){t||(t=this.streams[0]),null==t||t.addTrack(e),this.pc.addTrack(e,t)}removeTrack(e){this.streams[0].removeTrack(e);const t=this.pc.getSenders().find((t=>t.track===e));t&&this.pc.removeTrack(t)}removeStream(e){for(let t=0;t<this.streamIds.length;t++)this.streamIds[t]===e.id&&(this.streamIds.splice(t,1),this.streams.splice(t,1));this.pc&&(this.pc.removeTrack?e.getTracks().forEach((e=>{const t=this.pc.getSenders().find((t=>t.track===e));t&&this.pc.removeTrack(t)})):this.pc.removeStream&&this.pc.removeStream(e))}_setRemoteDescription(e){return this._deprioritizeH264Encoding&&(e.sdp=function(e){return Qd.splitSections(e).map((e=>{if("video"!==Qd.getKind(e))return e;const t=Qd.matchPrefix(e,"a=rtpmap:").map((e=>Qd.parseRtpMap(e))).filter((e=>/h264/i.test(e.name))).map((e=>""+e.payloadType));if(!t.length)return e;const r=Qd.matchPrefix(e,"m=video")[0],i=/(\s\d+)+$/i.exec(r),n=i?i[0]:"",s=[...n.split(" ").filter((e=>e&&!t.includes(e))),...t].join(" "),o=r.replace(n," "+s);return e.replace(r,o)})).join("")}(e.sdp)),this.srdComplete=this.pc.setRemoteDescription(e),this.srdComplete.then((()=>{this.earlyIceCandidates.forEach((e=>this.pc.addIceCandidate(e))),this.earlyIceCandidates=[]}))}handleOffer(e){if(!this.canModifyPeerConnection())return new Promise((t=>{this.pending.push((()=>this.handleOffer(e).then(t)))}));this.isOperationPending=!0;let t=e.sdp;t=function(e){return"safari"!==Fh&&("firefox"!==Fh||zh&&zh>=63||60===zh)?e:Qd.splitLines(e.trim()).filter((e=>!e.startsWith("a=extmap:")||"urn:ietf:params:rtp-hdrext:sdes:mid"!==Qd.parseExtmap(e).uri)).join("\r\n")+"\r\n"}(t),t=$h(t);const r={type:e.type,sdp:t};let i;return this._setRemoteDescription(r).then((()=>this.pc.createAnswer())).then((e=>(i=e,this.pc.setLocalDescription(e)))).then((()=>Gh(this.pc,this.bandwidth))).then((()=>i))}handleAnswer(e){if(this.pendingOffer){const t=this.pendingOffer;return delete this.pendingOffer,this.pc.setLocalDescription(t).then((()=>this.handleAnswer(e)))}let t=e.sdp;t=$h(t);const r={type:e.type,sdp:t};return this._setRemoteDescription(r).then((()=>Gh(this.pc,this.bandwidth)),(e=>{Wh.warn("Could not set remote description from remote answer: ",e)}))}addIceCandidate(e){this.srdComplete?this.srdComplete.then((()=>{"closed"!==this.pc.signalingState&&("safari"===Hh.browserDetails.browser&&e&&""===e.candidate||this.pc.addIceCandidate(e).catch((t=>{Wh.warn("Failed to add ICE candidate ('%s'): %s",e?e.candidate:null,t)})))})):this.earlyIceCandidates.push(e)}canModifyPeerConnection(){return"stable"===this.pc.signalingState&&!this.isOperationPending}close(){const e=this.pc;if(e){e.oniceconnectionstatechange=null,e.onicecandidate=null,e.ontrack=null;try{e.close()}catch(e){Wh.warn("failures during close of session",e)}}}hasConnectedPeerConnection(){return this.pc&&"connected"===this.pc.connectionState}replaceTrack(e,t){const r=this.pc;if(!r)return!1;const i=r.getSenders();function n(r){const n=e=>e&&`id:${e.id},kind:${e.kind},state:${e.readyState}`;Wh.warn(`${r}. newTrack:${n(t)}, oldTrack:${n(e)}, sender tracks: ${JSON.stringify(i.map((e=>`s ${n(e.track)}`)))}, sender first codecs: ${JSON.stringify(i.map((e=>(e.getParameters().codecs||[])[0])))}`)}if(i.length||n("No senders!"),e||(e=(i.find((e=>e.track&&e.track.kind===t.kind))||{}).track)||n("No sender with same kind! Add new track then."),window.RTCRtpSender&&window.RTCRtpSender.prototype.replaceTrack){if(e){const r=()=>{for(let r=0;r<i.length;r++){const s=i[r],o=s.track;if(s||o||n("One of the tracks is null!"),o.id===t.id)return Promise.resolve(t);if(o.id===e.id)return i[r].replaceTrack(t)}return null};let s=r();if(s)return s;let o=null,a=null;s=new Promise(((e,t)=>{o=e,a=t}));let c=0,d=setInterval((()=>Zu(this,void 0,void 0,(function*(){const e=r();if(!e)return void(3<++c&&(clearInterval(d),d=null,n("No sender track to replace"),a("No sender track to replace")));clearInterval(d),d=null;const t=yield e;o(t)}))),1e3);return s}const s=this.streams.find((e=>e.getTracks().find((e=>e.id===t.id))))||this.streams[0];return s?r.addTrack(t,s):(n("No stream?"),Promise.reject(new Error("replaceTrack: No stream?")))}if(!this.canModifyPeerConnection())return void this.pending.push((()=>{this.replaceTrack(e,t)}));this.isOperationPending=!0;const s=r.onnegotiationneeded;return r.onnegotiationneeded=null,this.removeTrack(e),this.addTrack(t),setTimeout((()=>{r.onnegotiationneeded=s}),0),"offer"===r.localDescription.type?r.createOffer().then((e=>(e.sdp=Uh(r.localDescription.sdp,e.sdp),r.setLocalDescription(e)))).then((()=>this._setRemoteDescription(r.remoteDescription))):this._setRemoteDescription(r.remoteDescription).then((()=>r.createAnswer())).then((e=>(e.sdp=Uh(r.localDescription.sdp,e.sdp),r.setLocalDescription(e))))}maybeRestrictRelayBandwidth(){var e;-1!==this.maximumTurnBandwidth&&(this.pc.getStats&&(e=this.pc,e.getStats(null).then((e=>{let t,r;return e.forEach((i=>{if("transport"===i.type&&i.selectedCandidatePairId){const n=e.get(i.selectedCandidatePairId);if(!n)return;return t=e.get(n.localCandidateId).candidateType,void(r=e.get(n.remoteCandidateId).candidateType)}"candidate-pair"===i.type&&i.selected&&(t=e.get(i.localCandidateId).candidateType,r=e.get(i.remoteCandidateId).candidateType)})),"relay"===t||"relayed"===t||"relay"===r||"relayed"===r}))).then((e=>{e&&0===this.bandwidth&&this.changeBandwidth(this.maximumTurnBandwidth)})))}changeBandwidth(e){e!==this.bandwidth&&(this.canModifyPeerConnection()?(this.bandwidth=e,this.pc.localDescription&&""!==this.pc.localDescription.type&&Gh(this.pc,this.bandwidth)):this.pending.push((()=>this.changeBandwidth(e))))}setAudioOnly(e,t=[]){this.pc.getTransceivers().filter((e=>{var r,i,n,s,o,a;return"recvonly"!==(null==e?void 0:e.direction)&&"video"===(null===(i=null===(r=null==e?void 0:e.receiver)||void 0===r?void 0:r.track)||void 0===i?void 0:i.kind)&&!t.includes(null===(s=null===(n=null==e?void 0:e.receiver)||void 0===n?void 0:n.track)||void 0===s?void 0:s.id)&&!t.includes(null===(a=null===(o=null==e?void 0:e.sender)||void 0===o?void 0:o.track)||void 0===a?void 0:a.id)})).forEach((t=>{t.direction=e?"sendonly":"sendrecv"}))}}const Jh="fetch_mediaserver_config",Qh="start_screenshare",Zh="stop_screenshare",Yh="audio_enabled",Xh="client_left",em="mediaserver_config",tm="new_client",rm="screenshare_started",im="screenshare_stopped",nm="room_joined",sm="video_enabled",om="ice_candidate",am="ice_endofcandidates",cm="ready_to_receive_offer",dm="sdp_answer",lm="sdp_offer",pm="pending_client_left",um="media_quality_changed",hm="client_connection_status_changed",mm="stream_added",fm="rtc_manager_created",gm="rtc_manager_destroyed",vm="local_stream_track_added",bm="local_stream_track_removed",ym="connecting",_m="connection_failed",wm="connection_successful",Sm="connection_disconnected",Cm="camera",Rm="screen_share";const Tm=57600,Pm=2.6041666666666665,km=921600,Om=1.0850694444444444;const Em="[a-fA-F\\d:]",Dm=e=>e&&e.includeBoundaries?`(?:(?<=\\s|^)(?=${Em})|(?<=${Em})(?=\\s|$))`:"",Im="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",xm="[a-fA-F\\d]{1,4}",Mm=`\n(?:\n(?:${xm}:){7}(?:${xm}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:${xm}:){6}(?:${Im}|:${xm}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\n(?:${xm}:){5}(?::${Im}|(?::${xm}){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\n(?:${xm}:){4}(?:(?::${xm}){0,1}:${Im}|(?::${xm}){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\n(?:${xm}:){3}(?:(?::${xm}){0,2}:${Im}|(?::${xm}){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\n(?:${xm}:){2}(?:(?::${xm}){0,3}:${Im}|(?::${xm}){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\n(?:${xm}:){1}(?:(?::${xm}){0,4}:${Im}|(?::${xm}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::${xm}){0,5}:${Im}|(?::${xm}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\n)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1\n`.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),jm=new RegExp(`(?:^${Im}$)|(?:^${Mm}$)`),Lm=new RegExp(`^${Im}$`),Am=new RegExp(`^${Mm}$`),Nm=e=>e&&e.exact?jm:new RegExp(`(?:${Dm(e)}${Im}${Dm(e)})|(?:${Dm(e)}${Mm}${Dm(e)})`,"g");Nm.v4=e=>e&&e.exact?Lm:new RegExp(`${Dm(e)}${Im}${Dm(e)}`,"g"),Nm.v6=e=>e&&e.exact?Am:new RegExp(`${Dm(e)}${Mm}${Dm(e)}`,"g");var Bm,Fm,zm="connection_blocked_by_network",Um="ice_ipv6_seen",$m="ice_mdns_seen",Vm="ice_no_public_ip_gathered",Gm="ice_no_public_ip_gathered_3sec",qm="ice_restart",Hm="microphone_not_working",Wm="microphone_stopped_working",Km="new_pc",Jm="sfu_connection_open",Qm="sfu_connection_closed",Zm="dominant_speaker";const Ym=null!==(Bm=al.default)&&void 0!==Bm?Bm:al,Xm=new rh,ef=class{constructor(e,t){this.id=""+e,this.type=t,this.isEnabled=!0,this.hasSupportForAutoSuperSize=!1,this.isAudioEnabled=!0,this.isVideoEnabled=!0,this.status=ym,this.stream=null,this.streamId=null}setup(e){return this.stream=e,this.streamId=e.id,this.setVideoEnabled(this.isVideoEnabled&&e.getVideoTracks().length>0),this.setAudioEnabled(this.isAudioEnabled&&e.getAudioTracks().length>0),this}setStatus(e){return this.status=e,this}setVideoEnabled(e){this.isVideoEnabled=e,this.stream&&this.stream.getVideoTracks().forEach((t=>{t.enabled=e}))}setAudioEnabled(e){this.isAudioEnabled=e,this.stream&&this.stream.getAudioTracks().forEach((t=>{t.enabled=e}))}static getCameraId(){return"0"}static getTypeFromId(e){return"0"===""+e?Cm:Rm}}.getCameraId(),tf=Ym.browserDetails.browser,rf=Ym.browserDetails.version;"firefox"===tf&&Ym.browserShim&&"shimGetDisplayMedia"in Ym.browserShim&&(null===(Fm=Ym.browserShim)||void 0===Fm||Fm.shimGetDisplayMedia(window,"screen"));let nf=!1;"chrome"===tf&&window.document.addEventListener("beforeunload",(()=>{nf=!0}));class sf{constructor({selfId:e,room:t,emitter:r,serverSocket:i,webrtcProvider:n,features:s}){const{name:o,session:a,iceServers:c,sfuServer:d,mediaserverConfigTtlSeconds:l}=t;this._selfId=e,this._roomName=o,this._roomSessionId=a&&a.id,this.peerConnections={},this.localStreams={},this.enabledLocalStreamIds=[],this._screenshareVideoTrackIds=[],this._socketListenerDeregisterFunctions=[],this._localStreamDeregisterFunction=null,this._emitter=r,this._serverSocket=i,this._webrtcProvider=n,this._features=s||{},this._isAudioOnlyMode=!1,this.offerOptions={offerToReceiveAudio:!0,offerToReceiveVideo:!0},this._pendingActionsForConnectedPeerConnections=[],this._audioTrackOnEnded=()=>{Lh.sendEvent("audio_ended",{unloading:nf}),this._emit(Wm,{})},this._updateAndScheduleMediaServersRefresh({sfuServer:d,iceServers:c.iceServers||[],mediaserverConfigTtlSeconds:l}),this.totalSessionsCreated=0}numberOfPeerconnections(){return Object.keys(this.peerConnections).length}isInitializedWith({selfId:e,roomName:t,isSfu:r}){return this._selfId===e&&this._roomName===t&&r===!!this._sfuServer}supportsScreenShareAudio(){return!0}maybeRestrictRelayBandwidth(e){e.maybeRestrictRelayBandwidth()}addNewStream(e,t){if(t!==this.localStreams[e]){if(this._addLocalStream(e,t),e===ef){this._addStreamToPeerConnections(t);const[e]=t.getAudioTracks();e&&this._startMonitoringAudioTrack(e),this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null);const r=e=>{const{enable:t,track:r}=e.detail;this._handleStopOrResumeVideo({enable:t,track:r})};return t.addEventListener("stopresumevideo",r),void(this._localStreamDeregisterFunction=()=>{t.removeEventListener("stopresumevideo",r)})}this._screenshareVideoTrackIds.push(t.getVideoTracks()[0].id),this._shareScreen(e,t)}}replaceTrack(e,t){return e&&"audio"===e.kind&&this._stopMonitoringAudioTrack(e),t&&"audio"===t.kind&&this._startMonitoringAudioTrack(t),this._replaceTrackToPeerConnections(e,t)}accept({clientId:e,shouldAddLocalVideo:t}){return this.acceptNewStream({streamId:e,clientId:e,shouldAddLocalVideo:t})}disconnectAll(){Object.keys(this.peerConnections).forEach((e=>{this.disconnect(e)})),this.peerConnections={},this._socketListenerDeregisterFunctions.forEach((e=>{e()})),this._socketListenerDeregisterFunctions=[],this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null)}fixChromeAudio(e){if("chrome"!==tf)return;const t=this._getLocalCameraStream(),r=t.getAudioTracks()[0];return r&&"ended"===r.readyState?navigator.mediaDevices.getUserMedia({audio:e}).then((e=>{const i=e.getAudioTracks()[0];return i.enabled=r.enabled,t.removeTrack(r),t.addTrack(i),this.replaceTrack(r,i)})):void 0}setupSocketListeners(){this._socketListenerDeregisterFunctions=[()=>this._clearMediaServersRefresh(),this._serverSocket.on(em,(e=>{e.error?Xm.warn("FETCH_MEDIASERVER_CONFIG failed:",e.error):this._updateAndScheduleMediaServersRefresh(e)})),this._serverSocket.on(cm,(e=>{this._connect(e.clientId)})),this._serverSocket.on(om,(e=>{const t=this._getSession(e.clientId);t?t.addIceCandidate(e.message):Xm.warn("No RTCPeerConnection on ICE_CANDIDATE",e)})),this._serverSocket.on(am,(e=>{const t=this._getSession(e.clientId);t?t.addIceCandidate(null):Xm.warn("No RTCPeerConnection on ICE_END_OF_CANDIDATES",e)})),this._serverSocket.on(lm,(e=>{const t=this._getSession(e.clientId);if(!t)return void Xm.warn("No RTCPeerConnection on SDP_OFFER",e);const r=this._transformIncomingSdp(e.message,t.pc);t.handleOffer(r).then((t=>{this._emitServerEvent(dm,{receiverId:e.clientId,message:this._transformOutgoingSdp(t)})}))})),this._serverSocket.on(dm,(e=>{const t=this._getSession(e.clientId);if(!t)return void Xm.warn("No RTCPeerConnection on SDP_ANSWER",e);const r=this._transformIncomingSdp(e.message,t.pc);t.handleAnswer(r)})),this._serverSocket.on(nm,(({room:{sfuServer:e}})=>{if(e||!this._wasScreenSharing)return;const t=Object.keys(this.localStreams).find((e=>e!==ef));if(!t)return;const r=this.localStreams[t];if(!r)return void Xm.warn("screenshare stream %s not found",t);const i=r.getAudioTracks().length>0;this._emitServerEvent(Qh,{streamId:t,hasAudioTrack:i})}))]}sendAudioMutedStats(e){Lh.sendEvent("audio_muted",{muted:e})}sendVideoMutedStats(e){Lh.sendEvent("video_muted",{muted:e})}sendStatsCustomEvent(e,t){Lh.sendEvent(e,t)}rtcStatsDisconnect(){Lh.server.close()}rtcStatsReconnect(){Lh.server.connected||Lh.server.connect()}setAudioOnly(e){this._isAudioOnlyMode=e,this._forEachPeerConnection((e=>{e.hasConnectedPeerConnection()&&this._withForcedRenegotiation(e,(()=>e.setAudioOnly(this._isAudioOnlyMode,this._screenshareVideoTrackIds)))}))}setRemoteScreenshareVideoTrackIds(e=[]){const t=this._getFirstLocalNonCameraStream();this._screenshareVideoTrackIds=[...(null==t?void 0:t.track)?[t.track.id]:[],...e]}setRoomSessionId(e){this._roomSessionId=e}_setConnectionStatus(e,t,r){const i=e.connectionStatus;i!==t&&e.peerConnectionId!==this._selfId&&(i===Sm&&t===ym||(e.connectionStatus=t,setTimeout((()=>{this._emit(hm,{streamIds:e.streamIds,clientId:r,status:t,previous:i})}),0)))}_setJitterBufferTarget(e){try{e.getReceivers().forEach((e=>{e.jitterBufferTarget=vh,e.playoutDelayHint=.4}))}catch(e){Xm.error("Error during setting jitter buffer target:",e)}}_emitServerEvent(e,t,r){this._serverSocket.emit(e,t,r)}_emit(e,t){this._emitter.emit(e,t)}_addEnabledLocalStreamId(e){this.enabledLocalStreamIds.push(e)}_deleteEnabledLocalStreamId(e){const t=this.enabledLocalStreamIds.indexOf(e);-1!==t&&this.enabledLocalStreamIds.splice(t,1)}_getSession(e){return e in this.peerConnections?this.peerConnections[e]:null}_getOrCreateSession(e,t){let r=this.peerConnections[e];if(void 0===r){const i="safari"===tf&&rf&&rf>=14&&this._features.deprioritizeH264OnSafari;this.peerConnections[e]=r=new Kh({peerConnectionId:e,bandwidth:t,maximumTurnBandwidth:this._features.unlimitedBandwidthWhenUsingRelayP2POn?-1:1280,deprioritizeH264Encoding:i}),this.totalSessionsCreated++}return r}_getLocalCameraStream(){return this.localStreams[ef]}_getNonLocalCameraStreamIds(){return Object.keys(this.localStreams).filter((e=>e!==ef))}_isScreensharingLocally(){return this._getNonLocalCameraStreamIds().length>0}_getFirstLocalNonCameraStream(){const e=this._getNonLocalCameraStreamIds();return 0===e.length?null:this.localStreams[e[0]]}_transformIncomingSdp(e,t){return{type:e.type,sdp:e.sdpU}}_transformOutgoingSdp(e){return{type:e.type,sdpU:e.sdp}}_createSession({clientId:e,initialBandwidth:t,isOfferer:r,peerConnectionId:i,shouldAddLocalVideo:n}){if(!i)throw new Error("peerConnectionId is missing");if(!e)throw new Error("clientId is missing");const s=this._getOrCreateSession(i,t),o={optional:[]};"chrome"===tf&&o.optional.push({googCpuOveruseDetection:!0}),o.optional.push({rtcStatsRoomSessionId:this._roomSessionId}),o.optional.push({rtcStatsClientId:this._selfId}),o.optional.push({rtcStatsPeerId:i}),o.optional.push({rtcStatsConferenceId:this._roomName});const a={iceServers:this._iceServers};if(this._features.turnServerOverrideHost){const e=this._features.turnServerOverrideHost,t=e.indexOf(":")>0?"":":443",r=":"+e+t;a.iceServers=a.iceServers.map((e=>{const t=Object.assign({},e);return t.url&&(t.url=t.url.replace(/:[^?]*/,r)),t.urls&&(t.urls=t.urls.map((e=>e.replace(/:[^?]*/,r)))),t}))}if(this._features.useOnlyTURN){a.iceTransportPolicy="relay";const e={onlyudp:/^turn:.*transport=udp$/,onlytcp:/^turn:.*transport=tcp$/,onlytls:/^turns:.*transport=tcp$/}[this._features.useOnlyTURN];e&&(a.iceServers=a.iceServers.filter((t=>t.url&&t.url.match(e))))}"chrome"===tf&&(a.sdpSemantics="unified-plan");const c=s.setAndGetPeerConnection({constraints:o,peerConnectionConfig:a,shouldAddLocalVideo:n,clientId:e});setTimeout((()=>this._emit(Km)),0),c.ontrack=t=>{const r=t.streams[0];"default"===r.id&&0===r.getAudioTracks().length||-1===s.streamIds.indexOf(r.id)&&(s.streamIds.push(r.id),this._emit(mm,{clientId:e,stream:r}),s.connectionStatus===wm&&setTimeout((()=>{this._emit(hm,{streamIds:s.streamIds,clientId:e,status:s.connectionStatus,previous:ym})}),0))},c.oniceconnectionstatechange=()=>{let t;const r=s.connectionStatus;switch(c.iceConnectionState){case"checking":t=ym;break;case"connected":case"completed":t=wm,s.wasEverConnected||(this._pendingActionsForConnectedPeerConnections.forEach((e=>{"function"==typeof e&&e()})),this._pendingActionsForConnectedPeerConnections=[]),!s.wasEverConnected&&(c.iceConnectionState.match(/connected|completed/)||"chrome"===tf&&c.localDescription&&"answer"===c.localDescription.type)&&(s.wasEverConnected=!0,"false"!==this._features.bandwidth&&this.maybeRestrictRelayBandwidth(s)),this._isAudioOnlyMode&&s.setAudioOnly(!0,this._screenshareVideoTrackIds),s.registerConnected();break;case"disconnected":t=Sm,setTimeout((()=>{"disconnected"===c.iceConnectionState&&this._maybeRestartIce(e,s)}),2e3);break;case"failed":t=_m,r!==t&&this._maybeRestartIce(e,s),null!==s.relayCandidateSeen||s.wasEverConnected||this._emit(zm);break;default:return}this._setConnectionStatus(s,t,e)},c.onconnectionstate=()=>{switch(c.connectionState){case"connected":setTimeout((()=>{(function(e){if("chrome"!==gh.browserDetails.browser||gh.browserDetails.browser<58||"closed"===e.signalingState)return Promise.resolve(!1);const t=e.getSenders().some((e=>e.track&&"audio"===e.track.kind)),r=e.getReceivers().some((e=>e.track&&"audio"===e.track.kind));return e.getStats(null).then((e=>{let i=!1;return e.forEach((e=>{"outbound-rtp"!==e.type||"audio"!==e.kind&&"audio"!==e.mediaType||!t?"inbound-rtp"!==e.type||"audio"!==e.kind&&"audio"!==e.mediaType||!r||0===e.bytesReceived&&(i="inbound"):0===e.bytesSent&&(i="outbound")})),i}))})(s.pc).then((t=>{!1!==t&&this._emit(Hm,{failureDirection:t,clientId:e})}))}),3e3),s.registerConnected();break;case"failed":const t=_m;null!==s.relayCandidateSeen||s.wasEverConnected||this._emit(zm),this._setConnectionStatus(s,t,e)}};const d=this.localStreams[ef];return n&&d&&s.addStream(d),n&&Object.keys(this.localStreams).forEach((e=>{if(e===ef)return;const t=this.localStreams[e];r?s.addStream(t):s.afterConnected.then((()=>{this._emitServerEvent(Qh,{receiverId:s.clientId,streamId:t.id,hasAudioTrack:!!t.getAudioTracks().length}),this._withForcedRenegotiation(s,(()=>s.addStream(t)))}))})),s}_cleanup(e){const t=this._getSession(e);t?(t.close(),delete this.peerConnections[e]):Xm.warn("No RTCPeerConnection in RTCManager.disconnect()",e)}_forEachPeerConnection(e){Object.values(this.peerConnections).forEach((t=>{e(t)}))}_addStreamToPeerConnections(e){this._forEachPeerConnection((t=>{this._withForcedRenegotiation(t,(()=>t.addStream(e)))}))}_addTrackToPeerConnections(e,t){this._forEachPeerConnection((r=>{this._withForcedRenegotiation(r,(()=>r.addTrack(e,t)))}))}_replaceTrackToPeerConnections(e,t){const r=[];return this._forEachPeerConnection((i=>{if(!i.hasConnectedPeerConnection()){Xm.info("Session doesn't have a connected PeerConnection, adding pending action!");const n=this._pendingActionsForConnectedPeerConnections;if(!n)return void Xm.warn("No pending action is created to repalce track, because the pending actions array is null");const s=new Promise(((r,s)=>{n.push((()=>{const n=i.replaceTrack(e,t);if(!n)return Xm.error("replaceTrack returned false!"),void s("ReplaceTrack returned false");n.then((e=>r(e))).catch((e=>s(e)))}))}));return void r.push(s)}const n=i.replaceTrack(e,t);n?r.push(n):Xm.error("replaceTrack returned false!")})),Promise.all(r)}_removeStreamFromPeerConnections(e){this._forEachPeerConnection((t=>{this._withForcedRenegotiation(t,(()=>t.removeStream(e)))}))}_removeTrackFromPeerConnections(e){this._forEachPeerConnection((t=>{this._withForcedRenegotiation(t,(()=>t.removeTrack(e)))}))}_addLocalStream(e,t){this._addEnabledLocalStreamId(e),this.localStreams[e]=t}_removeLocalStream(e){delete this.localStreams[e],this._deleteEnabledLocalStreamId(e)}_updateAndScheduleMediaServersRefresh({iceServers:e,sfuServer:t,mediaserverConfigTtlSeconds:r}){this._iceServers=e,this._sfuServer=t,this._mediaserverConfigTtlSeconds=r,this._clearMediaServersRefresh(),r&&(this._fetchMediaServersTimer=setTimeout((()=>this._emitServerEvent(Jh)),1e3*r))}_clearMediaServersRefresh(){this._fetchMediaServersTimer&&(clearTimeout(this._fetchMediaServersTimer),this._fetchMediaServersTimer=null)}_startMonitoringAudioTrack(e){e.addEventListener("ended",this._audioTrackOnEnded)}_stopMonitoringAudioTrack(e){e.removeEventListener("ended",this._audioTrackOnEnded)}_connect(e){this.rtcStatsReconnect();let t=this._getSession(e),r=t&&t.bandwidth||0;return t?(Xm.warn("Replacing peer session",e),this._cleanup(e)):r=this._changeBandwidthForAllClients(!0),t=this._createP2pSession(e,r,!0,!0),this._negotiatePeerConnection(e,t),Promise.resolve(t)}_maybeRestartIce(e,t){const r=t.pc;"disconnected"!==r.iceConnectionState&&"failed"!==r.iceConnectionState||"offer"===r.localDescription.type&&(t.wasEverConnected=!1,t.relayCandidateSeen=!1,t.serverReflexiveCandidateSeen=!1,t.publicHostCandidateSeen=!1,t.ipv6HostCandidateSeen=!1,this.ipv6HostCandidateTeredoSeen=!1,this.ipv6HostCandidate6to4Seen=!1,this.mdnsHostCandidateSeen=!1,this._emit(qm),this._negotiatePeerConnection(e,t,Object.assign({},this.offerOptions,{iceRestart:!0})))}_setCodecPreferences(e,t,r,i){try{const n=e.getTransceivers().filter((e=>{var t,r;return"audio"===(null===(r=null===(t=null==e?void 0:e.sender)||void 0===t?void 0:t.track)||void 0===r?void 0:r.kind)}));n.forEach((e=>{if(void 0===RTCRtpSender.getCapabilities)return;const t=RTCRtpSender.getCapabilities("audio");for(let e=0;e<t.codecs.length;e++)if(i&&"audio/red"===t.codecs[e].mimeType.toLowerCase()){t.codecs.unshift(t.codecs.splice(e,1)[0]);break}void 0!==e.setCodecPreferences&&e.setCodecPreferences(t.codecs)}));const s=e.getTransceivers().filter((e=>{var t,r;return"video"===(null===(r=null===(t=null==e?void 0:e.sender)||void 0===t?void 0:t.track)||void 0===r?void 0:r.kind)}));s.forEach((e=>{if(void 0===RTCRtpSender.getCapabilities)return;const i=RTCRtpSender.getCapabilities("video");for(let e=0;e<i.codecs.length;e++){if(t&&"video/vp9"===i.codecs[e].mimeType.toLowerCase()){i.codecs.unshift(i.codecs.splice(e,1)[0]);break}if(r&&"video/av1"===i.codecs[e].mimeType.toLowerCase()){i.codecs.unshift(i.codecs.splice(e,1)[0]);break}}void 0!==e.setCodecPreferences&&e.setCodecPreferences(i.codecs)}))}catch(e){Xm.error("Error during setting setCodecPreferences:",e)}}_negotiatePeerConnection(e,t,r){if(!t)return void Xm.warn("No RTCPeerConnection in negotiatePeerConnection()",e);const i=t.pc;if(!t.canModifyPeerConnection())return void t.pending.push((()=>{this._negotiatePeerConnection(e,t,r)}));t.isOperationPending=!0;const{vp9On:n,av1On:s,redOn:o,rtpAbsCaptureTimeOn:a}=this._features;(n||s||o)&&this._setCodecPreferences(i,n,s,o),i.createOffer(r||this.offerOptions).then((r=>{a&&(r.sdp=Vh(r.sdp)),(n||o)&&"firefox"===tf&&(r.sdp=function(e,t,r){var i,n;try{const s=xn(e);if(Array.isArray(null==s?void 0:s.media)){const e=s.media.find((e=>"audio"===e.type));if(Array.isArray(null==e?void 0:e.rtp)){const t=e.rtp;for(let n=0;n<t.length;n++)if(r&&"red"===t[n].codec){const r=null===(i=e.payloads)||void 0===i?void 0:i.split(" "),s=null==r?void 0:r.indexOf(""+t[n].payload);s&&-1!==s&&s>=0&&(null==r||r.unshift(r.splice(s,1)[0]),e.payloads=null==r?void 0:r.join(" "))}}const o=s.media.find((e=>"video"===e.type));if(Array.isArray(null==o?void 0:o.rtp)){const e=o.rtp;for(let r=0;r<e.length;r++)if(t&&"VP9"===e[r].codec){const t=null===(n=o.payloads)||void 0===n?void 0:n.split(" "),i=null==t?void 0:t.indexOf(""+e[r].payload);i&&-1!==i&&i>=0&&(null==t||t.unshift(t.splice(i,1)[0]),o.payloads=null==t?void 0:t.join(" "))}}}return In(s)}catch(e){Bh.error("setCodecPreferenceSDP error:",e)}}(r.sdp,n,o)),this._emitServerEvent(lm,{receiverId:e,message:this._transformOutgoingSdp(r)}),"chrome"===tf&&i.getSenders().filter((e=>e.track&&"video"===e.track.kind)).length>=2?t.pendingOffer=r:i.setLocalDescription(r).catch((t=>{Xm.warn("RTCPeerConnection.setLocalDescription() failed with local offer",t),this._features.reverseOfferOnFailure&&(this._lastReverseDirectionAttemptByClientId||(this._lastReverseDirectionAttemptByClientId={}),(!this._lastReverseDirectionAttemptByClientId[e]||this._lastReverseDirectionAttemptByClientId[e]<Date.now()-1e4)&&(this.acceptNewStream({clientId:e,streamId:e,shouldAddLocalVideo:!0}),this._lastReverseDirectionAttemptByClientId[e]=Date.now()))}))})).catch((e=>{Xm.warn("RTCPeerConnection.createOffer() failed to create local offer",e)}))}_withForcedRenegotiation(e,t){const r=e.pc,i=r.onnegotationneeded;r.onnegotiationneeded=null,t(),this._negotiatePeerConnection(e.clientId,e),setTimeout((()=>r.onnegotiationneeded=i),0)}_changeBandwidthForAllClients(e){let t=this.numberOfPeerconnections();if(e&&(t+=1),0===t)return 0;t>7&&(t=7);let r=this._features.bandwidth?parseInt(this._features.bandwidth,10):{1:0,2:this._features.highP2PBandwidth?768:384,3:this._features.highP2PBandwidth?512:256,4:192,5:128,6:128,7:64}[t];if(void 0===r)return 0;if(this._features.adjustBitratesFromResolution){const e=this._getLocalCameraStream();if(e){const t=e&&e.getVideoTracks()[0];if(t){const{width:e,height:i,frameRate:n}=t.getSettings();if(e&&i&&n){const t=Math.round(function(e,t,r){let i=e*t;i<Tm&&(i=Tm),i>km&&(i=km);let n=Pm;i>km?n=Om:i>Tm&&(n+=-17582143775720163e-22*(i-Tm));let s=e*t*n;return r<=15?s*=.7:r<=24&&(s*=.9),s}(e,i,n)/1e3);r=Math.min(t,r||t)}}}}return this._features.higherP2PBitrates&&(r*=1.5),this._forEachPeerConnection((e=>{e.changeBandwidth(r)})),r}_createP2pSession(e,t,r,i){const n=this._createSession({peerConnectionId:e,clientId:e,initialBandwidth:t,shouldAddLocalVideo:r,isOfferer:i}),s=n.pc;this._features.increaseIncomingMediaBufferOn&&this._setJitterBufferTarget(s);const o=this.localStreams[ef];return r&&o&&!o.getVideoTracks().length&&this._stoppedVideoTrack&&s.addTrack(this._stoppedVideoTrack,o),s.onicegatheringstatechange=e=>{switch(e.target.iceGatheringState){case"gathering":this.icePublicIPGatheringTimeoutID&&clearTimeout(this.icePublicIPGatheringTimeoutID),this.icePublicIPGatheringTimeoutID=setTimeout((()=>{n.publicHostCandidateSeen||n.relayCandidateSeen||n.serverReflexiveCandidateSeen||this._emit(Gm)}),3e3);break;case"complete":this.icePublicIPGatheringTimeoutID&&clearTimeout(this.icePublicIPGatheringTimeoutID),this.icePublicIPGatheringTimeoutID=void 0}},s.onicecandidate=t=>{var r,i;if(t.candidate){switch(null===(r=t.candidate)||void 0===r?void 0:r.type){case"host":const e=null===(i=null==t?void 0:t.candidate)||void 0===i?void 0:i.address;try{if(Nm.v4({exact:!0}).test(e)){Sp(e).isPublicIp&&(n.publicHostCandidateSeen=!0)}else if(Nm.v6({exact:!0}).test(e.replace(/^\[(.*)\]/,"$1"))){const t=new vl.Address6(e.replace(/^\[(.*)\]/,"$1"));n.ipv6HostCandidateSeen=!0,"Global"===t.getScope()&&(n.publicHostCandidateSeen=!0),t.isTeredo()&&(n.ipv6HostCandidateTeredoSeen=!0),t.is6to4()&&(n.ipv6HostCandidate6to4Seen=!0)}else{const t=e.replace(/.local/,"");t&&Op(t,4)&&(n.mdnsHostCandidateSeen=!0)}}catch(e){Xm.info("Error during parsing candidates! Error: ",{error:e})}break;case"srflx":n.serverReflexiveCandidateSeen||(n.serverReflexiveCandidateSeen=!0);break;case"relay":case"relayed":n.relayCandidateSeen||(n.relayCandidateSeen=!0)}this._emitServerEvent(om,{receiverId:e,message:t.candidate})}else this._emitServerEvent(am,{receiverId:e}),n.publicHostCandidateSeen||n.relayCandidateSeen||n.serverReflexiveCandidateSeen||this._emit(Vm),n.ipv6HostCandidateSeen&&this._emit(Um,{teredoSeen:n.ipv6HostCandidateTeredoSeen,sixtofourSeen:n.ipv6HostCandidate6to4Seen}),n.mdnsHostCandidateSeen&&this._emit($m)},s.onnegotiationneeded=()=>{"new"!==s.iceConnectionState&&n.connectionStatus&&this._negotiatePeerConnection(e,n)},n}acceptNewStream({streamId:e,clientId:t,shouldAddLocalVideo:r}){let i=this._getSession(t);if(i&&e!==t)return i;let n=i&&i.bandwidth||0;return i?(Xm.warn("Replacing peer session",t),this._cleanup(t)):n=this._changeBandwidthForAllClients(!0),i=this._createP2pSession(t,n,r),this._emitServerEvent(cm,{receiverId:t}),i}disconnect(e){this._cleanup(e),this._changeBandwidthForAllClients(!1);0===this.numberOfPeerconnections()&&setTimeout((()=>{0===this.numberOfPeerconnections()&&this.rtcStatsDisconnect()}),6e4)}updateStreamResolution(){}stopOrResumeAudio(){}_handleStopOrResumeVideo({enable:e,track:t}){e?this._stoppedVideoTrack?(this._replaceTrackToPeerConnections(this._stoppedVideoTrack,t),delete this._stoppedVideoTrack):this._addTrackToPeerConnections(t):this._stoppedVideoTrack=t}stopOrResumeVideo(e,t){if(["chrome","safari"].includes(tf))if(!1===t)setTimeout((()=>{e.getVideoTracks().forEach((r=>{!1===r.enabled&&(r.stop(),e.removeTrack(r),this._emit(bm,{stream:e,track:r}),this._handleStopOrResumeVideo({enable:t,track:r}))}))}),5e3);else if(0===e.getVideoTracks().length){const r=this._webrtcProvider.getMediaConstraints().video;if(!r)return;navigator.mediaDevices.getUserMedia({video:r}).then((r=>{const i=r.getVideoTracks()[0];e.addTrack(i),this._emit(vm,{streamId:e.id,tracks:[i],screenShare:!1}),this._handleStopOrResumeVideo({enable:t,track:i})}))}}_shareScreen(e,t){this._emitServerEvent(Qh,{streamId:e,hasAudioTrack:!!t.getAudioTracks().length}),this._wasScreenSharing=!0,this._addStreamToPeerConnections(t)}removeStream(e,t,r){this._removeLocalStream(e),this._removeStreamFromPeerConnections(t),this._wasScreenSharing=!1,this._emitServerEvent(Zh,{streamId:e,requestedByClientId:r})}hasClient(e){return Object.keys(this.peerConnections).includes(e)}}var of=Object.freeze({__proto__:null,KalmanFilter:class{constructor({R:e=.01,Q:t=2,A:r=1.1,B:i=1,C:n=1.2}={R:.01,Q:2,A:1.1,B:1,C:1.2}){this.R=e,this.Q=t,this.A=r,this.C=n,this.B=i,this.cov=NaN,this.x=NaN}filter(e,t=0){if(isNaN(this.x))this.x=1/this.C*e,this.cov=1/this.C*this.Q*(1/this.C);else{const r=this.predict(t),i=this.uncertainty(),n=i*this.C*(1/(this.C*i*this.C+this.Q));this.x=r+n*(e-this.C*r),this.cov=i-n*this.C*i}return this.x}predict(e=0){return this.A*this.x+this.B*e}uncertainty(){return this.A*this.cov*this.A+this.R}lastMeasurement(){return this.x}setMeasurementNoise(e){this.Q=e}setProcessNoise(e){this.R=e}},calculateStd:e=>{const t=e.reduce(((e,t)=>e+t),0)/e.length;return e.reduce(((e,r)=>e.concat(Math.pow(r-t,2))),[]).reduce(((e,t)=>e+t),0)/e.length},createACFCalculator:()=>{let e=-1,t=0,r=0;return i=>{const n=i.reduce(((e,t)=>e+t),0)/i.length;if(e=e<0?n:.95*e+.05*n,++r<2)return t=n,0;const s=(n-e)*(t-e);return t=n,s}},standardDeviation:e=>{const t=e.reduce(((e,t)=>e+t),0)/e.length;return{mean:t,SD:Math.sqrt(e.reduce(((e,r)=>e+Math.pow(r-t,2)),0)/e.length)}},variance:(e,t=!1)=>{const r=e.reduce(((e,t)=>e+t),0)/e.length;return e.reduce(((e,t)=>e.concat(Math.pow(t-r,2))),[]).reduce(((e,t)=>e+t),0)/(e.length-(t?0:1))}});const af={minDecibels:-80,maxDecibels:-10,smoothingTimeConstant:.8,aggSize:1,sampleRate:10,reportRate:2,bins:32,bands:[[0,1,2,3],[4,5,6,7]],separateTrack:{autoGainControl:!1,noiseSupression:!1},binFormula:"bin",scoreFormula:"300 * bands[1].avg / Math.max(bands[1].avg + bands[0].avg, 0.01)",outFormula:"score"},cf=new rh;const df=new rh,lf=Object.freeze({ok:"ok",warning:"warning",critical:"critical"});class pf extends ur{constructor(){super(),this._clients={},this._producers={},this._startMonitor()}close(){clearInterval(this._intervalHandle),delete this._intervalHandle,this._producers={},this._clients={}}_startMonitor(){this._intervalHandle=setInterval((()=>{Object.entries(this._producers).forEach((([e,t])=>{this._evaluateClient(e,t)}))}),600)}_evaluateClient(e,t){this._clients[e]||(this._clients[e]={audio:{currentQuality:lf.ok,trend:[]},video:{currentQuality:lf.ok,trend:[]}}),this._evaluateProducer(e,Object.values(t).filter((e=>"audio"===e.kind)),"audio"),this._evaluateProducer(e,Object.values(t).filter((e=>"video"===e.kind)),"video")}_evaluateProducer(e,t,r){if(0===t.length)return;const i=t.reduce(((e,t)=>e+t.score),0)/t.length,n=this._evaluateScore(i);this._updateTrend(n,this._clients[e][r])&&this.emit(um,{clientId:e,kind:r,quality:n})}_updateTrend(e,t){return t.trend.push(e),t.trend.length>3&&t.trend.shift(),!(e===t.currentQuality||!t.trend.every((e=>e!==t.currentQuality)))&&(t.currentQuality=e,!0)}addProducer(e,t){e&&t&&"string"==typeof e&&"string"==typeof t?(this._producers[e]||(this._producers[e]={}),this._producers[e][t]={}):df.warn("Missing clientId or producerId")}removeProducer(e,t){delete this._producers[e][t],0===Object.keys(this._producers[e]).length&&delete this._producers[e]}addConsumer(e,t){e&&t?(this._producers[e]||(this._producers[e]={}),this._producers[e][t]={}):df.warn("Missing clientId or consumerId")}removeConsumer(e,t){delete this._producers[e][t],0===Object.keys(this._producers[e]).length&&delete this._producers[e]}addProducerScore(e,t,r,i){Array.isArray(i)&&0!==i.length&&!i.some((e=>!e||!e.hasOwnProperty("score")||"number"!=typeof e.score||isNaN(e.score)))?this._producers[e][t]={kind:r,score:this._calcAvgProducerScore(i.map((e=>e.score)))}:df.warn("Unexpected producer score format")}addConsumerScore(e,t,r,i){i&&i.hasOwnProperty("producerScores")&&Array.isArray(i.producerScores)?this._producers[e][t]={kind:r,score:this._calcAvgProducerScore(i.producerScores)}:df.warn("Unexpected consumer score format")}_evaluateScore(e){return e<=9&&e>7?lf.warning:e<=7&&e>0?lf.critical:lf.ok}_calcAvgProducerScore(e){try{if(!Array.isArray(e)||0===e.length)return 0;let t=0,r=0;return e.forEach((e=>{e>0&&(t+=e,r++)})),0===t||0===r?0:t/r}catch(e){return df.error(e),0}}}var uf;const hf=null!==(uf=al.default)&&void 0!==uf?uf:al,mf=new rh,ff=hf.browserDetails.browser;let gf=!1;const vf=gl(),bf=gl();"chrome"===ff&&window.document.addEventListener("beforeunload",(()=>gf=!0));class yf{constructor({selfId:e,room:t,emitter:r,serverSocket:i,webrtcProvider:n,features:s,eventClaim:o,deviceHandlerFactory:a}){const{session:c,iceServers:d,sfuServer:l,mediaserverConfigTtlSeconds:p}=t;this._selfId=e,this._room=t,this._roomSessionId=null==c?void 0:c.id,this._emitter=r,this._serverSocket=i,this._webrtcProvider=n,this._features=s||{},this._eventClaim=o,this._vegaConnection=null,this._micAnalyser=null,this._micAnalyserDebugger=null,this._mediasoupDevice=a?new wr.Device({handlerFactory:a}):new wr.Device({handlerName:mh()}),this._routerRtpCapabilities=null,this._sendTransport=null,this._receiveTransport=null,this._clientStates=new Map,this._streamIdToVideoConsumerId=new Map,this._consumers=new Map,this._dataConsumers=new Map,this._localStreamDeregisterFunction=null,this._micTrack=null,this._webcamTrack=null,this._screenVideoTrack=null,this._screenAudioTrack=null,this._micProducer=null,this._micProducerPromise=null,this._micPaused=!1,this._micScoreProducer=null,this._micScoreProducerPromise=null,this._webcamProducer=null,this._webcamProducerPromise=null,this._webcamPaused=!1,this._screenVideoProducer=null,this._screenVideoProducerPromise=null,this._screenAudioProducer=null,this._screenAudioProducerPromise=null,this._sndTransportIceRestartPromise=null,this._rcvTransportIceRestartPromise=null,this._colocation=null,this._stopCameraTimeout=null,this._audioTrackOnEnded=()=>{Lh.sendEvent("audio_ended",{unloading:gf}),this._emitToPWA(Wm,{})},this._updateAndScheduleMediaServersRefresh({sfuServer:l,iceServers:d.iceServers||[],mediaserverConfigTtlSeconds:p}),this._socketListenerDeregisterFunctions=[],this._reconnect=!0,this._reconnectTimeOut=null,this._qualityMonitor=new pf,this._qualityMonitor.on(um,(e=>{this._emitToPWA(um,e)}))}_updateAndScheduleMediaServersRefresh({iceServers:e,sfuServer:t,mediaserverConfigTtlSeconds:r}){var i,n;this._iceServers=e,this._sfuServer=t,this._mediaserverConfigTtlSeconds=r,null===(i=this._sendTransport)||void 0===i||i.updateIceServers({iceServers:this._iceServers}),null===(n=this._receiveTransport)||void 0===n||n.updateIceServers({iceServers:this._iceServers}),this._clearMediaServersRefresh(),r&&(this._fetchMediaServersTimer=setTimeout((()=>this._emitToSignal(Jh)),1e3*r))}_clearMediaServersRefresh(){this._fetchMediaServersTimer&&(clearTimeout(this._fetchMediaServersTimer),this._fetchMediaServersTimer=null)}setupSocketListeners(){this._socketListenerDeregisterFunctions.push((()=>this._clearMediaServersRefresh()),this._serverSocket.on(em,(e=>{e.error?mf.warn("FETCH_MEDIASERVER_CONFIG failed:",e.error):this._updateAndScheduleMediaServersRefresh(e)})),this._serverSocket.on(nm,(()=>{this._screenVideoTrack&&this._emitScreenshareStarted()}))),this._connect()}_emitScreenshareStarted(){this._emitToSignal(Qh,{streamId:bf,hasAudioTrack:Boolean(this._screenAudioTrack)})}_connect(){const e=`wss://${this._features.sfuServerOverrideHost||[this._sfuServer.url]}?${new URLSearchParams({clientId:this._selfId,organizationId:this._room.organizationId,roomName:this._room.name,eventClaim:this._room.isClaimed?this._eventClaim:null,lowBw:"true"}).toString()}`;this._vegaConnection=new sh(e),this._vegaConnection.on("open",(()=>this._join())),this._vegaConnection.on("close",(()=>this._onClose())),this._vegaConnection.on("message",(e=>this._onMessage(e)))}_onClose(){var e,t;mf.info("_onClose()"),null===(e=this._sendTransport)||void 0===e||e.close(),null===(t=this._receiveTransport)||void 0===t||t.close(),this._sendTransport=null,this._receiveTransport=null,this._streamIdToVideoConsumerId.clear(),this._reconnect&&(this._reconnectTimeOut=setTimeout((()=>this._connect()),1e3)),this._qualityMonitor.close(),this._emitToPWA(Qm)}_join(){return Zu(this,void 0,void 0,(function*(){mf.info("join()"),this._emitToPWA(Jm);try{const{routerRtpCapabilities:e}=yield this._vegaConnection.request("getCapabilities");this._routerRtpCapabilities||(((e,t)=>{const{vp9On:r,h264On:i}=t;if(r){const{preferredPayloadType:t}=e.codecs.find((e=>"video/vp9"===e.mimeType.toLowerCase())),{preferredPayloadType:r}=e.codecs.find((e=>"video/rtx"===e.mimeType.toLowerCase()&&e.parameters.apt===t));e.codecs=e.codecs.filter((e=>"audio"===e.kind||e.preferredPayloadType===t||e.preferredPayloadType===r))}else if(i){const{preferredPayloadType:t}=e.codecs.find((e=>"video/h264"===e.mimeType.toLowerCase())),{preferredPayloadType:r}=e.codecs.find((e=>"video/rtx"===e.mimeType.toLowerCase()&&e.parameters.apt===t));e.codecs=e.codecs.filter((e=>"audio"===e.kind||e.preferredPayloadType===t||e.preferredPayloadType===r))}})(e,this._features),this._routerRtpCapabilities=e,yield this._mediasoupDevice.load({routerRtpCapabilities:e})),this._vegaConnection.message("setCapabilities",{rtpCapabilities:this._mediasoupDevice.rtpCapabilities}),this._colocation&&this._vegaConnection.message("setColocation",{colocation:this._colocation}),yield Promise.all([this._createTransport(!0),this._createTransport(!1)]);const t=[];!this._micTrack||this._micProducer||this._micProducerPromise||t.push(this._internalSendMic()),!this._webcamTrack||this._webcamProducer||this._webcamProducerPromise||t.push(this._internalSendWebcam()),!this._screenVideoTrack||this._screenVideoProducer||this._screenVideoProducerPromise||t.push(this._internalSendScreenVideo()),!this._screenAudioTrack||this._screenAudioProducer||this._screenAudioProducerPromise||t.push(this._internalSendScreenAudio()),yield Promise.all(t)}catch(e){mf.error("_join() [error:%o]",e)}}))}_createTransport(e){return Zu(this,void 0,void 0,(function*(){const t=e?"createSendTransport":"createRecvTransport",r=yield this._vegaConnection.request("createTransport",{producing:e,consuming:!e,enableTcp:!0,enableUdp:!0,preferUdp:!0,sctpParameters:{enableSctp:!0,numSctpStreams:{OS:1024,MIS:1024},maxSctpMessageSize:262144,sctpSendBufferSize:262144}});r.iceServers=this._iceServers,((e,t)=>{if(!t.useOnlyTURN)return;e.iceTransportPolicy="relay";const r={onlyudp:/^turn:.*transport=udp$/,onlytcp:/^turn:.*transport=tcp$/,onlytls:/^turns:.*transport=tcp$/}[t.useOnlyTURN];r&&(e.iceServers=e.iceServers.filter((e=>e.url&&e.url.match(r))))})(r,this._features);const i=this._mediasoupDevice[t](r),n=t=>Zu(this,void 0,void 0,(function*(){if(mf.info(`Transport ConnectionStateChanged ${t}`),"disconnected"===t||"failed"===t)if(e){if(this._sndTransportIceRestartPromise)return;this._sndTransportIceRestartPromise=this._restartIce(i).finally((()=>{this._sndTransportIceRestartPromise=null}))}else{if(this._rcvTransportIceRestartPromise)return;this._rcvTransportIceRestartPromise=this._restartIce(i).finally((()=>{this._rcvTransportIceRestartPromise=null}))}}));i.on("connect",(({dtlsParameters:e},t)=>{var r;null===(r=this._vegaConnection)||void 0===r||r.message("connectTransport",{transportId:i.id,dtlsParameters:e}),t()})).on("connectionstatechange",n),i.observer.once("close",(()=>{i.removeListener(n)})),e?(i.on("produce",(({kind:e,rtpParameters:t,appData:r},n,s)=>Zu(this,void 0,void 0,(function*(){var o;try{const{paused:s}=r,{id:a}=yield null===(o=this._vegaConnection)||void 0===o?void 0:o.request("produce",{transportId:i.id,kind:e,rtpParameters:t,paused:s,appData:r});n({id:a})}catch(e){s(e)}})))),i.on("producedata",(({appData:e,sctpStreamParameters:t},r,n)=>Zu(this,void 0,void 0,(function*(){var s;try{const{id:n}=yield null===(s=this._vegaConnection)||void 0===s?void 0:s.request("produceData",{transportId:i.id,sctpStreamParameters:t,appData:e});r({id:n})}catch(e){n(e)}})))),this._sendTransport=i):this._receiveTransport=i}))}_restartIce(e,t=0){return Zu(this,void 0,void 0,(function*(){if(!e||!("closed"in e)||!("connectionState"in e))return void mf.info("_restartIce: No transport or property closed or connectionState!");if(e.closed)return void mf.info("_restartIce: Transport is closed!");if("disconnected"!==e.connectionState&&"failed"!==e.connectionState)return void mf.info("_restartIce: Connection is healthy ICE restart no loneger needed!");const{iceRestartStarted:r}=e.appData,i=Date.now();if(Number.isFinite(r)&&i-r<3500)return;if(e.appData.iceRestartStarted=i,5<=t)return void mf.info("_restartIce: Reached restart ICE maximum retry count!");if(!this._vegaConnection)return void mf.info("_restartIce: Connection is undefined");const{iceParameters:n}=yield this._vegaConnection.request("restartIce",{transportId:e.id});mf.info("_restartIce: ICE restart iceParameters received from SFU: ",n);const s=yield e.restartIce({iceParameters:n}).then((()=>null)).catch((e=>e));if(s)switch(mf.error(`_restartIce: ICE restart failed: ${s}`),s.message){case"missing transportId":case"no such transport":break;default:yield new Promise((e=>{setTimeout((()=>{e(void 0)}),Math.min(3500*Math.pow(2,t),6e4))})),yield this._restartIce(e,t+1)}else yield new Promise((e=>{setTimeout((()=>{e(void 0)}),6e4*Math.min(8,t+1))})),"failed"!==e.connectionState&&"disconnected"!==e.connectionState||(yield this._restartIce(e,t+1))}))}_internalSendMic(){return Zu(this,void 0,void 0,(function*(){mf.info("_internalSendMic()"),this._micProducerPromise=(()=>Zu(this,void 0,void 0,(function*(){try{if(!this._micTrack||!this._sendTransport||this._micProducer)return void(this._micProducerPromise=null);const e=this._micPaused,t=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._micTrack,disableTrackOnPause:!1,stopTracks:!1},hh("audio",!1,this._features)),{appData:{streamId:vf,sourceClientId:this._selfId,screenShare:!1,source:"mic",paused:e}}));e?t.pause():t.resume(),this._micProducer=t,this._qualityMonitor.addProducer(this._selfId,t.id),t.observer.once("close",(()=>{var e;mf.info('micProducer "close" event'),t.appData.localClosed&&(null===(e=this._vegaConnection)||void 0===e||e.message("closeProducers",{producerIds:[t.id]})),this._micProducer=null,this._micProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,t.id)})),this._micTrack!==this._micProducer.track&&(yield this._replaceMicTrack()),this._micPaused!==this._micProducer.paused&&this._pauseResumeMic()}catch(e){mf.error("micProducer failed:%o",e)}finally{this._micProducerPromise=null,this._micTrack||(this._stopProducer(this._micProducer),this._micProducer=null)}})))()}))}_internalSetupMicScore(){return Zu(this,void 0,void 0,(function*(){mf.info("_internalSetupMicScore()"),this._micScoreProducerPromise=(()=>Zu(this,void 0,void 0,(function*(){try{if(!this._micProducer||!this._colocation||this._micScoreProducer)return void(this._micScoreProducerPromise=null);const e=yield this._sendTransport.produceData({ordered:!1,maxPacketLifeTime:3e3,label:"micscore",appData:{producerId:this._micProducer.id,clientId:this._selfId}});this._micScoreProducer=e,e.observer.once("close",(()=>{var t;mf.info('micScoreProducer "close" event'),e.appData.localClosed&&(null===(t=this._vegaConnection)||void 0===t||t.message("closeDataProducers",{dataProducerIds:[e.id]})),this._micScoreProducer=null,this._micScoreProducerPromise=null}))}catch(e){mf.error("micScoreProducer failed:%o",e)}finally{this._micScoreProducerPromise=null,this._micProducer&&this._colocation||this._stopMicScoreProducer()}})))()}))}_stopMicScoreProducer(){this._stopProducer(this._micScoreProducer),this._micScoreProducer=null}_replaceMicTrack(){var e;return Zu(this,void 0,void 0,(function*(){mf.info("_replaceMicTrack()"),this._micTrack&&this._micProducer&&!this._micProducer.closed&&this._micProducer.track!==this._micTrack&&(yield this._micProducer.replaceTrack({track:this._micTrack}),null===(e=this._micAnalyser)||void 0===e||e.setTrack(this._micTrack),yield this._replaceMicTrack())}))}_pauseResumeMic(){var e,t;mf.info("_pauseResumeMic()"),this._micProducer&&!this._micProducer.closed&&this._micPaused!==this._micProducer.paused&&(this._micPaused?(this._micProducer.pause(),null===(e=this._vegaConnection)||void 0===e||e.message("pauseProducers",{producerIds:[this._micProducer.id]})):(this._micProducer.resume(),null===(t=this._vegaConnection)||void 0===t||t.message("resumeProducers",{producerIds:[this._micProducer.id]})),this._pauseResumeMic())}_sendMic(e){return Zu(this,void 0,void 0,(function*(){return mf.info("_sendMic() [track:%o]",e),this._micTrack=e,this._micProducer?yield this._replaceMicTrack():this._micProducerPromise?void 0:this._sendTransport?yield this._internalSendMic():void 0}))}_sendMicScore(e){if(!isNaN(e)&&isFinite(e))if(this._micScoreProducer){if(this._micScoreProducer.closed)return void this._stopMicScoreProducer();try{this._micScoreProducer.send(JSON.stringify({score:e}))}catch(e){mf.error("_sendMicScore failed [error:%o]",e)}}else!this._micScoreProducerPromise&&this._micProducer&&this._colocation&&0!==e&&this._internalSetupMicScore()}_internalSendWebcam(){return Zu(this,void 0,void 0,(function*(){mf.info("_internalSendWebcam()"),this._webcamProducerPromise=(()=>Zu(this,void 0,void 0,(function*(){try{if(!this._webcamTrack||!this._sendTransport||this._webcamProducer)return void(this._webcamProducerPromise=null);const e=this._webcamPaused,t=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._webcamTrack,disableTrackOnPause:!1,stopTracks:!1},hh("video",!1,this._features)),{appData:{streamId:vf,sourceClientId:this._selfId,screenShare:!1,source:"webcam",paused:e}}));e?t.pause():t.resume(),this._webcamProducer=t,this._qualityMonitor.addProducer(this._selfId,t.id),t.observer.once("close",(()=>{var e;mf.info('webcamProducer "close" event'),t.appData.localClosed&&(null===(e=this._vegaConnection)||void 0===e||e.message("closeProducers",{producerIds:[t.id]})),this._webcamProducer=null,this._webcamProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,t.id)})),this._webcamTrack!==this._webcamProducer.track&&(yield this._replaceWebcamTrack()),this._webcamPaused!==this._webcamProducer.paused&&this._pauseResumeWebcam()}catch(e){mf.error("webcamProducer failed:%o",e)}finally{this._webcamProducerPromise=null,this._webcamTrack||(yield this._stopProducer(this._webcamProducer),this._webcamProducer=null)}})))()}))}_replaceWebcamTrack(){return Zu(this,void 0,void 0,(function*(){mf.info("_replaceWebcamTrack()"),this._webcamTrack&&this._webcamProducer&&!this._webcamProducer.closed&&this._webcamProducer.track!==this._webcamTrack&&(yield this._webcamProducer.replaceTrack({track:this._webcamTrack}),yield this._replaceWebcamTrack())}))}_pauseResumeWebcam(){var e,t;mf.info("_pauseResumeWebcam()"),this._webcamProducer&&!this._webcamProducer.closed&&this._webcamPaused!==this._webcamProducer.paused&&(this._webcamPaused?(this._webcamProducer.pause(),null===(e=this._vegaConnection)||void 0===e||e.message("pauseProducers",{producerIds:[this._webcamProducer.id]})):(this._webcamProducer.resume(),null===(t=this._vegaConnection)||void 0===t||t.message("resumeProducers",{producerIds:[this._webcamProducer.id]})),this._pauseResumeWebcam())}_sendWebcam(e){return Zu(this,void 0,void 0,(function*(){return mf.info("_sendWebcam() [track:%o]",e),this._webcamTrack=e,this._webcamProducer?yield this._replaceWebcamTrack():this._webcamProducerPromise?void 0:this._sendTransport?yield this._internalSendWebcam():void 0}))}_internalSendScreenVideo(){return Zu(this,void 0,void 0,(function*(){mf.info("_internalSendScreenVideo()"),this._screenVideoProducerPromise=(()=>Zu(this,void 0,void 0,(function*(){try{if(!this._screenVideoTrack||!this._sendTransport||this._screenVideoProducer)return void(this._screenVideoProducerPromise=null);const e=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._screenVideoTrack,disableTrackOnPause:!1,stopTracks:!1},hh("video",!0,this._features)),{appData:{streamId:bf,sourceClientId:this._selfId,screenShare:!0,source:"screenvideo",paused:!1}}));this._screenVideoProducer=e,this._qualityMonitor.addProducer(this._selfId,e.id),e.observer.once("close",(()=>{var t;mf.info('screenVideoProducer "close" event'),e.appData.localClosed&&(null===(t=this._vegaConnection)||void 0===t||t.message("closeProducers",{producerIds:[e.id]})),this._screenVideoProducer=null,this._screenVideoProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,e.id)})),this._screenVideoTrack!==this._screenVideoProducer.track&&(yield this._replaceScreenVideoTrack())}catch(e){mf.error("screenVideoProducer failed:%o",e)}finally{this._screenVideoProducerPromise=null,this._screenVideoTrack||(yield this._stopProducer(this._screenVideoProducer),this._screenVideoProducer=null)}})))()}))}_replaceScreenVideoTrack(){return Zu(this,void 0,void 0,(function*(){mf.info("_replaceScreenVideoTrack()"),this._screenVideoTrack&&this._screenVideoProducer&&!this._screenVideoProducer.closed&&this._screenVideoProducer.track!==this._screenVideoTrack&&(yield this._screenVideoProducer.replaceTrack({track:this._screenVideoTrack}),yield this._replaceScreenVideoTrack())}))}_sendScreenVideo(e){return Zu(this,void 0,void 0,(function*(){return mf.info("_sendScreenVideo() [track:%o]",e),this._screenVideoTrack=e,this._screenVideoProducer?yield this._replaceScreenVideoTrack():this._screenVideoProducerPromise?void 0:this._sendTransport?yield this._internalSendScreenVideo():void 0}))}_internalSendScreenAudio(){return Zu(this,void 0,void 0,(function*(){mf.info("_internalSendScreenAudio()"),this._screenAudioProducerPromise=(()=>Zu(this,void 0,void 0,(function*(){try{if(!this._screenAudioTrack||!this._sendTransport||this._screenAudioProducer)return void(this._screenAudioProducerPromise=null);const e=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._screenAudioTrack,disableTrackOnPause:!1,stopTracks:!1},hh("audio",!0,this._features)),{appData:{streamId:bf,sourceClientId:this._selfId,screenShare:!0,source:"screenaudio",paused:!1}}));this._screenAudioProducer=e,this._qualityMonitor.addProducer(this._selfId,e.id),e.observer.once("close",(()=>{var t;mf.info('screenAudioProducer "close" event'),e.appData.localClosed&&(null===(t=this._vegaConnection)||void 0===t||t.message("closeProducers",{producerIds:[e.id]})),this._screenAudioProducer=null,this._screenAudioProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,e.id)})),this._screenAudioTrack!==this._screenAudioProducer.track&&(yield this._replaceScreenAudioTrack())}catch(e){mf.error("screenAudioProducer failed:%o",e)}finally{this._screenAudioProducerPromise=null,this._screenAudioTrack||(yield this._stopProducer(this._screenAudioProducer),this._screenAudioProducer=null)}})))()}))}_replaceScreenAudioTrack(){return Zu(this,void 0,void 0,(function*(){mf.info("_replaceScreenAudioTrack()"),this._screenAudioTrack&&this._screenAudioProducer&&!this._screenAudioProducer.closed&&this._screenAudioProducer.track!==this._screenAudioTrack&&(yield this._screenAudioProducer.replaceTrack({track:this._screenAudioTrack}),yield this._replaceScreenAudioTrack())}))}_sendScreenAudio(e){return Zu(this,void 0,void 0,(function*(){return mf.info("_sendScreenAudio() [track:%o]",e),this._screenAudioTrack=e,this._screenAudioProducer?yield this._replaceScreenAudioTrack():this._screenAudioProducerPromise?void 0:this._sendTransport?yield this._internalSendScreenAudio():void 0}))}_stopProducer(e){mf.info("_stopProducer()"),e&&!e.closed&&(e.appData.localClosed=!0,e.close())}isInitializedWith({selfId:e,roomName:t,isSfu:r}){return this._selfId===e&&this._room.name===t&&Boolean(r)}setEventClaim(e){var t;this._eventClaim=e,null===(t=this._vegaConnection)||void 0===t||t.message("eventClaim",{eventClaim:e})}setColocation(e){var t;this._colocation=e,null===(t=this._vegaConnection)||void 0===t||t.message("setColocation",{colocation:e}),e||!this._micScoreProducer||this._micScoreProducerPromise||this._stopMicScoreProducer(),this._syncMicAnalyser(),Lh.sendEvent("colocation_changed",{colocation:e})}setAudioOnly(e){var t;null===(t=this._vegaConnection)||void 0===t||t.message(e?"enableAudioOnly":"disableAudioOnly")}setRemoteScreenshareVideoTrackIds(){}setRoomSessionId(e){this._roomSessionId=e}disconnect(e,t,r){var i;if(mf.info("disconnect() [clientIdOrStreamId:%s, eventClaim:%s]",e,r),this._clientStates.has(e)){const t=this._clientStates.get(e);t.hasAcceptedWebcamStream=!1,t.hasAcceptedScreenStream=!1,this._syncIncomingStreamsWithPWA(e)}r&&(this._eventClaim=r,null===(i=this._vegaConnection)||void 0===i||i.message("eventClaim",{eventClaim:r}))}replaceTrack(e,t){e&&"audio"===e.kind&&this._stopMonitoringAudioTrack(e),"audio"===t.kind&&(this._startMonitoringAudioTrack(t),this._micTrack=t,this._replaceMicTrack()),"video"===t.kind&&(this._webcamTrack=t,this._replaceWebcamTrack())}removeStream(e,t,r){mf.info("removeStream() [streamId:%s, requestedByClientId:%s]",e,r),this._emitToSignal(Zh,{streamId:bf,requestedByClientId:r}),this._stopProducer(this._screenVideoProducer),this._screenVideoProducer=null,this._screenVideoTrack=null,this._stopProducer(this._screenAudioProducer),this._screenAudioProducer=null,this._screenAudioTrack=null}_onMicAnalyserScoreUpdated(e){var t,r;null===(r=null===(t=this._micAnalyserDebugger)||void 0===t?void 0:t.onScoreUpdated)||void 0===r||r.call(t,e),this._sendMicScore(this._micPaused?0:e.out)}addNewStream(e,t,r,i){if("0"===e){this._micPaused=r,this._webcamPaused=i;const e=t.getVideoTracks()[0],n=t.getAudioTracks()[0];e&&this._sendWebcam(e),n&&(this._sendMic(n),this._syncMicAnalyser(),this._startMonitoringAudioTrack(n)),this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null);const s=e=>{const{enable:t,track:r}=e.detail;this._webcamPaused=!t,this._pauseResumeWebcam(),this._handleStopOrResumeVideo({enable:t,track:r})};t.addEventListener("stopresumevideo",s),this._localStreamDeregisterFunction=()=>{t.removeEventListener("stopresumevideo",s)}}else{const e=t.getVideoTracks()[0],r=t.getAudioTracks()[0];e&&this._sendScreenVideo(e),r&&this._sendScreenAudio(r),this._emitScreenshareStarted()}}_syncMicAnalyser(){if(!this._micTrack||!this._colocation||this._micAnalyser)return this._micAnalyser&&!this._colocation?(this._micAnalyser.close(),void(this._micAnalyser=null)):void 0;this._micAnalyser=function({micTrack:e,params:t,onScoreUpdated:r}){const i=new AudioContext;let n=null,s=null,o=null,a=!1;const c=e=>Zu(this,void 0,void 0,(function*(){if(o&&a&&o.stop(),a=!1,e&&t.separateTrack)try{const r=yield navigator.mediaDevices.getUserMedia({audio:Object.assign({deviceId:null==o?void 0:o.getSettings().deviceId},t.separateTrack),video:!1});e=r.getAudioTracks()[0],a=!0}catch(e){cf.warn("unable to fetch new track for colocation speaker analysis, using current",e)}if(o=e,s&&(s.disconnect(),s=null),e){const t=new MediaStream([e]);s=i.createMediaStreamSource(t),s.connect(n)}}));let d;const l=e=>{if(clearInterval(d),t=Object.assign(Object.assign({},af),e),!n||n.fftSize!==2*t.bins){let e=null;n&&(e=o,c(null)),n=i.createAnalyser(),n.fftSize=2*t.bins,e&&c(e)}const s=new Uint8Array(n.frequencyBinCount),a=[];n.minDecibels=t.minDecibels,n.maxDecibels=t.maxDecibels,n.smoothingTimeConstant=t.smoothingTimeConstant;const l=t.initScript&&new Function("f","setTrack","lastTrack",t.initScript.join("\n")),p=t.scoreScript&&new Function("bins","g","f",t.scoreScript.join("\n")),u=t.scoreFormula&&new Function("bands",`return ${t.scoreFormula}`),h=t.outFormula&&new Function("score","avg","max","scores",`return ${t.outFormula}`),m=t.binFormula&&new Function("bin","index",`return ${t.binFormula}`);let f=0;const g=l&&l(of,c,o);d=setInterval((()=>{n.getByteFrequencyData(s);let e=0;if(u){const r=t.bands.map((e=>{const t=e.map((e=>m(s[e]/255,e)));return{avg:t.reduce(((e,t)=>e+t),0)/e.length,min:t.reduce(((e,t)=>Math.min(e,t/255)),Number.MAX_VALUE),max:t.reduce(((e,t)=>Math.max(e,t/255)),0)}}));e=u(r)||0}else p&&(e=p(s,g,of),isNaN(e)&&(e=0));if(a.push(e),a.length>t.aggSize&&a.shift(),f++,f>=t.reportRate){f=0;const t=a.reduce(((e,t)=>Math.max(e,t)),0),i=a.reduce(((e,t)=>e+t),0)/a.length,n=h(e,i,t,a);r({bins:s,score:e,max:t,avg:i,out:n})}}),1e3/t.sampleRate)};return l(t),c(e),{setParams:l,setTrack:c,close(){c(null),clearInterval(d),i.close()}}}({micTrack:this._micTrack,onScoreUpdated:this._onMicAnalyserScoreUpdated.bind(this)})}stopOrResumeAudio(e,t){mf.info("stopOrResumeAudio() [enabled:%s]",t),this._micPaused=!t,this._pauseResumeMic()}_handleStopOrResumeVideo({enable:e,track:t}){e?this._sendWebcam(t):this._webcamProducer&&!this._webcamProducer.closed&&this._webcamProducer.track===t&&(this._stopProducer(this._webcamProducer),this._webcamProducer=null,this._webcamTrack=null)}stopOrResumeVideo(e,t){if(mf.info("stopOrResumeVideo() [enable:%s]",t),this._webcamPaused=!t,this._pauseResumeWebcam(),["chrome","safari"].includes(ff))if(t){if(0===e.getVideoTracks().length){const r=this._webrtcProvider.getMediaConstraints().video;navigator.mediaDevices.getUserMedia({video:r}).then((r=>{const i=r.getVideoTracks()[0];e.addTrack(i),this._emitToPWA(vm,{streamId:e.id,tracks:[i],screenShare:!1}),this._handleStopOrResumeVideo({enable:t,track:i})}))}}else clearTimeout(this._stopCameraTimeout),this._stopCameraTimeout=setTimeout((()=>{e.getVideoTracks().forEach((r=>{!1===r.enabled&&(r.stop(),e.removeTrack(r),this._emitToPWA(bm,{stream:e,track:r}),this._handleStopOrResumeVideo({enable:t,track:r}))}))}),5e3)}supportsScreenShareAudio(){return!0}acceptNewStream({streamId:e,clientId:t}){mf.info("acceptNewStream()",{streamId:e,clientId:t}),this.rtcStatsReconnect();const r=this._getOrCreateClientState(t);e!==t?(r.hasAcceptedScreenStream=!0,r.hasEmittedScreenStream=!1):(r.hasAcceptedWebcamStream=!0,r.hasEmittedWebcamStream=!1),this._syncIncomingStreamsWithPWA(t)}updateStreamResolution(e,t,{width:r,height:i}){var n,s,o,a;mf.info("updateStreamResolution()",{streamId:e,width:r,height:i});const c=this._streamIdToVideoConsumerId.get(e),d=this._consumers.get(c);if(!d)return;let l=0;this._consumers.forEach((e=>{var t,r;e._closed||e._paused||"webcam"!==(null===(t=e._appData)||void 0===t?void 0:t.source)&&"screenvideo"!==(null===(r=e._appData)||void 0===r?void 0:r.source)||l++}));let p=2;/T3/.test((null===(o=null===(s=null===(n=d._rtpParameters)||void 0===n?void 0:n.encodings)||void 0===s?void 0:s[0])||void 0===o?void 0:o.scalabilityMode)||"")&&(p=3);const u=Math.max(r,i);let h=u>=480?u>=960?2:1:0,m=p-1;u<100&&(m=Math.max(p-2,0)),l>8&&0===h&&(m=Math.max(p-2,0)),l<4&&u>300&&0===h&&(h=1),d.appData.spatialLayer===h&&d.appData.temporalLayer===m||(d.appData.spatialLayer=h,d.appData.temporalLayer=m,null===(a=this._vegaConnection)||void 0===a||a.message("setConsumersPreferredLayers",{consumerIds:[c],spatialLayer:h,temporalLayer:m}))}disconnectAll(){var e,t,r,i;this._reconnect=!1,this._reconnectTimeOut&&(clearTimeout(this._reconnectTimeOut),this._reconnectTimeOut=null),this._socketListenerDeregisterFunctions.forEach((e=>{e()})),this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null),this._socketListenerDeregisterFunctions=[],null===(e=this._vegaConnection)||void 0===e||e.removeAllListeners(),null===(t=this._vegaConnection)||void 0===t||t.close(),null===(r=this._sendTransport)||void 0===r||r.close(),null===(i=this._receiveTransport)||void 0===i||i.close(),this._micTrack=null,this._webcamTrack=null,this._screenVideoTrack=null,this._screenAudioTrack=null,this._streamIdToVideoConsumerId.clear(),this._mediasoupDevice=null}sendAudioMutedStats(e){Lh.sendEvent("audio_muted",{muted:e})}sendVideoMutedStats(e){Lh.sendEvent("video_muted",{muted:e})}sendStatsCustomEvent(e,t){Lh.sendEvent(e,t)}rtcStatsDisconnect(){Lh.server.close()}rtcStatsReconnect(){Lh.server.connected||Lh.server.connect()}_startMonitoringAudioTrack(e){e.addEventListener("ended",this._audioTrackOnEnded)}_stopMonitoringAudioTrack(e){e.removeEventListener("ended",this._audioTrackOnEnded)}_onMessage(e){return Zu(this,void 0,void 0,(function*(){const{method:t,data:r}=e;return Promise.resolve().then((()=>{switch(t){case"consumerReady":return this._onConsumerReady(r);case"consumerClosed":return this._onConsumerClosed(r);case"consumerPaused":return this._onConsumerPaused(r);case"consumerResumed":return this._onConsumerResumed(r);case"dataConsumerReady":return this._onDataConsumerReady(r);case"dataConsumerClosed":return this._onDataConsumerClosed(r);case"dominantSpeaker":return this._onDominantSpeaker(r);case"consumerScore":return this._onConsumerScore(r);case"producerScore":return this._onProducerScore(r);default:return void mf.info(`unknown message method "${t}"`)}})).catch((e=>{mf.error('"message" failed [error:%o]',e)}))}))}_onConsumerReady(e){return Zu(this,void 0,void 0,(function*(){mf.info("_onConsumerReady()",{id:e.id,producerId:e.producerId});const t=yield this._receiveTransport.consume(e);if(t.pause(),t.appData.localPaused=!0,t.appData.spatialLayer=2,this._consumers.set(t.id,t),this._qualityMonitor.addConsumer(t.appData.sourceClientId,t.id),t.observer.once("close",(()=>{this._consumers.delete(t.id),this._qualityMonitor.removeConsumer(t.appData.sourceClientId,t.id),this._consumerClosedCleanup(t)})),this._features.increaseIncomingMediaBufferOn&&t.rtpReceiver)try{t.rtpReceiver.jitterBufferTarget=vh,t.rtpReceiver.playoutDelayHint=.4}catch(e){mf.error("Error during setting jitter buffer target:",e)}const{sourceClientId:r,screenShare:i,streamId:n}=t.appData,s=this._getOrCreateClientState(r);i?(s.hasEmittedScreenStream=!1,s.screenShareStreamId=n):(s.hasEmittedWebcamStream=!1,s.camStreamId=n);let o=i?s.screenStream:s.webcamStream;o&&o.inboundId===n||(o=new MediaStream,o.inboundId=n,i?s.screenStream=o:s.webcamStream=o),"video"===t.kind&&this._streamIdToVideoConsumerId.set(o.id,t.id),o.addTrack(t.track),this._syncIncomingStreamsWithPWA(r)}))}_onConsumerClosed({consumerId:e,reason:t}){var r;return Zu(this,void 0,void 0,(function*(){mf.info("_onConsumerClosed()",{consumerId:e,reason:t}),null===(r=this._consumers.get(e))||void 0===r||r.close()}))}_onConsumerPaused({consumerId:e}){mf.info("_onConsumerPaused()",{consumerId:e});const t=this._consumers.get(e);t&&(t.appData.remotePaused=!0,t.pause())}_onConsumerResumed({consumerId:e}){mf.info("_onConsumerResumed()",{consumerId:e});const t=this._consumers.get(e);t&&(t.appData.remotePaused=!1,t.appData.localPaused||t.resume())}_onConsumerScore({consumerId:e,kind:t,score:r}){mf.info("_onConsumerScore()",{consumerId:e,kind:t,score:r});const{appData:{sourceClientId:i}}=this._consumers.get(e)||{appData:{}};i&&this._qualityMonitor.addConsumerScore(i,e,t,r)}_onProducerScore({producerId:e,kind:t,score:r}){mf.info("_onProducerScore()",{producerId:e,kind:t,score:r}),[this._micProducer,this._webcamProducer,this._screenVideoProducer,this._screenAudioProducer].forEach((i=>{(null==i?void 0:i.id)===e&&this._qualityMonitor.addProducerScore(this._selfId,e,t,r)}))}_onDataConsumerReady(e){return Zu(this,void 0,void 0,(function*(){mf.info("_onDataConsumerReady()",{id:e.id,producerId:e.producerId});const t=yield this._receiveTransport.consumeData(e);this._dataConsumers.set(t.id,t),t.once("close",(()=>{this._dataConsumers.delete(t.id)}));const{clientId:r}=t.appData;t.on("message",(e=>{var r;if(!this._micAnalyserDebugger)return;if("string"!=typeof e)return;const{score:i}=JSON.parse(e);i&&(null===(r=this._micAnalyserDebugger)||void 0===r||r.onConsumerScore(t.appData.clientId,i))})),this._syncIncomingStreamsWithPWA(r)}))}_onDataConsumerClosed({dataConsumerId:e,reason:t}){return Zu(this,void 0,void 0,(function*(){mf.info("_onDataConsumerClosed()",{dataConsumerId:e,reason:t});const r=this._dataConsumers.get(e);null==r||r.close()}))}_onDominantSpeaker({consumerId:e}){const t=this._consumers.get(e);if(!t)return;const{sourceClientId:r}=t.appData;this._emitToPWA(Zm,{clientId:r})}_consumerClosedCleanup(e){const{sourceClientId:t,screenShare:r}=e.appData,i=this._getOrCreateClientState(t),n=r?i.screenStream:i.webcamStream;n&&(n.removeTrack(e.track),0===n.getTracks().length&&(this._streamIdToVideoConsumerId.delete(n.id),r?(i.screenStream=null,i.hasEmittedScreenStream=!1,i.screenShareStreamId=null):(i.hasEmittedWebcamStream=!1,i.camStreamId=null)))}_syncIncomingStreamsWithPWA(e){var t,r;const i=this._getOrCreateClientState(e),{webcamStream:n,screenStream:s,hasEmittedWebcamStream:o,hasEmittedScreenStream:a,hasAcceptedWebcamStream:c,hasAcceptedScreenStream:d,screenShareStreamId:l,camStreamId:p}=i,u=[],h=[];this._consumers.forEach((t=>{if(t.appData.sourceClientId!==e)return;const r=t.appData.screenShare?d:c;!t.appData.localPaused!==r&&(r?(t.appData.remotePaused||t.resume(),t.appData.localPaused=!1,h.push(t.id)):(t.pause(),t.appData.localPaused=!0,u.push(t.id)))})),u.length>0&&(null===(t=this._vegaConnection)||void 0===t||t.message("pauseConsumers",{consumerIds:u})),h.length>0&&(null===(r=this._vegaConnection)||void 0===r||r.message("resumeConsumers",{consumerIds:h})),n&&!o&&c&&(this._emitToPWA(mm,{clientId:e,stream:n,streamId:p,streamType:"webcam"}),i.hasEmittedWebcamStream=!0),s&&!a&&d&&(this._emitToPWA(mm,{clientId:e,stream:s,streamId:l,streamType:"screenshare"}),i.hasEmittedScreenStream=!0)}_getOrCreateClientState(e){let t=this._clientStates.get(e);return t||(t={hasAcceptedWebcamStream:!1,hasAcceptedScreenStream:!1,hasEmittedWebcamStream:!1,hasEmittedScreenStream:!1,webcamStream:null,screenStream:null,screenShareStreamId:null,camStreamId:null},this._clientStates.set(e,t)),t}_emitToPWA(e,t){this._emitter.emit(e,t)}_emitToSignal(e,t,r){this._serverSocket.emit(e,t,r)}shouldAcceptStreamsFromBothSides(){return!0}setMicAnalyserDebugger(e){this._micAnalyserDebugger=e}setMicAnalyserParams(e){var t;null===(t=this._micAnalyser)||void 0===t||t.setParams(e)}hasClient(e){return this._clientStates.has(e)}}class _f{constructor({emitter:e,serverSocket:t,webrtcProvider:r,features:i}){this.emitter=e,this.currentManager=null,t.on(nm,(({room:n,selfId:s,error:o,eventClaim:a})=>{if(o)return;const c={selfId:s,room:n,emitter:e,serverSocket:t,webrtcProvider:r,features:i,eventClaim:a,deviceHandlerFactory:null==i?void 0:i.deviceHandlerFactory},d=!!n.sfuServer;if(this.currentManager){if(this.currentManager.isInitializedWith({selfId:s,roomName:n.name,isSfu:d}))return void(this.currentManager.setEventClaim&&a&&this.currentManager.setEventClaim(a));this.currentManager.disconnectAll(),e.emit(gm)}let l=null;l=d?new yf(c):new sf(c),l.setupSocketListeners(),e.emit(fm,{rtcManager:l}),this.currentManager=l,t.setRtcManager(l)}))}stopRtcManager(){this.currentManager&&(this.currentManager.disconnectAll(),this.emitter.emit(gm))}}var wf;!function(e){e.rtc_manager_created="rtc_manager_created",e.stream_added="stream_added"}(wf||(wf={}));class Sf extends Error{constructor(e){super(e.message),this.name="AssertionError",this.code="ERR_ASSERTION",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,Error.captureStackTrace&&Error.captureStackTrace(this,e.stackStartFn)}}function Cf(e){if(e.message instanceof Error)throw e.message;throw new Sf(e)}function Rf(...e){!function(e,t,r,i){if(!r){let n=!1;if(0===t)n=!0,i="No value argument passed to `assert.ok()`";else if(i instanceof Error)throw i;const s=new Sf({actual:r,expected:!0,message:i,operator:"==",stackStartFn:e});throw s.generatedMessage=n,s}}(Rf,e.length,...e)}const Tf={fail:e=>{Cf({actual:"fail()",expected:"fail() should not be called",message:e,operator:"fail",stackStartFn:Tf.fail})},ok:Rf,notEqual:function e(t,r,i){if(arguments.length<2)throw new Error("'actual' and 'expected' arguments are required");t==r&&Cf({actual:t,expected:r,message:i,operator:"!=",stackStartFn:e})}};Tf.ok=Rf;const Pf=new rh;class kf extends ur{constructor(e){super(),this._socket=e,this._clients={},this._signalDisconnectTime=void 0,this.rtcManager=void 0,this.metrics={roomJoinedLate:0,pendingClientCanceled:0,evaluationFailed:0,roomJoined:0},e.on("disconnect",(()=>{this._signalDisconnectTime=Date.now()})),e.on(nm,(e=>this._onRoomJoined(e))),e.on(tm,(e=>this._onNewClient(e))),e.on(Xh,(e=>this._onClientLeft(e))),e.on(pm,(e=>this._onPendingClientLeft(e))),e.on(Yh,(e=>this._onAudioEnabled(e))),e.on(sm,(e=>this._onVideoEnabled(e))),e.on(rm,(e=>this._onScreenshareChanged(e,!0))),e.on(im,(e=>this._onScreenshareChanged(e,!1)))}_onRoomJoined(e){var t,r;return Zu(this,void 0,void 0,(function*(){if(!(null===(t=e.room)||void 0===t?void 0:t.clients))return void this.emit(nm,e);if(!e.selfId)return void this.emit(nm,e);const i=null===(r=e.room.clients.find((t=>e.selfId===t.id)))||void 0===r?void 0:r.deviceId;if(!i)return void this.emit(nm,e);if(!this._signalDisconnectTime)return this._resetClientState(e),e.room.clients=e.room.clients.filter((e=>!(e.deviceId===i&&e.isPendingToLeave))),void this.emit(nm,e);const n=.8*e.disconnectTimeout;if(Date.now()-this._signalDisconnectTime>n)return this._resetClientState(e),this.emit(nm,e),void this.metrics.roomJoinedLate++;e.room.clients=e.room.clients.filter((e=>!(e.deviceId===i&&e.isPendingToLeave)));const s=yield;e.room.clients.forEach((t=>{var r;try{if(t.id===e.selfId)return;if(!this._clients[t.id])return void this._addClientToState(t);if(!(null===(r=this.rtcManager)||void 0===r?void 0:r.hasClient(t.id)))return;if(this._hasClientStateChanged({clientId:t.id,webcam:t.isVideoEnabled,mic:t.isAudioEnabled,screenShare:t.streams.length>1}))return;if(this._wasClientSendingMedia(t.id)&&!this._isClientMediaActive(s,t.id))return;t.mergeWithOldClientState=!0}catch(e){Pf.error("Failed to evaluate if we should merge client state %o",e),this.metrics.evaluationFailed++}})),e.room.clients.forEach((e=>{e.isPendingToLeave&&this._onPendingClientLeft({clientId:e.id})})),this.metrics.roomJoined++,this.emit(nm,e)}))}_onClientLeft(e){var t;const{clientId:r}=e,i=this._clients[r];i&&(clearTimeout(i.timeout),delete this._clients[r]),null===(t=this.rtcManager)||void 0===t||t.disconnect(r,null,e.eventClaim),this.emit(Xh,e)}_onPendingClientLeft(e){const{clientId:t}=e,r=this._clients[t];r?r.isPendingToLeave||(r.isPendingToLeave=!0,this._wasClientSendingMedia(t)&&(r.checkActiveMediaAttempts=0,this._abortIfNotActive(e))):Pf.warn(`client ${t} not found`)}_onNewClient(e){const{client:{id:t,deviceId:r}}=e,i=this._clients[t];if(i&&i.isPendingToLeave)return clearTimeout(i.timeoutHandler),i.isPendingToLeave=!1,void this.metrics.pendingClientCanceled++;this._getPendingClientsByDeviceId(r).forEach((e=>{clearTimeout(e.timeoutHandler),e.isPendingToLeave=void 0,this.emit(Xh,{clientId:e.clientId})})),this._addClientToState(e.client),this.emit(tm,e)}_abortIfNotActive(e){return Zu(this,void 0,void 0,(function*(){const{clientId:t}=e;let r=this._clients[t];if(!(null==r?void 0:r.isPendingToLeave))return;if(r.checkActiveMediaAttempts++,r.checkActiveMediaAttempts>3)return;(yield this._checkIsActive(t))?r.timeoutHandler=setTimeout((()=>this._abortIfNotActive(e)),500):(r=this._clients[t],(null==r?void 0:r.isPendingToLeave)&&(clearTimeout(r.timeoutHandler),delete this._clients[t],this.emit(Xh,e)))}))}_checkIsActive(e){return Zu(this,void 0,void 0,(function*(){const t=yield;return this._isClientMediaActive(t,e)}))}_isClientMediaActive(e,t){const r=null==e?void 0:e[t];let i=!1;return r&&Object.entries(r.tracks).forEach((([e,t])=>{"probator"!==e&&Object.values(t.ssrcs).forEach((e=>{(e.bitrate||0)>0&&(i=!0)}))})),i}_onAudioEnabled(e){const{clientId:t,isAudioEnabled:r}=e;this._clients[t]=Object.assign(Object.assign({},this._clients[t]||{}),{isAudioEnabled:r})}_onVideoEnabled(e){const{clientId:t,isVideoEnabled:r}=e;this._clients[t]=Object.assign(Object.assign({},this._clients[t]||{}),{isVideoEnabled:r})}_onScreenshareChanged(e,t){const{clientId:r}=e;this._clients[r]=Object.assign(Object.assign({},this._clients[r]||{}),{isScreenshareEnabled:t})}_hasClientStateChanged({clientId:e,webcam:t,mic:r,screenShare:i}){const n=this._clients[e];if(!n)throw new Error(`Client ${e} not found in ReconnectManager state`);return t!==n.isVideoEnabled||(r!==n.isAudioEnabled||i!==n.isScreenshareEnabled)}_addClientToState(e){this._clients[e.id]=Object.assign(Object.assign({},this._clients[e.id]||{}),{isAudioEnabled:e.isAudioEnabled,isVideoEnabled:e.isVideoEnabled,isScreenshareEnabled:e.streams.length>1,deviceId:e.deviceId,isPendingToLeave:e.isPendingToLeave,clientId:e.id})}_wasClientSendingMedia(e){const t=this._clients[e];if(!t)throw new Error(`Client ${e} not found in ReconnectManager state`);return t.isAudioEnabled||t.isVideoEnabled||t.isScreenshareEnabled}_getPendingClientsByDeviceId(e){return Object.values(this._clients).filter((t=>t.deviceId===e&&t.isPendingToLeave))}_resetClientState(e){this._clients={},e.room.clients.forEach((t=>{t.id!==e.selfId&&this._addClientToState(t)}))}}var Of;const Ef=null!==(Of=al.default)&&void 0!==Of?Of:al;class Df{constructor(e,t,r=!1){this._wasConnectedUsingWebsocket=!1,this._reconnectManager=null,this._socket=Qu(e,Object.assign({path:"/protocol/socket.io/v4",randomizationFactor:.5,reconnectionDelay:250,reconnectionDelayMax:5e3,timeout:5e3,transports:["websocket"],withCredentials:!0},t)),this._socket.io.on("reconnect",(()=>{this._socket.sendBuffer=[]})),this._socket.io.on("reconnect_attempt",(()=>{this._wasConnectedUsingWebsocket?(this._socket.io.opts.transports=["websocket"],"safari"!==Ef.browserDetails.browser&&delete this._wasConnectedUsingWebsocket):this._socket.io.opts.transports=["websocket","polling"]})),r&&(this._reconnectManager=new kf(this._socket)),this._socket.on("connect",(()=>{"websocket"===this.getTransport()&&(this._wasConnectedUsingWebsocket=!0,this.noopKeepaliveInterval||(this.noopKeepaliveInterval=setInterval((()=>{try{this._socket.connected&&this._socket.io.engine.sendPacket("noop")}catch(e){}}),2e3)))})),this._socket.on("disconnect",(()=>{this.noopKeepaliveInterval&&(clearInterval(this.noopKeepaliveInterval),this.noopKeepaliveInterval=null)}))}setRtcManager(e){this._reconnectManager&&(this._reconnectManager.rtcManager=e)}connect(){this.isConnected()||this.isConnecting()||this._socket.open()}disconnect(){this._socket.disconnect()}disconnectOnConnect(){this._socket.once("connect",(()=>{this._socket.disconnect()}))}emit(e,...t){this._socket.emit.apply(this._socket,arguments)}emitIfConnected(e,t){this.isConnected()&&this.emit(e,t)}getTransport(){return this._socket&&this._socket.io&&this._socket.io.engine&&this._socket.io.engine.transport&&this._socket.io.engine.transport.name}getManager(){return this._socket.io}isConnecting(){return this._socket&&this._socket.connecting}isConnected(){return this._socket&&this._socket.connected}on(e,t){const r=[nm,Xh,tm];return this._reconnectManager&&r.includes(e)?this._interceptEvent(e,t):(this._socket.on(e,t),()=>{this._socket.off(e,t)})}once(e,t){this._socket.once(e,t)}off(e,t){this._socket.off(e,t)}_interceptEvent(e,t){return this._reconnectManager&&this._reconnectManager.on(e,t),()=>{this._reconnectManager&&this._reconnectManager.removeListener(e,t)}}getGlitchFreeMetrics(){var e;return null===(e=this._reconnectManager)||void 0===e?void 0:e.metrics}}const If=[{pattern:/^(?:([^.]+)[.])?(server:?\d*)/,separator:"."},{pattern:/^(?:([^.]+)[.])?(localhost:?\d*)/,separator:"."},{pattern:/^(?:([^.]+)[.])?((\d+[.]){3}:?\d*)$/,separator:"."},{pattern:/^(?:([^.]+)-)?(ip-[^.]*[.](?:hereby[.]dev|rfc1918[.]disappear[.]at)(?::\d+|))$/,separator:"-"},{pattern:/^(?:([^.]+)[.])?((:?[^.]+[.]){1,}[^.]+)$/,separator:"."}];function xf({host:e="whereby.com",protocol:t="https:"}={}){let r="",i=e,n=".";for(const{separator:t,pattern:s}of If){const o=s.exec(e);if(o){r=o[1]||"",i=o[2],n=t;break}}const s=r?`${r}${n}${i}`:i;return{domain:i,domainWithSeparator:`${n}${i}`,organizationDomain:s,organization:`${t}//${s}`,service:`${t}//${i}`,subdomain:r}}xf(window&&window.location);var Mf={exports:{}};Mf.exports=function(e){return(e instanceof Buffer?e:Buffer.from(e.toString(),"binary")).toString("base64")};var jf=o(Mf.exports);function Lf(e,t){return function(){return e.apply(t,arguments)}}const{toString:Af}=Object.prototype,{getPrototypeOf:Nf}=Object,Bf=(e=>t=>{const r=Af.call(t);return e[r]||(e[r]=r.slice(8,-1).toLowerCase())})(Object.create(null)),Ff=e=>(e=e.toLowerCase(),t=>Bf(t)===e),zf=e=>t=>typeof t===e,{isArray:Uf}=Array,$f=zf("undefined");const Vf=Ff("ArrayBuffer");const Gf=zf("string"),qf=zf("function"),Hf=zf("number"),Wf=e=>null!==e&&"object"==typeof e,Kf=e=>{if("object"!==Bf(e))return!1;const t=Nf(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)},Jf=Ff("Date"),Qf=Ff("File"),Zf=Ff("Blob"),Yf=Ff("FileList"),Xf=Ff("URLSearchParams");function eg(e,t,{allOwnKeys:r=!1}={}){if(null==e)return;let i,n;if("object"!=typeof e&&(e=[e]),Uf(e))for(i=0,n=e.length;i<n;i++)t.call(null,e[i],i,e);else{const n=r?Object.getOwnPropertyNames(e):Object.keys(e),s=n.length;let o;for(i=0;i<s;i++)o=n[i],t.call(null,e[o],o,e)}}function tg(e,t){t=t.toLowerCase();const r=Object.keys(e);let i,n=r.length;for(;n-- >0;)if(i=r[n],t===i.toLowerCase())return i;return null}const rg="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,ig=e=>!$f(e)&&e!==rg;const ng=(sg="undefined"!=typeof Uint8Array&&Nf(Uint8Array),e=>sg&&e instanceof sg);var sg;const og=Ff("HTMLFormElement"),ag=(({hasOwnProperty:e})=>(t,r)=>e.call(t,r))(Object.prototype),cg=Ff("RegExp"),dg=(e,t)=>{const r=Object.getOwnPropertyDescriptors(e),i={};eg(r,((r,n)=>{let s;!1!==(s=t(r,n,e))&&(i[n]=s||r)})),Object.defineProperties(e,i)},lg="abcdefghijklmnopqrstuvwxyz",pg="0123456789",ug={DIGIT:pg,ALPHA:lg,ALPHA_DIGIT:lg+lg.toUpperCase()+pg};const hg=Ff("AsyncFunction");var mg={isArray:Uf,isArrayBuffer:Vf,isBuffer:function(e){return null!==e&&!$f(e)&&null!==e.constructor&&!$f(e.constructor)&&qf(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||qf(e.append)&&("formdata"===(t=Bf(e))||"object"===t&&qf(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&Vf(e.buffer),t},isString:Gf,isNumber:Hf,isBoolean:e=>!0===e||!1===e,isObject:Wf,isPlainObject:Kf,isUndefined:$f,isDate:Jf,isFile:Qf,isBlob:Zf,isRegExp:cg,isFunction:qf,isStream:e=>Wf(e)&&qf(e.pipe),isURLSearchParams:Xf,isTypedArray:ng,isFileList:Yf,forEach:eg,merge:function e(){const{caseless:t}=ig(this)&&this||{},r={},i=(i,n)=>{const s=t&&tg(r,n)||n;Kf(r[s])&&Kf(i)?r[s]=e(r[s],i):Kf(i)?r[s]=e({},i):Uf(i)?r[s]=i.slice():r[s]=i};for(let e=0,t=arguments.length;e<t;e++)arguments[e]&&eg(arguments[e],i);return r},extend:(e,t,r,{allOwnKeys:i}={})=>(eg(t,((t,i)=>{r&&qf(t)?e[i]=Lf(t,r):e[i]=t}),{allOwnKeys:i}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,r,i)=>{e.prototype=Object.create(t.prototype,i),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},toFlatObject:(e,t,r,i)=>{let n,s,o;const a={};if(t=t||{},null==e)return t;do{for(n=Object.getOwnPropertyNames(e),s=n.length;s-- >0;)o=n[s],i&&!i(o,e,t)||a[o]||(t[o]=e[o],a[o]=!0);e=!1!==r&&Nf(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:Bf,kindOfTest:Ff,endsWith:(e,t,r)=>{e=String(e),(void 0===r||r>e.length)&&(r=e.length),r-=t.length;const i=e.indexOf(t,r);return-1!==i&&i===r},toArray:e=>{if(!e)return null;if(Uf(e))return e;let t=e.length;if(!Hf(t))return null;const r=new Array(t);for(;t-- >0;)r[t]=e[t];return r},forEachEntry:(e,t)=>{const r=(e&&e[Symbol.iterator]).call(e);let i;for(;(i=r.next())&&!i.done;){const r=i.value;t.call(e,r[0],r[1])}},matchAll:(e,t)=>{let r;const i=[];for(;null!==(r=e.exec(t));)i.push(r);return i},isHTMLForm:og,hasOwnProperty:ag,hasOwnProp:ag,reduceDescriptors:dg,freezeMethods:e=>{dg(e,((t,r)=>{if(qf(e)&&-1!==["arguments","caller","callee"].indexOf(r))return!1;const i=e[r];qf(i)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")}))}))},toObjectSet:(e,t)=>{const r={},i=e=>{e.forEach((e=>{r[e]=!0}))};return Uf(e)?i(e):i(String(e).split(t)),r},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r})),noop:()=>{},toFiniteNumber:(e,t)=>(e=+e,Number.isFinite(e)?e:t),findKey:tg,global:rg,isContextDefined:ig,ALPHABET:ug,generateString:(e=16,t=ug.ALPHA_DIGIT)=>{let r="";const{length:i}=t;for(;e--;)r+=t[Math.random()*i|0];return r},isSpecCompliantForm:function(e){return!!(e&&qf(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:e=>{const t=new Array(10),r=(e,i)=>{if(Wf(e)){if(t.indexOf(e)>=0)return;if(!("toJSON"in e)){t[i]=e;const n=Uf(e)?[]:{};return eg(e,((e,t)=>{const s=r(e,i+1);!$f(s)&&(n[t]=s)})),t[i]=void 0,n}}return e};return r(e,0)},isAsyncFn:hg,isThenable:e=>e&&(Wf(e)||qf(e))&&qf(e.then)&&qf(e.catch)};function fg(e,t,r,i,n){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),i&&(this.request=i),n&&(this.response=n)}mg.inherits(fg,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:mg.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const gg=fg.prototype,vg={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((e=>{vg[e]={value:e}})),Object.defineProperties(fg,vg),Object.defineProperty(gg,"isAxiosError",{value:!0}),fg.from=(e,t,r,i,n,s)=>{const o=Object.create(gg);return mg.toFlatObject(e,o,(function(e){return e!==Error.prototype}),(e=>"isAxiosError"!==e)),fg.call(o,e.message,t,r,i,n),o.cause=e,o.name=e.name,s&&Object.assign(o,s),o};function bg(e){return mg.isPlainObject(e)||mg.isArray(e)}function yg(e){return mg.endsWith(e,"[]")?e.slice(0,-2):e}function _g(e,t,r){return e?e.concat(t).map((function(e,t){return e=yg(e),!r&&t?"["+e+"]":e})).join(r?".":""):t}const wg=mg.toFlatObject(mg,{},null,(function(e){return/^is[A-Z]/.test(e)}));function Sg(e,t,r){if(!mg.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const i=(r=mg.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!mg.isUndefined(t[e])}))).metaTokens,n=r.visitor||d,s=r.dots,o=r.indexes,a=(r.Blob||"undefined"!=typeof Blob&&Blob)&&mg.isSpecCompliantForm(t);if(!mg.isFunction(n))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if(mg.isDate(e))return e.toISOString();if(!a&&mg.isBlob(e))throw new fg("Blob is not supported. Use a Buffer instead.");return mg.isArrayBuffer(e)||mg.isTypedArray(e)?a&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function d(e,r,n){let a=e;if(e&&!n&&"object"==typeof e)if(mg.endsWith(r,"{}"))r=i?r:r.slice(0,-2),e=JSON.stringify(e);else if(mg.isArray(e)&&function(e){return mg.isArray(e)&&!e.some(bg)}(e)||(mg.isFileList(e)||mg.endsWith(r,"[]"))&&(a=mg.toArray(e)))return r=yg(r),a.forEach((function(e,i){!mg.isUndefined(e)&&null!==e&&t.append(!0===o?_g([r],i,s):null===o?r:r+"[]",c(e))})),!1;return!!bg(e)||(t.append(_g(n,r,s),c(e)),!1)}const l=[],p=Object.assign(wg,{defaultVisitor:d,convertValue:c,isVisitable:bg});if(!mg.isObject(e))throw new TypeError("data must be an object");return function e(r,i){if(!mg.isUndefined(r)){if(-1!==l.indexOf(r))throw Error("Circular reference detected in "+i.join("."));l.push(r),mg.forEach(r,(function(r,s){!0===(!(mg.isUndefined(r)||null===r)&&n.call(t,r,mg.isString(s)?s.trim():s,i,p))&&e(r,i?i.concat(s):[s])})),l.pop()}}(e),t}function Cg(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function Rg(e,t){this._pairs=[],e&&Sg(e,this,t)}const Tg=Rg.prototype;function Pg(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function kg(e,t,r){if(!t)return e;const i=r&&r.encode||Pg,n=r&&r.serialize;let s;if(s=n?n(t,r):mg.isURLSearchParams(t)?t.toString():new Rg(t,r).toString(i),s){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+s}return e}Tg.append=function(e,t){this._pairs.push([e,t])},Tg.toString=function(e){const t=e?function(t){return e.call(this,t,Cg)}:Cg;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};class Og{constructor(){this.handlers=[]}use(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){mg.forEach(this.handlers,(function(t){null!==t&&e(t)}))}}var Eg={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Dg={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:Rg,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]};const Ig="undefined"!=typeof window&&"undefined"!=typeof document,xg=(Mg="undefined"!=typeof navigator&&navigator.product,Ig&&["ReactNative","NativeScript","NS"].indexOf(Mg)<0);var Mg;const jg="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts;var Lg={...Object.freeze({__proto__:null,hasBrowserEnv:Ig,hasStandardBrowserEnv:xg,hasStandardBrowserWebWorkerEnv:jg}),...Dg};function Ag(e){function t(e,r,i,n){let s=e[n++];if("__proto__"===s)return!0;const o=Number.isFinite(+s),a=n>=e.length;if(s=!s&&mg.isArray(i)?i.length:s,a)return mg.hasOwnProp(i,s)?i[s]=[i[s],r]:i[s]=r,!o;i[s]&&mg.isObject(i[s])||(i[s]=[]);return t(e,r,i[s],n)&&mg.isArray(i[s])&&(i[s]=function(e){const t={},r=Object.keys(e);let i;const n=r.length;let s;for(i=0;i<n;i++)s=r[i],t[s]=e[s];return t}(i[s])),!o}if(mg.isFormData(e)&&mg.isFunction(e.entries)){const r={};return mg.forEachEntry(e,((e,i)=>{t(function(e){return mg.matchAll(/\w+|\[(\w*)]/g,e).map((e=>"[]"===e[0]?"":e[1]||e[0]))}(e),i,r,0)})),r}return null}const Ng={transitional:Eg,adapter:["xhr","http"],transformRequest:[function(e,t){const r=t.getContentType()||"",i=r.indexOf("application/json")>-1,n=mg.isObject(e);n&&mg.isHTMLForm(e)&&(e=new FormData(e));if(mg.isFormData(e))return i?JSON.stringify(Ag(e)):e;if(mg.isArrayBuffer(e)||mg.isBuffer(e)||mg.isStream(e)||mg.isFile(e)||mg.isBlob(e))return e;if(mg.isArrayBufferView(e))return e.buffer;if(mg.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let s;if(n){if(r.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return Sg(e,new Lg.classes.URLSearchParams,Object.assign({visitor:function(e,t,r,i){return Lg.isNode&&mg.isBuffer(e)?(this.append(t,e.toString("base64")),!1):i.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((s=mg.isFileList(e))||r.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return Sg(s?{"files[]":e}:e,t&&new t,this.formSerializer)}}return n||i?(t.setContentType("application/json",!1),function(e,t,r){if(mg.isString(e))try{return(t||JSON.parse)(e),mg.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||Ng.transitional,r=t&&t.forcedJSONParsing,i="json"===this.responseType;if(e&&mg.isString(e)&&(r&&!this.responseType||i)){const r=!(t&&t.silentJSONParsing)&&i;try{return JSON.parse(e)}catch(e){if(r){if("SyntaxError"===e.name)throw fg.from(e,fg.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Lg.classes.FormData,Blob:Lg.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};mg.forEach(["delete","get","head","post","put","patch"],(e=>{Ng.headers[e]={}}));var Bg=Ng;const Fg=mg.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]);const zg=Symbol("internals");function Ug(e){return e&&String(e).trim().toLowerCase()}function $g(e){return!1===e||null==e?e:mg.isArray(e)?e.map($g):String(e)}function Vg(e,t,r,i,n){return mg.isFunction(i)?i.call(this,t,r):(n&&(t=r),mg.isString(t)?mg.isString(i)?-1!==t.indexOf(i):mg.isRegExp(i)?i.test(t):void 0:void 0)}class Gg{constructor(e){e&&this.set(e)}set(e,t,r){const i=this;function n(e,t,r){const n=Ug(t);if(!n)throw new Error("header name must be a non-empty string");const s=mg.findKey(i,n);(!s||void 0===i[s]||!0===r||void 0===r&&!1!==i[s])&&(i[s||t]=$g(e))}const s=(e,t)=>mg.forEach(e,((e,r)=>n(e,r,t)));return mg.isPlainObject(e)||e instanceof this.constructor?s(e,t):mg.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim())?s((e=>{const t={};let r,i,n;return e&&e.split("\n").forEach((function(e){n=e.indexOf(":"),r=e.substring(0,n).trim().toLowerCase(),i=e.substring(n+1).trim(),!r||t[r]&&Fg[r]||("set-cookie"===r?t[r]?t[r].push(i):t[r]=[i]:t[r]=t[r]?t[r]+", "+i:i)})),t})(e),t):null!=e&&n(t,e,r),this}get(e,t){if(e=Ug(e)){const r=mg.findKey(this,e);if(r){const e=this[r];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let i;for(;i=r.exec(e);)t[i[1]]=i[2];return t}(e);if(mg.isFunction(t))return t.call(this,e,r);if(mg.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=Ug(e)){const r=mg.findKey(this,e);return!(!r||void 0===this[r]||t&&!Vg(0,this[r],r,t))}return!1}delete(e,t){const r=this;let i=!1;function n(e){if(e=Ug(e)){const n=mg.findKey(r,e);!n||t&&!Vg(0,r[n],n,t)||(delete r[n],i=!0)}}return mg.isArray(e)?e.forEach(n):n(e),i}clear(e){const t=Object.keys(this);let r=t.length,i=!1;for(;r--;){const n=t[r];e&&!Vg(0,this[n],n,e,!0)||(delete this[n],i=!0)}return i}normalize(e){const t=this,r={};return mg.forEach(this,((i,n)=>{const s=mg.findKey(r,n);if(s)return t[s]=$g(i),void delete t[n];const o=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((e,t,r)=>t.toUpperCase()+r))}(n):String(n).trim();o!==n&&delete t[n],t[o]=$g(i),r[o]=!0})),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return mg.forEach(this,((r,i)=>{null!=r&&!1!==r&&(t[i]=e&&mg.isArray(r)?r.join(", "):r)})),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((([e,t])=>e+": "+t)).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const r=new this(e);return t.forEach((e=>r.set(e))),r}static accessor(e){const t=(this[zg]=this[zg]={accessors:{}}).accessors,r=this.prototype;function i(e){const i=Ug(e);t[i]||(!function(e,t){const r=mg.toCamelCase(" "+t);["get","set","has"].forEach((i=>{Object.defineProperty(e,i+r,{value:function(e,r,n){return this[i].call(this,t,e,r,n)},configurable:!0})}))}(r,e),t[i]=!0)}return mg.isArray(e)?e.forEach(i):i(e),this}}Gg.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),mg.reduceDescriptors(Gg.prototype,(({value:e},t)=>{let r=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[r]=e}}})),mg.freezeMethods(Gg);var qg=Gg;function Hg(e,t){const r=this||Bg,i=t||r,n=qg.from(i.headers);let s=i.data;return mg.forEach(e,(function(e){s=e.call(r,s,n.normalize(),t?t.status:void 0)})),n.normalize(),s}function Wg(e){return!(!e||!e.__CANCEL__)}function Kg(e,t,r){fg.call(this,null==e?"canceled":e,fg.ERR_CANCELED,t,r),this.name="CanceledError"}mg.inherits(Kg,fg,{__CANCEL__:!0});var Jg=Lg.hasStandardBrowserEnv?{write(e,t,r,i,n,s){const o=[e+"="+encodeURIComponent(t)];mg.isNumber(r)&&o.push("expires="+new Date(r).toGMTString()),mg.isString(i)&&o.push("path="+i),mg.isString(n)&&o.push("domain="+n),!0===s&&o.push("secure"),document.cookie=o.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}};function Qg(e,t){return e&&!function(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}(t)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}var Zg=Lg.hasStandardBrowserEnv?function(){const e=/(msie|trident)/i.test(navigator.userAgent),t=document.createElement("a");let r;function i(r){let i=r;return e&&(t.setAttribute("href",i),i=t.href),t.setAttribute("href",i),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return r=i(window.location.href),function(e){const t=mg.isString(e)?i(e):e;return t.protocol===r.protocol&&t.host===r.host}}():function(){return!0};function Yg(e,t){let r=0;const i=function(e,t){e=e||10;const r=new Array(e),i=new Array(e);let n,s=0,o=0;return t=void 0!==t?t:1e3,function(a){const c=Date.now(),d=i[o];n||(n=c),r[s]=a,i[s]=c;let l=o,p=0;for(;l!==s;)p+=r[l++],l%=e;if(s=(s+1)%e,s===o&&(o=(o+1)%e),c-n<t)return;const u=d&&c-d;return u?Math.round(1e3*p/u):void 0}}(50,250);return n=>{const s=n.loaded,o=n.lengthComputable?n.total:void 0,a=s-r,c=i(a);r=s;const d={loaded:s,total:o,progress:o?s/o:void 0,bytes:a,rate:c||void 0,estimated:c&&o&&s<=o?(o-s)/c:void 0,event:n};d[t?"download":"upload"]=!0,e(d)}}var Xg="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise((function(t,r){let i=e.data;const n=qg.from(e.headers).normalize();let s,o,{responseType:a,withXSRFToken:c}=e;function d(){e.cancelToken&&e.cancelToken.unsubscribe(s),e.signal&&e.signal.removeEventListener("abort",s)}if(mg.isFormData(i))if(Lg.hasStandardBrowserEnv||Lg.hasStandardBrowserWebWorkerEnv)n.setContentType(!1);else if(!1!==(o=n.getContentType())){const[e,...t]=o?o.split(";").map((e=>e.trim())).filter(Boolean):[];n.setContentType([e||"multipart/form-data",...t].join("; "))}let l=new XMLHttpRequest;if(e.auth){const t=e.auth.username||"",r=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";n.set("Authorization","Basic "+btoa(t+":"+r))}const p=Qg(e.baseURL,e.url);function u(){if(!l)return;const i=qg.from("getAllResponseHeaders"in l&&l.getAllResponseHeaders());!function(e,t,r){const i=r.config.validateStatus;r.status&&i&&!i(r.status)?t(new fg("Request failed with status code "+r.status,[fg.ERR_BAD_REQUEST,fg.ERR_BAD_RESPONSE][Math.floor(r.status/100)-4],r.config,r.request,r)):e(r)}((function(e){t(e),d()}),(function(e){r(e),d()}),{data:a&&"text"!==a&&"json"!==a?l.response:l.responseText,status:l.status,statusText:l.statusText,headers:i,config:e,request:l}),l=null}if(l.open(e.method.toUpperCase(),kg(p,e.params,e.paramsSerializer),!0),l.timeout=e.timeout,"onloadend"in l?l.onloadend=u:l.onreadystatechange=function(){l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))&&setTimeout(u)},l.onabort=function(){l&&(r(new fg("Request aborted",fg.ECONNABORTED,e,l)),l=null)},l.onerror=function(){r(new fg("Network Error",fg.ERR_NETWORK,e,l)),l=null},l.ontimeout=function(){let t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";const i=e.transitional||Eg;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),r(new fg(t,i.clarifyTimeoutError?fg.ETIMEDOUT:fg.ECONNABORTED,e,l)),l=null},Lg.hasStandardBrowserEnv&&(c&&mg.isFunction(c)&&(c=c(e)),c||!1!==c&&Zg(p))){const t=e.xsrfHeaderName&&e.xsrfCookieName&&Jg.read(e.xsrfCookieName);t&&n.set(e.xsrfHeaderName,t)}void 0===i&&n.setContentType(null),"setRequestHeader"in l&&mg.forEach(n.toJSON(),(function(e,t){l.setRequestHeader(t,e)})),mg.isUndefined(e.withCredentials)||(l.withCredentials=!!e.withCredentials),a&&"json"!==a&&(l.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&l.addEventListener("progress",Yg(e.onDownloadProgress,!0)),"function"==typeof e.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",Yg(e.onUploadProgress)),(e.cancelToken||e.signal)&&(s=t=>{l&&(r(!t||t.type?new Kg(null,e,l):t),l.abort(),l=null)},e.cancelToken&&e.cancelToken.subscribe(s),e.signal&&(e.signal.aborted?s():e.signal.addEventListener("abort",s)));const h=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(p);h&&-1===Lg.protocols.indexOf(h)?r(new fg("Unsupported protocol "+h+":",fg.ERR_BAD_REQUEST,e)):l.send(i||null)}))};const ev={http:null,xhr:Xg};mg.forEach(ev,((e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}}));const tv=e=>`- ${e}`,rv=e=>mg.isFunction(e)||null===e||!1===e;var iv=e=>{e=mg.isArray(e)?e:[e];const{length:t}=e;let r,i;const n={};for(let s=0;s<t;s++){let t;if(r=e[s],i=r,!rv(r)&&(i=ev[(t=String(r)).toLowerCase()],void 0===i))throw new fg(`Unknown adapter '${t}'`);if(i)break;n[t||"#"+s]=i}if(!i){const e=Object.entries(n).map((([e,t])=>`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build")));throw new fg("There is no suitable adapter to dispatch the request "+(t?e.length>1?"since :\n"+e.map(tv).join("\n"):" "+tv(e[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return i};function nv(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Kg(null,e)}function sv(e){nv(e),e.headers=qg.from(e.headers),e.data=Hg.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1);return iv(e.adapter||Bg.adapter)(e).then((function(t){return nv(e),t.data=Hg.call(e,e.transformResponse,t),t.headers=qg.from(t.headers),t}),(function(t){return Wg(t)||(nv(e),t&&t.response&&(t.response.data=Hg.call(e,e.transformResponse,t.response),t.response.headers=qg.from(t.response.headers))),Promise.reject(t)}))}const ov=e=>e instanceof qg?e.toJSON():e;function av(e,t){t=t||{};const r={};function i(e,t,r){return mg.isPlainObject(e)&&mg.isPlainObject(t)?mg.merge.call({caseless:r},e,t):mg.isPlainObject(t)?mg.merge({},t):mg.isArray(t)?t.slice():t}function n(e,t,r){return mg.isUndefined(t)?mg.isUndefined(e)?void 0:i(void 0,e,r):i(e,t,r)}function s(e,t){if(!mg.isUndefined(t))return i(void 0,t)}function o(e,t){return mg.isUndefined(t)?mg.isUndefined(e)?void 0:i(void 0,e):i(void 0,t)}function a(r,n,s){return s in t?i(r,n):s in e?i(void 0,r):void 0}const c={url:s,method:s,data:s,baseURL:o,transformRequest:o,transformResponse:o,paramsSerializer:o,timeout:o,timeoutMessage:o,withCredentials:o,withXSRFToken:o,adapter:o,responseType:o,xsrfCookieName:o,xsrfHeaderName:o,onUploadProgress:o,onDownloadProgress:o,decompress:o,maxContentLength:o,maxBodyLength:o,beforeRedirect:o,transport:o,httpAgent:o,httpsAgent:o,cancelToken:o,socketPath:o,responseEncoding:o,validateStatus:a,headers:(e,t)=>n(ov(e),ov(t),!0)};return mg.forEach(Object.keys(Object.assign({},e,t)),(function(i){const s=c[i]||n,o=s(e[i],t[i],i);mg.isUndefined(o)&&s!==a||(r[i]=o)})),r}const cv="1.6.7",dv={};["object","boolean","number","function","string","symbol"].forEach(((e,t)=>{dv[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}}));const lv={};dv.transitional=function(e,t,r){function i(e,t){return"[Axios v1.6.7] Transitional option '"+e+"'"+t+(r?". "+r:"")}return(r,n,s)=>{if(!1===e)throw new fg(i(n," has been removed"+(t?" in "+t:"")),fg.ERR_DEPRECATED);return t&&!lv[n]&&(lv[n]=!0,console.warn(i(n," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,n,s)}};var pv={assertOptions:function(e,t,r){if("object"!=typeof e)throw new fg("options must be an object",fg.ERR_BAD_OPTION_VALUE);const i=Object.keys(e);let n=i.length;for(;n-- >0;){const s=i[n],o=t[s];if(o){const t=e[s],r=void 0===t||o(t,s,e);if(!0!==r)throw new fg("option "+s+" must be "+r,fg.ERR_BAD_OPTION_VALUE)}else if(!0!==r)throw new fg("Unknown option "+s,fg.ERR_BAD_OPTION)}},validators:dv};const uv=pv.validators;class hv{constructor(e){this.defaults=e,this.interceptors={request:new Og,response:new Og}}async request(e,t){try{return await this._request(e,t)}catch(e){if(e instanceof Error){let t;Error.captureStackTrace?Error.captureStackTrace(t={}):t=new Error;const r=t.stack?t.stack.replace(/^.+\n/,""):"";e.stack?r&&!String(e.stack).endsWith(r.replace(/^.+\n.+\n/,""))&&(e.stack+="\n"+r):e.stack=r}throw e}}_request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=av(this.defaults,t);const{transitional:r,paramsSerializer:i,headers:n}=t;void 0!==r&&pv.assertOptions(r,{silentJSONParsing:uv.transitional(uv.boolean),forcedJSONParsing:uv.transitional(uv.boolean),clarifyTimeoutError:uv.transitional(uv.boolean)},!1),null!=i&&(mg.isFunction(i)?t.paramsSerializer={serialize:i}:pv.assertOptions(i,{encode:uv.function,serialize:uv.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();let s=n&&mg.merge(n.common,n[t.method]);n&&mg.forEach(["delete","get","head","post","put","patch","common"],(e=>{delete n[e]})),t.headers=qg.concat(s,n);const o=[];let a=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(a=a&&e.synchronous,o.unshift(e.fulfilled,e.rejected))}));const c=[];let d;this.interceptors.response.forEach((function(e){c.push(e.fulfilled,e.rejected)}));let l,p=0;if(!a){const e=[sv.bind(this),void 0];for(e.unshift.apply(e,o),e.push.apply(e,c),l=e.length,d=Promise.resolve(t);p<l;)d=d.then(e[p++],e[p++]);return d}l=o.length;let u=t;for(p=0;p<l;){const e=o[p++],t=o[p++];try{u=e(u)}catch(e){t.call(this,e);break}}try{d=sv.call(this,u)}catch(e){return Promise.reject(e)}for(p=0,l=c.length;p<l;)d=d.then(c[p++],c[p++]);return d}getUri(e){return kg(Qg((e=av(this.defaults,e)).baseURL,e.url),e.params,e.paramsSerializer)}}mg.forEach(["delete","get","head","options"],(function(e){hv.prototype[e]=function(t,r){return this.request(av(r||{},{method:e,url:t,data:(r||{}).data}))}})),mg.forEach(["post","put","patch"],(function(e){function t(t){return function(r,i,n){return this.request(av(n||{},{method:e,headers:t?{"Content-Type":"multipart/form-data"}:{},url:r,data:i}))}}hv.prototype[e]=t(),hv.prototype[e+"Form"]=t(!0)}));var mv=hv;class fv{constructor(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");let t;this.promise=new Promise((function(e){t=e}));const r=this;this.promise.then((e=>{if(!r._listeners)return;let t=r._listeners.length;for(;t-- >0;)r._listeners[t](e);r._listeners=null})),this.promise.then=e=>{let t;const i=new Promise((e=>{r.subscribe(e),t=e})).then(e);return i.cancel=function(){r.unsubscribe(t)},i},e((function(e,i,n){r.reason||(r.reason=new Kg(e,i,n),t(r.reason))}))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}static source(){let e;return{token:new fv((function(t){e=t})),cancel:e}}}var gv=fv;const vv={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(vv).forEach((([e,t])=>{vv[t]=e}));var bv=vv;const yv=function e(t){const r=new mv(t),i=Lf(mv.prototype.request,r);return mg.extend(i,mv.prototype,r,{allOwnKeys:!0}),mg.extend(i,r,null,{allOwnKeys:!0}),i.create=function(r){return e(av(t,r))},i}(Bg);function _v(e,t){return kt(e,t)}function wv(e,t){return r=>(i,n,s)=>e(n())?t(r)(i,n,s):(console.warn("Not authorized to perform this action"),!1)}yv.Axios=mv,yv.CanceledError=Kg,yv.CancelToken=gv,yv.isCancel=Wg,yv.VERSION=cv,yv.toFormData=Sg,yv.AxiosError=fg,yv.Cancel=yv.CanceledError,yv.all=function(e){return Promise.all(e)},yv.spread=function(e){return function(t){return e.apply(null,t)}},yv.isAxiosError=function(e){return mg.isObject(e)&&!0===e.isAxiosError},yv.mergeConfig=av,yv.AxiosHeaders=qg,yv.formToJSON=e=>Ag(mg.isHTMLForm(e)?new FormData(e):e),yv.getAdapter=iv,yv.HttpStatusCode=bv,yv.default=yv;const Sv=((e={})=>{const t=new Map,{extra:r,onError:i=lr}=e;Vt(i,"onError");const n=e=>{let r=it(Array.from(t.values()),(t=>t.effect===e.effect));return r||(r=nr(e)),(e=>(e.unsubscribe=()=>t.delete(e.id),t.set(e.id,e),t=>{e.unsubscribe(),t?.cancelActive&&sr(e)}))(r)};Object.assign(n,{withTypes:()=>n});const s=e=>{const{type:r,effect:i,predicate:n}=ir(e),s=it(Array.from(t.values()),(e=>("string"==typeof r?e.type===r:e.predicate===n)&&e.effect===i));return s&&(s.unsubscribe(),e.cancelActive&&sr(s)),!!s};Object.assign(s,{withTypes:()=>s});const o=async(e,s,o,a)=>{const c=new AbortController,d=rr(n,c.signal),l=[];try{e.pending.add(c),await Promise.resolve(e.effect(s,Yt({},o,{getOriginalState:a,condition:(e,t)=>d(e,t).then(Boolean),take:d,delay:Zt(c.signal),pause:Qt(c.signal),extra:r,signal:c.signal,fork:tr(c.signal,l),unsubscribe:e.unsubscribe,subscribe:()=>{t.set(e.id,e)},cancelActiveListeners:()=>{e.pending.forEach(((e,t,r)=>{e!==c&&(Wt(e,zt),r.delete(e))}))},cancel:()=>{Wt(c,zt),e.pending.delete(c)},throwIfCancelled:()=>{Kt(c.signal)}})))}catch(e){e instanceof $t||or(i,e,{raisedBy:"effect"})}finally{await Promise.all(l),Wt(c,Ut),e.pending.delete(c)}},a=(e=>()=>{e.forEach(sr),e.clear()})(t);return{middleware:e=>r=>c=>{if(!V(c))return r(c);if(ar.match(c))return n(c.payload);if(cr.match(c))return void a();if(dr.match(c))return s(c.payload);let d=e.getState();const l=()=>{if(d===Xt)throw new Error(`${er}: getOriginalState can only be called synchronously`);return d};let p;try{if(p=r(c),t.size>0){const r=e.getState(),n=Array.from(t.values());for(const t of n){let n=!1;try{n=t.predicate(c,r,d)}catch(e){n=!1,or(i,e,{raisedBy:"predicate"})}n&&o(t,c,e,l)}}}finally{d=Xt}return p},startListening:n,stopListening:s,clearListeners:a}})(),Cv=Sv.startListening,Rv=(e,t)=>Cv({predicate:(t,r,i)=>{const n=e.map((e=>e(i))),s=e.map((e=>e(r)));return n.some(((e,t)=>e!==s[t]))},effect:(r,{dispatch:i,getState:n,extra:s})=>{const o=e.map((e=>e(n())));t({dispatch:i,getState:n,extra:s},...o)}}),Tv=Mt({name:"app",initialState:{isNodeSdk:!1,isActive:!1,roomName:null,roomUrl:null,displayName:null,userAgent:"core:0.16.0",externalId:null},reducers:{doAppStart:(e,t)=>{const r=new URL(t.payload.roomUrl);return Object.assign(Object.assign(Object.assign({},e),t.payload),{roomName:r.pathname,initialConfig:Object.assign({},t.payload),isActive:!0})},doAppStop:e=>Object.assign(Object.assign({},e),{isActive:!1})}}),{doAppStop:Pv,doAppStart:kv}=Tv.actions,Ov=e=>e.app.isActive,Ev=e=>e.app.roomName,Dv=e=>e.app.displayName,Iv=e=>e.app.userAgent,xv=e=>e.app.externalId,Mv=e=>e.app.isNodeSdk;function jv(e){return et(`signalConnection/event/${e}`)}const Lv={audioEnabled:jv("audioEnabled"),audioEnableRequested:jv("audioEnableRequested"),chatMessage:jv("chatMessage"),clientLeft:jv("clientLeft"),clientKicked:jv("clientKicked"),clientMetadataReceived:jv("clientMetadataReceived"),cloudRecordingStarted:jv("cloudRecordingStarted"),cloudRecordingStopped:jv("cloudRecordingStopped"),disconnect:jv("disconnect"),knockerLeft:jv("knockerLeft"),knockHandled:jv("knockHandled"),newClient:jv("newClient"),roomJoined:jv("roomJoined"),roomKnocked:jv("roomKnocked"),roomLeft:jv("roomLeft"),roomLocked:jv("roomLocked"),roomSessionEnded:jv("roomSessionEnded"),screenshareStarted:jv("screenshareStarted"),screenshareStopped:jv("screenshareStopped"),spotlightAdded:jv("spotlightAdded"),spotlightRemoved:jv("spotlightRemoved"),streamingStopped:jv("streamingStopped"),videoEnabled:jv("videoEnabled")},Av={canLockRoom:["host"],canRequestAudioEnable:["host"],canKickClient:["host"],canEndMeeting:["host"],canAskToSpeak:["host"],canSpotlight:["host"]},Nv=Mt({name:"authorization",initialState:{roomKey:null,roleName:"none"},reducers:{setRoomKey:(e,t)=>Object.assign(Object.assign({},e),{roomKey:t.payload})},extraReducers:e=>{e.addCase(kv,((e,t)=>Object.assign(Object.assign({},e),{roomKey:t.payload.roomKey}))),e.addCase(Lv.roomJoined,((e,t)=>{var r,i;const n=null===(i=null===(r=t.payload)||void 0===r?void 0:r.room)||void 0===i?void 0:i.clients.find((e=>{var r;return e.id===(null===(r=t.payload)||void 0===r?void 0:r.selfId)}));return Object.assign(Object.assign({},e),{roleName:(null==n?void 0:n.role.roleName)||"none"})}))}}),{setRoomKey:Bv}=Nv.actions,Fv=e=>e.authorization.roomKey,zv=e=>e.authorization.roleName,Uv=We(zv,(e=>Av.canLockRoom.includes(e))),$v=We(zv,(e=>Av.canRequestAudioEnable.includes(e))),Vv=We(zv,(e=>Av.canKickClient.includes(e))),Gv=We(zv,(e=>Av.canEndMeeting.includes(e))),qv=We(zv,(e=>Av.canAskToSpeak.includes(e))),Hv=We(zv,(e=>Av.canSpotlight.includes(e)));function Wv(e,t){var r={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(r[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(i=Object.getOwnPropertySymbols(e);n<i.length;n++)t.indexOf(i[n])<0&&Object.prototype.propertyIsEnumerable.call(e,i[n])&&(r[i[n]]=e[i[n]])}return r}function Kv(e,t,r,i){return new(r||(r=Promise))((function(n,s){function o(e){try{c(i.next(e))}catch(e){s(e)}}function a(e){try{c(i.throw(e))}catch(e){s(e)}}function c(e){e.done?n(e.value):function(e){return e instanceof r?e:new r((function(t){t(e)}))}(e.value).then(o,a)}c((i=i.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const Jv=Mt({name:"deviceCredentials",initialState:{isFetching:!1,data:null},reducers:{},extraReducers:e=>{e.addCase(Qv.pending,(e=>Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(Qv.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isFetching:!1,data:t.payload}))),e.addCase(Qv.rejected,(e=>Object.assign(Object.assign({},e),{isFetching:!0})))}}),Qv=_v("deviceCredentials/doGetDeviceCredentials",((e,{extra:t})=>Kv(void 0,void 0,void 0,(function*(){try{return yield t.services.credentialsService.getCredentials()}catch(e){console.error(e)}})))),Zv=e=>e.deviceCredentials;Rv([We(Ov,Zv,((e,t)=>!(!e||t.isFetching||t.data)))],(({dispatch:e},t)=>{t&&e(Qv())}));const Yv=Mt({name:"signalConnection",initialState:{deviceIdentified:!1,isIdentifyingDevice:!1,status:"ready",socket:null},reducers:{socketConnecting:e=>Object.assign(Object.assign({},e),{status:"connecting"}),socketConnected:(e,t)=>Object.assign(Object.assign({},e),{socket:t.payload,status:"connected"}),socketDisconnected:e=>Object.assign(Object.assign({},e),{deviceIdentified:!1,status:"disconnected"}),socketReconnecting:e=>Object.assign(Object.assign({},e),{status:"reconnecting"}),deviceIdentifying:e=>Object.assign(Object.assign({},e),{isIdentifyingDevice:!0}),deviceIdentified:e=>Object.assign(Object.assign({},e),{deviceIdentified:!0,isIdentifyingDevice:!1})},extraReducers:e=>{e.addCase(Lv.disconnect,(e=>Object.assign(Object.assign({},e),{deviceIdentified:!1,status:"disconnected"})))}}),{deviceIdentifying:Xv,deviceIdentified:eb,socketConnected:tb,socketConnecting:rb,socketDisconnected:ib,socketReconnecting:nb}=Yv.actions,sb=()=>(e,t)=>{if(pb(t()))return;e(rb());const r=function(){const e=new URL("wss://signal.appearin.net").origin;return new Df(e,{autoConnect:!1})}();r.on("connect",(()=>e(tb(r)))),r.on("device_identified",(()=>e(eb()))),r.getManager().on("reconnect",(()=>e(nb()))),function(e,t){e.on("room_joined",(e=>t(Lv.roomJoined(e)))),e.on("new_client",(e=>t(Lv.newClient(e)))),e.on("client_left",(e=>t(Lv.clientLeft(e)))),e.on("client_kicked",(e=>t(Lv.clientKicked(e)))),e.on("audio_enabled",(e=>t(Lv.audioEnabled(e)))),e.on("video_enabled",(e=>t(Lv.videoEnabled(e)))),e.on("audio_enable_requested",(e=>t(Lv.audioEnableRequested(e)))),e.on("client_metadata_received",(e=>t(Lv.clientMetadataReceived(e)))),e.on("chat_message",(e=>t(Lv.chatMessage(e)))),e.on("disconnect",(()=>t(Lv.disconnect()))),e.on("room_knocked",(e=>t(Lv.roomKnocked(e)))),e.on("room_left",(()=>t(Lv.roomLeft()))),e.on("room_locked",(e=>t(Lv.roomLocked(e)))),e.on("room_session_ended",(e=>t(Lv.roomSessionEnded(e)))),e.on("knocker_left",(e=>t(Lv.knockerLeft(e)))),e.on("knock_handled",(e=>t(Lv.knockHandled(e)))),e.on("screenshare_started",(e=>t(Lv.screenshareStarted(e)))),e.on("screenshare_stopped",(e=>t(Lv.screenshareStopped(e)))),e.on("cloud_recording_started",(e=>t(Lv.cloudRecordingStarted(e)))),e.on("cloud_recording_stopped",(()=>t(Lv.cloudRecordingStopped()))),e.on("streaming_stopped",(()=>t(Lv.streamingStopped()))),e.on("spotlight_added",(e=>t(Lv.spotlightAdded(e)))),e.on("spotlight_removed",(e=>t(Lv.spotlightRemoved(e))))}(r,e),r.connect()},ob=({deviceCredentials:e})=>(t,r)=>{const i=r(),n=pb(i),s=db(i);n&&(s||(n.emit("identify_device",{deviceCredentials:e}),t(Xv())))},ab=()=>(e,t)=>{const r=t();if("connected"===lb(r)){const t=cb(r).socket;null==t||t.disconnect(),e(ib())}},cb=e=>e.signalConnection,db=e=>e.signalConnection.deviceIdentified,lb=e=>e.signalConnection.status,pb=e=>e.signalConnection.socket;Rv([We(Ov,lb,((e,t)=>!(!e||!["ready","reconnecting"].includes(t))))],(({dispatch:e},t)=>{t&&e(sb())}));const ub=We(Zv,lb,db,(e=>e.signalConnection.isIdentifyingDevice),((e,t,r,i)=>!(!e.data||"connected"!==t||r||i)));Rv([ub,Zv],(({dispatch:e},t,r)=>{t&&r.data&&e(ob({deviceCredentials:r.data}))})),Cv({actionCreator:Lv.roomLeft,effect:(e,{dispatch:t})=>{t(ab())}}),Cv({actionCreator:Lv.clientKicked,effect:(e,{dispatch:t})=>{t(ab())}});const hb=Mt({name:"chat",initialState:{chatMessages:[]},reducers:{},extraReducers(e){e.addCase(Lv.chatMessage,((e,t)=>{const r={senderId:t.payload.senderId,timestamp:t.payload.timestamp,text:t.payload.text};return Object.assign(Object.assign({},e),{chatMessages:[...e.chatMessages,r]})}))}}),mb=e=>(t,r)=>{const i=r(),n=cb(i).socket;null==n||n.emit("chat_message",{text:e.text})},fb=Mt({name:"cloudRecording",initialState:{isRecording:!1,error:null,startedAt:void 0},reducers:{recordingRequestStarted:e=>Object.assign(Object.assign({},e),{status:"requested"})},extraReducers:e=>{e.addCase(Lv.cloudRecordingStopped,(e=>Object.assign(Object.assign({},e),{isRecording:!1,status:void 0}))),e.addCase(Lv.cloudRecordingStarted,((e,t)=>{const{payload:r}=t;return r.error?Object.assign(Object.assign({},e),{isRecording:!1,status:"error",error:r.error}):e})),e.addCase(Lv.newClient,((e,{payload:t})=>{var r;const{client:i}=t;return"recorder"===(null===(r=i.role)||void 0===r?void 0:r.roleName)?Object.assign(Object.assign({},e),{isRecording:!0,status:"recording",startedAt:i.startedCloudRecordingAt?new Date(i.startedCloudRecordingAt).getTime():(new Date).getTime()}):e}))}}),{recordingRequestStarted:gb}=fb.actions,vb=()=>(e,t)=>{const r=t(),i=cb(r).socket,n=yb(r);n&&["recording","requested"].includes(n)||(null==i||i.emit("start_recording",{recording:"cloud"}),e(gb()))},bb=()=>(e,t)=>{const r=t(),i=cb(r).socket;null==i||i.emit("stop_recording")},yb=e=>e.cloudRecording.status;function _b(e,{delay:t=500,edges:r}={}){let i,n=0;return(...s)=>{n+=1,r&&1===n&&e(...s),clearTimeout(i),i=setTimeout((()=>{(!r||n>1)&&e(...s),i=void 0,n=0}),t)}}const wb=Mt({name:"localMedia",initialState:{busyDeviceIds:[],cameraEnabled:!1,currentSpeakerDeviceId:"default",devices:[],isSettingCameraDevice:!1,isSettingMicrophoneDevice:!1,isSettingSpeakerDevice:!1,isTogglingCamera:!1,lowDataMode:!1,microphoneEnabled:!1,status:"inactive",stream:void 0,isSwitchingStream:!1},reducers:{deviceBusy:(e,t)=>e.busyDeviceIds.includes(t.payload.deviceId)?e:Object.assign(Object.assign({},e),{busyDeviceIds:[...e.busyDeviceIds,t.payload.deviceId]}),toggleCameraEnabled(e,t){var r;return Object.assign(Object.assign({},e),{cameraEnabled:null!==(r=t.payload.enabled)&&void 0!==r?r:!e.cameraEnabled})},setCurrentCameraDeviceId:(e,t)=>Object.assign(Object.assign({},e),{currentCameraDeviceId:t.payload.deviceId}),toggleMicrophoneEnabled(e,t){var r;return Object.assign(Object.assign({},e),{microphoneEnabled:null!==(r=t.payload.enabled)&&void 0!==r?r:!e.microphoneEnabled})},setCurrentMicrophoneDeviceId:(e,t)=>Object.assign(Object.assign({},e),{currentMicrophoneDeviceId:t.payload.deviceId}),setCurrentSpeakerDeviceId(e,t){var r;return Object.assign(Object.assign({},e),{currentSpeakerDeviceId:null!==(r=t.payload.deviceId)&&void 0!==r?r:"default"})},toggleLowDataModeEnabled(e,t){var r;return Object.assign(Object.assign({},e),{lowDataMode:null!==(r=t.payload.enabled)&&void 0!==r?r:!e.lowDataMode})},setDevices:(e,t)=>Object.assign(Object.assign({},e),{devices:t.payload.devices}),setLocalMediaStream:(e,t)=>Object.assign(Object.assign({},e),{stream:t.payload.stream}),setLocalMediaOptions:(e,t)=>Object.assign(Object.assign({},e),{options:t.payload.options}),localMediaStopped:e=>Object.assign(Object.assign({},e),{status:"stopped",stream:void 0}),localStreamMetadataUpdated(e,t){const{audio:r,video:i}=t.payload;return Object.assign(Object.assign({},e),{currentCameraDeviceId:i.deviceId,currentMicrophoneDeviceId:r.deviceId,busyDeviceIds:e.busyDeviceIds.filter((e=>e!==r.deviceId&&e!==i.deviceId))})}},extraReducers:e=>{e.addCase(kv,((e,t)=>Object.assign(Object.assign({},e),{options:t.payload.localMediaOptions}))),e.addCase(Ab.pending,((e,t)=>{const{audio:r,video:i}=t.meta.arg;return Object.assign(Object.assign({},e),{isSettingCameraDevice:i,isSettingMicrophoneDevice:r})})),e.addCase(Ab.fulfilled,((e,t)=>{const{audio:r,video:i}=t.meta.arg;return Object.assign(Object.assign({},e),{isSettingCameraDevice:!i&&e.isSettingCameraDevice,isSettingMicrophoneDevice:!r&&e.isSettingMicrophoneDevice})})),e.addCase(Ab.rejected,((e,t)=>{const{audio:r,video:i}=t.meta.arg;return Object.assign(Object.assign({},e),{isSettingCameraDevice:!i&&e.isSettingCameraDevice,isSettingMicrophoneDevice:!r&&e.isSettingMicrophoneDevice,cameraDeviceError:i?t.error:e.cameraDeviceError,microphoneDeviceError:r?t.error:e.microphoneDeviceError})})),e.addCase(Mb.pending,(e=>Object.assign(Object.assign({},e),{isTogglingCamera:!0}))),e.addCase(Mb.fulfilled,(e=>Object.assign(Object.assign({},e),{isTogglingCamera:!1}))),e.addCase(Nb.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{devices:t.payload.devices}))),e.addCase(Fb.pending,(e=>Object.assign(Object.assign({},e),{status:"starting"}))),e.addCase(Fb.fulfilled,((e,{payload:{stream:t,onDeviceChange:r}})=>{let i,n,s=!1,o=!1;const a=t.getAudioTracks()[0],c=t.getVideoTracks()[0];return a&&(n=a.getSettings().deviceId,o=a.enabled),c&&(s=c.enabled,i=c.getSettings().deviceId),Object.assign(Object.assign({},e),{stream:t,status:"started",currentCameraDeviceId:i,currentMicrophoneDeviceId:n,cameraEnabled:s,microphoneEnabled:o,onDeviceChange:r})})),e.addCase(Fb.rejected,((e,t)=>Object.assign(Object.assign({},e),{status:"error",startError:t.error}))),e.addCase(Bb.pending,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!0}))),e.addCase(Bb.fulfilled,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!1}))),e.addCase(Bb.rejected,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!1})))}}),{deviceBusy:Sb,setCurrentCameraDeviceId:Cb,setCurrentMicrophoneDeviceId:Rb,setCurrentSpeakerDeviceId:Tb,toggleCameraEnabled:Pb,toggleMicrophoneEnabled:kb,toggleLowDataModeEnabled:Ob,setLocalMediaOptions:Eb,setLocalMediaStream:Db,localMediaStopped:Ib,localStreamMetadataUpdated:xb}=wb.actions,Mb=_v("localMedia/doToggleCamera",((e,{getState:t,rejectWithValue:r})=>Kv(void 0,void 0,void 0,(function*(){const e=t(),i=Yb(e);if(!i)return;let n=i.getVideoTracks()[0];const s=qb(e);try{if(s)if(n)n.enabled=!0;else{const t=ey(e),r=$b(e);yield Oh(Object.assign(Object.assign({},t),{audioId:!1,videoId:r,type:"exact"}),{replaceStream:i}),n=i.getVideoTracks()[0]}else{if(!n)return;n.enabled=!1,n.stop(),i.removeTrack(n)}i.dispatchEvent(new CustomEvent("stopresumevideo",{detail:{track:n,enable:s}}))}catch(e){return r(e)}})))),jb=_v("localMedia/doToggleMicrophone",((e,{getState:t})=>{var r;const i=t(),n=Yb(i);if(!n)return;const s=Hb(i),o=null===(r=n.getAudioTracks())||void 0===r?void 0:r[0];o&&(o.enabled=s)})),Lb=()=>(e,t)=>{const r=t();if(!Yb(r))return;const i=$b(r),n=Vb(r);e(Bb({audioId:n,videoId:i}))},Ab=_v("localMedia/reactSetDevice",(({audio:e,video:t},{getState:r,rejectWithValue:i})=>Kv(void 0,void 0,void 0,(function*(){try{const i=r(),n=Yb(i);if(!n)throw new Error("No stream");const s=!!e&&Vb(i),o=!!t&&$b(i),a=ey(i),{replacedTracks:c}=yield Oh(Object.assign(Object.assign({},a),{audioId:s,videoId:o,type:"exact"}),{replaceStream:n}),d=Hb(i);n.getAudioTracks().forEach((e=>e.enabled=d));const l=qb(i);return n.getVideoTracks().forEach((e=>e.enabled=l)),{replacedTracks:c}}catch(e){return i(e)}})))),Nb=_v("localMedia/doUpdateDeviceList",((e,{getState:t,dispatch:r,rejectWithValue:i})=>Kv(void 0,void 0,void 0,(function*(){var e,n,s,o;const a=t();let c=[],d=[];const l=Yb(a);try{c=yield navigator.mediaDevices.enumerateDevices(),d=Kb(a);if(!(l&&!Xb(a)&&c&&d&&d.find((e=>e.deviceId))))return{devices:c};const{changedDevices:t,addedDevices:i}=Eh({oldDevices:d,newDevices:c});let p=null===(e=t.audioinput)||void 0===e?void 0:e.deviceId,u=null===(n=t.videoinput)||void 0===n?void 0:n.deviceId;return void 0===p&&(p=null===(s=i.audioinput)||void 0===s?void 0:s.deviceId),void 0===u&&(u=null===(o=i.videoinput)||void 0===o?void 0:o.deviceId),void 0===p&&void 0===u||r(Bb({audioId:p,videoId:u})),{devices:c}}catch(e){return i(e)}})))),Bb=_v("localMedia/doSwitchLocalStream",(({audioId:e,videoId:t},{dispatch:r,getState:i,rejectWithValue:n})=>Kv(void 0,void 0,void 0,(function*(){const s=i(),o=Yb(s),a=ey(s),c=!(!t||e)||!(t||!e);if(o)try{const{replacedTracks:i}=yield Oh(Object.assign(Object.assign({},a),{audioId:void 0!==e&&e,videoId:void 0!==t&&t,type:"exact"}),{replaceStream:o}),n=e||t;return c&&n&&r(Sb({deviceId:n})),{replacedTracks:i}}catch(i){console.error(i);const s=e||t;return c&&s&&r(Sb({deviceId:s})),n(i)}})))),Fb=_v("localMedia/doStartLocalMedia",((e,{getState:t,dispatch:r,rejectWithValue:i})=>Kv(void 0,void 0,void 0,(function*(){const n=_b((()=>{r(Nb())}),{delay:500});if(navigator.mediaDevices&&navigator.mediaDevices.addEventListener("devicechange",n),"getTracks"in e)return Promise.resolve({stream:e,onDeviceChange:n});if(!e.audio&&!e.video)return{stream:new MediaStream,onDeviceChange:n};r(Eb({options:e}));try{yield r(Nb());const i=t(),s=ey(i),{stream:o}=yield Oh(Object.assign(Object.assign({},s),{audioId:e.audio,videoId:e.video}));return{stream:o,onDeviceChange:n}}catch(e){return i(e)}})))),zb=()=>(e,t)=>{const r=Yb(t()),i=Qb(t()).onDeviceChange;null==r||r.getTracks().forEach((e=>{e.stop()})),navigator.mediaDevices&&i&&navigator.mediaDevices.removeEventListener("devicechange",i),e(Ib())},Ub=e=>e.localMedia.busyDeviceIds,$b=e=>e.localMedia.currentCameraDeviceId,Vb=e=>e.localMedia.currentMicrophoneDeviceId,Gb=e=>e.localMedia.currentSpeakerDeviceId,qb=e=>e.localMedia.cameraEnabled,Hb=e=>e.localMedia.microphoneEnabled,Wb=e=>e.localMedia.lowDataMode,Kb=e=>e.localMedia.devices,Jb=e=>e.localMedia.options;We(Jb,(e=>!!e));const Qb=e=>e.localMedia,Zb=e=>e.localMedia.status,Yb=e=>e.localMedia.stream,Xb=e=>e.localMedia.isSwitchingStream,ey=We(Kb,$b,Vb,Wb,((e,t,r,i)=>({devices:e,videoId:t,audioId:r,options:{disableAEC:!1,disableAGC:!1,hd:!0,lax:!1,lowDataMode:i,simulcast:!0,widescreen:!0}}))),ty=We(Zb,(e=>"starting"===e)),ry=We(Kb,Ub,((e,t)=>e.filter((e=>"videoinput"===e.kind)).filter((e=>!t.includes(e.deviceId))))),iy=We(Kb,Ub,((e,t)=>e.filter((e=>"audioinput"===e.kind)).filter((e=>!t.includes(e.deviceId))))),ny=We(Kb,(e=>e.filter((e=>"audiooutput"===e.kind))));Rv([We(Ov,Zb,Jb,Mv,((e,t,r,i)=>{if(e&&["inactive","stopped"].includes(t)&&!i&&r)return r}))],(({dispatch:e},t)=>{t&&e(Fb(t))}));Rv([We(Ov,Zb,Jb,((e,t,r)=>!e&&"inactive"!==t&&!!r))],(({dispatch:e},t)=>{t&&e(zb())})),Cv({predicate:(e,t,r)=>{const i=Hb(r),n=Hb(t);return"started"===Zb(r)&&i!==n},effect:(e,{dispatch:t})=>{t(jb())}}),Cv({predicate:(e,t,r)=>{const i=Wb(r),n=Wb(t);return"started"===Zb(r)&&i!==n},effect:(e,{dispatch:t})=>{t(Lb())}}),Cv({predicate:(e,t,r)=>{if(t.localMedia.isTogglingCamera)return!1;const i=qb(r),n=qb(t);return"started"===Zb(r)&&i!==n},effect:(e,{dispatch:t})=>{t(Mb())}}),Cv({predicate:(e,t,r)=>{const i=$b(r),n=$b(t);return"started"===Zb(r)&&i!==n},effect:(e,{dispatch:t})=>{t(Ab({audio:!1,video:!0}))}}),Cv({predicate:(e,t,r)=>{const i=Vb(r),n=Vb(t);return"started"===Zb(r)&&i!==n},effect:(e,{dispatch:t})=>{t(Ab({audio:!0,video:!1}))}}),Cv({matcher:St(Fb.fulfilled,Nb.fulfilled,Bb.fulfilled,Bb.rejected),effect:(e,{dispatch:t,getState:r})=>{const i=r(),n=Yb(i),s=Kb(i);if(!n)return;const o=function({audioTrack:e,videoTrack:t,devices:r,stoppedVideoTrack:i,lastAudioId:n,lastVideoId:s}){const o=e=>"live"===(null==e?void 0:e.readyState)?e:null;return t=o(t)||i,e=o(e),{video:Ph("videoinput",t,r,s),audio:Ph("audioinput",e,r,n)}}({audioTrack:n.getAudioTracks()[0],videoTrack:n.getVideoTracks()[0],devices:s});t(xb(o))}}),Cv({actionCreator:Lv.audioEnableRequested,effect:({payload:e},{dispatch:t})=>{const{enable:r}=e;r||t(kb({enabled:!1}))}});const sy=Mt({name:"localParticipant",initialState:{displayName:"",id:"",isAudioEnabled:!0,isVideoEnabled:!0,isLocalParticipant:!0,stream:void 0,isScreenSharing:!1,roleName:"none",clientClaim:void 0,stickyReaction:void 0},reducers:{doSetDisplayName:(e,t)=>Object.assign(Object.assign({},e),{displayName:t.payload.displayName})},extraReducers:e=>{e.addCase(kv,((e,t)=>Object.assign(Object.assign({},e),{displayName:t.payload.displayName}))),e.addCase(ay.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isAudioEnabled:t.payload}))),e.addCase(cy.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isVideoEnabled:t.payload}))),e.addCase(dy.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{stickyReaction:t.payload}))),e.addCase(Lv.roomJoined,((e,t)=>{var r,i;const n=null===(i=null===(r=t.payload)||void 0===r?void 0:r.room)||void 0===i?void 0:i.clients.find((e=>{var r;return e.id===(null===(r=t.payload)||void 0===r?void 0:r.selfId)}));return Object.assign(Object.assign({},e),{id:t.payload.selfId,roleName:(null==n?void 0:n.role.roleName)||"none",clientClaim:t.payload.clientClaim})}))}}),{doSetDisplayName:oy}=sy.actions,ay=_v("localParticipant/doEnableAudio",((e,{dispatch:t,getState:r})=>Kv(void 0,void 0,void 0,(function*(){const i=r(),n=cb(i).socket;return null==n||n.emit("enable_audio",{enabled:e.enabled}),e.enabled&&t(dy({enabled:!1})),e.enabled})))),cy=_v("localParticipant/doEnableVideo",((e,{getState:t})=>Kv(void 0,void 0,void 0,(function*(){const r=t(),i=cb(r).socket;return null==i||i.emit("enable_video",{enabled:e.enabled}),e.enabled})))),dy=_v("localParticipant/doSetLocalStickyReaction",((e,{getState:t,rejectWithValue:r})=>Kv(void 0,void 0,void 0,(function*(){var i;const n=t(),s=my(n),o=Boolean(s),a=null!==(i=e.enabled)&&void 0!==i?i:!o;if(a===o)return r(s);return a?{reaction:"✋",timestamp:(new Date).toISOString()}:null})))),ly=()=>(e,t)=>{const r=t(),i=cb(r).socket,n={displayName:hy(r),stickyReaction:my(r)};null==i||i.emit("send_client_metadata",{type:"UserData",payload:n})},py=e=>e.localParticipant,uy=e=>e.localParticipant.id,hy=e=>e.localParticipant.displayName,my=e=>e.localParticipant.stickyReaction,fy=We(py,Yb,((e,t)=>({id:e.id,clientId:e.id,displayName:e.displayName,stream:t,isLocalClient:!0,isAudioEnabled:e.isAudioEnabled,isVideoEnabled:e.isVideoEnabled})));Cv({actionCreator:Pb,effect:({payload:e},{dispatch:t,getState:r})=>{const{enabled:i}=e,{isVideoEnabled:n}=py(r());t(cy({enabled:i||!n}))}}),Cv({actionCreator:kb,effect:({payload:e},{dispatch:t,getState:r})=>{const{enabled:i}=e,{isAudioEnabled:n}=py(r());t(ay({enabled:i||!n}))}}),Rv([hy,my],(({dispatch:e})=>{e(ly())}));const gy=Mt({name:"localScreenshare",initialState:{status:"inactive",stream:null,error:null},reducers:{stopScreenshare:(e,t)=>Object.assign(Object.assign({},e),{status:"inactive",stream:null})},extraReducers:e=>{e.addCase(by.pending,(e=>Object.assign(Object.assign({},e),{status:"starting"}))),e.addCase(by.fulfilled,((e,{payload:{stream:t}})=>Object.assign(Object.assign({},e),{status:"active",stream:t}))),e.addCase(by.rejected,((e,{payload:t})=>Object.assign(Object.assign({},e),{error:t,status:"inactive",stream:null})))}}),{stopScreenshare:vy}=gy.actions,by=_v("localScreenshare/doStartScreenshare",((e,{dispatch:t,getState:r,rejectWithValue:i})=>Kv(void 0,void 0,void 0,(function*(){var e;try{const i=r(),n=_y(i);if(n)return{stream:n};const s=yield navigator.mediaDevices.getDisplayMedia(),o=()=>{t(yy())};return"oninactive"in s?s.addEventListener("inactive",o):null===(e=s.getVideoTracks()[0])||void 0===e||e.addEventListener("ended",o),{stream:s}}catch(e){return i(e)}})))),yy=()=>(e,t)=>{const r=t(),i=_y(r);i&&(i.getTracks().forEach((e=>e.stop())),e(vy({stream:i})))},_y=e=>e.localScreenshare.stream;function wy(e){return et(`rtcConnection/event/${e}`)}Cv({actionCreator:Ib,effect:(e,{getState:t})=>{const r=t(),i=_y(r);i&&(null==i||i.getTracks().forEach((e=>{e.stop()})))}});const Sy={rtcManagerCreated:wy("rtcManagerCreated"),rtcManagerDestroyed:wy("rtcManagerDestroyed"),streamAdded:wy("streamAdded")},Cy=["recorder","streamer"];function Ry(e,t=!1){const{streams:r,role:i}=e,n=Wv(e,["streams","role"]);return Object.assign(Object.assign({},n),{stream:null,streams:r.map((e=>({id:e,state:t?"new_accept":"to_accept"}))),isLocalParticipant:!1,roleName:(null==i?void 0:i.roleName)||"none",presentationStream:null,newJoiner:t})}function Ty(e,t){const r=e.remoteParticipants.findIndex((e=>e.id===t));return{index:r,participant:e.remoteParticipants[r]}}function Py(e,t,r){const{participant:i,index:n}=Ty(e,t);return i?Object.assign(Object.assign({},e),{remoteParticipants:[...e.remoteParticipants.slice(0,n),Object.assign(Object.assign({},i),r),...e.remoteParticipants.slice(n+1)]}):(console.error(`Did not find client for update ${t}`),e)}function ky(e,t,r,i){const{participant:n}=Ty(e,t);if(!n)return console.error(`No client ${t} found to update stream ${r} ${i}`),e;const s=n.streams.findIndex((e=>e.id===r)),o=[...n.streams];return o[s]=Object.assign(Object.assign({},o[s]),{state:i}),Py(e,t,{streams:o})}function Oy(e,t,r){const{participant:i}=Ty(e,t);return!i||i.streams.find((e=>e.id===r))?(console.warn(`No participant ${t} or stream ${r} already exists`),e):Py(e,t,{streams:[...i.streams,{id:r,state:"to_accept"}]})}const Ey=Mt({name:"remoteParticipants",initialState:{remoteParticipants:[]},reducers:{streamStatusUpdated:(e,t)=>{let r=e;for(const{clientId:e,streamId:i,state:n}of t.payload)r=ky(r,e,i,n);return r},participantStreamAdded:(e,t)=>{const{clientId:r,stream:i}=t.payload;return Py(e,r,{stream:i})},participantStreamIdAdded:(e,t)=>{const{clientId:r,streamId:i}=t.payload;return Oy(e,r,i)}},extraReducers:e=>{e.addCase(Lv.roomJoined,((e,t)=>{var r;if(!(null===(r=t.payload)||void 0===r?void 0:r.room))return e;const i=t.payload.selfId,{clients:n}=t.payload.room;return Object.assign(Object.assign({},e),{remoteParticipants:n.filter((e=>e.id!==i)).filter((e=>!Cy.includes(e.role.roleName))).map((e=>Ry(e)))})})),e.addCase(Sy.streamAdded,((e,t)=>function(e,t){const{clientId:r,stream:i,streamType:n}=t;let{streamId:s}=t;const{participant:o}=Ty(e,r);if(!o)return console.error(`Did not find client ${r} for adding stream`),e;const a=e.remoteParticipants;s||(s=i.id);const c=a.find((e=>e.id===r));if(!c)return e;const d=c.streams.find((e=>e.id===s));return c.stream&&(c.stream.id===s||c.stream.inboundId===s)||!c.stream&&"webcam"===n||!c.stream&&!n&&!d?Py(e,r,{stream:i}):Py(e,r,{presentationStream:i})}(e,t.payload))),e.addCase(Lv.newClient,((e,t)=>{const{client:r}=t.payload;return Cy.includes(r.role.roleName)?e:function(e,t){const{participant:r}=Ty(e,t.id);return r?(console.warn(`Client already existing ${t.id}. Ignoring`),e):Object.assign(Object.assign({},e),{remoteParticipants:[...e.remoteParticipants,t]})}(e,Ry(r,!0))})),e.addCase(Lv.clientLeft,((e,t)=>{const{clientId:r}=t.payload;return function(e,t){return Object.assign(Object.assign({},e),{remoteParticipants:e.remoteParticipants.filter((e=>e.id!==t))})}(e,r)})),e.addCase(Lv.audioEnabled,((e,t)=>{const{clientId:r,isAudioEnabled:i}=t.payload;return Py(e,r,{isAudioEnabled:i})})),e.addCase(Lv.videoEnabled,((e,t)=>{const{clientId:r,isVideoEnabled:i}=t.payload;return Py(e,r,{isVideoEnabled:i})})),e.addCase(Lv.clientMetadataReceived,((e,t)=>{const{error:r,payload:i}=t.payload;if(r||!i)return console.warn(r||"Client metadata error received"),e;const{clientId:n,displayName:s,stickyReaction:o}=i;return Py(e,n,{displayName:s,stickyReaction:o})})),e.addCase(Lv.screenshareStarted,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return Oy(e,r,i)})),e.addCase(Lv.screenshareStopped,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return function(e,t,r){var i,n;const{participant:s}=Ty(e,t);if(!s)return console.error(`No participant ${t} found to remove stream ${r}`),e;const o=s.stream&&s.stream.id,a=(null===(i=s.presentationStream)||void 0===i?void 0:i.inboundId)||(null===(n=s.presentationStream)||void 0===n?void 0:n.id),c=s.streams.findIndex((e=>e.id===r));return Py(e,t,Object.assign(Object.assign({streams:s.streams.filter(((e,t)=>t!==c))},o===r&&{stream:null}),a===r&&{presentationStream:null}))}(e,r,i)}))}}),{participantStreamAdded:Dy,participantStreamIdAdded:Iy,streamStatusUpdated:xy}=Ey.actions,My=wv((e=>$v(e)),(e=>(t,r)=>{const i=r(),n=qv(i);if(e.enable&&!n)return void console.warn("Not authorized to perform this action");const s=cb(i).socket;null==s||s.emit("request_audio_enable",e)})),jy=e=>e.remoteParticipants.remoteParticipants,Ly=We(jy,(e=>e.filter((e=>!Cy.includes(e.roleName))).length+1)),Ay=Mt({initialState:{data:null,isFetching:!1,error:null},name:"organization",reducers:{},extraReducers:e=>{e.addCase(Ny.pending,(e=>Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(Ny.fulfilled,((e,t)=>t.payload?Object.assign(Object.assign({},e),{isFetching:!1,data:t.payload}):Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(Ny.rejected,(e=>Object.assign(Object.assign({},e),{isFetching:!1,error:!0})))}}),Ny=_v("organization/doOrganizationFetch",((e,{extra:t,getState:r})=>Kv(void 0,void 0,void 0,(function*(){try{const e=r().app.roomUrl,i=yield t.services.fetchOrganizationFromRoomUrl(e||"");if(!i)throw new Error("Invalid room url");return i}catch(e){console.error(e)}})))),By=e=>{var t;return null===(t=e.organization.data)||void 0===t?void 0:t.organizationId};Rv([We(Ov,(e=>e.organization),Zv,((e,t,r)=>!(!e||t.data||t.isFetching||t.error||r.isFetching)))],(({dispatch:e},t)=>{t&&e(Ny())}));const Fy=Mt({initialState:{session:null,status:"ready",error:null},name:"roomConnection",reducers:{connectionStatusChanged:(e,t)=>Object.assign(Object.assign({},e),{status:t.payload})},extraReducers:e=>{e.addCase(Lv.roomJoined,((e,t)=>{var r,i;const{error:n,isLocked:s}=t.payload;return"room_locked"===n&&s?Object.assign(Object.assign({},e),{status:"room_locked"}):n?Object.assign(Object.assign({},e),{status:"disconnected",error:n}):Object.assign(Object.assign({},e),{status:"connected",session:null!==(i=null===(r=t.payload.room)||void 0===r?void 0:r.session)&&void 0!==i?i:null})})),e.addCase(Lv.disconnect,(e=>["kicked","left"].includes(e.status)?Object.assign({},e):Object.assign(Object.assign({},e),{status:"disconnected"}))),e.addCase(Lv.newClient,((e,t)=>{var r,i;return Object.assign(Object.assign({},e),{session:null!==(i=null===(r=t.payload.room)||void 0===r?void 0:r.session)&&void 0!==i?i:null})})),e.addCase(Lv.roomSessionEnded,((e,t)=>{var r;return(null===(r=e.session)||void 0===r?void 0:r.id)!==t.payload.roomSessionId?e:Object.assign(Object.assign({},e),{session:null})})),e.addCase(Lv.clientKicked,(e=>Object.assign(Object.assign({},e),{status:"kicked"}))),e.addCase(Lv.roomLeft,(e=>Object.assign(Object.assign({},e),{status:"left"}))),e.addCase(nb,(e=>Object.assign(Object.assign({},e),{status:"reconnecting"})))}}),{connectionStatusChanged:zy}=Fy.actions,Uy=()=>(e,t)=>{const r=t(),i=cb(r).socket,n=Ev(r),s=Fv(r),o=Dv(r),a=Iv(r),c=xv(r),d=By(r);null==i||i.emit("knock_room",{avatarUrl:null,config:{isAudioEnabled:!0,isVideoEnabled:!0},deviceCapabilities:{canScreenshare:!0},displayName:o,isCoLocated:!1,isDevicePermissionDenied:!1,kickFromOtherRooms:!1,organizationId:d,roomKey:s,roomName:n,userAgent:a,externalId:c}),e(zy("knocking"))},$y=()=>(e,t)=>{const r=t(),i=cb(r).socket,n=Ev(r),s=Fv(r),o=Dv(r),a=Iv(r),c=xv(r),d=By(r),l=qb(t()),p=Hb(t()),u=(e=>e.localParticipant.clientClaim)(t());null==i||i.emit("join_room",Object.assign({avatarUrl:null,config:{isAudioEnabled:p,isVideoEnabled:l},deviceCapabilities:{canScreenshare:!0},displayName:o,isCoLocated:!1,isDevicePermissionDenied:!1,kickFromOtherRooms:!1,organizationId:d,roomKey:s,roomName:n,userAgent:a,externalId:c},u&&{clientClaim:u})),e(zy("connecting"))},Vy=e=>e.roomConnection.status;Rv([We([Ov,By,Vy,db,Zb,Mv],((e,t,r,i,n,s)=>!!(e&&("started"===n||s)&&i&&t&&["ready","reconnecting","disconnected"].includes(r))))],(({dispatch:e},t)=>{t&&e($y())})),Cv({actionCreator:Lv.knockHandled,effect:({payload:e},{dispatch:t,getState:r})=>{const{clientId:i,resolution:n}=e,s=r();i===uy(s)&&("accepted"===n?(t(Bv(e.metadata.roomKey)),t($y())):"rejected"===n&&t(zy("knock_rejected")))}}),Cv({actionCreator:Pv,effect:(e,{dispatch:t,getState:r})=>{const i=r();if("connected"===Vy(i)){const e=cb(i).socket;null==e||e.emit("leave_room"),t(zy("leaving"))}else ab()}});function Gy(e){return Object.assign(Object.assign({},e),{timestamp:Date.now()})}const qy=Mt({name:"notifications",initialState:{emitter:new ur,events:[]},reducers:{addNotification:(e,t)=>Object.assign(Object.assign({},e),{events:[...e.events,Object.assign({},t.payload)]}),doClearNotifications:e=>Object.assign(Object.assign({},e),{events:[]})}});qy.actions;const Hy=e=>(t,r)=>{t(qy.actions.addNotification(e));const i=r(),n=Wy(i);n.emit(e.type,e),n.emit("*",e)},Wy=e=>e.notifications.emitter;function Ky(e){return"recorder"===e.roleName}Cv({actionCreator:Lv.chatMessage,effect:({payload:e},{dispatch:t,getState:r})=>{const i=r(),n=jy(i).find((({id:t})=>t===e.senderId));n?t(Hy(Gy({type:"chatMessageReceived",message:`${n.displayName} says: ${e.text}`,props:{client:n,chatMessage:{senderId:e.senderId,timestamp:e.timestamp,text:e.text}}}))):console.warn("Could not find remote client that sent chat message")}}),Cv({actionCreator:Lv.audioEnableRequested,effect:({payload:e},{dispatch:t,getState:r})=>{const{enable:i,requestedByClientId:n}=e,s=r(),o=jy(s).find((({id:e})=>e===n));o?t(Hy(Gy({type:i?"requestAudioEnable":"requestAudioDisable",message:i?`${o.displayName} has requested for you to speak`:`${o.displayName} has muted your microphone`,props:{client:o,enable:i}}))):console.warn("Could not find remote client that requested a local audio change")}}),Cv({actionCreator:Lv.clientMetadataReceived,effect:(e,{dispatch:t,getOriginalState:r,getState:i})=>{var n;const{error:s,payload:o}=e.payload;if(s||!o)return;const{clientId:a,stickyReaction:c}=o,d=i();if(!qv(d))return;const l=jy(d).find((({id:e})=>e===a));if(!l)return void console.warn("Could not find remote client that provided updated metadata");const p=r(),u=jy(p).find((({id:e})=>e===a));(c||(null==u?void 0:u.stickyReaction))&&(null==c?void 0:c.timestamp)!==(null===(n=null==u?void 0:u.stickyReaction)||void 0===n?void 0:n.timestamp)&&t(Hy(Gy({type:c?"remoteHandRaised":"remoteHandLowered",message:`${l.displayName} ${c?"raised":"lowered"} their hand`,props:{client:l,stickyReaction:c}})))}}),Rv([lb],(({dispatch:e,getState:t},r)=>{const i=t(),n=Vy(i);["left","kicked"].includes(n)||("disconnected"===r?e(Hy(Gy({type:"signalTrouble",message:"Network connection lost. Trying to reconnect you...",props:{}}))):"connected"===r&&e(Hy(Gy({type:"signalOk",message:"Network connection available",props:{}}))))}));const Jy=Mt({name:"room",initialState:{isLocked:!1},reducers:{},extraReducers:e=>{e.addCase(Lv.roomJoined,((e,t)=>{const{error:r,isLocked:i}=t.payload;return r?e:Object.assign(Object.assign({},e),{isLocked:Boolean(i)})})),e.addCase(Lv.roomLocked,((e,t)=>{const{isLocked:r}=t.payload;return Object.assign(Object.assign({},e),{isLocked:Boolean(r)})}))}}),Qy=wv((e=>Uv(e)),(e=>(t,r)=>{const i=r(),{socket:n}=cb(i);null==n||n.emit("set_lock",{locked:e.locked})})),Zy=wv((e=>Vv(e)),(e=>(t,r)=>{const i=r(),{socket:n}=cb(i);null==n||n.emit("kick_client",{clientId:e.clientId,reasonId:"kick"})})),Yy=wv((e=>Gv(e)),(e=>(t,r)=>{const i=r(),n=jy(i).map((e=>e.id));if(n.length){const{socket:e}=cb(i);null==e||e.emit("kick_client",{clientIds:n,reasonId:"end-meeting"})}e.stayBehind||t(Pv())})),Xy=We(_y,jy,((e,t)=>{const r=[];e&&r.push({id:e.id||"local-screenshare",participantId:"local",hasAudioTrack:e.getTracks().some((e=>"audio"===e.kind)),stream:e,isLocal:!0});for(const e of t)e.presentationStream&&r.push({id:e.presentationStream.id||`pres-${e.id}`,participantId:e.id,hasAudioTrack:e.presentationStream.getTracks().some((e=>"audio"===e.kind)),stream:e.presentationStream,isLocal:!1});return r})),e_=We(_y,py,jy,((e,t,r)=>{const i=[];if(e){const r=!!e.getAudioTracks().length;i.push({clientId:t.id,displayName:"Your screenshare",id:"local-screenshare",isAudioEnabled:r,isLocalClient:!0,isPresentation:!0,isVideoEnabled:!0,stream:e})}for(const e of r){if("streamer"===e.roleName||Ky(e))continue;const{presentationStream:t}=e,r=Wv(e,["presentationStream"]),n=e.displayName||"Guest",s=t&&t.active,o="pres-"+e.id,a=e.stream&&e.stream.active,c=e.isVideoEnabled;i.push(Object.assign(Object.assign(Object.assign({},r),{clientId:e.id,displayName:n,hasActivePresentation:!!s}),e.isVideoEnabled?{isVideoEnabled:c}:{})),s&&i.push(Object.assign(Object.assign(Object.assign({},r),{clientId:e.id,stream:e.presentationStream,displayName:`Screenshare (${n})`,id:o,isPresentation:!0,isVideoEnabled:!0}),a&&{isRecording:null}))}return i})),t_=We(fy,e_,((e,t)=>[e,...t])),r_=e=>({emit:(t,r)=>{"rtc_manager_created"===t?e(g_(r)):"stream_added"===t?e(Sy.streamAdded(r)):"rtc_manager_destroyed"===t&&e(d_())}}),i_={dispatcherCreated:!1,error:null,isCreatingDispatcher:!1,reportedStreamResolutions:{},rtcManager:null,rtcManagerDispatcher:null,rtcManagerInitialized:!1,status:"inactive",isAcceptingStreams:!1},n_=Mt({name:"rtcConnection",initialState:i_,reducers:{isAcceptingStreams:(e,t)=>Object.assign(Object.assign({},e),{isAcceptingStreams:t.payload}),resolutionReported:(e,t)=>{const{streamId:r,width:i,height:n}=t.payload;return Object.assign(Object.assign({},e),{reportedStreamResolutions:Object.assign(Object.assign({},e.reportedStreamResolutions),{[r]:{width:i,height:n}})})},rtcDisconnected:()=>Object.assign({},i_),rtcDispatcherCreated:(e,t)=>Object.assign(Object.assign({},e),{dispatcherCreated:!0,rtcManagerDispatcher:t.payload}),rtcManagerCreated:(e,t)=>Object.assign(Object.assign({},e),{rtcManager:t.payload,status:"ready"}),rtcManagerDestroyed:e=>Object.assign(Object.assign({},e),{rtcManager:null}),rtcManagerInitialized:e=>Object.assign(Object.assign({},e),{rtcManagerInitialized:!0})},extraReducers:e=>{e.addCase(nb,(e=>Object.assign(Object.assign({},e),{status:"reconnecting"}))),e.addCase(Lv.roomJoined,(e=>Object.assign(Object.assign({},e),{status:"reconnecting"===e.status?"ready":e.status})))}}),{resolutionReported:s_,rtcDispatcherCreated:o_,rtcDisconnected:a_,rtcManagerCreated:c_,rtcManagerDestroyed:d_,rtcManagerInitialized:l_,isAcceptingStreams:p_}=n_.actions,u_=()=>(e,t)=>{const r=t(),i=cb(r).socket,n=b_(r).rtcManagerDispatcher,s=qb(r),o=Hb(r),a=Mv(r);if(n||!i)return;const c={getMediaConstraints:()=>({audio:o,video:s}),deferrable:e=>!e},d=new _f({emitter:r_(e),serverSocket:i,webrtcProvider:c,features:{lowDataModeEnabled:!1,sfuServerOverrideHost:void 0,turnServerOverrideHost:void 0,useOnlyTURN:void 0,vp9On:!1,h264On:!1,simulcastScreenshareOn:!1,deviceHandlerFactory:a?ds.createFactory():void 0}});e(o_(d))},h_=()=>(e,t)=>{const{rtcManager:r}=b_(t());r&&r.disconnectAll(),e(a_())},m_=e=>(t,r)=>{var i;t(p_(!0));const n=r(),s=b_(n).rtcManager,o=jy(n);if(!s)throw new Error("No rtc manager");const a=null===(i=s.shouldAcceptStreamsFromBothSides)||void 0===i?void 0:i.call(s),c=[];for(const{clientId:t,streamId:r,state:i}of e){if(o.find((e=>e.id===t))){if("to_accept"===i||"new_accept"===i&&a||"old_accept"===i&&!a)s.acceptNewStream({streamId:"0"===r?t:r,clientId:t,shouldAddLocalVideo:"0"===r,activeBreakout:false});else if("new_accept"===i||"old_accept"===i);else if("to_unaccept"===i)null==s||s.disconnect("0"===r?t:r,false);else if("done_accept"!==i)continue;c.push({clientId:t,streamId:r,state:i.replace(/to_|new_|old_/,"done_")})}}t(xy(c)),t(p_(!1))},f_=({streamId:e,width:t,height:r})=>(i,n)=>{const{reportedStreamResolutions:s,rtcManager:o}=b_(n()),a=Yb(n());if(!o||(null==a?void 0:a.id)===e)return;const c=s[e];c&&c.width===t&&c.height===r||o.updateStreamResolution(e,null,{width:t||1,height:r||1}),i(s_({streamId:e,width:t,height:r}))},g_=e=>t=>{const{rtcManager:r}=e;t(c_(r))},v_=()=>(e,t)=>{const r=Yb(t()),i=b_(t()).rtcManager,n=qb(t()),s=Hb(t());r&&i&&i.addNewStream("0",r,!s,!n),e(l_())},b_=e=>e.rtcConnection,y_=e=>e.rtcConnection.rtcManagerInitialized,__=e=>e.rtcConnection.status;Cv({actionCreator:Ab.fulfilled,effect:({payload:e},{getState:t})=>{const{replacedTracks:r}=e,{rtcManager:i}=b_(t()),n=Yb(t());null==r||r.forEach((e=>{((e,t)=>{const r=null==n?void 0:n.getTracks().find((t=>t.kind===e));r&&(null==i||i.replaceTrack(t,r))})(e.kind,e)}))}}),Cv({actionCreator:by.fulfilled,effect:({payload:e},{getState:t})=>{const{stream:r}=e,{rtcManager:i}=b_(t());null==i||i.addNewStream(r.id,r,!1,!0)}}),Cv({actionCreator:vy,effect:({payload:e},{getState:t})=>{const{stream:r}=e,{rtcManager:i}=b_(t());null==i||i.removeStream(r.id,r,null)}}),Cv({actionCreator:Bb.fulfilled,effect:({payload:e},{getState:t})=>{var r;const i=Yb(t()),{rtcManager:n}=b_(t());if(i&&n){const t=(e,t)=>{const r=i.getTracks().find((t=>t.kind===e));return r&&n.replaceTrack(t,r)};null===(r=null==e?void 0:e.replacedTracks)||void 0===r||r.forEach((e=>{t(e.kind,e)}))}}});Rv([We((e=>e.rtcConnection.dispatcherCreated),(e=>e.rtcConnection.isCreatingDispatcher),pb,((e,t,r)=>!(e||t||!r)))],(({dispatch:e},t)=>{t&&e(u_())}));const w_=We((e=>e.rtcConnection.rtcManager),y_,Zb,((e,t,r)=>!("started"!==r||!e||t)));Rv([w_],(({dispatch:e},t)=>{t&&e(v_())}));Rv([We(__,Ov,((e,t)=>!t&&!["inactive","disconnected"].includes(e)))],(({dispatch:e},t)=>{t&&e(h_())}));const S_=We(__,jy,((e,t)=>{if("ready"!==e)return[];const r=[];for(const e of t){const{streams:t,id:i,newJoiner:n}=e;for(let e=0;e<t.length;e++){let s=t[e].id,o=t[e].state;(null==t?void 0:t.length)>1&&"0"===t[1].id&&(0===e?(s=t[1].id,o=t[1].state):1===e&&(s=t[0].id,o=t[0].state)),"done_accept"!==o&&r.push({clientId:i,streamId:s,state:(n&&"0"===s?"new":"to")+"_accept"})}}return r}));Rv([S_,e=>e.rtcConnection.isAcceptingStreams],(({dispatch:e},t,r)=>{0<t.length&&!r&&e(m_(t))}));const C_={audioEnabled:{actions:[ay.fulfilled],rtcEventName:"audioEnabled",getValue:e=>Hb(e),getOutput:e=>({enabled:e})},videoEnabled:{actions:[cy.fulfilled],rtcEventName:"videoEnabled",getValue:e=>qb(e),getOutput:e=>({enabled:e})},localStream:{actions:[Ab.fulfilled],rtcEventName:"localStream",getValue:e=>{var t;return null===(t=Yb(e))||void 0===t?void 0:t.getTracks().map((e=>({id:e.id,kind:e.kind,label:e.label})))},getOutput:e=>({stream:e})},localScreenshareStream:{actions:[by.fulfilled],rtcEventName:"localScreenshareStream",getValue:e=>{var t;return null===(t=_y(e))||void 0===t?void 0:t.getTracks().map((e=>({id:e.id,kind:e.kind,label:e.label})))},getOutput:e=>({tracks:e})},localScreenshareStreamStopped:{actions:[vy],rtcEventName:"localScreenshareStream",getValue:()=>()=>null,getOutput:()=>({})},displayName:{actions:[oy],rtcEventName:"displayName",getValue:e=>Dv(e),getOutput:e=>({displayName:e})},clientId:{actions:null,rtcEventName:"clientId",getValue:e=>uy(e),getOutput:e=>({clientId:e})},deviceId:{actions:null,rtcEventName:"deviceId",getValue:e=>(e=>{var t,r;return null===(r=null===(t=e.deviceCredentials.data)||void 0===t?void 0:t.credentials)||void 0===r?void 0:r.uuid})(e),getOutput:e=>({deviceId:e})},externalId:{actions:null,rtcEventName:"externalId",getValue:e=>xv(e),getOutput:e=>({externalId:e})},organizationId:{actions:null,rtcEventName:"organizationId",getValue:e=>By(e),getOutput:e=>({organizationId:e})},signalConnectionStatus:{actions:null,rtcEventName:"signalConnectionStatus",getValue:e=>lb(e),getOutput:e=>({status:e})},roomSessionId:{actions:[Lv.newClient,Lv.roomJoined,Lv.roomSessionEnded,Lv.clientLeft],rtcEventName:"roomSessionId",getValue:e=>(e=>{var t;return null===(t=e.roomConnection.session)||void 0===t?void 0:t.id})(e),getOutput:e=>({roomSessionId:e})},rtcConnectionStatus:{actions:null,rtcEventName:"rtcConnectionStatus",getValue:e=>__(e),getOutput:e=>({status:e})},userRole:{actions:null,rtcEventName:"userRole",getValue:e=>zv(e),getOutput:e=>({userRole:e})}},R_=Object.values(C_).flatMap((({actions:e})=>{var t;return null!==(t=null==e?void 0:e.map((e=>e)))&&void 0!==t?t:null})).filter((e=>null!==e)),T_=e=>"object"==typeof e?JSON.stringify(e):e,P_=Mt({initialState:{reportedValues:{}},name:"rtcAnalytics",reducers:{updateReportedValues:(e,t)=>Object.assign(Object.assign({},e),{reportedValues:Object.assign(Object.assign({},e.reportedValues),{[t.payload.rtcEventName]:t.payload.value})})}}),k_=()=>(e,t)=>{const r=t(),i=b_(r).rtcManager;i&&(i.sendStatsCustomEvent("insightsStats",{_time:Date.now(),ls:0,lr:0,bs:0,br:0,cpu:0}),Object.values(C_).forEach((({rtcEventName:t,getValue:n,getOutput:s})=>{var o;const a=n(r),c=Object.assign(Object.assign({},s(a)),{_time:Date.now()}),d=T_(a);(null===(o=r.rtcAnalytics.reportedValues)||void 0===o?void 0:o[t])!==d&&(i.sendStatsCustomEvent(t,c),e(O_({rtcEventName:t,value:a})))})))},{updateReportedValues:O_}=P_.actions;function E_({isPresentation:e,stream:t}){var r,i;return e?null!==(i=null!==(r=null==t?void 0:t.outboundId)&&void 0!==r?r:null==t?void 0:t.inboundId)&&void 0!==i?i:null==t?void 0:t.id:"0"}Cv({matcher:St(...R_),effect:({type:e},{getState:t,dispatch:r})=>{var i;const n=t(),s=b_(n).rtcManager;if(!s)return;const o=Object.values(C_).find((({actions:t})=>null==t?void 0:t.map((e=>e.type)).includes(e)));if(!o)return;const{getValue:a,getOutput:c,rtcEventName:d}=o,l=a(n),p=T_(l),u=Object.assign(Object.assign({},c(l)),{_time:Date.now()});(null===(i=n.rtcAnalytics.reportedValues)||void 0===i?void 0:i[d])!==p&&(s.sendStatsCustomEvent(d,u),r(O_({rtcEventName:d,value:l})))}}),Rv([y_],(({dispatch:e},t)=>{t&&e(k_())}));const D_=Mt({name:"spotlights",initialState:{sorted:[]},reducers:{},extraReducers:e=>{e.addCase(Lv.roomJoined,((e,t)=>{if(!t.payload.room)return e;const{spotlights:r}=t.payload.room;return Object.assign(Object.assign({},e),{sorted:r})})),e.addCase(Lv.spotlightAdded,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return Object.assign(Object.assign({},e),{sorted:(n=e.sorted,s={clientId:r,streamId:i},n.find((e=>e.clientId===s.clientId&&e.streamId===s.streamId))?n:n.concat(s))});var n,s})),e.addCase(Lv.spotlightRemoved,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return Object.assign(Object.assign({},e),{sorted:e.sorted.filter((e=>!(e.clientId===r&&e.streamId===i)))})})),e.addMatcher(St(Lv.clientKicked,Lv.clientLeft),((e,t)=>{const{clientId:r}=t.payload;return Object.assign(Object.assign({},e),{sorted:e.sorted.filter((e=>e.clientId!==r))})}))}}),I_=wv((e=>Hv(e)),(({id:e})=>(t,r)=>{const i=r(),n=t_(i).find((t=>t.clientId===e));if(!n)return;const{socket:s}=cb(i),o=E_(n),a={clientId:n.id,streamId:null!=o?o:"0"};null==s||s.emit("add_spotlight",a)})),x_=wv((e=>Hv(e)),(({id:e})=>(t,r)=>{const i=r(),n=t_(i).find((t=>t.clientId===e));if(!n)return;const{socket:s}=cb(i),o=E_(n),a={clientId:n.id,streamId:null!=o?o:"0"};null==s||s.emit("remove_spotlight",a)})),M_=e=>e.spotlights.sorted;We(py,M_,((e,t)=>function({spotlights:e,isPresentation:t,clientId:r,stream:i}){return!!e.find((e=>{const n=E_({isPresentation:t,stream:i});return e.clientId===r&&e.streamId===n}))}({clientId:e.id,stream:e.stream,spotlights:t})));const j_=We(t_,M_,((e,t)=>function(e,t){return e.reduce(((e,r)=>{const i=t.find((e=>r.clientId===e.clientId&&r.streamId===E_(e)));return i&&!e.includes(i)&&e.push(i),e}),[])}(t,e))),L_=Mt({name:"streaming",initialState:{isStreaming:!1,error:null,startedAt:void 0},reducers:{doHandleStreamingStarted:e=>Object.assign(Object.assign({},e),{isStreaming:!0,error:null,startedAt:(new Date).getTime()}),doHandleStreamingStopped:e=>Object.assign(Object.assign({},e),{isStreaming:!1})}});L_.actions;const A_=Mt({name:"waitingParticipants",initialState:{waitingParticipants:[]},reducers:{},extraReducers:e=>{e.addCase(Lv.roomJoined,((e,{payload:t})=>{var r;return(null===(r=t.room)||void 0===r?void 0:r.knockers.length)?Object.assign(Object.assign({},e),{waitingParticipants:t.room.knockers.map((e=>({id:e.clientId,displayName:e.displayName})))}):e})),e.addCase(Lv.roomKnocked,((e,t)=>{const{clientId:r,displayName:i}=t.payload;return Object.assign(Object.assign({},e),{waitingParticipants:[...e.waitingParticipants,{id:r,displayName:i}]})})),e.addCase(Lv.knockerLeft,((e,t)=>{const{clientId:r}=t.payload;return Object.assign(Object.assign({},e),{waitingParticipants:e.waitingParticipants.filter((e=>e.id!==r))})}))}}),N_=e=>(t,r)=>{const{participantId:i}=e,n=r(),s=pb(n);null==s||s.emit("handle_knock",{action:"accept",clientId:i,response:{}})},B_=e=>(t,r)=>{const{participantId:i}=e,n=r(),s=pb(n);null==s||s.emit("handle_knock",{action:"reject",clientId:i,response:{}})};const F_=null===!1&&!1,z_=U({app:Tv.reducer,authorization:Nv.reducer,chat:hb.reducer,cloudRecording:fb.reducer,deviceCredentials:Jv.reducer,localMedia:wb.reducer,localParticipant:sy.reducer,localScreenshare:gy.reducer,notifications:qy.reducer,organization:Ay.reducer,remoteParticipants:Ey.reducer,room:Jy.reducer,roomConnection:Fy.reducer,rtcAnalytics:P_.reducer,rtcConnection:n_.reducer,signalConnection:Yv.reducer,spotlights:D_.reducer,streaming:L_.reducer,waitingParticipants:A_.reducer}),U_=(e,t)=>{var r;if(kv.match(t)){const i={app:Object.assign(Object.assign({},Tv.getInitialState()),{initialConfig:null===(r=null==e?void 0:e.app)||void 0===r?void 0:r.initialConfig}),localMedia:Object.assign(Object.assign({},wb.getInitialState()),null==e?void 0:e.localMedia)};return z_(i,t)}return z_(e,t)};class $_{constructor(e={}){this.data=void 0===e.data?{}:e.data,this.headers=e.headers||{},this.status=e.status||200,this.statusText=e.statusText||"OK",this.url=e.url||null}}function V_(e,t){return Tf.ok(e,`${t} is required`),e}function G_(e,t){return Tf.ok("boolean"==typeof e,`${t}<boolean> is required`),e}function q_(e,t){return Tf.ok("number"==typeof e,`${t}<number> is required`),e}function H_(e,t){return Tf.ok("string"==typeof e,`${t}<string> is required`),e}function W_(e,t,r){const i=r||t.name[0].toLowerCase()+t.name.substring(1);return Tf.ok(e instanceof t,`${i}<${t.name}> is required`),e}function K_(e,t){return Tf.ok(Array.isArray(e),`${t}<array> is required`),e}function J_(e,t){if(null==e||"object"!=typeof e||Array.isArray(e))throw new Error(`${t} must be a record. ${JSON.stringify(e)}`);return e}function Q_(e,t,r){H_(t,"name"),function(e,t,r,i){H_(r,"name");const n=i||`${r} must be null or of type ${t}`;Tf.ok(null===e||typeof e===t,n)}(e,"string",t,r)}function Z_({baseUrl:e,url:t}){return e?e+t:t}class Y_{constructor({baseUrl:e}){H_(e,"baseUrl"),this._baseUrl=e}_requestAxios(e,t){const r=Object.assign({},t,{url:e,baseURL:this._baseUrl});return yv.request(r)}request(e,t){return H_(e,"url"),Tf.ok("/"===e[0],'url<String> only accepts relative URLs beginning with "/".'),Tf.ok(t,"options are required"),this._requestAxios(e,t).then((e=>{const{data:t,headers:r,status:i,statusText:n,config:s}=e,o=s&&s.url?Z_({baseUrl:s.baseURL,url:s.url}):null;return new $_({data:t,headers:r,status:i,statusText:n,url:o})})).catch((e=>{const t=e.response;if(!t)throw new Error("Could not make the request.");const{data:r,headers:i,status:n,statusText:s,config:o}=t,a=o&&o.url?Z_({baseUrl:o.baseURL,url:o.url}):null;return Promise.reject(new $_({data:r,headers:i,status:n,statusText:s,url:a}))}))}}class X_{constructor({httpClient:e}){Tf.ok(e,"httpClient is required"),this._httpClient=e}static dataToFormData(e){Tf.ok(e,"data is required");const t=new FormData;return Object.keys(e).forEach((r=>{const i=e[r];t.append(r,i)})),t}request(e,t={}){const r=Object.assign(t.headers||{},{"Content-Type":void 0});return this._httpClient.request(e,Object.assign(t,{headers:r,transformRequest:X_.dataToFormData}))}}let ew;ew="object"==typeof window?window.btoa||jf:"object"==typeof global&&global.btoa||jf;const tw=()=>Promise.resolve(null);class rw{constructor({httpClient:e,fetchDeviceCredentials:t}){this._httpClient=e,this._fetchDeviceCredentials=t}request(e,t){return this._fetchDeviceCredentials().then((r=>{const i=Object.assign({},t.headers,function(e){if(e&&e.credentials){const t=`${e.credentials.uuid}:${e.hmac}`;return{Authorization:`Basic ${ew(t)}`}}return{}}(r),{"X-Appearin-Device-Platform":"web"}),n=Object.assign({},t,{headers:i});return this._httpClient.request(e,n)}))}}class iw{constructor({baseUrl:e="https://api.appearin.net",fetchDeviceCredentials:t=tw}={}){this.authenticatedHttpClient=new rw({httpClient:new Y_({baseUrl:e}),fetchDeviceCredentials:t}),this.authenticatedFormDataHttpClient=new X_({httpClient:this.authenticatedHttpClient})}request(e,t){return H_(e,"url"),Tf.ok("/"===e[0],'url<String> only accepts relative URLs beginning with "/".'),Tf.ok(t,"options are required"),this.authenticatedHttpClient.request(e,t)}requestMultipart(e,t){return H_(e,"url"),Tf.ok("/"===e[0],'url<String> only accepts relative URLs beginning with "/".'),Tf.ok(t,"options are required"),this.authenticatedFormDataHttpClient.request(e,t)}}function nw(e,t){return H_(J_(e,"data")[t],t)}const sw=(ow=nw,(e,t)=>{const r=J_(e,"data")[t];return null==r?null:ow(e,t)});var ow;function aw(e,t,r){return function(e,t){return K_(J_(e,"data")[t],t)}(e,t).map((e=>r(e)))}class cw{constructor(e,t,r=void 0){this.credentials={uuid:e},this.hmac=t,this.userId=r}toJson(){return Object.assign({credentials:this.credentials,hmac:this.hmac},this.userId&&{userId:this.userId})}static fromJson(e){return new cw(nw(function(e,t){const r=J_(e,"data")[t];return void 0===r?null:r}(e,"credentials"),"uuid"),nw(e,"hmac"),sw(e,"userId")||void 0)}}class dw{constructor({apiClient:e}){this._apiClient=e}getCredentials(){return this._apiClient.request("/devices",{method:"post"}).then((({data:e})=>cw.fromJson(e))).catch((e=>{if(e.response&&404===e.response.status)return null;throw e}))}}class lw{constructor(e,t){this._key=e,this._chromeStorage=t}loadOrDefault(e){return new Promise((t=>{this._chromeStorage.get(this._key,(r=>{t(r[this._key]||e)}))}))}save(e){return new Promise((t=>{this._chromeStorage.set({[this._key]:e},(()=>{t()}))}))}}class pw{constructor(e,t){V_(t,"localStorage"),this._key=H_(e,"key"),this._localStorage=t}loadOrDefault(e){try{const t=this._localStorage.getItem(this._key);if(t)try{return Promise.resolve(JSON.parse(t))}catch(e){}return Promise.resolve(e)}catch(t){return console.warn("Error getting access to storage. Are cookies blocked?",t),Promise.resolve(e)}}save(e){try{return this._localStorage.setItem(this._key,JSON.stringify(e)),Promise.resolve()}catch(e){return console.warn("Error getting access to storage. Are cookies blocked?",e),Promise.reject(e)}}}let uw;try{uw=self.localStorage}catch(XS){uw={getItem:()=>{},key:()=>{},setItem:()=>{},removeItem:()=>{},hasOwnProperty:()=>{},length:0}}var hw=uw;const mw="credentials_saved";class fw extends ur{constructor({deviceService:e,credentialsStore:t}){super(),this._deviceService=e,this._credentialsStore=t}static create({baseUrl:e,storeName:t="CredentialsStorage",storeType:r="localStorage"}){const i=new dw({apiClient:new iw({baseUrl:e})});let n=null;if("localStorage"===r)n=new pw(t,hw);else{if("chromeStorage"!==r)throw new Error(`Unknown store type: ${r}`);n=new lw(t,window.chrome.storage.local)}return new fw({deviceService:i,credentialsStore:n})}_fetchNewCredentialsFromApi(){const e=this._credentialsStore;return new Promise((t=>{const r=()=>{this._deviceService.getCredentials().then((r=>e.save(r?r.toJson():null).then((()=>t(r))))).catch((()=>{setTimeout(r,2e3)}))};r()}))}getCurrentCredentials(){return this._credentialsStore.loadOrDefault(null).then((e=>e?cw.fromJson(e):null))}getCredentials(){return this.credentialsPromise||(this.credentialsPromise=this.getCurrentCredentials().then((e=>e||this._fetchNewCredentialsFromApi()))),this.credentialsPromise}saveCredentials(e){return this.credentialsPromise=void 0,this._credentialsStore.save(e.toJson()).then((()=>(this.emit(mw,e),e)))}setUserId(e){return this.getCurrentCredentials().then((t=>{t||console.error("Illegal state: no credentials to set user id for.");if(null===t||t.userId!==e)return this._credentialsStore.save(Object.assign({},null==t?void 0:t.toJson(),{userId:e}))})).then((()=>{}))}}class gw{constructor({isExhausted:e,renewsAt:t,totalMinutesLimit:r,totalMinutesUsed:i}){this.isExhausted=e,this.renewsAt=t,this.totalMinutesLimit=r,this.totalMinutesUsed=i}static fromJson(e){return new gw({isExhausted:G_(e.isExhausted,"isExhausted"),renewsAt:new Date(H_(e.renewsAt,"renewsAt")),totalMinutesLimit:q_(e.totalMinutesLimit,"totalMinutesLimit"),totalMinutesUsed:q_(e.totalMinutesUsed,"totalMinutesUsed")})}}class vw{constructor({basePlanId:e,embeddedFreeTierStatus:t,isDeactivated:r,isOnTrial:i,onTrialUntil:n,trialStatus:s}){this.basePlanId=e,this.isDeactivated=r,this.isOnTrial=i,this.onTrialUntil=n||null,this.trialStatus=s||null,this.embeddedFreeTierStatus=t||null}static fromJson(e){return new vw({basePlanId:"string"==typeof e.basePlanId?e.basePlanId:null,isDeactivated:G_(e.isDeactivated,"isDeactivated"),isOnTrial:G_(e.isOnTrial,"isOnTrial"),onTrialUntil:"string"==typeof e.onTrialUntil?new Date(e.onTrialUntil):null,trialStatus:"string"==typeof e.trialStatus?e.trialStatus:null,embeddedFreeTierStatus:e.embeddedFreeTierStatus?gw.fromJson(e.embeddedFreeTierStatus):null})}}function bw(e){return null!=e}function yw(e={}){return{maxNumberOfInvitationsAndUsers:bw(null==e?void 0:e.maxNumberOfInvitationsAndUsers)?Number(null==e?void 0:e.maxNumberOfInvitationsAndUsers):null,maxNumberOfClaimedRooms:bw(null==e?void 0:e.maxNumberOfClaimedRooms)?Number(null==e?void 0:e.maxNumberOfClaimedRooms):null,maxRoomLimitPerOrganization:bw(null==e?void 0:e.maxRoomLimitPerOrganization)?Number(null==e?void 0:e.maxRoomLimitPerOrganization):null,trialMinutesLimit:bw(null==e?void 0:e.trialMinutesLimit)?Number(null==e?void 0:e.trialMinutesLimit):null,includedUnits:bw(null==e?void 0:e.includedUnits)?Number(null==e?void 0:e.includedUnits):null}}class _w{constructor(e){this.logoImageUrl=null,this.roomBackgroundImageUrl=null,this.roomBackgroundThumbnailUrl=null,this.roomKnockPageBackgroundImageUrl=null,this.roomKnockPageBackgroundThumbnailUrl=null,this.preferences=null,this.onboardingSurvey=null,this.type=null,W_(e,Object,"properties"),H_(e.organizationId,"organizationId"),H_(e.organizationName,"organizationName"),H_(e.subdomain,"subdomain"),W_(e.permissions,Object,"permissions"),W_(e.limits,Object,"limits"),this.organizationId=e.organizationId,this.organizationName=e.organizationName,this.subdomain=e.subdomain,this.permissions=e.permissions,this.limits=e.limits,this.account=e.account?new vw(e.account):null,this.logoImageUrl=e.logoImageUrl,this.roomBackgroundImageUrl=e.roomBackgroundImageUrl,this.roomBackgroundThumbnailUrl=e.roomBackgroundThumbnailUrl,this.roomKnockPageBackgroundImageUrl=e.roomKnockPageBackgroundImageUrl,this.roomKnockPageBackgroundThumbnailUrl=e.roomKnockPageBackgroundThumbnailUrl,this.preferences=e.preferences,this.onboardingSurvey=e.onboardingSurvey,this.type=e.type}static fromJson(e){const t=W_(e,Object,"data"),r=(null==t?void 0:t.preferences)||{},i=(null==t?void 0:t.onboardingSurvey)||null,n=W_(t.permissions,Object,"permissions");return new _w({organizationId:H_(t.organizationId,"organizationId"),organizationName:H_(t.organizationName,"organizationName"),subdomain:H_(t.subdomain,"subdomain"),permissions:n,limits:yw(W_(t.limits,Object,"limits")),account:t.account?vw.fromJson(t.account):null,logoImageUrl:"string"==typeof t.logoImageUrl?t.logoImageUrl:null,roomBackgroundImageUrl:"string"==typeof t.roomBackgroundImageUrl?t.roomBackgroundImageUrl:null,roomBackgroundThumbnailUrl:"string"==typeof t.roomBackgroundThumbnailUrl?t.roomBackgroundThumbnailUrl:null,roomKnockPageBackgroundImageUrl:"string"==typeof t.roomKnockPageBackgroundImageUrl?t.roomKnockPageBackgroundImageUrl:null,roomKnockPageBackgroundThumbnailUrl:"string"==typeof t.roomKnockPageBackgroundThumbnailUrl?t.roomKnockPageBackgroundThumbnailUrl:null,preferences:r,onboardingSurvey:i,type:"string"==typeof t.type?t.type:null})}}_w.GLOBAL_ORGANIZATION_ID="1";class ww{constructor({apiClient:e}){this._apiClient=e}createOrganization({organizationName:e,subdomain:t,owner:r}){const{displayName:i,consents:n}=r||{},s="email"in r?{value:r.email,verificationCode:H_(r.verificationCode,"owner.verificationCode")}:null,o="idToken"in r?r.idToken:null;if(H_(t,"subdomain"),H_(e,"organizationName"),H_(i,"owner.displayName"),Tf.ok(s||o,"owner.email or owner.idToken is required"),n){K_(n,"consents");for(const{consentRevisionId:e,action:t}of n)H_(e,"consentRevisionId"),Q_(t,"action")}return this._apiClient.request("/organizations",{method:"POST",data:{organizationName:e,type:"private",subdomain:t,owner:Object.assign(Object.assign(Object.assign(Object.assign({},s&&{email:s}),o&&{idToken:o}),n&&{consents:n}),{displayName:i})}}).then((({data:e})=>nw(e,"organizationId")))}getOrganizationBySubdomain(e){return H_(e,"subdomain"),this._apiClient.request(`/organization-subdomains/${encodeURIComponent(e)}/?fields=permissions,account,onboardingSurvey`,{method:"GET"}).then((({data:e})=>_w.fromJson(e))).catch((e=>{if(e instanceof $_){if(404===e.status)return null;throw new Error(e.statusText)}throw e}))}getOrganizationByOrganizationId(e){return H_(e,"organizationId"),this._apiClient.request(`/organizations/${encodeURIComponent(e)}?fields=permissions,account`,{method:"GET"}).then((({data:e})=>_w.fromJson(e))).catch((e=>{if(e instanceof $_){if(404===e.status)return null;throw new Error(e.statusText)}throw e}))}getOrganizationsByContactPoint(e){const{code:t}=e,r="email"in e?e.email:null,i="phoneNumber"in e?e.phoneNumber:null;Tf.ok((r||i)&&!(r&&i),"either email or phoneNumber is required"),H_(t,"code");const n=r?{type:"email",value:r}:{type:"phoneNumber",value:i};return this._apiClient.request("/organization-queries",{method:"POST",data:{contactPoint:n,code:t}}).then((({data:e})=>aw(e,"organizations",(e=>_w.fromJson(e)))))}getOrganizationsByIdToken({idToken:e}){return H_(e,"idToken"),this._apiClient.request("/organization-queries",{method:"POST",data:{idToken:e}}).then((({data:e})=>aw(e,"organizations",(e=>_w.fromJson(Object.assign({permissions:{},limits:{}},J_(e,"organization")))))))}getOrganizationsByLoggedInUser(){return this._apiClient.request("/user/organizations",{method:"GET"}).then((({data:e})=>aw(e,"organizations",(e=>_w.fromJson(Object.assign({permissions:{},limits:{}},J_(e,"organization")))))))}getSubdomainAvailability(e){return H_(e,"subdomain"),this._apiClient.request(`/organization-subdomains/${encodeURIComponent(e)}/availability`,{method:"GET"}).then((({data:e})=>(W_(e,Object,"data"),{status:nw(e,"status")})))}updatePreferences({organizationId:e,preferences:t}){return V_(e,"organizationId"),V_(t,"preferences"),this._apiClient.request(`/organizations/${encodeURIComponent(e)}/preferences`,{method:"PATCH",data:t}).then((()=>{}))}deleteOrganization({organizationId:e}){return V_(e,"organizationId"),this._apiClient.request(`/organizations/${encodeURIComponent(e)}`,{method:"DELETE"}).then((()=>{}))}}class Sw{constructor({organizationService:e,subdomain:t}){this._organizationService=e,this._subdomain=t,this._organizationPromise=null}initOrganization(){return this.fetchOrganization().then((()=>{}))}fetchOrganization(){return this._organizationPromise||(this._organizationPromise=this._organizationService.getOrganizationBySubdomain(this._subdomain)),this._organizationPromise}}const Cw="https://api.whereby.dev";function Rw(e,t){var r={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(r[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(i=Object.getOwnPropertySymbols(e);n<i.length;n++)t.indexOf(i[n])<0&&Object.prototype.propertyIsEnumerable.call(e,i[n])&&(r[i[n]]=e[i[n]])}return r}"function"==typeof SuppressedError&&SuppressedError;const Tw=x.withTypes(),Pw=S.withTypes(),kw=n.forwardRef(((e,t)=>{var{muted:r,mirror:i=!1,stream:s,onVideoResize:o}=e,a=Rw(e,["muted","mirror","stream","onVideoResize"]);const c=Tw(),d=Pw(Gb),l=n.useRef(null),p=n.useRef(null);return n.useImperativeHandle(t,(()=>Object.assign(l.current,{captureAspectRatio:()=>{if(!l.current)return null;const e=l.current.clientHeight,t=l.current.clientWidth;return t&&e&&t+e>20?t/e:null}}))),n.useEffect((()=>{if(!l.current)return;const e=new ResizeObserver(_b((()=>{if(l.current&&(null==s?void 0:s.id)){const e=l.current.clientWidth,t=l.current.clientHeight;c(f_({streamId:s.id,width:e,height:t})),o&&o({width:e,height:t,stream:s})}}),{delay:1e3,edges:!0}));return e.observe(l.current),()=>{e.disconnect()}}),[s]),n.useEffect((()=>{l.current&&(l.current.srcObject!==s&&(l.current.srcObject=s),l.current.muted!==r&&(l.current.muted=Boolean(r)))}),[r,s,l]),n.useEffect((()=>{p.current&&!r&&s&&d&&(p.current.srcObject!==s&&(p.current.srcObject=s),p.current.setSinkId&&p.current.setSinkId(d))}),[s,p,d,r]),n.createElement(n.Fragment,null,n.createElement("video",Object.assign({ref:l,autoPlay:!0,playsInline:!0},a,{style:Object.assign({transform:i?"scaleX(-1)":"none",width:"100%",height:"100%"},a.style)})),n.createElement("audio",{ref:p,autoPlay:!0,playsInline:!0}))}));kw.displayName="VideoView";const Ow=We((e=>e.chat.chatMessages),(e=>e.cloudRecording),py,Yb,jy,Xy,Vy,(e=>e.streaming),(e=>e.waitingParticipants.waitingParticipants),Wy,j_,((e,t,r,i,n,s,o,a,c,d,l)=>({chatMessages:e,cloudRecording:t.isRecording?{status:"recording"}:void 0,connectionStatus:o,events:d,liveStream:a.isStreaming?{status:"streaming",startedAt:a.startedAt}:void 0,localScreenshareStatus:r.isScreenSharing?"active":void 0,localParticipant:Object.assign(Object.assign({},r),{stream:i}),remoteParticipants:n,screenshares:s,waitingParticipants:c,spotlightedParticipants:l}))),Ew={localMediaOptions:{audio:!0,video:!0}};const Dw=We((e=>e.localMedia.cameraDeviceError),ry,$b,Vb,Gb,(e=>e.localMedia.isSettingCameraDevice),(e=>e.localMedia.isSettingMicrophoneDevice),ty,Yb,(e=>e.localMedia.microphoneDeviceError),iy,ny,(e=>e.localMedia.startError),((e,t,r,i,n,s,o,a,c,d,l,p,u)=>({cameraDeviceError:e,cameraDevices:t,currentCameraDeviceId:r,currentMicrophoneDeviceId:i,currentSpeakerDeviceId:n,isSettingCameraDevice:s,isSettingMicrophoneDevice:o,isStarting:a,localStream:c,microphoneDeviceError:d,microphoneDevices:l,speakerDevices:p,startError:u})));var Iw={MIN_WINDOW_HEIGHT:320,MIN_WINDOW_WIDTH:320,DESKTOP_BREAKPOINT:1025,TABLET_BREAKPOINT:750,PHONE_BREAKPOINT:500,TOP_TOOLBAR_HEIGHT:56,BOTTOM_TOOLBAR_HEIGHT:82,SIDEBAR_WIDTH:375,VIDEO_CONTROLS_MIN_WIDTH:420,ROOM_FOOTER_MIN_WIDTH:600,FLOATING_VIDEO_CONTROLS_BOTTOM_MARGIN:20,WATERMARK_BAR_HEIGHT:32,BREAKOUT_STAGE_BACKDROP_HEADER_HEIGHT:28,BREAKOUT_STAGE_BACKDROP_FOOTER_HEIGHT:56,SUBGRID_EMPTY_STAGE_MAX_WIDTH:800,GROUPS_CELL_MARGIN:8,GROUPS_CELL_PADDING:12,GROUPS_CELL_NAV_HEIGHT:56,GROUPS_CELL_AVATAR_WRAPPER_BOTTOM_MARGIN:8,GROUPS_CELL_AVATAR_GRID_GAP:8,GROUPS_CELL_MIN_WIDTH:360,GROUPS_CELL_MAX_WIDTH:600,GROUPS_ROW_HEIGHT:72,GROUPS_ROW_GAP:1,FOLDABLE_SCREEN_STAGE_PADDING:8};function xw({top:e=0,left:t=0}={}){return{top:e,left:t}}function Mw({width:e=0,height:t=0}={}){return{width:Math.max(e,0),height:Math.max(t,0)}}function jw({top:e=0,left:t=0,width:r=0,height:i=0}={}){return{bounds:Mw({width:r,height:i}),origin:xw({top:e,left:t})}}function Lw({top:e=0,left:t=0,bottom:r=0,right:i=0}={}){return{top:e,left:t,bottom:r,right:i}}function Aw(e){return!!e&&!(e.width<=0||e.height<=0)}function Nw(e,t){const{width:r,height:i}=t,n=i,s=n*e,o=Math.min(r/s,i/n);return{width:s*o,height:n*o}}const Bw=({vertical:e,width:t,height:r,count:i,aspectRatio:n})=>{const s=[1,2,3].map((s=>(({width:e,height:t,rows:r,cols:i,aspectRatio:n})=>{const s=Nw(n,{width:e/i,height:t/r});return Math.round(s.width*s.height)})({width:t,height:r,rows:e?Math.ceil(i/s):s,cols:e?s:Math.ceil(i/s),aspectRatio:n}))),o=Math.max(...s);return{splits:s.indexOf(o)+1,weight:o}},Fw=({width:e,height:t,count:r,aspectRatio:i})=>{const n=Bw({vertical:!0,width:e,height:t,count:r,aspectRatio:i}),s=Bw({vertical:!1,width:e,height:t,count:r,aspectRatio:i});return n.weight>s.weight?{splits:n.splits,vertical:!0}:{splits:s.splits,vertical:!1}};function zw(e){var{aspectRatio:t,children:r,className:i,height:s,style:o,width:a,withRoundedCorners:c=!1,withShadow:d=!0}=e,l=Rw(e,["aspectRatio","children","className","height","style","width","withRoundedCorners","withShadow"]);let p=a,u=s,h=0,m=0;t&&(({width:p,height:u}=Nw(t,{width:a,height:s})),h=(a-p)/2,m=(s-u)/2);const f=Object.assign({width:`${Math.round(p)}px`,height:`${Math.round(u)}px`},h||m?{transform:`translate3d(${Math.round(h)}px, ${Math.round(m)}px, 0)`}:{});return n.createElement("div",{className:i,style:Object.assign({position:"absolute",top:0,left:0},o)},n.createElement("div",Object.assign({style:f},l),n.cloneElement(r,{contentWidth:p,contentHeight:u,withRoundedCorners:c,withShadow:d})))}function Uw({origin:e,bounds:t}){return{top:Math.round(e.top),left:Math.round(e.left),height:Math.round(t.height),width:Math.round(t.width)}}function $w({cell:e,child:t,clientId:r,style:i={},withRoundedCorners:s=!1,withShadow:o=!1}){const a=!Aw(e.bounds);return n.createElement(zw,{width:e.bounds.width,height:e.bounds.height,aspectRatio:e.aspectRatio,style:a?{width:0,height:0}:i,withRoundedCorners:s,withShadow:o,key:r},t)}function Vw({debug:e=!1,featureRoundedCornersOff:t=!1,gridContent:r=[],isConstrained:i=!1,layoutOverflowBackdropFrame:s=jw(),layoutVideoStage:o,presentationGridContent:a=[],subgridContent:c=[]}){const d=!t&&!i,l=[];return r.length&&l.push(...function({content:e,isConstrained:t,stageLayout:r,withRoundedCorners:i,withShadow:s}){var o;const a=(null===(o=r.videoGrid)||void 0===o?void 0:o.cells)||[],c=e.map(((e,o)=>{var c,d;if(!r.videoGrid)return null;const l=a[o],p={top:r.videoGrid.origin.top+r.videoGrid.paddings.top+l.origin.top,left:r.videoGrid.origin.left+r.videoGrid.paddings.left+l.origin.left},u={width:Math.round(l.bounds.width),height:Math.round(l.bounds.height),transform:`translate3d(${Math.round(p.left)}px, ${Math.round(p.top)}px, 0)`},h=null===(d=null===(c=null==e?void 0:e.props)||void 0===c?void 0:c.participant)||void 0===d?void 0:d.id;return $w({cell:l,child:n.cloneElement(e,{isSmallCell:l.isSmallCell,isZoomedByDefault:!!t&&!(null==e?void 0:e.props.participant.isPresentation),canZoom:!!t,key:h||`video-${o}`}),clientId:h||`video-${o}`,withRoundedCorners:i,style:u,withShadow:s})}));return c}({content:r,isConstrained:i,stageLayout:o,withRoundedCorners:d,withShadow:!i})),a.length&&l.push(...function({content:e,isConstrained:t,stageLayout:r,withRoundedCorners:i,withShadow:s}){var o;const a=(null===(o=r.presentationGrid)||void 0===o?void 0:o.cells)||[];return e.map(((e,o)=>{var c,d;if(!r.presentationGrid)return null;const l=a[o],p={top:r.presentationGrid.origin.top+r.presentationGrid.paddings.top+l.origin.top,left:r.presentationGrid.origin.left+r.presentationGrid.paddings.left+l.origin.left},u={width:Math.round(l.bounds.width),height:Math.round(l.bounds.height),transform:`translate3d(${Math.round(p.left)}px, ${Math.round(p.top)}px, 0)`},h=null===(d=null===(c=null==e?void 0:e.props)||void 0===c?void 0:c.participant)||void 0===d?void 0:d.id;return $w({cell:l,child:n.cloneElement(e,{isSmallCell:l.isSmallCell,isZoomedByDefault:!!t&&!(null==e?void 0:e.props.participant.isPresentation),canZoom:!!t,key:h||`presentation-${o}`}),clientId:h||`presentation-${o}`,style:u,withRoundedCorners:i,withShadow:s})}))}({content:a,isConstrained:i,stageLayout:o,withRoundedCorners:d,withShadow:!i})),c.length&&l.push(...function({content:e,stageLayout:t,withRoundedCorners:r,withShadow:i}){const s=t.subgrid.cells;return e.map(((e,o)=>{var a,c,d,l;const p=s[o],u={height:Math.round(p.bounds.height),width:Math.round(p.bounds.width),transform:""},h={top:t.subgrid.origin.top+p.origin.top,left:t.subgrid.origin.left+p.origin.left};u.transform=`translate3d(${Math.round(h.left)}px, ${Math.round(h.top)}px, 0)`;const m=null===(c=null===(a=null==e?void 0:e.props)||void 0===a?void 0:a.participant)||void 0===c?void 0:c.id,f=(null===(d=p.paddings)||void 0===d?void 0:d.left)||0,g=(null===(l=p.paddings)||void 0===l?void 0:l.right)||0;return $w({cell:p,child:n.cloneElement(e,{avatarSize:p.bounds.width-f-g,canZoom:!1,cellPaddings:p.paddings,isSmallCell:p.isSmallCell,isZoomedByDefault:!1,key:m||`subgrid-${o}`,style:u}),clientId:m||`subgrid-${o}`,style:u,withRoundedCorners:r,withShadow:i})}))}({content:c,stageLayout:o,withRoundedCorners:!t,withShadow:!0})),n.createElement("div",{key:"video-stage-layout",style:{width:"100%",height:"100%",position:"relative"}},Aw(s.bounds)&&n.createElement("div",{style:Uw(s)}),l,e&&n.createElement(n.Fragment,null))}const Gw=16/9,qw=4/3,Hw=({value:e,min:t,max:r})=>Math.min(Math.max(e,t),r);function Ww({choices:e=[]}){const t=Math.min(...e),r=Math.max(...e);let i=null;if(t===r)i=t;else{const t=function(...e){return new Set(e).size!==e.length}(e)?(n=e).sort(((e,t)=>n.filter((t=>t===e)).length-n.filter((e=>e===t)).length)).pop():r;i=Hw({value:t||r,min:qw,max:Gw})}var n;return{minAr:t,maxAr:r,chosenAr:i}}function Kw({width:e,height:t,cellCount:r,gridGap:i,cellAspectRatios:n=[qw],paddings:s=Lw()}){if(!r)return{cellCount:r,cellHeight:0,cellWidth:0,cols:0,rows:0,extraHorizontalPadding:0,extraVerticalPadding:0,gridGap:i,paddings:s};const o=e-(s.left+s.right),a=t-(s.top+s.bottom),c=Ww({choices:n});let d=c.chosenAr;const{rows:l,cols:p}=function({count:e,width:t,height:r,aspectRatio:i}){if(e<=1)return{rows:1,cols:1};const{splits:n,vertical:s}=Fw({width:t,height:r,count:e,aspectRatio:i});return s?{rows:Math.ceil(e/n),cols:n}:{rows:n,cols:Math.ceil(e/n)}}({count:r,width:o,height:a,aspectRatio:d});1===l?d=Hw({value:o/p/a,min:Math.min(c.chosenAr,c.maxAr),max:Math.max(c.chosenAr,c.maxAr)}):1===p&&(d=Hw({value:o/(a/l),min:Math.min(c.chosenAr,c.maxAr),max:Math.max(c.chosenAr,c.maxAr)}));const{cellWidth:u,cellHeight:h,extraHorizontalPadding:m,extraVerticalPadding:f}=function({width:e,height:t,rows:r,cols:i,gridGap:n,aspectRatio:s}){const o=(e-(i-1)*n)/i,a=(t-(r-1)*n)/r,c=o/a;let d=0,l=0;return s<c?d=o-a*s:s>c&&(l=a-o/s),{cellWidth:o-d,cellHeight:a-l,extraHorizontalPadding:d*i/2,extraVerticalPadding:l*r/2}}({width:o,height:a,rows:l,cols:p,gridGap:i,aspectRatio:d});return{cellCount:r,cellHeight:h,cellWidth:u,cols:p,rows:l,extraHorizontalPadding:m,extraVerticalPadding:f,gridGap:i,paddings:s}}function Jw({containerBounds:e,isPortrait:t,cellCount:r,cellBounds:i,paddings:n=Lw()}){let s=0,o=0,a=0,c=0,d=0,l=0;const p=e.width-n.left-n.right,u=e.height-n.top-n.bottom;return r&&(t?(c=Math.floor(p/i.width),a=Math.ceil(r/c),s=p,o=a*i.height,d=(p-c*i.width)/2):(a=Math.floor(u/i.height),c=Math.ceil(r/a),s=c*i.width,o=u,l=(u-a*i.height)/2)),{isPortrait:t,width:s+n.left+n.right,height:o+n.top+n.bottom,cellBounds:i,cellCount:r,rows:a,cols:c,extraHorizontalPadding:d,extraVerticalPadding:l,paddings:n}}const{BOTTOM_TOOLBAR_HEIGHT:Qw,VIDEO_CONTROLS_MIN_WIDTH:Zw,TABLET_BREAKPOINT:Yw,SUBGRID_EMPTY_STAGE_MAX_WIDTH:Xw}=Iw,eS=200,tS=300,rS=200,iS=20,nS=12,sS=Lw({top:4,bottom:28,left:8,right:8});function oS({hasOverflow:e,hasStage:t}){return e&&t?[80]:[80,60]}function aS({cellCount:e}){const t=e<=6;return Mw({width:t?tS-50:tS,height:t?eS-50:eS})}function cS({containerBounds:e,isPortrait:t,cellCount:r,cellSizeOptions:i,cellPaddings:n,paddings:s}){const o=function({containerBounds:e,isPortrait:t,cellCount:r,cellSizeOptions:i,cellPaddings:n,paddings:s}){let o;for(let a=0;a<i.length;a++){const c=i[a];if(o=Jw({containerBounds:e,isPortrait:t,cellCount:r,cellBounds:Mw({width:c+n.left+n.right,height:c+n.top+n.bottom}),paddings:s}),o.width<=e.width&&o.height<=e.height)return o}return o}({containerBounds:e,isPortrait:t,cellCount:r,cellSizeOptions:i,cellPaddings:n,paddings:s}),a=o.cellBounds.width-n.left-n.right===i[i.length-1],c=Mw({width:Math.min(o.width,e.width),height:Math.min(o.height,e.height)}),d=Mw({width:o.width,height:o.height});return 0===r?{bounds:c,contentBounds:d,videoCells:[]}:{bounds:c,contentBounds:d,videoCells:[...Array(r)].map(((e,t)=>{const{top:r,left:i,width:s,height:c}=function({index:e,layout:t}){const{isPortrait:r,rows:i,cols:n,cellCount:s,cellBounds:o,extraHorizontalPadding:a,extraVerticalPadding:c,paddings:d}=t,l=r?Math.floor(e/n):Math.floor(e%i),p=r?Math.floor(e%n):Math.floor(e/i),u=function({index:e,isPortrait:t,rows:r,cols:i,cellBounds:n,cellCount:s}){const o=r*i,a=o-s;if(!a)return 0;const c=o-a-1;return e<c-((t?i:r)-a)+1||e>c?0:a*(t?n.width:n.height)/2}({index:e,isPortrait:r,rows:i,cols:n,cellBounds:o,cellCount:s});return{top:d.top+c+l*o.height+(r?0:u),left:d.left+a+p*o.width+(r?u:0),width:o.width,height:o.height}}({index:t,layout:o});return{origin:xw({top:r,left:i}),bounds:Mw({width:s,height:c}),paddings:n,isSmallCell:a}}))}}function dS({cellPaddings:e,cellSizeOptions:t,containerBounds:r,containerOrigin:i,gridGap:n,hasConstrainedOverflow:s,hasPresentationContent:o,hasVideoContent:a,isConstrained:c,isMaximizeMode:d,isPortrait:l,isSmallScreen:p,maxGridWidth:u,shouldOverflowSubgrid:h,subgridVideos:m}){const{width:f,height:g}=r,v=o||a,b=m.length>0;if(!b&&!v)return{isPortrait:l,videosContainer:jw(),subgrid:Object.assign(Object.assign({},jw()),{contentBounds:Mw(),cells:[]}),hasOverflow:!1};if(!b)return{isPortrait:l,videosContainer:jw(Object.assign(Object.assign({},r),i)),subgrid:Object.assign(Object.assign({},jw()),{contentBounds:Mw(),cells:[]}),hasOverflow:s};const y=h?iS:0;let _=null;if(v)if(h){const i=t[0];let n=d?Qw:Qw+e.top+(c||p?i/2:i)+e.bottom;r.height-n<eS&&(n=0),_=Mw({width:r.width,height:n})}else _=Mw(d?{width:r.width,height:t[0]+e.top+e.bottom}:l?{width:r.width,height:r.height/2}:{width:r.width/2,height:r.height});else _=Mw({width:Math.min(Xw,r.width),height:r.height});let w=0;_.width>u&&(w=(_.width-u)/2);const S=cS({containerBounds:_,isPortrait:l,cellCount:m.length,cellSizeOptions:t,cellPaddings:e,paddings:Lw({top:y,left:w,right:w})}),C=Mw({width:S.contentBounds.width-_.width,height:S.contentBounds.height-_.height}),R=C.width>0||C.height>0;let T,P=null;P=!v||h||R?S.contentBounds:S.bounds;let k=P;v?(k=Mw(h?{width:0,height:_.height+y+n}:l?{width:0,height:S.bounds.height+n}:{width:S.bounds.width+n,height:0}),T=function({bounds:e,fromBounds:t}){return{width:Math.max(t.width-e.width,0),height:Math.max(t.height-e.height,0)}}({bounds:k,fromBounds:r})):T=Mw();const O=Object.assign({},i);let E;return E=xw(v?{top:l?Math.max(i.top+g-k.height+n,0):i.top,left:l?i.left:Math.max(i.left+f-P.width,0)}:{top:i.top+Math.max(0,(g-P.height)/2),left:i.left+Math.max(0,(f-P.width)/2)}),{isPortrait:l,videosContainer:jw(Object.assign(Object.assign({},T),O)),subgrid:Object.assign(Object.assign({},jw(Object.assign(Object.assign({},P),E))),{cells:S.videoCells.map(((e,t)=>{var r,i;return Object.assign({aspectRatio:(null===(r=m[t])||void 0===r?void 0:r.aspectRatio)||1,type:"video",clientId:null===(i=m[t])||void 0===i?void 0:i.clientId},e)})),contentBounds:S.contentBounds}),hasOverflow:R||h||s,overflowNeedBounds:h?Mw():C}}function lS({containerBounds:e,containerOrigin:t,gridGap:r,supersizedContentAspectRatio:i,hasPresentationContent:n,hasPresentationGrid:s,hasVideoContent:o,minGridBounds:a}){const{width:c,height:d}=e;let l=c<=d,p=Mw(),u=xw(),h=o?Object.assign({},e):Mw(),m=o?Object.assign({},t):xw();if(n){const n=function({bounds:e,aspectRatio:t,minGridContainerBounds:r,hasPresentationGrid:i}){const{width:n,height:s}=e;if(!(r.width>0))return{isPortrait:n<=s,supersizedContentBounds:e};const o=Math.round(n/2),a=Math.round(s/2),c=Math.max(n-r.width,0),d=Math.max(s-r.height,0);let l=c<=d,p=0,u=0;if(t){const e=Nw(t,{width:c,height:s}),r=Nw(t,{width:n,height:d});if(l=t<=1?r.height>e.height:r.width>e.width,l){const e=d-Math.max(r.height,a);u=Math.max(e,0)}else{const t=c-Math.max(e.width,o);p=Math.max(t,0)}}else i&&(l=c/d>=5);return{isPortrait:l,supersizedContentBounds:{width:l?n:c-p,height:l?d-u:s}}}({bounds:e,aspectRatio:i||1,minGridContainerBounds:Mw({width:o?a.width+r:0,height:o?a.height+r:0}),hasPresentationGrid:s});l=n.isPortrait,p=n.supersizedContentBounds,u=Object.assign({},t),o&&(h=Mw({width:l?e.width:e.width-p.width-r,height:l?e.height-p.height-r:e.height}),m=xw({top:l?t.top+p.height+r:t.top,left:l?t.left:t.left+p.width+r}))}return{isPortrait:l,presentationGrid:Object.assign({},jw(Object.assign(Object.assign({},p),u))),videoGrid:jw(Object.assign(Object.assign({},h),m))}}function pS({containerBounds:e,paddings:t=Lw(),videos:r,isConstrained:i,maxGridWidth:n,gridGap:s}){const{width:o,height:a}=e,c=n?Math.min(o,n):o,d=r.length;let l=null;const p=r.map((e=>e.aspectRatio||1)),u=aS({cellCount:d}),h=Kw({width:c,height:a,cellCount:d,gridGap:s,cellAspectRatios:p,paddings:t});return l=r.map(((e,t)=>{const r=function({index:e,layout:t}){const{cellWidth:r,cellHeight:i,rows:n,cols:s,cellCount:o,gridGap:a}=t,c=Math.floor(e/s),d=Math.floor(e%s),l=function({rows:e,cols:t,cellWidth:r,index:i,cellCount:n,gridGap:s}){const o=e*t,a=o-n;if(!a)return 0;const c=o-a-1;return i>=c-(t-a)+1&&i<=c?a*r/2+s:0}({rows:n,cols:s,cellWidth:r,index:e,cellCount:o,gridGap:a});return{top:c*i+c*a,left:d*r+d*a+l,width:r,height:i}}({index:t,layout:h}),n=h.cellWidth<u.width,s=i||n?h.cellWidth/h.cellHeight:e.aspectRatio||1;return{clientId:e.clientId,isDraggable:e.isDraggable,origin:xw({top:r.top,left:r.left}),bounds:Mw({width:r.width,height:r.height}),aspectRatio:s,isSmallCell:n,type:"video"}})),{videoCells:l,extraHorizontalPadding:o!==c?h.extraHorizontalPadding+(o-c)/2:h.extraHorizontalPadding,extraVerticalPadding:h.extraVerticalPadding,paddings:h.paddings,gridGap:s}}function uS({a:e,b:t,gridGap:r,isPortrait:i}){const n=i?e.vertical:e.horizontal,s=i?t.vertical:t.horizontal;if(n===s)return{a:0,b:0};const o=n<s?e:t,a=i?o.vertical:o.horizontal,c=(r+(n+s)+a)/2-a;return{a:o===e?c:0,b:o===t?c:0}}function hS({gridGap:e,isConstrained:t,presentationVideos:r,videos:i,videosContainerLayout:n,gridLayoutPaddings:s=Lw(),presentationGridLayoutPaddings:o=Lw(),maxGridWidth:a}){return{gridLayout:pS({containerBounds:n.videoGrid.bounds,gridGap:e,isConstrained:t,maxGridWidth:a,paddings:s,videos:i}),presentationGridLayout:pS({containerBounds:n.presentationGrid.bounds,gridGap:e,isConstrained:t,maxGridWidth:a,paddings:o,videos:r})}}function mS({floatingVideo:e,frame:t,gridGap:r,isConstrained:i,isMaximizeMode:n=!1,isXLMeetingSize:s=!1,paddings:o=Lw(),presentationVideos:a=[],rebalanceLayout:c=!1,roomBounds:d,roomLayoutHasOverlow:l=!1,subgridCellPaddings:p=sS,subgridVideos:u=[],videoControlsHeight:h=0,videos:m=[],videoGridGap:f}){let g=s&&(!screen||screen.width<=2048);const v=!!a.length,b=a.length>1,y=v&&!b?a[0].aspectRatio:null,_=!!m.length,w=t.bounds.width-o.left-o.right;let S=t.bounds.height-o.top-o.bottom;const C=Math.max(2200,.8*w),R=i&&m.length>nS,T=S/4,P=Math.ceil((m.length-nS)/3);S=R?S+T*P:S;const k=Mw({width:w,height:S}),O=xw({top:o.top,left:o.left}),E=aS({cellCount:m.length}),D=d.width<Yw||d.height<Yw,I=n||g||!(v||_)||k.width<=k.height,x={cellPaddings:p,containerBounds:k,containerOrigin:O,gridGap:r,hasPresentationContent:v,hasVideoContent:_,isConstrained:i,isMaximizeMode:n,isSmallScreen:D,subgridVideos:u,maxGridWidth:C};let M=dS(Object.assign(Object.assign({},x),{cellSizeOptions:oS({hasOverflow:g,hasStage:v||_}),isPortrait:I,shouldOverflowSubgrid:g,hasConstrainedOverflow:R})),j=!1;if(!g&&l&&!M.hasOverflow){dS(Object.assign(Object.assign({},x),{containerBounds:Mw({width:k.width,height:k.height-Qw}),cellSizeOptions:oS({hasOverflow:g,hasStage:v||_}),isPortrait:I,shouldOverflowSubgrid:g,hasConstrainedOverflow:R})).hasOverflow&&(j=!0)}(j||M.hasOverflow&&!g)&&(g=!0,M=dS(Object.assign(Object.assign({},x),{cellSizeOptions:oS({hasOverflow:!0,hasStage:v||_}),isPortrait:!0,shouldOverflowSubgrid:g,hasConstrainedOverflow:R})));const L=lS({containerBounds:M.videosContainer.bounds,containerOrigin:M.videosContainer.origin,gridGap:r,supersizedContentAspectRatio:y||1,hasPresentationContent:v,hasPresentationGrid:b,hasVideoContent:_,minGridBounds:E});let{gridLayout:A,presentationGridLayout:N}=hS({gridGap:f||r,isConstrained:i,presentationVideos:a,videos:m,videosContainerLayout:L,maxGridWidth:C});if(M.hasOverflow&&!g){const{vPaddings:e,hPaddings:t}=function({need:e,stageLayout:t,gridLayout:r,presentationGridLayout:i,videosContainerLayout:n}){let s={presentationGrid:0,grid:0},o={presentationGrid:0,grid:0};if(t.isPortrait){const t=Math.min(r.extraVerticalPadding,i.extraVerticalPadding);s={presentationGrid:Math.min(n.isPortrait?i.extraVerticalPadding:t,e.height),grid:Math.min(n.isPortrait?r.extraVerticalPadding:t,e.height)}}else{const t=Math.min(r.extraHorizontalPadding,i.extraHorizontalPadding);o={presentationGrid:Math.min(n.isPortrait?t:i.extraHorizontalPadding,e.width),grid:Math.min(n.isPortrait?t:r.extraHorizontalPadding,e.width)}}return{vPaddings:s,hPaddings:o}}({need:M.overflowNeedBounds||Mw(),stageLayout:M,gridLayout:A,presentationGridLayout:N,videosContainerLayout:L});(e.presentationGrid||e.grid||t.presentationGrid||t.grid)&&(!function({vPaddings:e,hPaddings:t,stageLayout:r,videosContainerLayout:i}){if(r.isPortrait&&(e.presentationGrid||e.grid)){const t=i.isPortrait?2*e.presentationGrid+2*e.grid:e.presentationGrid+e.grid;r.videosContainer.bounds.height-=t,r.subgrid.origin.top-=t,r.subgrid.bounds.height+=t,i.presentationGrid.bounds.height-=2*e.presentationGrid,i.videoGrid.bounds.height-=2*e.grid,i.isPortrait&&(i.videoGrid.origin.top-=e.presentationGrid)}if(!r.isPortrait&&(t.presentationGrid||t.grid)){const e=i.isPortrait?t.presentationGrid+t.grid:2*t.presentationGrid+2*t.grid;r.videosContainer.bounds.width-=e,r.subgrid.origin.left-=e,r.subgrid.bounds.width+=e,i.presentationGrid.bounds.width-=2*t.presentationGrid,i.videoGrid.bounds.width-=2*t.grid,i.isPortrait||(i.videoGrid.origin.left-=t.grid)}}({vPaddings:e,hPaddings:t,stageLayout:M,videosContainerLayout:L}),({gridLayout:A,presentationGridLayout:N}=hS({gridGap:f||r,isConstrained:i,presentationVideos:a,videos:m,videosContainerLayout:L,maxGridWidth:C})))}const B=function({roomBounds:e,containerFrame:t,floatingVideo:r,videoControlsHeight:i,margin:n=8}){if(!r)return null;const s=Nw(r.aspectRatio||0,{width:rS,height:rS}),o=!(e.height-t.bounds.height-t.origin.top),a=t.bounds.width-2*(s.width+n)<Zw;let c=0;o&&a?c=-1*i:o||a||(c=i);const d=xw({top:t.origin.top+(t.bounds.height-s.height-n)+c,left:t.origin.left+(t.bounds.width-s.width-n)});return{clientId:r.clientId,isDraggable:r.isDraggable,origin:d,bounds:s,aspectRatio:r.aspectRatio,isSmallCell:!0}}({roomBounds:d,containerFrame:t,floatingVideo:e||null,videoControlsHeight:h});c&&function({videosContainerLayout:e,gridLayout:t,presentationGridLayout:r,stageLayout:i,gridGap:n,shouldOverflowSubgrid:s}){const o=e.presentationGrid.bounds.width>0,a=e.videoGrid.bounds.width>0,c=i.subgrid.bounds.width>0,d={vertical:0,horizontal:0};if(o&&a){const i=uS({a:{horizontal:r.extraHorizontalPadding,vertical:r.extraVerticalPadding},b:{horizontal:t.extraHorizontalPadding,vertical:t.extraVerticalPadding},gridGap:n,isPortrait:e.isPortrait});e.isPortrait?(e.presentationGrid.origin.top+=i.a,e.videoGrid.origin.top-=i.b,d.vertical=i.b):(e.presentationGrid.origin.left+=i.a,e.videoGrid.origin.left-=i.b,d.horizontal=i.b)}if(c&&(o||a)&&!s){const s={horizontal:r.extraHorizontalPadding,vertical:r.extraVerticalPadding},c={horizontal:t.extraHorizontalPadding+d.horizontal,vertical:t.extraVerticalPadding+d.vertical};let l;const p=o&&a;l=p&&e.isPortrait&&!i.isPortrait?s.horizontal<c.horizontal?s:c:p&&!e.isPortrait&&i.isPortrait?s.vertical<c.vertical?s:c:a?c:s;const u=uS({a:l,b:{horizontal:0,vertical:0},gridGap:n,isPortrait:i.isPortrait});i.isPortrait?i.subgrid.origin.top-=u.b:i.subgrid.origin.left-=u.b}}({videosContainerLayout:L,gridLayout:A,presentationGridLayout:N,stageLayout:M,gridGap:r,shouldOverflowSubgrid:g});let F=o.top+M.videosContainer.bounds.height+M.subgrid.bounds.height+o.bottom;return(v||_)&&(F+=r),{isPortrait:M.isPortrait,hasOverflow:M.hasOverflow,videosContainer:Object.assign(Object.assign({},L),{bounds:Mw({width:M.videosContainer.bounds.width,height:M.videosContainer.bounds.height}),origin:xw({top:M.videosContainer.origin.top,left:M.videosContainer.origin.left})}),bounds:Mw({height:g?F:t.bounds.height,width:t.bounds.width}),gridGap:r,presentationGrid:Object.assign(Object.assign({},L.presentationGrid),{cells:N.videoCells,paddings:Lw({top:N.paddings.top+N.extraVerticalPadding,bottom:N.paddings.bottom+N.extraVerticalPadding,left:N.paddings.left+N.extraHorizontalPadding,right:N.paddings.right+N.extraHorizontalPadding})}),videoGrid:Object.assign(Object.assign({},L.videoGrid),{cells:A.videoCells,paddings:Lw({top:A.paddings.top+A.extraVerticalPadding,bottom:A.paddings.bottom+A.extraVerticalPadding,left:A.paddings.left+A.extraHorizontalPadding,right:A.paddings.right+A.extraHorizontalPadding})}),subgrid:M.subgrid,floatingContent:Object.assign(Object.assign({},B),e)}}function fS({aspectRatio:e,avatarSize:t,cellPaddings:r,client:i,isDraggable:n=!0,isPlaceholder:s=!1,isSubgrid:o=!1}){return{aspectRatio:e||16/9,avatarSize:t,cellPaddings:r,client:i,clientId:(null==i?void 0:i.id)||"",isDraggable:n,isPlaceholder:s,isSubgrid:o,type:"video"}}const gS=12,vS=12;function bS({activeVideosSubgridTrigger:e,forceSubgrid:t,stageParticipantLimit:r=gS,videoGridGap:i=8}={}){const[s,o]=n.useState({width:0,height:0}),[a,c]=n.useState({}),{clientViewsInGrid:d,clientViewsInPresentationGrid:l,clientViewsInSubgrid:p}=function({activeVideosSubgridTrigger:e=vS,stageParticipantLimit:t=gS,forceSubgrid:r=!0}={}){const i=Pw(t_),s=Pw(j_),o=Pw(Ly),a=n.useMemo((()=>!!r||o>t),[r,o,t]),c=n.useMemo((()=>function({clientViews:e,activeVideosSubgridTrigger:t,shouldShowSubgrid:r,spotlightedParticipants:i}){if(!r)return[];const n=i.length>0,s=e.filter((e=>!e.isPresentation&&!i.includes(e))),o=s.filter((e=>!e.isVideoEnabled)),a=s.filter((e=>e.isVideoEnabled)).length>t,c=s.filter((e=>!o.includes(e)&&e.isAudioEnabled)),d=s.filter((e=>!o.includes(e)&&!e.isAudioEnabled));if(o.length&&n)return[...d,...o];if(a&&d.length){const e=[...c,...d].slice(0,t);return e.length<=t?[...d.filter((t=>!e.includes(t))),...o]:[...d,...o]}return o}({clientViews:i,activeVideosSubgridTrigger:e,shouldShowSubgrid:a,spotlightedParticipants:s})),[i,a,e,s]),d=n.useMemo((()=>i.filter((e=>!c.includes(e)))),[i,c]),l=n.useMemo((()=>s),[s]);return{clientViewsInGrid:n.useMemo((()=>d.filter((e=>!l.includes(e)))),[d,l]),clientViewsInPresentationGrid:l,clientViewsInSubgrid:c}}({activeVideosSubgridTrigger:e,forceSubgrid:t,stageParticipantLimit:r}),u=n.useMemo((()=>d.map((e=>fS({client:e,aspectRatio:a[e.id],avatarSize:0,cellPaddings:{top:0,right:0}})))),[d,a]),h=n.useMemo((()=>l.map((e=>fS({client:e,aspectRatio:a[e.id],avatarSize:0,cellPaddings:{top:0,right:0}})))),[l,a]),m=n.useMemo((()=>p.map((e=>fS({client:e,aspectRatio:a[e.id],avatarSize:0,cellPaddings:{top:0,right:0},isSubgrid:!0})))),[p,a]),f=n.useMemo((()=>jw(s)),[s]),g=n.useMemo((()=>mS({frame:f,gridGap:8,isConstrained:!1,roomBounds:f.bounds,videos:u,videoGridGap:i,presentationVideos:h,subgridVideos:m})),[f,u,h,m]);return{cellViewsVideoGrid:u,cellViewsInPresentationGrid:h,cellViewsInSubgrid:m,videoStage:g,setContainerBounds:o,setClientAspectRatios:c}}var yS={exports:{}};const _S=55296,wS=56319,SS=56320,CS=127462,RS=127487,TS=127995,PS=127999,kS=65024,OS=65039,ES=8400,DS=8447,IS=8205,xS=[776,2359,2359,2367,2367,2984,3007,3021,3633,3635,3648,3657,4352,4449,4520];function MS(e){if("string"!=typeof e)throw new Error("string cannot be undefined or null");const t=[];let r=0,i=0;for(;r<e.length;)i+=jS(r+i,e),BS(e[r+i])&&i++,AS(e[r+i])&&i++,NS(e[r+i])&&i++,FS(e[r+i])?i++:(t.push(e.substring(r,r+i)),r+=i,i=0);return t}function jS(e,t){const r=t[e];if(!function(e){return e&&US(e[0].charCodeAt(0),_S,wS)}(r)||e===t.length-1)return 1;const i=r+t[e+1];let n=t.substring(e+2,e+5);return LS(i)&&LS(n)||function(e){return US(zS(e),TS,PS)}(n)?4:2}function LS(e){return US(zS(e),CS,RS)}function AS(e){return"string"==typeof e&&US(e.charCodeAt(0),kS,OS)}function NS(e){return"string"==typeof e&&US(e.charCodeAt(0),ES,DS)}function BS(e){return"string"==typeof e&&-1!==xS.indexOf(e.charCodeAt(0))}function FS(e){return"string"==typeof e&&e.charCodeAt(0)===IS}function zS(e){return(e.charCodeAt(0)-_S<<10)+(e.charCodeAt(1)-SS)+65536}function US(e,t,r){return e>=t&&e<=r}yS.exports=MS,yS.exports.substr=function(e,t,r){const i=MS(e);if(void 0===t)return e;if(t>=i.length)return"";const n=i.length-t;let s=t+(void 0===r?n:r);return s>t+n&&(s=void 0),i.slice(t,s).join("")};var $S=o(yS.exports);const VS=({name:e})=>{const t=((e="")=>{if(e=e.trim())return e.split(/-| /).map((e=>$S(e)[0])).slice(0,3);return[]})(e),r=[0,56,48,40][t.length]||32,i=t.join("").toUpperCase();return n.createElement("svg",{viewBox:"-60 -60 120 120","aria-hidden":"true",style:{height:"100%",pointerEvents:"none",width:"100%"}},n.createElement("text",{x:0,y:0,textAnchor:"middle",dominantBaseline:"central",fontSize:r},i))};function GS(e){var{avatarUrl:t,className:r,size:i=40,name:s,variant:o="round"}=e,a=Rw(e,["avatarUrl","className","size","name","variant"]);return n.createElement("div",Object.assign({style:{height:`${i}px`,width:`${i}px`,userSelect:"none",overflow:"hidden",borderRadius:"round"===o?"50%":"4px",backgroundColor:"#f8e3c8"},className:r,title:s},a),!t&&s?n.createElement(VS,{name:s}):n.createElement("img",{src:t||"",alt:"",style:{height:"100%",width:"100%",objectFit:"cover",maxWidth:"initial"}}))}function qS({avatarUrl:e,displayName:t,isSmallCell:r,withRoundedCorners:i}){return n.createElement("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",position:"absolute",top:0,left:0,height:"100%",width:"100%",borderRadius:i?"8px":"0"}},n.createElement("div",{style:{height:r?60:80,width:r?60:80,pointerEvents:"none",position:"relative"}},n.createElement(GS,{variant:"square",avatarUrl:e,name:t,size:r?60:80})))}function HS({cellView:e,onSetClientAspectRatio:t}){if("video"===e.type)return n.createElement(WS,{aspectRatio:e.aspectRatio,participant:e.client,isPlaceholder:e.isPlaceholder,isSubgrid:e.isSubgrid,key:e.clientId,onSetClientAspectRatio:t})}function WS({aspectRatio:e,participant:t,render:r}){const i=n.useRef(null),s=n.useCallback((()=>{const r=i.current&&i.current.captureAspectRatio();r&&r!==e&&(null==t||t.id)}),[]);return n.createElement("div",null,r?r():(null==t?void 0:t.stream)&&t.isVideoEnabled?n.createElement(kw,{ref:i,stream:t.stream,onVideoResize:s,style:{borderRadius:"8px"}}):n.createElement(qS,{isSmallCell:!1,displayName:(null==t?void 0:t.displayName)||"Guest",withRoundedCorners:!0}))}return e.VideoGrid=function({renderParticipant:e,stageParticipantLimit:t,videoGridGap:r}){const i=n.useRef(null),{cellViewsVideoGrid:s,cellViewsInPresentationGrid:o,cellViewsInSubgrid:a,videoStage:c,setContainerBounds:d,setClientAspectRatios:l}=bS({activeVideosSubgridTrigger:12,stageParticipantLimit:t,videoGridGap:r}),p=n.useMemo((()=>o.map((e=>HS({cellView:e,onSetClientAspectRatio:({aspectRatio:e,clientId:t})=>l((r=>Object.assign(Object.assign({},r),{[t]:e})))})))),[o]),u=n.useMemo((()=>s.map((e=>HS({cellView:e,onSetClientAspectRatio:({aspectRatio:e,clientId:t})=>l((r=>Object.assign(Object.assign({},r),{[t]:e})))})))),[s]),h=n.useMemo((()=>a.map((e=>HS({cellView:e,onSetClientAspectRatio:({aspectRatio:e,clientId:t})=>l((r=>Object.assign(Object.assign({},r),{[t]:e})))})))),[a]);return n.useEffect((()=>{if(!i.current)return;const e=new ResizeObserver(_b((()=>{var e,t,r,n;d({width:null!==(t=null===(e=i.current)||void 0===e?void 0:e.clientWidth)&&void 0!==t?t:640,height:null!==(n=null===(r=i.current)||void 0===r?void 0:r.clientHeight)&&void 0!==n?n:480})}),{delay:60,edges:!1}));return e.observe(i.current),()=>{e.disconnect()}}),[]),n.createElement("div",{ref:i,style:{width:"100%",height:"100%",position:"relative"}},n.createElement(Vw,{layoutVideoStage:c,presentationGridContent:p,gridContent:u,subgridContent:h}))},e.VideoView=kw,e.WherebyProvider=function({children:e}){const t=(({preloadedState:e,injectServices:t})=>yt({devTools:F_,reducer:U_,middleware:e=>e({thunk:{extraArgument:{services:t}},serializableCheck:!1}).prepend(Sv.middleware),preloadedState:e}))({injectServices:function(){const e=fw.create({baseUrl:Cw}),t=new iw({fetchDeviceCredentials:e.getCredentials.bind(e),baseUrl:Cw}),r=new ww({apiClient:t});return{credentialsService:e,apiClient:t,organizationService:r,fetchOrganizationFromRoomUrl:e=>{const t=xf({host:new URL(e).host});return new Sw({organizationService:r,subdomain:t.subdomain}).fetchOrganization()}}}()});return n.createElement(k,{store:t},e)},e.useLocalMedia=function(e={audio:!0,video:!0}){const t=Tw(),r=Pw(Dw);return n.useEffect((()=>(t(Fb(e)),()=>{t(zb())})),[]),{state:r,actions:{setCameraDevice:n.useCallback((e=>t(Cb({deviceId:e}))),[t]),setMicrophoneDevice:n.useCallback((e=>t(Rb({deviceId:e}))),[t]),setSpeakerDevice:n.useCallback((e=>t(Tb({deviceId:e}))),[t]),toggleCameraEnabled:n.useCallback((e=>t(Pb({enabled:e}))),[t]),toggleMicrophoneEnabled:n.useCallback((e=>t(kb({enabled:e}))),[t]),toggleLowDataModeEnabled:n.useCallback((e=>t(Ob({enabled:e}))),[t])}}},e.useRoomConnection=function(e,t=Ew){const r=Tw(),i=Pw(Ow),s=n.useMemo((()=>{const r=new URL(e),i=new URLSearchParams(r.search),n=t.roomKey||i.get("roomKey");return{displayName:t.displayName||"Guest",localMediaOptions:t.localMedia?void 0:t.localMediaOptions,roomKey:n,roomUrl:e,userAgent:"browser-sdk:3.0.1",externalId:t.externalId||null}}),[e,t]);n.useEffect((()=>()=>{r(Pv())}),[]);const o=n.useCallback((e=>r(mb({text:e}))),[r]),a=n.useCallback((()=>r(Uy())),[r]),c=n.useCallback((e=>r(oy({displayName:e}))),[r]),d=n.useCallback((e=>r(Pb({enabled:e}))),[r]),l=n.useCallback((e=>r(kb({enabled:e}))),[r]),p=n.useCallback((e=>r(Ob({enabled:e}))),[r]),u=n.useCallback((e=>r(dy({enabled:e}))),[r]),h=n.useCallback((e=>r(My({clientIds:[e],enable:!0}))),[r]),m=n.useCallback((e=>r(N_({participantId:e}))),[r]),f=n.useCallback((e=>r(B_({participantId:e}))),[r]),g=n.useCallback((()=>r(vb())),[r]),v=n.useCallback((()=>r(by())),[r]),b=n.useCallback((()=>r(bb())),[r]),y=n.useCallback((()=>r(yy())),[r]),_=n.useCallback((()=>r(kv(s))),[r]),w=n.useCallback((()=>r(Pv())),[r]),S=n.useCallback((e=>r(Qy({locked:e}))),[r]),C=n.useCallback((e=>{r(My({clientIds:e,enable:!1}))}),[r]),R=n.useCallback((e=>r(I_({id:e}))),[r]),T=n.useCallback((e=>r(x_({id:e}))),[r]),P=n.useCallback((e=>r(Zy({clientId:e}))),[r]),k=n.useCallback((e=>r(Yy({stayBehind:e}))),[r]),{events:O}=i;return{state:Rw(i,["events"]),events:O,actions:{toggleLowDataMode:p,toggleRaiseHand:u,askToSpeak:h,acceptWaitingParticipant:m,knock:a,joinRoom:_,leaveRoom:w,lockRoom:S,muteParticipants:C,kickParticipant:P,endMeeting:k,rejectWaitingParticipant:f,sendChatMessage:o,setDisplayName:c,startCloudRecording:g,startScreenshare:v,stopCloudRecording:b,stopScreenshare:y,toggleCamera:d,toggleMicrophone:l,spotlightParticipant:R,removeSpotlight:T}}},e}({},React);
3
+ let Ii;Ri.AwaitQueue=class{constructor(){this.pendingTasks=new Map,this.nextTaskId=0,this.stopping=!1}get size(){return this.pendingTasks.size}async push(e,t){if(t=t??e.name,Oi.debug(`push() [name:${t}]`),"function"!=typeof e)throw new TypeError("given task is not a function");if(t)try{Object.defineProperty(e,"name",{value:t})}catch(e){}return new Promise(((r,i)=>{const n={id:this.nextTaskId++,task:e,name:t,enqueuedAt:Date.now(),executedAt:void 0,completed:!1,resolve:e=>{if(n.completed)return;n.completed=!0,this.pendingTasks.delete(n.id),Oi.debug(`resolving task [name:${n.name}]`),r(e);const[t]=this.pendingTasks.values();t&&!t.executedAt&&this.execute(t)},reject:e=>{if(!n.completed&&(n.completed=!0,this.pendingTasks.delete(n.id),Oi.debug(`rejecting task [name:${n.name}]: %s`,String(e)),i(e),!this.stopping)){const[e]=this.pendingTasks.values();e&&!e.executedAt&&this.execute(e)}}};this.pendingTasks.set(n.id,n),1===this.pendingTasks.size&&this.execute(n)}))}stop(){Oi.debug("stop()"),this.stopping=!0;for(const e of this.pendingTasks.values())Oi.debug(`stop() | stopping task [name:${e.name}]`),e.reject(new Ei);this.stopping=!1}remove(e){Oi.debug(`remove() [taskIdx:${e}]`);const t=Array.from(this.pendingTasks.values())[e];t?t.reject(new Di):Oi.debug(`stop() | no task with given idx [taskIdx:${e}]`)}dump(){const e=Date.now();let t=0;return Array.from(this.pendingTasks.values()).map((r=>({idx:t++,task:r.task,name:r.name,enqueuedTime:r.executedAt?r.executedAt-r.enqueuedAt:e-r.enqueuedAt,executionTime:r.executedAt?e-r.executedAt:0})))}async execute(e){if(Oi.debug(`execute() [name:${e.name}]`),e.executedAt)throw new Error("task already being executed");e.executedAt=Date.now();try{const t=await e.task();e.resolve(t)}catch(t){e.reject(t)}}};var xi="function"==typeof queueMicrotask?queueMicrotask.bind("undefined"!=typeof window?window:s):e=>(Ii||(Ii=Promise.resolve())).then(e).catch((e=>setTimeout((()=>{throw e}),0))),Mi={};Object.defineProperty(Mi,"__esModule",{value:!0}),Mi.Producer=void 0;const ji=Mr,Li=Br,Ai=new Er.Logger("Producer");class Ni extends ji.EnhancedEventEmitter{constructor({id:e,localId:t,rtpSender:r,track:i,rtpParameters:n,stopTracks:s,disableTrackOnPause:o,zeroRtpOnPause:a,appData:c}){super(),this._closed=!1,this._observer=new ji.EnhancedEventEmitter,Ai.debug("constructor()"),this._id=e,this._localId=t,this._rtpSender=r,this._track=i,this._kind=i.kind,this._rtpParameters=n,this._paused=!!o&&!i.enabled,this._maxSpatialLayer=void 0,this._stopTracks=s,this._disableTrackOnPause=o,this._zeroRtpOnPause=a,this._appData=c||{},this.onTrackEnded=this.onTrackEnded.bind(this),this.handleTrack()}get id(){return this._id}get localId(){return this._localId}get closed(){return this._closed}get kind(){return this._kind}get rtpSender(){return this._rtpSender}get track(){return this._track}get rtpParameters(){return this._rtpParameters}get paused(){return this._paused}get maxSpatialLayer(){return this._maxSpatialLayer}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){this._closed||(Ai.debug("close()"),this._closed=!0,this.destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Ai.debug("transportClosed()"),this._closed=!0,this.destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new Li.InvalidStateError("closed");return new Promise(((e,t)=>{this.safeEmit("@getstats",e,t)}))}pause(){Ai.debug("pause()"),this._closed?Ai.error("pause() | Producer closed"):(this._paused=!0,this._track&&this._disableTrackOnPause&&(this._track.enabled=!1),this._zeroRtpOnPause&&new Promise(((e,t)=>{this.safeEmit("@pause",e,t)})).catch((()=>{})),this._observer.safeEmit("pause"))}resume(){Ai.debug("resume()"),this._closed?Ai.error("resume() | Producer closed"):(this._paused=!1,this._track&&this._disableTrackOnPause&&(this._track.enabled=!0),this._zeroRtpOnPause&&new Promise(((e,t)=>{this.safeEmit("@resume",e,t)})).catch((()=>{})),this._observer.safeEmit("resume"))}async replaceTrack({track:e}){if(Ai.debug("replaceTrack() [track:%o]",e),this._closed){if(e&&this._stopTracks)try{e.stop()}catch(e){}throw new Li.InvalidStateError("closed")}if(e&&"ended"===e.readyState)throw new Li.InvalidStateError("track ended");e!==this._track?(await new Promise(((t,r)=>{this.safeEmit("@replacetrack",e,t,r)})),this.destroyTrack(),this._track=e,this._track&&this._disableTrackOnPause&&(this._paused?this._paused&&(this._track.enabled=!1):this._track.enabled=!0),this.handleTrack()):Ai.debug("replaceTrack() | same track, ignored")}async setMaxSpatialLayer(e){if(this._closed)throw new Li.InvalidStateError("closed");if("video"!==this._kind)throw new Li.UnsupportedError("not a video Producer");if("number"!=typeof e)throw new TypeError("invalid spatialLayer");e!==this._maxSpatialLayer&&(await new Promise(((t,r)=>{this.safeEmit("@setmaxspatiallayer",e,t,r)})).catch((()=>{})),this._maxSpatialLayer=e)}async setRtpEncodingParameters(e){if(this._closed)throw new Li.InvalidStateError("closed");if("object"!=typeof e)throw new TypeError("invalid params");await new Promise(((t,r)=>{this.safeEmit("@setrtpencodingparameters",e,t,r)}))}onTrackEnded(){Ai.debug('track "ended" event'),this.safeEmit("trackended"),this._observer.safeEmit("trackended")}handleTrack(){this._track&&this._track.addEventListener("ended",this.onTrackEnded)}destroyTrack(){if(this._track)try{this._track.removeEventListener("ended",this.onTrackEnded),this._stopTracks&&this._track.stop()}catch(e){}}}Mi.Producer=Ni;var Bi={};Object.defineProperty(Bi,"__esModule",{value:!0}),Bi.Consumer=void 0;const Fi=Mr,zi=Br,Ui=new Er.Logger("Consumer");class $i extends Fi.EnhancedEventEmitter{constructor({id:e,localId:t,producerId:r,rtpReceiver:i,track:n,rtpParameters:s,appData:o}){super(),this._closed=!1,this._observer=new Fi.EnhancedEventEmitter,Ui.debug("constructor()"),this._id=e,this._localId=t,this._producerId=r,this._rtpReceiver=i,this._track=n,this._rtpParameters=s,this._paused=!n.enabled,this._appData=o||{},this.onTrackEnded=this.onTrackEnded.bind(this),this.handleTrack()}get id(){return this._id}get localId(){return this._localId}get producerId(){return this._producerId}get closed(){return this._closed}get kind(){return this._track.kind}get rtpReceiver(){return this._rtpReceiver}get track(){return this._track}get rtpParameters(){return this._rtpParameters}get paused(){return this._paused}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){this._closed||(Ui.debug("close()"),this._closed=!0,this.destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Ui.debug("transportClosed()"),this._closed=!0,this.destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new zi.InvalidStateError("closed");return new Promise(((e,t)=>{this.safeEmit("@getstats",e,t)}))}pause(){Ui.debug("pause()"),this._closed?Ui.error("pause() | Consumer closed"):this._paused?Ui.debug("pause() | Consumer is already paused"):(this._paused=!0,this._track.enabled=!1,this.emit("@pause"),this._observer.safeEmit("pause"))}resume(){Ui.debug("resume()"),this._closed?Ui.error("resume() | Consumer closed"):this._paused?(this._paused=!1,this._track.enabled=!0,this.emit("@resume"),this._observer.safeEmit("resume")):Ui.debug("resume() | Consumer is already resumed")}onTrackEnded(){Ui.debug('track "ended" event'),this.safeEmit("trackended"),this._observer.safeEmit("trackended")}handleTrack(){this._track.addEventListener("ended",this.onTrackEnded)}destroyTrack(){try{this._track.removeEventListener("ended",this.onTrackEnded),this._track.stop()}catch(e){}}}Bi.Consumer=$i;var Vi={};Object.defineProperty(Vi,"__esModule",{value:!0}),Vi.DataProducer=void 0;const Gi=Mr,qi=Br,Hi=new Er.Logger("DataProducer");class Wi extends Gi.EnhancedEventEmitter{constructor({id:e,dataChannel:t,sctpStreamParameters:r,appData:i}){super(),this._closed=!1,this._observer=new Gi.EnhancedEventEmitter,Hi.debug("constructor()"),this._id=e,this._dataChannel=t,this._sctpStreamParameters=r,this._appData=i||{},this.handleDataChannel()}get id(){return this._id}get closed(){return this._closed}get sctpStreamParameters(){return this._sctpStreamParameters}get readyState(){return this._dataChannel.readyState}get label(){return this._dataChannel.label}get protocol(){return this._dataChannel.protocol}get bufferedAmount(){return this._dataChannel.bufferedAmount}get bufferedAmountLowThreshold(){return this._dataChannel.bufferedAmountLowThreshold}set bufferedAmountLowThreshold(e){this._dataChannel.bufferedAmountLowThreshold=e}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){this._closed||(Hi.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Hi.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}send(e){if(Hi.debug("send()"),this._closed)throw new qi.InvalidStateError("closed");this._dataChannel.send(e)}handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(Hi.debug('DataChannel "open" event'),this.safeEmit("open"))})),this._dataChannel.addEventListener("error",(e=>{if(this._closed)return;let{error:t}=e;t||(t=new Error("unknown DataChannel error")),"sctp-failure"===t.errorDetail?Hi.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):Hi.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(Hi.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"),this._observer.safeEmit("close"))})),this._dataChannel.addEventListener("message",(()=>{this._closed||Hi.warn('DataChannel "message" event in a DataProducer, message discarded')})),this._dataChannel.addEventListener("bufferedamountlow",(()=>{this._closed||this.safeEmit("bufferedamountlow")}))}}Vi.DataProducer=Wi;var Ki={};Object.defineProperty(Ki,"__esModule",{value:!0}),Ki.DataConsumer=void 0;const Ji=Mr,Qi=new Er.Logger("DataConsumer");class Zi extends Ji.EnhancedEventEmitter{constructor({id:e,dataProducerId:t,dataChannel:r,sctpStreamParameters:i,appData:n}){super(),this._closed=!1,this._observer=new Ji.EnhancedEventEmitter,Qi.debug("constructor()"),this._id=e,this._dataProducerId=t,this._dataChannel=r,this._sctpStreamParameters=i,this._appData=n||{},this.handleDataChannel()}get id(){return this._id}get dataProducerId(){return this._dataProducerId}get closed(){return this._closed}get sctpStreamParameters(){return this._sctpStreamParameters}get readyState(){return this._dataChannel.readyState}get label(){return this._dataChannel.label}get protocol(){return this._dataChannel.protocol}get binaryType(){return this._dataChannel.binaryType}set binaryType(e){this._dataChannel.binaryType=e}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){this._closed||(Qi.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Qi.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(Qi.debug('DataChannel "open" event'),this.safeEmit("open"))})),this._dataChannel.addEventListener("error",(e=>{if(this._closed)return;let{error:t}=e;t||(t=new Error("unknown DataChannel error")),"sctp-failure"===t.errorDetail?Qi.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):Qi.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(Qi.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"),this._observer.safeEmit("close"))})),this._dataChannel.addEventListener("message",(e=>{this._closed||this.safeEmit("message",e.data)}))}}Ki.DataConsumer=Zi;var Yi=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Xi=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),en=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Yi(t,e,r);return Xi(t,e),t},tn=s&&s.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ci,"__esModule",{value:!0}),Ci.Transport=void 0;const rn=Ri,nn=tn(xi),sn=Er,on=Mr,an=Br,cn=en(Ur),dn=en($r),ln=Mi,pn=Bi,un=Vi,hn=Ki,mn=new sn.Logger("Transport");class fn{constructor(e){this.consumerOptions=e,this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}let gn=class extends on.EnhancedEventEmitter{constructor({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:n,sctpParameters:s,iceServers:o,iceTransportPolicy:a,additionalSettings:c,proprietaryConstraints:d,appData:l,handlerFactory:p,extendedRtpCapabilities:u,canProduceByKind:h}){super(),this._closed=!1,this._iceGatheringState="new",this._connectionState="new",this._producers=new Map,this._consumers=new Map,this._dataProducers=new Map,this._dataConsumers=new Map,this._probatorConsumerCreated=!1,this._awaitQueue=new rn.AwaitQueue,this._pendingConsumerTasks=[],this._consumerCreationInProgress=!1,this._pendingPauseConsumers=new Map,this._consumerPauseInProgress=!1,this._pendingResumeConsumers=new Map,this._consumerResumeInProgress=!1,this._pendingCloseConsumers=new Map,this._consumerCloseInProgress=!1,this._observer=new on.EnhancedEventEmitter,mn.debug("constructor() [id:%s, direction:%s]",t,e),this._id=t,this._direction=e,this._extendedRtpCapabilities=u,this._canProduceByKind=h,this._maxSctpMessageSize=s?s.maxMessageSize:null,delete(c=cn.clone(c)||{}).iceServers,delete c.iceTransportPolicy,delete c.bundlePolicy,delete c.rtcpMuxPolicy,delete c.sdpSemantics,this._handler=p(),this._handler.run({direction:e,iceParameters:r,iceCandidates:i,dtlsParameters:n,sctpParameters:s,iceServers:o,iceTransportPolicy:a,additionalSettings:c,proprietaryConstraints:d,extendedRtpCapabilities:u}),this._appData=l||{},this.handleHandler()}get id(){return this._id}get closed(){return this._closed}get direction(){return this._direction}get handler(){return this._handler}get iceGatheringState(){return this._iceGatheringState}get connectionState(){return this._connectionState}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){if(!this._closed){mn.debug("close()"),this._closed=!0,this._awaitQueue.stop(),this._handler.close(),this._connectionState="closed";for(const e of this._producers.values())e.transportClosed();this._producers.clear();for(const e of this._consumers.values())e.transportClosed();this._consumers.clear();for(const e of this._dataProducers.values())e.transportClosed();this._dataProducers.clear();for(const e of this._dataConsumers.values())e.transportClosed();this._dataConsumers.clear(),this._observer.safeEmit("close")}}async getStats(){if(this._closed)throw new an.InvalidStateError("closed");return this._handler.getTransportStats()}async restartIce({iceParameters:e}){if(mn.debug("restartIce()"),this._closed)throw new an.InvalidStateError("closed");if(!e)throw new TypeError("missing iceParameters");return this._awaitQueue.push((async()=>await this._handler.restartIce(e)),"transport.restartIce()")}async updateIceServers({iceServers:e}={}){if(mn.debug("updateIceServers()"),this._closed)throw new an.InvalidStateError("closed");if(!Array.isArray(e))throw new TypeError("missing iceServers");return this._awaitQueue.push((async()=>this._handler.updateIceServers(e)),"transport.updateIceServers()")}async produce({track:e,encodings:t,codecOptions:r,codec:i,stopTracks:n=!0,disableTrackOnPause:s=!0,zeroRtpOnPause:o=!1,appData:a={}}={}){if(mn.debug("produce() [track:%o]",e),this._closed)throw new an.InvalidStateError("closed");if(!e)throw new TypeError("missing track");if("send"!==this._direction)throw new an.UnsupportedError("not a sending Transport");if(!this._canProduceByKind[e.kind])throw new an.UnsupportedError(`cannot produce ${e.kind}`);if("ended"===e.readyState)throw new an.InvalidStateError("track ended");if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(0===this.listenerCount("produce"))throw new TypeError('no "produce" listener set into this transport');if(a&&"object"!=typeof a)throw new TypeError("if given, appData must be an object");return this._awaitQueue.push((async()=>{let c;if(t&&!Array.isArray(t))throw TypeError("encodings must be an array");t&&0===t.length?c=void 0:t&&(c=t.map((e=>{const t={active:!0};return!1===e.active&&(t.active=!1),"boolean"==typeof e.dtx&&(t.dtx=e.dtx),"string"==typeof e.scalabilityMode&&(t.scalabilityMode=e.scalabilityMode),"number"==typeof e.scaleResolutionDownBy&&(t.scaleResolutionDownBy=e.scaleResolutionDownBy),"number"==typeof e.maxBitrate&&(t.maxBitrate=e.maxBitrate),"number"==typeof e.maxFramerate&&(t.maxFramerate=e.maxFramerate),"boolean"==typeof e.adaptivePtime&&(t.adaptivePtime=e.adaptivePtime),"string"==typeof e.priority&&(t.priority=e.priority),"string"==typeof e.networkPriority&&(t.networkPriority=e.networkPriority),t})));const{localId:d,rtpParameters:l,rtpSender:p}=await this._handler.send({track:e,encodings:c,codecOptions:r,codec:i});try{dn.validateRtpParameters(l);const{id:t}=await new Promise(((t,r)=>{this.safeEmit("produce",{kind:e.kind,rtpParameters:l,appData:a},t,r)})),r=new ln.Producer({id:t,localId:d,rtpSender:p,track:e,rtpParameters:l,stopTracks:n,disableTrackOnPause:s,zeroRtpOnPause:o,appData:a});return this._producers.set(r.id,r),this.handleProducer(r),this._observer.safeEmit("newproducer",r),r}catch(e){throw this._handler.stopSending(d).catch((()=>{})),e}}),"transport.produce()").catch((t=>{if(n)try{e.stop()}catch(e){}throw t}))}async consume({id:e,producerId:t,kind:r,rtpParameters:i,streamId:n,appData:s={}}){if(mn.debug("consume()"),i=cn.clone(i),this._closed)throw new an.InvalidStateError("closed");if("recv"!==this._direction)throw new an.UnsupportedError("not a receiving Transport");if("string"!=typeof e)throw new TypeError("missing id");if("string"!=typeof t)throw new TypeError("missing producerId");if("audio"!==r&&"video"!==r)throw new TypeError(`invalid kind '${r}'`);if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(s&&"object"!=typeof s)throw new TypeError("if given, appData must be an object");if(!dn.canReceive(i,this._extendedRtpCapabilities))throw new an.UnsupportedError("cannot consume this Producer");const o=new fn({id:e,producerId:t,kind:r,rtpParameters:i,streamId:n,appData:s});return this._pendingConsumerTasks.push(o),(0,nn.default)((()=>{this._closed||!1===this._consumerCreationInProgress&&this.createPendingConsumers()})),o.promise}async produceData({ordered:e=!0,maxPacketLifeTime:t,maxRetransmits:r,label:i="",protocol:n="",appData:s={}}={}){if(mn.debug("produceData()"),this._closed)throw new an.InvalidStateError("closed");if("send"!==this._direction)throw new an.UnsupportedError("not a sending Transport");if(!this._maxSctpMessageSize)throw new an.UnsupportedError("SCTP not enabled by remote Transport");if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(0===this.listenerCount("producedata"))throw new TypeError('no "producedata" listener set into this transport');if(s&&"object"!=typeof s)throw new TypeError("if given, appData must be an object");return(t||r)&&(e=!1),this._awaitQueue.push((async()=>{const{dataChannel:o,sctpStreamParameters:a}=await this._handler.sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n});dn.validateSctpStreamParameters(a);const{id:c}=await new Promise(((e,t)=>{this.safeEmit("producedata",{sctpStreamParameters:a,label:i,protocol:n,appData:s},e,t)})),d=new un.DataProducer({id:c,dataChannel:o,sctpStreamParameters:a,appData:s});return this._dataProducers.set(d.id,d),this.handleDataProducer(d),this._observer.safeEmit("newdataproducer",d),d}),"transport.produceData()")}async consumeData({id:e,dataProducerId:t,sctpStreamParameters:r,label:i="",protocol:n="",appData:s={}}){if(mn.debug("consumeData()"),r=cn.clone(r),this._closed)throw new an.InvalidStateError("closed");if("recv"!==this._direction)throw new an.UnsupportedError("not a receiving Transport");if(!this._maxSctpMessageSize)throw new an.UnsupportedError("SCTP not enabled by remote Transport");if("string"!=typeof e)throw new TypeError("missing id");if("string"!=typeof t)throw new TypeError("missing dataProducerId");if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(s&&"object"!=typeof s)throw new TypeError("if given, appData must be an object");return dn.validateSctpStreamParameters(r),this._awaitQueue.push((async()=>{const{dataChannel:o}=await this._handler.receiveDataChannel({sctpStreamParameters:r,label:i,protocol:n}),a=new hn.DataConsumer({id:e,dataProducerId:t,dataChannel:o,sctpStreamParameters:r,appData:s});return this._dataConsumers.set(a.id,a),this.handleDataConsumer(a),this._observer.safeEmit("newdataconsumer",a),a}),"transport.consumeData()")}async createPendingConsumers(){this._consumerCreationInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingConsumerTasks.length)return void mn.debug("createPendingConsumers() | there is no Consumer to be created");const e=[...this._pendingConsumerTasks];let t;this._pendingConsumerTasks=[];const r=[];for(const t of e){const{id:e,kind:i,rtpParameters:n,streamId:s}=t.consumerOptions;r.push({trackId:e,kind:i,rtpParameters:n,streamId:s})}try{const i=await this._handler.receive(r);for(let r=0;r<i.length;++r){const n=e[r],s=i[r],{id:o,producerId:a,kind:c,rtpParameters:d,appData:l}=n.consumerOptions,{localId:p,rtpReceiver:u,track:h}=s,m=new pn.Consumer({id:o,localId:p,producerId:a,rtpReceiver:u,track:h,rtpParameters:d,appData:l});this._consumers.set(m.id,m),this.handleConsumer(m),this._probatorConsumerCreated||t||"video"!==c||(t=m),this._observer.safeEmit("newconsumer",m),n.resolve(m)}}catch(t){for(const r of e)r.reject(t)}if(t)try{const e=dn.generateProbatorRtpParameters(t.rtpParameters);await this._handler.receive([{trackId:"probator",kind:"video",rtpParameters:e}]),mn.debug("createPendingConsumers() | Consumer for RTP probation created"),this._probatorConsumerCreated=!0}catch(e){mn.error("createPendingConsumers() | failed to create Consumer for RTP probation:%o",e)}}),"transport.createPendingConsumers()").then((()=>{this._consumerCreationInProgress=!1,this._pendingConsumerTasks.length>0&&this.createPendingConsumers()})).catch((()=>{}))}pausePendingConsumers(){this._consumerPauseInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingPauseConsumers.size)return void mn.debug("pausePendingConsumers() | there is no Consumer to be paused");const e=Array.from(this._pendingPauseConsumers.values());this._pendingPauseConsumers.clear();try{const t=e.map((e=>e.localId));await this._handler.pauseReceiving(t)}catch(e){mn.error("pausePendingConsumers() | failed to pause Consumers:",e)}}),"transport.pausePendingConsumers").then((()=>{this._consumerPauseInProgress=!1,this._pendingPauseConsumers.size>0&&this.pausePendingConsumers()})).catch((()=>{}))}resumePendingConsumers(){this._consumerResumeInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingResumeConsumers.size)return void mn.debug("resumePendingConsumers() | there is no Consumer to be resumed");const e=Array.from(this._pendingResumeConsumers.values());this._pendingResumeConsumers.clear();try{const t=e.map((e=>e.localId));await this._handler.resumeReceiving(t)}catch(e){mn.error("resumePendingConsumers() | failed to resume Consumers:",e)}}),"transport.resumePendingConsumers").then((()=>{this._consumerResumeInProgress=!1,this._pendingResumeConsumers.size>0&&this.resumePendingConsumers()})).catch((()=>{}))}closePendingConsumers(){this._consumerCloseInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingCloseConsumers.size)return void mn.debug("closePendingConsumers() | there is no Consumer to be closed");const e=Array.from(this._pendingCloseConsumers.values());this._pendingCloseConsumers.clear();try{await this._handler.stopReceiving(e.map((e=>e.localId)))}catch(e){mn.error("closePendingConsumers() | failed to close Consumers:",e)}}),"transport.closePendingConsumers").then((()=>{this._consumerCloseInProgress=!1,this._pendingCloseConsumers.size>0&&this.closePendingConsumers()})).catch((()=>{}))}handleHandler(){const e=this._handler;e.on("@connect",(({iceParameters:e,dtlsParameters:t},r,i)=>{this._closed?i(new an.InvalidStateError("closed")):this.safeEmit("connect",{iceParameters:e,dtlsParameters:t},r,i)})),e.on("@icegatheringstatechange",(e=>{e!==this._iceGatheringState&&(mn.debug("ICE gathering state changed to %s",e),this._iceGatheringState=e,this._closed||this.safeEmit("icegatheringstatechange",e))})),e.on("@connectionstatechange",(e=>{e!==this._connectionState&&(mn.debug("connection state changed to %s",e),this._connectionState=e,this._closed||this.safeEmit("connectionstatechange",e))}))}handleProducer(e){e.on("@close",(()=>{this._producers.delete(e.id),this._closed||this._awaitQueue.push((async()=>await this._handler.stopSending(e.localId)),"producer @close event").catch((e=>mn.warn("producer.close() failed:%o",e)))})),e.on("@pause",((t,r)=>{this._awaitQueue.push((async()=>await this._handler.pauseSending(e.localId)),"producer @pause event").then(t).catch(r)})),e.on("@resume",((t,r)=>{this._awaitQueue.push((async()=>await this._handler.resumeSending(e.localId)),"producer @resume event").then(t).catch(r)})),e.on("@replacetrack",((t,r,i)=>{this._awaitQueue.push((async()=>await this._handler.replaceTrack(e.localId,t)),"producer @replacetrack event").then(r).catch(i)})),e.on("@setmaxspatiallayer",((t,r,i)=>{this._awaitQueue.push((async()=>await this._handler.setMaxSpatialLayer(e.localId,t)),"producer @setmaxspatiallayer event").then(r).catch(i)})),e.on("@setrtpencodingparameters",((t,r,i)=>{this._awaitQueue.push((async()=>await this._handler.setRtpEncodingParameters(e.localId,t)),"producer @setrtpencodingparameters event").then(r).catch(i)})),e.on("@getstats",((t,r)=>{if(this._closed)return r(new an.InvalidStateError("closed"));this._handler.getSenderStats(e.localId).then(t).catch(r)}))}handleConsumer(e){e.on("@close",(()=>{this._consumers.delete(e.id),this._pendingPauseConsumers.delete(e.id),this._pendingResumeConsumers.delete(e.id),this._closed||(this._pendingCloseConsumers.set(e.id,e),!1===this._consumerCloseInProgress&&this.closePendingConsumers())})),e.on("@pause",(()=>{this._pendingResumeConsumers.has(e.id)&&this._pendingResumeConsumers.delete(e.id),this._pendingPauseConsumers.set(e.id,e),(0,nn.default)((()=>{this._closed||!1===this._consumerPauseInProgress&&this.pausePendingConsumers()}))})),e.on("@resume",(()=>{this._pendingPauseConsumers.has(e.id)&&this._pendingPauseConsumers.delete(e.id),this._pendingResumeConsumers.set(e.id,e),(0,nn.default)((()=>{this._closed||!1===this._consumerResumeInProgress&&this.resumePendingConsumers()}))})),e.on("@getstats",((t,r)=>{if(this._closed)return r(new an.InvalidStateError("closed"));this._handler.getReceiverStats(e.localId).then(t).catch(r)}))}handleDataProducer(e){e.on("@close",(()=>{this._dataProducers.delete(e.id)}))}handleDataConsumer(e){e.on("@close",(()=>{this._dataConsumers.delete(e.id)}))}};Ci.Transport=gn;var vn={},bn={},yn={},_n={exports:{}},wn=_n.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(e){return e.encoding?"rtpmap:%d %s/%s/%s":e.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(e){return null!=e.address?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(e){return null!=e.subtype?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(e){return"extmap:%d"+(e.direction?"/%s":"%v")+(e["encrypt-uri"]?" %s":"%v")+" %s"+(e.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(e){return null!=e.sessionConfig?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(e){var t="candidate:%s %d %s %d %s %d typ %s";return t+=null!=e.raddr?" raddr %s rport %d":"%v%v",t+=null!=e.tcptype?" tcptype %s":"%v",null!=e.generation&&(t+=" generation %d"),t+=null!=e["network-id"]?" network-id %d":"%v",t+=null!=e["network-cost"]?" network-cost %d":"%v"}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(e){var t="ssrc:%d";return null!=e.attribute&&(t+=" %s",null!=e.value&&(t+=":%s")),t}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(e){return null!=e.maxMessageSize?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(e){return e.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(e){return"imageattr:%s %s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(e){return"simulcast:%s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(e){return"ts-refclk:%s"+(null!=e.clksrcExt?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(e){var t="mediaclk:";return t+=null!=e.id?"id=%s %s":"%v%s",t+=null!=e.mediaClockValue?"=%s":"",t+=null!=e.rateNumerator?" rate=%s":"",t+=null!=e.rateDenominator?"/%s":""}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(wn).forEach((function(e){wn[e].forEach((function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")}))}));var Sn=_n.exports;!function(e){var t=function(e){return String(Number(e))===e?Number(e):e},r=function(e,r,i){var n=e.name&&e.names;e.push&&!r[e.push]?r[e.push]=[]:n&&!r[e.name]&&(r[e.name]={});var s=e.push?{}:n?r[e.name]:r;!function(e,r,i,n){if(n&&!i)r[n]=t(e[1]);else for(var s=0;s<i.length;s+=1)null!=e[s+1]&&(r[i[s]]=t(e[s+1]))}(i.match(e.reg),s,e.names,e.name),e.push&&r[e.push].push(s)},i=Sn,n=RegExp.prototype.test.bind(/^([a-z])=(.*)/);e.parse=function(e){var t={},s=[],o=t;return e.split(/(\r\n|\r|\n)/).filter(n).forEach((function(e){var t=e[0],n=e.slice(2);"m"===t&&(s.push({rtp:[],fmtp:[]}),o=s[s.length-1]);for(var a=0;a<(i[t]||[]).length;a+=1){var c=i[t][a];if(c.reg.test(n))return r(c,o,n)}})),t.media=s,t};var s=function(e,r){var i=r.split(/=(.+)/,2);return 2===i.length?e[i[0]]=t(i[1]):1===i.length&&r.length>1&&(e[i[0]]=void 0),e};e.parseParams=function(e){return e.split(/;\s?/).reduce(s,{})},e.parseFmtpConfig=e.parseParams,e.parsePayloads=function(e){return e.toString().split(" ").map(Number)},e.parseRemoteCandidates=function(e){for(var r=[],i=e.split(" ").map(t),n=0;n<i.length;n+=3)r.push({component:i[n],ip:i[n+1],port:i[n+2]});return r},e.parseImageAttributes=function(e){return e.split(" ").map((function(e){return e.substring(1,e.length-1).split(",").reduce(s,{})}))},e.parseSimulcastStreamList=function(e){return e.split(";").map((function(e){return e.split(",").map((function(e){var r,i=!1;return"~"!==e[0]?r=t(e):(r=t(e.substring(1,e.length)),i=!0),{scid:r,paused:i}}))}))}}(yn);var Cn=Sn,Rn=/%[sdv%]/g,Tn=function(e){var t=1,r=arguments,i=r.length;return e.replace(Rn,(function(e){if(t>=i)return e;var n=r[t];switch(t+=1,e){case"%%":return"%";case"%s":return String(n);case"%d":return Number(n);case"%v":return""}}))},Pn=function(e,t,r){var i=[e+"="+(t.format instanceof Function?t.format(t.push?r:r[t.name]):t.format)];if(t.names)for(var n=0;n<t.names.length;n+=1){var s=t.names[n];t.name?i.push(r[t.name][s]):i.push(r[t.names[n]])}else i.push(r[t.name]);return Tn.apply(null,i)},kn=["v","o","s","i","u","e","p","c","b","t","r","z","a"],On=["i","c","b","a"],En=yn,Dn=function(e,t){t=t||{},null==e.version&&(e.version=0),null==e.name&&(e.name=" "),e.media.forEach((function(e){null==e.payloads&&(e.payloads="")}));var r=t.outerOrder||kn,i=t.innerOrder||On,n=[];return r.forEach((function(t){Cn[t].forEach((function(r){r.name in e&&null!=e[r.name]?n.push(Pn(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){n.push(Pn(t,r,e))}))}))})),e.media.forEach((function(e){n.push(Pn("m",Cn.m[0],e)),i.forEach((function(t){Cn[t].forEach((function(r){r.name in e&&null!=e[r.name]?n.push(Pn(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){n.push(Pn(t,r,e))}))}))}))})),n.join("\r\n")+"\r\n"},In=bn.write=Dn,xn=bn.parse=En.parse;bn.parseParams=En.parseParams,bn.parseFmtpConfig=En.parseFmtpConfig,bn.parsePayloads=En.parsePayloads,bn.parseRemoteCandidates=En.parseRemoteCandidates,bn.parseImageAttributes=En.parseImageAttributes,bn.parseSimulcastStreamList=En.parseSimulcastStreamList;var Mn={},jn=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Ln=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),An=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&jn(t,e,r);return Ln(t,e),t};Object.defineProperty(Mn,"__esModule",{value:!0}),Mn.applyCodecParameters=Mn.getCname=Mn.extractDtlsParameters=Mn.extractIceParameters=Mn.extractRtpCapabilities=void 0;const Nn=An(bn);Mn.extractRtpCapabilities=function({sdpObject:e}){const t=new Map,r=[];let i=!1,n=!1;for(const s of e.media){const e=s.type;switch(e){case"audio":if(i)continue;i=!0;break;case"video":if(n)continue;n=!0;break;default:continue}for(const r of s.rtp){const i={kind:e,mimeType:`${e}/${r.codec}`,preferredPayloadType:r.payload,clockRate:r.rate,channels:r.encoding,parameters:{},rtcpFeedback:[]};t.set(i.preferredPayloadType,i)}for(const e of s.fmtp||[]){const r=Nn.parseParams(e.config),i=t.get(e.payload);i&&(r&&r.hasOwnProperty("profile-level-id")&&(r["profile-level-id"]=String(r["profile-level-id"])),i.parameters=r)}for(const r of s.rtcpFb||[]){const i={type:r.type,parameter:r.subtype};if(i.parameter||delete i.parameter,"*"!==r.payload){const e=t.get(r.payload);if(!e)continue;e.rtcpFeedback.push(i)}else for(const r of t.values())r.kind!==e||/.+\/rtx$/i.test(r.mimeType)||r.rtcpFeedback.push(i)}for(const t of s.ext||[]){if(t["encrypt-uri"])continue;const i={kind:e,uri:t.uri,preferredId:t.value};r.push(i)}}return{codecs:Array.from(t.values()),headerExtensions:r}},Mn.extractIceParameters=function({sdpObject:e}){let t=e.iceUfrag,r=e.icePwd;if(!t||!r){const i=(e.media||[]).find((e=>0!==e.port));i&&(t??(t=i.iceUfrag),r??(r=i.icePwd))}if(!t)throw new Error("no a=iceUfrag found at SDP session or media level");if(!r)throw new Error("no a=icePwd found at SDP session or media level");return{usernameFragment:t,password:r}},Mn.extractDtlsParameters=function({sdpObject:e}){let t,r=e.setup,i=e.fingerprint;if(!r||!i){const t=(e.media||[]).find((e=>0!==e.port));t&&(r??(r=t.setup),i??(i=t.fingerprint))}if(!r)throw new Error("no a=setup found at SDP session or media level");if(!i)throw new Error("no a=fingerprint found at SDP session or media level");switch(r){case"active":t="client";break;case"passive":t="server";break;case"actpass":t="auto"}return{role:t,fingerprints:[{algorithm:i.type,value:i.hash}]}},Mn.getCname=function({offerMediaObject:e}){const t=(e.ssrcs||[]).find((e=>"cname"===e.attribute));return t?t.value:""},Mn.applyCodecParameters=function({offerRtpParameters:e,answerMediaObject:t}){for(const r of e.codecs){const e=r.mimeType.toLowerCase();if("audio/opus"!==e)continue;if(!(t.rtp||[]).find((e=>e.payload===r.payloadType)))continue;t.fmtp=t.fmtp||[];let i=t.fmtp.find((e=>e.payload===r.payloadType));i||(i={payload:r.payloadType,config:""},t.fmtp.push(i));const n=Nn.parseParams(i.config);switch(e){case"audio/opus":{const e=r.parameters["sprop-stereo"];void 0!==e&&(n.stereo=e?1:0);break}}i.config="";for(const e of Object.keys(n))i.config&&(i.config+=";"),i.config+=`${e}=${n[e]}`}};var Bn={};Object.defineProperty(Bn,"__esModule",{value:!0}),Bn.addLegacySimulcast=Bn.getRtpEncodings=void 0,Bn.getRtpEncodings=function({offerMediaObject:e}){const t=new Set;for(const r of e.ssrcs||[]){const e=r.id;t.add(e)}if(0===t.size)throw new Error("no a=ssrc lines found");const r=new Map;for(const i of e.ssrcGroups||[]){if("FID"!==i.semantics)continue;let[e,n]=i.ssrcs.split(/\s+/);e=Number(e),n=Number(n),t.has(e)&&(t.delete(e),t.delete(n),r.set(e,n))}for(const e of t)r.set(e,null);const i=[];for(const[e,t]of r){const r={ssrc:e};t&&(r.rtx={ssrc:t}),i.push(r)}return i},Bn.addLegacySimulcast=function({offerMediaObject:e,numStreams:t}){if(t<=1)throw new TypeError("numStreams must be greater than 1");const r=(e.ssrcs||[]).find((e=>"msid"===e.attribute));if(!r)throw new Error("a=ssrc line with msid information not found");const[i,n]=r.value.split(" "),s=r.id;let o;(e.ssrcGroups||[]).some((e=>{if("FID"!==e.semantics)return!1;const t=e.ssrcs.split(/\s+/);return Number(t[0])===s&&(o=Number(t[1]),!0)}));const a=e.ssrcs.find((e=>"cname"===e.attribute));if(!a)throw new Error("a=ssrc line with cname information not found");const c=a.value,d=[],l=[];for(let e=0;e<t;++e)d.push(s+e),o&&l.push(o+e);e.ssrcGroups=[],e.ssrcs=[],e.ssrcGroups.push({semantics:"SIM",ssrcs:d.join(" ")});for(let t=0;t<d.length;++t){const r=d[t];e.ssrcs.push({id:r,attribute:"cname",value:c}),e.ssrcs.push({id:r,attribute:"msid",value:`${i} ${n}`})}for(let t=0;t<l.length;++t){const r=d[t],s=l[t];e.ssrcs.push({id:s,attribute:"cname",value:c}),e.ssrcs.push({id:s,attribute:"msid",value:`${i} ${n}`}),e.ssrcGroups.push({semantics:"FID",ssrcs:`${r} ${s}`})}};var Fn={};Object.defineProperty(Fn,"__esModule",{value:!0}),Fn.addNackSuppportForOpus=void 0,Fn.addNackSuppportForOpus=function(e){for(const t of e.codecs||[])"audio/opus"!==t.mimeType.toLowerCase()&&"audio/multiopus"!==t.mimeType.toLowerCase()||t.rtcpFeedback?.some((e=>"nack"===e.type&&!e.parameter))||(t.rtcpFeedback||(t.rtcpFeedback=[]),t.rtcpFeedback.push({type:"nack"}))};var zn={};Object.defineProperty(zn,"__esModule",{value:!0}),zn.HandlerInterface=void 0;const Un=Mr;class $n extends Un.EnhancedEventEmitter{constructor(){super()}}zn.HandlerInterface=$n;var Vn={},Gn={},qn=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Hn=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Wn=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&qn(t,e,r);return Hn(t,e),t};Object.defineProperty(Gn,"__esModule",{value:!0}),Gn.OfferMediaSection=Gn.AnswerMediaSection=Gn.MediaSection=void 0;const Kn=Wn(bn),Jn=Wn(Ur);class Qn{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:i=!1}){if(this._mediaObject={},this._planB=i,e&&this.setIceParameters(e),t){this._mediaObject.candidates=[];for(const e of t){const t={component:1};t.foundation=e.foundation,t.ip=e.address??e.ip,t.port=e.port,t.priority=e.priority,t.transport=e.protocol,t.type=e.type,e.tcpType&&(t.tcptype=e.tcpType),this._mediaObject.candidates.push(t)}this._mediaObject.endOfCandidates="end-of-candidates",this._mediaObject.iceOptions="renomination"}r&&this.setDtlsRole(r.role)}get mid(){return String(this._mediaObject.mid)}get closed(){return 0===this._mediaObject.port}getObject(){return this._mediaObject}setIceParameters(e){this._mediaObject.iceUfrag=e.usernameFragment,this._mediaObject.icePwd=e.password}pause(){this._mediaObject.direction="inactive"}disable(){this.pause(),delete this._mediaObject.ext,delete this._mediaObject.ssrcs,delete this._mediaObject.ssrcGroups,delete this._mediaObject.simulcast,delete this._mediaObject.simulcast_03,delete this._mediaObject.rids,delete this._mediaObject.extmapAllowMixed}close(){this.disable(),this._mediaObject.port=0}}Gn.MediaSection=Qn;Gn.AnswerMediaSection=class extends Qn{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:n,planB:s=!1,offerMediaObject:o,offerRtpParameters:a,answerRtpParameters:c,codecOptions:d,extmapAllowMixed:l=!1}){switch(super({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:s}),this._mediaObject.mid=String(o.mid),this._mediaObject.type=o.type,this._mediaObject.protocol=o.protocol,n?(this._mediaObject.connection={ip:n.ip,version:n.ipVersion},this._mediaObject.port=n.port):(this._mediaObject.connection={ip:"127.0.0.1",version:4},this._mediaObject.port=7),o.type){case"audio":case"video":this._mediaObject.direction="recvonly",this._mediaObject.rtp=[],this._mediaObject.rtcpFb=[],this._mediaObject.fmtp=[];for(const e of c.codecs){const t={payload:e.payloadType,codec:Zn(e),rate:e.clockRate};e.channels>1&&(t.encoding=e.channels),this._mediaObject.rtp.push(t);const r=Jn.clone(e.parameters)??{};let i=Jn.clone(e.rtcpFeedback)??[];if(d){const{opusStereo:t,opusFec:n,opusDtx:s,opusMaxPlaybackRate:o,opusMaxAverageBitrate:c,opusPtime:l,opusNack:p,videoGoogleStartBitrate:u,videoGoogleMaxBitrate:h,videoGoogleMinBitrate:m}=d,f=a.codecs.find((t=>t.payloadType===e.payloadType));switch(e.mimeType.toLowerCase()){case"audio/opus":case"audio/multiopus":void 0!==t&&(f.parameters["sprop-stereo"]=t?1:0,r.stereo=t?1:0),void 0!==n&&(f.parameters.useinbandfec=n?1:0,r.useinbandfec=n?1:0),void 0!==s&&(f.parameters.usedtx=s?1:0,r.usedtx=s?1:0),void 0!==o&&(r.maxplaybackrate=o),void 0!==c&&(r.maxaveragebitrate=c),void 0!==l&&(f.parameters.ptime=l,r.ptime=l),p||(f.rtcpFeedback=f.rtcpFeedback.filter((e=>"nack"!==e.type||e.parameter)),i=i.filter((e=>"nack"!==e.type||e.parameter)));break;case"video/vp8":case"video/vp9":case"video/h264":case"video/h265":void 0!==u&&(r["x-google-start-bitrate"]=u),void 0!==h&&(r["x-google-max-bitrate"]=h),void 0!==m&&(r["x-google-min-bitrate"]=m)}}const n={payload:e.payloadType,config:""};for(const e of Object.keys(r))n.config&&(n.config+=";"),n.config+=`${e}=${r[e]}`;n.config&&this._mediaObject.fmtp.push(n);for(const t of i)this._mediaObject.rtcpFb.push({payload:e.payloadType,type:t.type,subtype:t.parameter})}this._mediaObject.payloads=c.codecs.map((e=>e.payloadType)).join(" "),this._mediaObject.ext=[];for(const e of c.headerExtensions){(o.ext||[]).some((t=>t.uri===e.uri))&&this._mediaObject.ext.push({uri:e.uri,value:e.id})}if(l&&"extmap-allow-mixed"===o.extmapAllowMixed&&(this._mediaObject.extmapAllowMixed="extmap-allow-mixed"),o.simulcast){this._mediaObject.simulcast={dir1:"recv",list1:o.simulcast.list1},this._mediaObject.rids=[];for(const e of o.rids||[])"send"===e.direction&&this._mediaObject.rids.push({id:e.id,direction:"recv"})}else if(o.simulcast_03){this._mediaObject.simulcast_03={value:o.simulcast_03.value.replace(/send/g,"recv")},this._mediaObject.rids=[];for(const e of o.rids||[])"send"===e.direction&&this._mediaObject.rids.push({id:e.id,direction:"recv"})}this._mediaObject.rtcpMux="rtcp-mux",this._mediaObject.rtcpRsize="rtcp-rsize",this._planB&&"video"===this._mediaObject.type&&(this._mediaObject.xGoogleFlag="conference");break;case"application":"number"==typeof o.sctpPort?(this._mediaObject.payloads="webrtc-datachannel",this._mediaObject.sctpPort=i.port,this._mediaObject.maxMessageSize=i.maxMessageSize):o.sctpmap&&(this._mediaObject.payloads=i.port,this._mediaObject.sctpmap={app:"webrtc-datachannel",sctpmapNumber:i.port,maxMessageSize:i.maxMessageSize})}}setDtlsRole(e){switch(e){case"client":this._mediaObject.setup="active";break;case"server":this._mediaObject.setup="passive";break;case"auto":this._mediaObject.setup="actpass"}}resume(){this._mediaObject.direction="recvonly"}muxSimulcastStreams(e){if(!this._mediaObject.simulcast||!this._mediaObject.simulcast.list1)return;const t={};for(const r of e)r.rid&&(t[r.rid]=r);const r=this._mediaObject.simulcast.list1,i=Kn.parseSimulcastStreamList(r);for(const e of i)for(const r of e)r.paused=!t[r.scid]?.active;this._mediaObject.simulcast.list1=i.map((e=>e.map((e=>`${e.paused?"~":""}${e.scid}`)).join(","))).join(";")}};function Zn(e){const t=new RegExp("^(audio|video)/(.+)","i").exec(e.mimeType);if(!t)throw new TypeError("invalid codec.mimeType");return t[2]}Gn.OfferMediaSection=class extends Qn{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:n,planB:s=!1,mid:o,kind:a,offerRtpParameters:c,streamId:d,trackId:l,oldDataChannelSpec:p=!1}){switch(super({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:s}),this._mediaObject.mid=String(o),this._mediaObject.type=a,n?(this._mediaObject.connection={ip:n.ip,version:n.ipVersion},this._mediaObject.protocol="RTP/AVP",this._mediaObject.port=n.port):(this._mediaObject.connection={ip:"127.0.0.1",version:4},this._mediaObject.protocol=i?"UDP/DTLS/SCTP":"UDP/TLS/RTP/SAVPF",this._mediaObject.port=7),a){case"audio":case"video":{this._mediaObject.direction="sendonly",this._mediaObject.rtp=[],this._mediaObject.rtcpFb=[],this._mediaObject.fmtp=[],this._planB||(this._mediaObject.msid=`${d||"-"} ${l}`);for(const e of c.codecs){const t={payload:e.payloadType,codec:Zn(e),rate:e.clockRate};e.channels>1&&(t.encoding=e.channels),this._mediaObject.rtp.push(t);const r={payload:e.payloadType,config:""};for(const t of Object.keys(e.parameters))r.config&&(r.config+=";"),r.config+=`${t}=${e.parameters[t]}`;r.config&&this._mediaObject.fmtp.push(r);for(const t of e.rtcpFeedback)this._mediaObject.rtcpFb.push({payload:e.payloadType,type:t.type,subtype:t.parameter})}this._mediaObject.payloads=c.codecs.map((e=>e.payloadType)).join(" "),this._mediaObject.ext=[];for(const e of c.headerExtensions)this._mediaObject.ext.push({uri:e.uri,value:e.id});this._mediaObject.rtcpMux="rtcp-mux",this._mediaObject.rtcpRsize="rtcp-rsize";const e=c.encodings[0],t=e.ssrc,r=e.rtx&&e.rtx.ssrc?e.rtx.ssrc:void 0;this._mediaObject.ssrcs=[],this._mediaObject.ssrcGroups=[],c.rtcp.cname&&this._mediaObject.ssrcs.push({id:t,attribute:"cname",value:c.rtcp.cname}),this._planB&&this._mediaObject.ssrcs.push({id:t,attribute:"msid",value:`${d||"-"} ${l}`}),r&&(c.rtcp.cname&&this._mediaObject.ssrcs.push({id:r,attribute:"cname",value:c.rtcp.cname}),this._planB&&this._mediaObject.ssrcs.push({id:r,attribute:"msid",value:`${d||"-"} ${l}`}),this._mediaObject.ssrcGroups.push({semantics:"FID",ssrcs:`${t} ${r}`}));break}case"application":p?(this._mediaObject.payloads=i.port,this._mediaObject.sctpmap={app:"webrtc-datachannel",sctpmapNumber:i.port,maxMessageSize:i.maxMessageSize}):(this._mediaObject.payloads="webrtc-datachannel",this._mediaObject.sctpPort=i.port,this._mediaObject.maxMessageSize=i.maxMessageSize)}}setDtlsRole(e){this._mediaObject.setup="actpass"}resume(){this._mediaObject.direction="sendonly"}planBReceive({offerRtpParameters:e,streamId:t,trackId:r}){const i=e.encodings[0],n=i.ssrc,s=i.rtx&&i.rtx.ssrc?i.rtx.ssrc:void 0,o=this._mediaObject.payloads.split(" ");for(const t of e.codecs){if(o.includes(String(t.payloadType)))continue;const e={payload:t.payloadType,codec:Zn(t),rate:t.clockRate};t.channels>1&&(e.encoding=t.channels),this._mediaObject.rtp.push(e);const r={payload:t.payloadType,config:""};for(const e of Object.keys(t.parameters))r.config&&(r.config+=";"),r.config+=`${e}=${t.parameters[e]}`;r.config&&this._mediaObject.fmtp.push(r);for(const e of t.rtcpFeedback)this._mediaObject.rtcpFb.push({payload:t.payloadType,type:e.type,subtype:e.parameter})}this._mediaObject.payloads+=` ${e.codecs.filter((e=>!this._mediaObject.payloads.includes(e.payloadType))).map((e=>e.payloadType)).join(" ")}`,this._mediaObject.payloads=this._mediaObject.payloads.trim(),e.rtcp.cname&&this._mediaObject.ssrcs.push({id:n,attribute:"cname",value:e.rtcp.cname}),this._mediaObject.ssrcs.push({id:n,attribute:"msid",value:`${t||"-"} ${r}`}),s&&(e.rtcp.cname&&this._mediaObject.ssrcs.push({id:s,attribute:"cname",value:e.rtcp.cname}),this._mediaObject.ssrcs.push({id:s,attribute:"msid",value:`${t||"-"} ${r}`}),this._mediaObject.ssrcGroups.push({semantics:"FID",ssrcs:`${n} ${s}`}))}planBStopReceiving({offerRtpParameters:e}){const t=e.encodings[0],r=t.ssrc,i=t.rtx&&t.rtx.ssrc?t.rtx.ssrc:void 0;this._mediaObject.ssrcs=this._mediaObject.ssrcs.filter((e=>e.id!==r&&e.id!==i)),i&&(this._mediaObject.ssrcGroups=this._mediaObject.ssrcGroups.filter((e=>e.ssrcs!==`${r} ${i}`)))}};var Yn=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Xn=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),es=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Yn(t,e,r);return Xn(t,e),t};Object.defineProperty(Vn,"__esModule",{value:!0}),Vn.RemoteSdp=void 0;const ts=es(bn),rs=Gn,is=new Er.Logger("RemoteSdp");Vn.RemoteSdp=class{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:n,planB:s=!1}){if(this._mediaSections=[],this._midToIndex=new Map,this._iceParameters=e,this._iceCandidates=t,this._dtlsParameters=r,this._sctpParameters=i,this._plainRtpParameters=n,this._planB=s,this._sdpObject={version:0,origin:{address:"0.0.0.0",ipVer:4,netType:"IN",sessionId:1e4,sessionVersion:0,username:"mediasoup-client"},name:"-",timing:{start:0,stop:0},media:[]},e&&e.iceLite&&(this._sdpObject.icelite="ice-lite"),r){this._sdpObject.msidSemantic={semantic:"WMS",token:"*"};const e=this._dtlsParameters.fingerprints.length;this._sdpObject.fingerprint={type:r.fingerprints[e-1].algorithm,hash:r.fingerprints[e-1].value},this._sdpObject.groups=[{type:"BUNDLE",mids:""}]}n&&(this._sdpObject.origin.address=n.ip,this._sdpObject.origin.ipVer=n.ipVersion)}updateIceParameters(e){is.debug("updateIceParameters() [iceParameters:%o]",e),this._iceParameters=e,this._sdpObject.icelite=e.iceLite?"ice-lite":void 0;for(const t of this._mediaSections)t.setIceParameters(e)}updateDtlsRole(e){is.debug("updateDtlsRole() [role:%s]",e),this._dtlsParameters.role=e;for(const t of this._mediaSections)t.setDtlsRole(e)}getNextMediaSectionIdx(){for(let e=0;e<this._mediaSections.length;++e){const t=this._mediaSections[e];if(t.closed)return{idx:e,reuseMid:t.mid}}return{idx:this._mediaSections.length}}send({offerMediaObject:e,reuseMid:t,offerRtpParameters:r,answerRtpParameters:i,codecOptions:n,extmapAllowMixed:s=!1}){const o=new rs.AnswerMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,plainRtpParameters:this._plainRtpParameters,planB:this._planB,offerMediaObject:e,offerRtpParameters:r,answerRtpParameters:i,codecOptions:n,extmapAllowMixed:s});t?this._replaceMediaSection(o,t):this._midToIndex.has(o.mid)?this._replaceMediaSection(o):this._addMediaSection(o)}receive({mid:e,kind:t,offerRtpParameters:r,streamId:i,trackId:n}){const s=this._midToIndex.get(e);let o;if(void 0!==s&&(o=this._mediaSections[s]),o)o.planBReceive({offerRtpParameters:r,streamId:i,trackId:n}),this._replaceMediaSection(o);else{o=new rs.OfferMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,plainRtpParameters:this._plainRtpParameters,planB:this._planB,mid:e,kind:t,offerRtpParameters:r,streamId:i,trackId:n});const s=this._mediaSections.find((e=>e.closed));s?this._replaceMediaSection(o,s.mid):this._addMediaSection(o)}}pauseMediaSection(e){this._findMediaSection(e).pause()}resumeSendingMediaSection(e){this._findMediaSection(e).resume()}resumeReceivingMediaSection(e){this._findMediaSection(e).resume()}disableMediaSection(e){this._findMediaSection(e).disable()}closeMediaSection(e){const t=this._findMediaSection(e);return e===this._firstMid?(is.debug("closeMediaSection() | cannot close first media section, disabling it instead [mid:%s]",e),this.disableMediaSection(e),!1):(t.close(),this._regenerateBundleMids(),!0)}muxMediaSectionSimulcast(e,t){const r=this._findMediaSection(e);r.muxSimulcastStreams(t),this._replaceMediaSection(r)}planBStopReceiving({mid:e,offerRtpParameters:t}){const r=this._findMediaSection(e);r.planBStopReceiving({offerRtpParameters:t}),this._replaceMediaSection(r)}sendSctpAssociation({offerMediaObject:e}){const t=new rs.AnswerMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,sctpParameters:this._sctpParameters,plainRtpParameters:this._plainRtpParameters,offerMediaObject:e});this._addMediaSection(t)}receiveSctpAssociation({oldDataChannelSpec:e=!1}={}){const t=new rs.OfferMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,sctpParameters:this._sctpParameters,plainRtpParameters:this._plainRtpParameters,mid:"datachannel",kind:"application",oldDataChannelSpec:e});this._addMediaSection(t)}getSdp(){return this._sdpObject.origin.sessionVersion++,ts.write(this._sdpObject)}_addMediaSection(e){this._firstMid||(this._firstMid=e.mid),this._mediaSections.push(e),this._midToIndex.set(e.mid,this._mediaSections.length-1),this._sdpObject.media.push(e.getObject()),this._regenerateBundleMids()}_replaceMediaSection(e,t){if("string"==typeof t){const r=this._midToIndex.get(t);if(void 0===r)throw new Error(`no media section found for reuseMid '${t}'`);const i=this._mediaSections[r];this._mediaSections[r]=e,this._midToIndex.delete(i.mid),this._midToIndex.set(e.mid,r),this._sdpObject.media[r]=e.getObject(),this._regenerateBundleMids()}else{const t=this._midToIndex.get(e.mid);if(void 0===t)throw new Error(`no media section found with mid '${e.mid}'`);this._mediaSections[t]=e,this._sdpObject.media[t]=e.getObject()}}_findMediaSection(e){const t=this._midToIndex.get(e);if(void 0===t)throw new Error(`no media section found with mid '${e}'`);return this._mediaSections[t]}_regenerateBundleMids(){this._dtlsParameters&&(this._sdpObject.groups[0].mids=this._mediaSections.filter((e=>!e.closed)).map((e=>e.mid)).join(" "))}};var ns={};Object.defineProperty(ns,"__esModule",{value:!0}),ns.parse=void 0;const ss=new RegExp("^[LS]([1-9]\\d{0,1})T([1-9]\\d{0,1})");ns.parse=function(e){const t=ss.exec(e||"");return t?{spatialLayers:Number(t[1]),temporalLayers:Number(t[2])}:{spatialLayers:1,temporalLayers:1}};var os=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),as=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),cs=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&os(t,e,r);return as(t,e),t};Object.defineProperty(vn,"__esModule",{value:!0});var ds=vn.Chrome111=void 0;const ls=cs(bn),ps=Er,us=cs(Ur),hs=cs($r),ms=cs(Mn),fs=cs(Bn),gs=cs(Fn),vs=Br,bs=zn,ys=Vn,_s=ns,ws=new ps.Logger("Chrome111"),Ss={OS:1024,MIS:1024};class Cs extends bs.HandlerInterface{static createFactory(){return()=>new Cs}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome111"}close(){if(ws.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){ws.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=ls.parse(t.sdp),i=ms.extractRtpCapabilities({sdpObject:r});return gs.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return ws.debug("getNativeSctpCapabilities()"),{numStreams:Ss}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),ws.debug("run()"),this._direction=e,this._remoteSdp=new ys.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:hs.getSendingRtpParameters("audio",d),video:hs.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:hs.getSendingRemoteRtpParameters("audio",d),video:hs.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):(ws.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})))}async updateIceServers(e){this.assertNotClosed(),ws.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),ws.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});ws.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};ws.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};ws.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();ws.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){if(this.assertNotClosed(),this.assertSendDirection(),ws.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1){t.forEach(((e,t)=>{e.rid=`r${t}`}));let e=1,r=1;for(const e of t){const t=e.scalabilityMode?(0,_s.parse)(e.scalabilityMode).temporalLayers:3;t>r&&(r=t)}for(const i of t)i.rid="r"+e++,i.scalabilityMode=`L1T${r}`}const n=us.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=hs.reduceCodecs(n.codecs,i);const s=us.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=hs.reduceCodecs(s.codecs,i);const o=this._remoteSdp.getNextMediaSectionIdx(),a=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t}),c=await this._pc.createOffer();let d=ls.parse(c.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:d}),ws.debug("send() | calling pc.setLocalDescription() [offer:%o]",c),await this._pc.setLocalDescription(c);const l=a.mid;n.mid=l,d=ls.parse(this._pc.localDescription.sdp);const p=d.media[o.idx];if(n.rtcp.cname=ms.getCname({offerMediaObject:p}),t)if(1===t.length){const e=fs.getRtpEncodings({offerMediaObject:p});Object.assign(e[0],t[0]),n.encodings=e}else n.encodings=t;else n.encodings=fs.getRtpEncodings({offerMediaObject:p});this._remoteSdp.send({offerMediaObject:p,reuseMid:o.reuseMid,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const u={type:"answer",sdp:this._remoteSdp.getSdp()};return ws.debug("send() | calling pc.setRemoteDescription() [answer:%o]",u),await this._pc.setRemoteDescription(u),this._mapMidTransceiver.set(l,a),{localId:l,rtpParameters:n,rtpSender:a.sender}}async stopSending(e){if(this.assertSendDirection(),ws.debug("stopSending() [localId:%s]",e),this._closed)return;const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();ws.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};ws.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),ws.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();ws.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};ws.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),ws.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(this._remoteSdp.resumeSendingMediaSection(e),!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly";const r=await this._pc.createOffer();ws.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};ws.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?ws.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):ws.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),ws.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();ws.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};ws.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),ws.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();ws.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};ws.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};ws.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Ss.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=ls.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),ws.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};ws.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;ws.debug("receive() [trackId:%s, kind:%s]",e,i);const o=n.mid||String(this._mapMidTransceiver.size);r.set(e,o),this._remoteSdp.receive({mid:o,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};ws.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=ls.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,n=r.get(e),o=s.media.find((e=>String(e.mid)===n));ms.applyCodecParameters({offerRtpParameters:i,answerMediaObject:o})}n={type:"answer",sdp:ls.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),ws.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const i of e){const{trackId:e}=i,n=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),t.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){ws.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};ws.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();ws.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){ws.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};ws.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();ws.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){ws.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};ws.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();ws.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:o,protocol:r};ws.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};ws.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=ls.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}ws.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=ls.parse(this._pc.localDescription.sdp));const r=ms.extractIceParameters({sdpObject:t}),i=ms.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new vs.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}ds=vn.Chrome111=Cs;var Rs={},Ts=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Ps=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ks=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Ts(t,e,r);return Ps(t,e),t};Object.defineProperty(Rs,"__esModule",{value:!0}),Rs.Chrome74=void 0;const Os=ks(bn),Es=Er,Ds=ks(Ur),Is=ks($r),xs=ks(Mn),Ms=ks(Bn),js=ks(Fn),Ls=Br,As=zn,Ns=Vn,Bs=ns,Fs=new Es.Logger("Chrome74"),zs={OS:1024,MIS:1024};class Us extends As.HandlerInterface{static createFactory(){return()=>new Us}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome74"}close(){if(Fs.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Fs.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=Os.parse(t.sdp),i=xs.extractRtpCapabilities({sdpObject:r});return js.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Fs.debug("getNativeSctpCapabilities()"),{numStreams:zs}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){Fs.debug("run()"),this._direction=e,this._remoteSdp=new Ns.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:Is.getSendingRtpParameters("audio",d),video:Is.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Is.getSendingRemoteRtpParameters("audio",d),video:Is.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):(Fs.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})))}async updateIceServers(e){this.assertNotClosed(),Fs.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),Fs.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Fs.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Fs.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Fs.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Fs.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertNotClosed(),this.assertSendDirection(),Fs.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1&&t.forEach(((e,t)=>{e.rid=`r${t}`}));const n=Ds.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=Is.reduceCodecs(n.codecs,i);const s=Ds.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=Is.reduceCodecs(s.codecs,i);const o=this._remoteSdp.getNextMediaSectionIdx(),a=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t});let c,d=await this._pc.createOffer(),l=Os.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l});let p=!1;const u=(0,Bs.parse)((t||[{}])[0].scalabilityMode);t&&1===t.length&&u.spatialLayers>1&&"video/vp9"===n.codecs[0].mimeType.toLowerCase()&&(Fs.debug("send() | enabling legacy simulcast for VP9 SVC"),p=!0,l=Os.parse(d.sdp),c=l.media[o.idx],Ms.addLegacySimulcast({offerMediaObject:c,numStreams:u.spatialLayers}),d={type:"offer",sdp:Os.write(l)}),Fs.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);const h=a.mid;if(n.mid=h,l=Os.parse(this._pc.localDescription.sdp),c=l.media[o.idx],n.rtcp.cname=xs.getCname({offerMediaObject:c}),t)if(1===t.length){let e=Ms.getRtpEncodings({offerMediaObject:c});Object.assign(e[0],t[0]),p&&(e=[e[0]]),n.encodings=e}else n.encodings=t;else n.encodings=Ms.getRtpEncodings({offerMediaObject:c});if(n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(const e of n.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${u.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:o.reuseMid,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return Fs.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),this._mapMidTransceiver.set(h,a),{localId:h,rtpParameters:n,rtpSender:a.sender}}async stopSending(e){if(this.assertSendDirection(),Fs.debug("stopSending() [localId:%s]",e),this._closed)return;const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();Fs.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Fs.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Fs.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();Fs.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Fs.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Fs.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(this._remoteSdp.resumeSendingMediaSection(e),!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly";const r=await this._pc.createOffer();Fs.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Fs.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Fs.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Fs.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),Fs.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Fs.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Fs.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Fs.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Fs.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Fs.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};Fs.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%zs.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Os.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Fs.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};Fs.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;Fs.debug("receive() [trackId:%s, kind:%s]",e,i);const o=n.mid||String(this._mapMidTransceiver.size);r.set(e,o),this._remoteSdp.receive({mid:o,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Fs.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=Os.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,n=r.get(e),o=s.media.find((e=>String(e.mid)===n));xs.applyCodecParameters({offerRtpParameters:i,answerMediaObject:o})}n={type:"answer",sdp:Os.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),Fs.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const i of e){const{trackId:e}=i,n=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),t.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Fs.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Fs.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Fs.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Fs.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Fs.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Fs.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Fs.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Fs.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Fs.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:o,protocol:r};Fs.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};Fs.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Os.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Fs.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Os.parse(this._pc.localDescription.sdp));const r=xs.extractIceParameters({sdpObject:t}),i=xs.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new Ls.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Rs.Chrome74=Us;var $s={},Vs=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Gs=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),qs=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Vs(t,e,r);return Gs(t,e),t};Object.defineProperty($s,"__esModule",{value:!0}),$s.Chrome70=void 0;const Hs=qs(bn),Ws=Er,Ks=qs(Ur),Js=qs($r),Qs=qs(Mn),Zs=qs(Bn),Ys=zn,Xs=Vn,eo=ns,to=new Ws.Logger("Chrome70"),ro={OS:1024,MIS:1024};class io extends Ys.HandlerInterface{static createFactory(){return()=>new io}constructor(){super(),this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome70"}close(){if(to.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){to.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=Hs.parse(t.sdp);return Qs.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return to.debug("getNativeSctpCapabilities()"),{numStreams:ro}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){to.debug("run()"),this._direction=e,this._remoteSdp=new Xs.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:Js.getSendingRtpParameters("audio",d),video:Js.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Js.getSendingRemoteRtpParameters("audio",d),video:Js.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(to.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){to.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(to.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});to.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};to.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};to.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();to.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertSendDirection(),to.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const n=Ks.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=Js.reduceCodecs(n.codecs,i);const s=Ks.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=Js.reduceCodecs(s.codecs,i);const o=this._remoteSdp.getNextMediaSectionIdx(),a=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});let c,d=await this._pc.createOffer(),l=Hs.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l}),t&&t.length>1&&(to.debug("send() | enabling legacy simulcast"),l=Hs.parse(d.sdp),c=l.media[o.idx],Zs.addLegacySimulcast({offerMediaObject:c,numStreams:t.length}),d={type:"offer",sdp:Hs.write(l)});let p=!1;const u=(0,eo.parse)((t||[{}])[0].scalabilityMode);if(t&&1===t.length&&u.spatialLayers>1&&"video/vp9"===n.codecs[0].mimeType.toLowerCase()&&(to.debug("send() | enabling legacy simulcast for VP9 SVC"),p=!0,l=Hs.parse(d.sdp),c=l.media[o.idx],Zs.addLegacySimulcast({offerMediaObject:c,numStreams:u.spatialLayers}),d={type:"offer",sdp:Hs.write(l)}),to.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d),t){to.debug("send() | applying given encodings");const e=a.sender.getParameters();for(let r=0;r<(e.encodings||[]).length;++r){const i=e.encodings[r],n=t[r];if(!n)break;e.encodings[r]=Object.assign(i,n)}await a.sender.setParameters(e)}const h=a.mid;if(n.mid=h,l=Hs.parse(this._pc.localDescription.sdp),c=l.media[o.idx],n.rtcp.cname=Qs.getCname({offerMediaObject:c}),n.encodings=Zs.getRtpEncodings({offerMediaObject:c}),t)for(let e=0;e<n.encodings.length;++e)t[e]&&Object.assign(n.encodings[e],t[e]);if(p&&(n.encodings=[n.encodings[0]]),n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(const e of n.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:o.reuseMid,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return to.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),this._mapMidTransceiver.set(h,a),{localId:h,rtpParameters:n,rtpSender:a.sender}}async stopSending(e){this.assertSendDirection(),to.debug("stopSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();to.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};to.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){this.assertSendDirection(),t?to.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):to.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertSendDirection(),to.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();to.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};to.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertSendDirection(),to.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();to.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};to.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:n};to.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%ro.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Hs.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),to.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};to.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;to.debug("receive() [trackId:%s, kind:%s]",e,i);const o=n.mid||String(this._mapMidTransceiver.size);r.set(e,o),this._remoteSdp.receive({mid:o,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};to.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=Hs.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,n=r.get(e),o=s.media.find((e=>String(e.mid)===n));Qs.applyCodecParameters({offerRtpParameters:i,answerMediaObject:o})}n={type:"answer",sdp:Hs.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),to.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const i of e){const{trackId:e}=i,n=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),t.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){to.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};to.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();to.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmitTime:s,maxRetransmits:o,protocol:r};to.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};to.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Hs.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}to.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Hs.parse(this._pc.localDescription.sdp));const r=Qs.extractIceParameters({sdpObject:t}),i=Qs.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}$s.Chrome70=io;var no={},so={};Object.defineProperty(so,"__esModule",{value:!0}),so.addLegacySimulcast=so.getRtpEncodings=void 0,so.getRtpEncodings=function({offerMediaObject:e,track:t}){const r=new Set;for(const i of e.ssrcs||[]){if("msid"!==i.attribute)continue;if(i.value.split(" ")[1]===t.id){const e=i.id;r.add(e)}}if(0===r.size)throw new Error(`a=ssrc line with msid information not found [track.id:${t.id}]`);const i=new Map;for(const t of e.ssrcGroups||[]){if("FID"!==t.semantics)continue;let[e,n]=t.ssrcs.split(/\s+/);e=Number(e),n=Number(n),r.has(e)&&(r.delete(e),r.delete(n),i.set(e,n))}for(const e of r)i.set(e,null);const n=[];for(const[e,t]of i){const r={ssrc:e};t&&(r.rtx={ssrc:t}),n.push(r)}return n},so.addLegacySimulcast=function({offerMediaObject:e,track:t,numStreams:r}){if(r<=1)throw new TypeError("numStreams must be greater than 1");let i,n,s;if(!(e.ssrcs||[]).find((e=>{if("msid"!==e.attribute)return!1;return e.value.split(" ")[1]===t.id&&(i=e.id,s=e.value.split(" ")[0],!0)})))throw new Error(`a=ssrc line with msid information not found [track.id:${t.id}]`);(e.ssrcGroups||[]).some((e=>{if("FID"!==e.semantics)return!1;const t=e.ssrcs.split(/\s+/);return Number(t[0])===i&&(n=Number(t[1]),!0)}));const o=e.ssrcs.find((e=>"cname"===e.attribute&&e.id===i));if(!o)throw new Error(`a=ssrc line with cname information not found [track.id:${t.id}]`);const a=o.value,c=[],d=[];for(let e=0;e<r;++e)c.push(i+e),n&&d.push(n+e);e.ssrcGroups=e.ssrcGroups||[],e.ssrcs=e.ssrcs||[],e.ssrcGroups.push({semantics:"SIM",ssrcs:c.join(" ")});for(let r=0;r<c.length;++r){const i=c[r];e.ssrcs.push({id:i,attribute:"cname",value:a}),e.ssrcs.push({id:i,attribute:"msid",value:`${s} ${t.id}`})}for(let r=0;r<d.length;++r){const i=c[r],n=d[r];e.ssrcs.push({id:n,attribute:"cname",value:a}),e.ssrcs.push({id:n,attribute:"msid",value:`${s} ${t.id}`}),e.ssrcGroups.push({semantics:"FID",ssrcs:`${i} ${n}`})}};var oo=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),ao=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),co=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&oo(t,e,r);return ao(t,e),t};Object.defineProperty(no,"__esModule",{value:!0}),no.Chrome67=void 0;const lo=co(bn),po=Er,uo=co(Ur),ho=co($r),mo=co(Mn),fo=co(so),go=zn,vo=Vn,bo=new po.Logger("Chrome67"),yo={OS:1024,MIS:1024};class _o extends go.HandlerInterface{static createFactory(){return()=>new _o}constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdRtpSender=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome67"}close(){if(bo.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){bo.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=lo.parse(t.sdp);return mo.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return bo.debug("getNativeSctpCapabilities()"),{numStreams:yo}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){bo.debug("run()"),this._direction=e,this._remoteSdp=new vo.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:ho.getSendingRtpParameters("audio",d),video:ho.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:ho.getSendingRemoteRtpParameters("audio",d),video:ho.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(bo.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){bo.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(bo.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});bo.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};bo.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};bo.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();bo.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertSendDirection(),bo.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&bo.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let n,s=await this._pc.createOffer(),o=lo.parse(s.sdp);const a=uo.clone(this._sendingRtpParametersByKind[e.kind]);a.codecs=ho.reduceCodecs(a.codecs);const c=uo.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=ho.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(bo.debug("send() | enabling simulcast"),o=lo.parse(s.sdp),n=o.media.find((e=>"video"===e.type)),fo.addLegacySimulcast({offerMediaObject:n,track:e,numStreams:t.length}),s={type:"offer",sdp:lo.write(o)}),bo.debug("send() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s),o=lo.parse(this._pc.localDescription.sdp),n=o.media.find((t=>t.type===e.kind)),a.rtcp.cname=mo.getCname({offerMediaObject:n}),a.encodings=fo.getRtpEncodings({offerMediaObject:n,track:e}),t)for(let e=0;e<a.encodings.length;++e)t[e]&&Object.assign(a.encodings[e],t[e]);if(a.encodings.length>1&&"video/vp8"===a.codecs[0].mimeType.toLowerCase())for(const e of a.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:n,offerRtpParameters:a,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};bo.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);this._nextSendLocalId++;const p=this._pc.getSenders().find((t=>t.track===e));return this._mapSendLocalIdRtpSender.set(l,p),{localId:l,rtpParameters:a,rtpSender:p}}async stopSending(e){this.assertSendDirection(),bo.debug("stopSending() [localId:%s]",e);const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");this._pc.removeTrack(t),t.track&&this._sendStream.removeTrack(t.track),this._mapSendLocalIdRtpSender.delete(e);const r=await this._pc.createOffer();bo.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void bo.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const i={type:"answer",sdp:this._remoteSdp.getSdp()};bo.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){this.assertSendDirection(),t?bo.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):bo.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.track;await r.replaceTrack(t),i&&this._sendStream.removeTrack(i),t&&this._sendStream.addTrack(t)}async setMaxSpatialLayer(e,t){this.assertSendDirection(),bo.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.setParameters(i)}async setRtpEncodingParameters(e,t){this.assertSendDirection(),bo.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.setParameters(i)}async getSenderStats(e){this.assertSendDirection();const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");return t.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:n};bo.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%yo.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=lo.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),bo.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};bo.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:i,streamId:n}=t;bo.debug("receive() [trackId:%s, kind:%s]",e,r);const s=r;this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:i,streamId:n||i.rtcp.cname,trackId:e})}const r={type:"offer",sdp:this._remoteSdp.getSdp()};bo.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer();const n=lo.parse(i.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,s=n.media.find((e=>String(e.mid)===i));mo.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}i={type:"answer",sdp:lo.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),bo.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const r of e){const{kind:e,trackId:i,rtpParameters:n}=r,s=i,o=e,a=this._pc.getReceivers().find((e=>e.track&&e.track.id===s));if(!a)throw new Error("new RTCRtpReceiver not");this._mapRecvLocalIdInfo.set(s,{mid:o,rtpParameters:n,rtpReceiver:a}),t.push({localId:s,track:a.track,rtpReceiver:a})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){bo.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};bo.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();bo.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){this.assertRecvDirection();const{rtpReceiver:t}=this._mapRecvLocalIdInfo.get(e)||{};if(!t)throw new Error("associated RTCRtpReceiver not found");return t.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmitTime:s,maxRetransmits:o,protocol:r};bo.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};bo.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=lo.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}bo.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=lo.parse(this._pc.localDescription.sdp));const r=mo.extractIceParameters({sdpObject:t}),i=mo.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}no.Chrome67=_o;var wo={},So=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Co=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ro=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&So(t,e,r);return Co(t,e),t};Object.defineProperty(wo,"__esModule",{value:!0}),wo.Chrome55=void 0;const To=Ro(bn),Po=Er,ko=Br,Oo=Ro(Ur),Eo=Ro($r),Do=Ro(Mn),Io=Ro(so),xo=zn,Mo=Vn,jo=new Po.Logger("Chrome55"),Lo={OS:1024,MIS:1024};class Ao extends xo.HandlerInterface{static createFactory(){return()=>new Ao}constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdTrack=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome55"}close(){if(jo.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){jo.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=To.parse(t.sdp);return Do.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return jo.debug("getNativeSctpCapabilities()"),{numStreams:Lo}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){jo.debug("run()"),this._direction=e,this._remoteSdp=new Mo.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:Eo.getSendingRtpParameters("audio",d),video:Eo.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Eo.getSendingRemoteRtpParameters("audio",d),video:Eo.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(jo.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){jo.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(jo.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});jo.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};jo.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};jo.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();jo.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertSendDirection(),jo.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&jo.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let n,s=await this._pc.createOffer(),o=To.parse(s.sdp);const a=Oo.clone(this._sendingRtpParametersByKind[e.kind]);a.codecs=Eo.reduceCodecs(a.codecs);const c=Oo.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=Eo.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(jo.debug("send() | enabling simulcast"),o=To.parse(s.sdp),n=o.media.find((e=>"video"===e.type)),Io.addLegacySimulcast({offerMediaObject:n,track:e,numStreams:t.length}),s={type:"offer",sdp:To.write(o)}),jo.debug("send() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s),o=To.parse(this._pc.localDescription.sdp),n=o.media.find((t=>t.type===e.kind)),a.rtcp.cname=Do.getCname({offerMediaObject:n}),a.encodings=Io.getRtpEncodings({offerMediaObject:n,track:e}),t)for(let e=0;e<a.encodings.length;++e)t[e]&&Object.assign(a.encodings[e],t[e]);if(a.encodings.length>1&&"video/vp8"===a.codecs[0].mimeType.toLowerCase())for(const e of a.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:n,offerRtpParameters:a,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};jo.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);return this._nextSendLocalId++,this._mapSendLocalIdTrack.set(l,e),{localId:l,rtpParameters:a}}async stopSending(e){this.assertSendDirection(),jo.debug("stopSending() [localId:%s]",e);const t=this._mapSendLocalIdTrack.get(e);if(!t)throw new Error("track not found");this._mapSendLocalIdTrack.delete(e),this._sendStream.removeTrack(t),this._pc.addStream(this._sendStream);const r=await this._pc.createOffer();jo.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void jo.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const i={type:"answer",sdp:this._remoteSdp.getSdp()};jo.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){throw new ko.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new ko.UnsupportedError(" not implemented")}async setRtpEncodingParameters(e,t){throw new ko.UnsupportedError("not supported")}async getSenderStats(e){throw new ko.UnsupportedError("not implemented")}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:n};jo.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Lo.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=To.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),jo.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};jo.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:i,streamId:n}=t;jo.debug("receive() [trackId:%s, kind:%s]",e,r);const s=r;this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:i,streamId:n||i.rtcp.cname,trackId:e})}const r={type:"offer",sdp:this._remoteSdp.getSdp()};jo.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer();const n=To.parse(i.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,s=n.media.find((e=>String(e.mid)===i));Do.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}i={type:"answer",sdp:To.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),jo.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const r of e){const{kind:e,trackId:i,rtpParameters:n}=r,s=e,o=i,a=r.streamId||n.rtcp.cname,c=this._pc.getRemoteStreams().find((e=>e.id===a)).getTrackById(o);if(!c)throw new Error("remote track not found");this._mapRecvLocalIdInfo.set(o,{mid:s,rtpParameters:n}),t.push({localId:o,track:c})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){jo.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};jo.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();jo.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new ko.UnsupportedError("not implemented")}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmitTime:s,maxRetransmits:o,protocol:r};jo.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};jo.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=To.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}jo.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=To.parse(this._pc.localDescription.sdp));const r=Do.extractIceParameters({sdpObject:t}),i=Do.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}wo.Chrome55=Ao;var No={},Bo=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Fo=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),zo=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Bo(t,e,r);return Fo(t,e),t};Object.defineProperty(No,"__esModule",{value:!0}),No.Firefox60=void 0;const Uo=zo(bn),$o=Er,Vo=Br,Go=zo(Ur),qo=zo($r),Ho=zo(Mn),Wo=zo(Bn),Ko=zn,Jo=Vn,Qo=ns,Zo=new $o.Logger("Firefox60"),Yo={OS:16,MIS:2048};class Xo extends Ko.HandlerInterface{static createFactory(){return()=>new Xo}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Firefox60"}close(){if(Zo.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Zo.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require"}),t=document.createElement("canvas");t.getContext("2d");const r=t.captureStream().getVideoTracks()[0];try{e.addTransceiver("audio",{direction:"sendrecv"});const i=e.addTransceiver(r,{direction:"sendrecv"}),n=i.sender.getParameters(),s=[{rid:"r0",maxBitrate:1e5},{rid:"r1",maxBitrate:5e5}];n.encodings=s,await i.sender.setParameters(n);const o=await e.createOffer();try{t.remove()}catch(e){}try{r.stop()}catch(e){}try{e.close()}catch(e){}const a=Uo.parse(o.sdp);return Ho.extractRtpCapabilities({sdpObject:a})}catch(i){try{t.remove()}catch(e){}try{r.stop()}catch(e){}try{e.close()}catch(e){}throw i}}async getNativeSctpCapabilities(){return Zo.debug("getNativeSctpCapabilities()"),{numStreams:Yo}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),Zo.debug("run()"),this._direction=e,this._remoteSdp=new Jo.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:qo.getSendingRtpParameters("audio",d),video:qo.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:qo.getSendingRemoteRtpParameters("audio",d),video:qo.getSendingRemoteRtpParameters("video",d)},this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(Zo.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){throw this.assertNotClosed(),new Vo.UnsupportedError("not supported")}async restartIce(e){if(this.assertNotClosed(),Zo.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Zo.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Zo.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Zo.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Zo.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertNotClosed(),this.assertSendDirection(),Zo.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&(t=Go.clone(t)).length>1&&(t.forEach(((e,t)=>{e.rid=`r${t}`})),t.reverse());const n=Go.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=qo.reduceCodecs(n.codecs,i);const s=Go.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=qo.reduceCodecs(s.codecs,i);const o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});if(t){const e=o.sender.getParameters();e.encodings=t,await o.sender.setParameters(e)}const a=await this._pc.createOffer();let c=Uo.parse(a.sdp);this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:c});const d=(0,Qo.parse)((t||[{}])[0].scalabilityMode);Zo.debug("send() | calling pc.setLocalDescription() [offer:%o]",a),await this._pc.setLocalDescription(a);const l=o.mid;n.mid=l,c=Uo.parse(this._pc.localDescription.sdp);const p=c.media[c.media.length-1];if(n.rtcp.cname=Ho.getCname({offerMediaObject:p}),t)if(1===t.length){const e=Wo.getRtpEncodings({offerMediaObject:p});Object.assign(e[0],t[0]),n.encodings=e}else n.encodings=t.reverse();else n.encodings=Wo.getRtpEncodings({offerMediaObject:p});if(n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(const e of n.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${d.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:p,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const u={type:"answer",sdp:this._remoteSdp.getSdp()};return Zo.debug("send() | calling pc.setRemoteDescription() [answer:%o]",u),await this._pc.setRemoteDescription(u),this._mapMidTransceiver.set(l,o),{localId:l,rtpParameters:n,rtpSender:o.sender}}async stopSending(e){if(this.assertSendDirection(),Zo.debug("stopSending() [localId:%s]",e),this._closed)return;const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated transceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender),this._remoteSdp.disableMediaSection(t.mid);const r=await this._pc.createOffer();Zo.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Zo.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Zo.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();Zo.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Zo.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Zo.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly",this._remoteSdp.resumeSendingMediaSection(e);const r=await this._pc.createOffer();Zo.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Zo.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Zo.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Zo.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),Zo.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated transceiver not found");const i=r.sender.getParameters();t=i.encodings.length-1-t,i.encodings.forEach(((e,r)=>{e.active=r>=t})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Zo.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Zo.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Zo.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Zo.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Zo.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};Zo.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Yo.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Uo.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:t}),Zo.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};Zo.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;Zo.debug("receive() [trackId:%s, kind:%s]",e,i);const o=n.mid||String(this._mapMidTransceiver.size);r.set(e,o),this._remoteSdp.receive({mid:o,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Zo.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=Uo.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,o=r.get(e),a=s.media.find((e=>String(e.mid)===o));Ho.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a}),n={type:"answer",sdp:Uo.write(s)}}this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:s}),Zo.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const i of e){const{trackId:e}=i,n=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),t.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Zo.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Zo.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Zo.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Zo.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Zo.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Zo.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Zo.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Zo.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Zo.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:o,protocol:r};Zo.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};Zo.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Uo.parse(t.sdp);await this.setupTransport({localDtlsRole:"client",localSdpObject:e})}Zo.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Uo.parse(this._pc.localDescription.sdp));const r=Ho.extractIceParameters({sdpObject:t}),i=Ho.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new Vo.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}No.Firefox60=Xo;var ea={},ta=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),ra=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ia=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&ta(t,e,r);return ra(t,e),t};Object.defineProperty(ea,"__esModule",{value:!0}),ea.Safari12=void 0;const na=ia(bn),sa=Er,oa=ia(Ur),aa=ia($r),ca=ia(Mn),da=ia(Bn),la=ia(Fn),pa=Br,ua=zn,ha=Vn,ma=ns,fa=new sa.Logger("Safari12"),ga={OS:1024,MIS:1024};class va extends ua.HandlerInterface{static createFactory(){return()=>new va}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Safari12"}close(){if(fa.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){fa.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=na.parse(t.sdp),i=ca.extractRtpCapabilities({sdpObject:r});return la.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return fa.debug("getNativeSctpCapabilities()"),{numStreams:ga}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),fa.debug("run()"),this._direction=e,this._remoteSdp=new ha.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:aa.getSendingRtpParameters("audio",d),video:aa.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:aa.getSendingRemoteRtpParameters("audio",d),video:aa.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(fa.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){this.assertNotClosed(),fa.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),fa.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});fa.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};fa.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};fa.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();fa.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertNotClosed(),this.assertSendDirection(),fa.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const n=oa.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=aa.reduceCodecs(n.codecs,i);const s=oa.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=aa.reduceCodecs(s.codecs,i);const o=this._remoteSdp.getNextMediaSectionIdx(),a=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});let c,d=await this._pc.createOffer(),l=na.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l});const p=(0,ma.parse)((t||[{}])[0].scalabilityMode);t&&t.length>1&&(fa.debug("send() | enabling legacy simulcast"),l=na.parse(d.sdp),c=l.media[o.idx],da.addLegacySimulcast({offerMediaObject:c,numStreams:t.length}),d={type:"offer",sdp:na.write(l)}),fa.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);const u=a.mid;if(n.mid=u,l=na.parse(this._pc.localDescription.sdp),c=l.media[o.idx],n.rtcp.cname=ca.getCname({offerMediaObject:c}),n.encodings=da.getRtpEncodings({offerMediaObject:c}),t)for(let e=0;e<n.encodings.length;++e)t[e]&&Object.assign(n.encodings[e],t[e]);if(n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(const e of n.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${p.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:o.reuseMid,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r});const h={type:"answer",sdp:this._remoteSdp.getSdp()};return fa.debug("send() | calling pc.setRemoteDescription() [answer:%o]",h),await this._pc.setRemoteDescription(h),this._mapMidTransceiver.set(u,a),{localId:u,rtpParameters:n,rtpSender:a.sender}}async stopSending(e){if(this.assertSendDirection(),this._closed)return;fa.debug("stopSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();fa.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};fa.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),fa.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();fa.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};fa.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),fa.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly",this._remoteSdp.resumeSendingMediaSection(e);const r=await this._pc.createOffer();fa.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};fa.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?fa.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):fa.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),fa.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();fa.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};fa.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),fa.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();fa.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};fa.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};fa.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%ga.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=na.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),fa.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};fa.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;fa.debug("receive() [trackId:%s, kind:%s]",e,i);const o=n.mid||String(this._mapMidTransceiver.size);r.set(e,o),this._remoteSdp.receive({mid:o,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};fa.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=na.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,n=r.get(e),o=s.media.find((e=>String(e.mid)===n));ca.applyCodecParameters({offerRtpParameters:i,answerMediaObject:o})}n={type:"answer",sdp:na.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),fa.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const i of e){const{trackId:e}=i,n=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),t.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){fa.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};fa.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();fa.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){fa.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};fa.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();fa.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){fa.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};fa.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();fa.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:o,protocol:r};fa.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};fa.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=na.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}fa.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=na.parse(this._pc.localDescription.sdp));const r=ca.extractIceParameters({sdpObject:t}),i=ca.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new pa.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}ea.Safari12=va;var ba={},ya=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),_a=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),wa=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&ya(t,e,r);return _a(t,e),t};Object.defineProperty(ba,"__esModule",{value:!0}),ba.Safari11=void 0;const Sa=wa(bn),Ca=Er,Ra=wa(Ur),Ta=wa($r),Pa=wa(Mn),ka=wa(so),Oa=zn,Ea=Vn,Da=new Ca.Logger("Safari11"),Ia={OS:1024,MIS:1024};class xa extends Oa.HandlerInterface{static createFactory(){return()=>new xa}constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdRtpSender=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Safari11"}close(){if(Da.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){Da.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=Sa.parse(t.sdp);return Pa.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Da.debug("getNativeSctpCapabilities()"),{numStreams:Ia}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){Da.debug("run()"),this._direction=e,this._remoteSdp=new Ea.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:Ta.getSendingRtpParameters("audio",d),video:Ta.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Ta.getSendingRemoteRtpParameters("audio",d),video:Ta.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(Da.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){Da.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Da.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Da.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Da.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Da.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Da.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertSendDirection(),Da.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&Da.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let n,s=await this._pc.createOffer(),o=Sa.parse(s.sdp);const a=Ra.clone(this._sendingRtpParametersByKind[e.kind]);a.codecs=Ta.reduceCodecs(a.codecs);const c=Ra.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=Ta.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(Da.debug("send() | enabling simulcast"),o=Sa.parse(s.sdp),n=o.media.find((e=>"video"===e.type)),ka.addLegacySimulcast({offerMediaObject:n,track:e,numStreams:t.length}),s={type:"offer",sdp:Sa.write(o)}),Da.debug("send() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s),o=Sa.parse(this._pc.localDescription.sdp),n=o.media.find((t=>t.type===e.kind)),a.rtcp.cname=Pa.getCname({offerMediaObject:n}),a.encodings=ka.getRtpEncodings({offerMediaObject:n,track:e}),t)for(let e=0;e<a.encodings.length;++e)t[e]&&Object.assign(a.encodings[e],t[e]);if(a.encodings.length>1&&"video/vp8"===a.codecs[0].mimeType.toLowerCase())for(const e of a.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:n,offerRtpParameters:a,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};Da.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);this._nextSendLocalId++;const p=this._pc.getSenders().find((t=>t.track===e));return this._mapSendLocalIdRtpSender.set(l,p),{localId:l,rtpParameters:a,rtpSender:p}}async stopSending(e){this.assertSendDirection();const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");t.track&&this._sendStream.removeTrack(t.track),this._mapSendLocalIdRtpSender.delete(e);const r=await this._pc.createOffer();Da.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void Da.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const i={type:"answer",sdp:this._remoteSdp.getSdp()};Da.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){this.assertSendDirection(),t?Da.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Da.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.track;await r.replaceTrack(t),i&&this._sendStream.removeTrack(i),t&&this._sendStream.addTrack(t)}async setMaxSpatialLayer(e,t){this.assertSendDirection(),Da.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.setParameters(i)}async setRtpEncodingParameters(e,t){this.assertSendDirection(),Da.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.setParameters(i)}async getSenderStats(e){this.assertSendDirection();const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");return t.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};Da.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Ia.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Sa.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Da.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};Da.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:i,streamId:n}=t;Da.debug("receive() [trackId:%s, kind:%s]",e,r);const s=r;this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:i,streamId:n||i.rtcp.cname,trackId:e})}const r={type:"offer",sdp:this._remoteSdp.getSdp()};Da.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer();const n=Sa.parse(i.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,s=n.media.find((e=>String(e.mid)===i));Pa.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}i={type:"answer",sdp:Sa.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),Da.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const r of e){const{kind:e,trackId:i,rtpParameters:n}=r,s=e,o=i,a=this._pc.getReceivers().find((e=>e.track&&e.track.id===o));if(!a)throw new Error("new RTCRtpReceiver not");this._mapRecvLocalIdInfo.set(o,{mid:s,rtpParameters:n,rtpReceiver:a}),t.push({localId:o,track:a.track,rtpReceiver:a})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){Da.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Da.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Da.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertRecvDirection();const{rtpReceiver:t}=this._mapRecvLocalIdInfo.get(e)||{};if(!t)throw new Error("associated RTCRtpReceiver not found");return t.getStats()}async pauseReceiving(e){}async resumeReceiving(e){}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:o,protocol:r};Da.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};Da.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Sa.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Da.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Sa.parse(this._pc.localDescription.sdp));const r=Pa.extractIceParameters({sdpObject:t}),i=Pa.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}ba.Safari11=xa;var Ma={},ja={},La=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Aa=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Na=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&La(t,e,r);return Aa(t,e),t};Object.defineProperty(ja,"__esModule",{value:!0}),ja.mangleRtpParameters=ja.getCapabilities=void 0;const Ba=Na(Ur);ja.getCapabilities=function(){const e=RTCRtpReceiver.getCapabilities(),t=Ba.clone(e);for(const e of t.codecs??[]){if(e.channels=e.numChannels,delete e.numChannels,e.mimeType=e.mimeType||`${e.kind}/${e.name}`,e.parameters){const t=e.parameters;t.apt&&(t.apt=Number(t.apt)),t["packetization-mode"]&&(t["packetization-mode"]=Number(t["packetization-mode"]))}for(const t of e.rtcpFeedback||[])t.parameter||(t.parameter="")}return t},ja.mangleRtpParameters=function(e){const t=Ba.clone(e);t.mid&&(t.muxId=t.mid,delete t.mid);for(const e of t.codecs)e.channels&&(e.numChannels=e.channels,delete e.channels),e.mimeType&&!e.name&&(e.name=e.mimeType.split("/")[1]),delete e.mimeType;return t};var Fa=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),za=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ua=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Fa(t,e,r);return za(t,e),t};Object.defineProperty(Ma,"__esModule",{value:!0}),Ma.Edge11=void 0;const $a=Er,Va=Br,Ga=Ua(Ur),qa=Ua($r),Ha=Ua(ja),Wa=zn,Ka=new $a.Logger("Edge11");class Ja extends Wa.HandlerInterface{static createFactory(){return()=>new Ja}constructor(){super(),this._rtpSenders=new Map,this._rtpReceivers=new Map,this._nextSendLocalId=0,this._transportReady=!1}get name(){return"Edge11"}close(){Ka.debug("close()");try{this._iceGatherer.close()}catch(e){}try{this._iceTransport.stop()}catch(e){}try{this._dtlsTransport.stop()}catch(e){}for(const e of this._rtpSenders.values())try{e.stop()}catch(e){}for(const e of this._rtpReceivers.values())try{e.stop()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){return Ka.debug("getNativeRtpCapabilities()"),Ha.getCapabilities()}async getNativeSctpCapabilities(){return Ka.debug("getNativeSctpCapabilities()"),{numStreams:{OS:0,MIS:0}}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){Ka.debug("run()"),this._sendingRtpParametersByKind={audio:qa.getSendingRtpParameters("audio",d),video:qa.getSendingRtpParameters("video",d)},this._remoteIceParameters=t,this._remoteIceCandidates=r,this._remoteDtlsParameters=i,this._cname=`CNAME-${Ga.generateRandomNumber()}`,this.setIceGatherer({iceServers:s,iceTransportPolicy:o}),this.setIceTransport(),this.setDtlsTransport()}async updateIceServers(e){throw new Va.UnsupportedError("not supported")}async restartIce(e){if(Ka.debug("restartIce()"),this._remoteIceParameters=e,this._transportReady){Ka.debug("restartIce() | calling iceTransport.start()"),this._iceTransport.start(this._iceGatherer,e,"controlling");for(const e of this._remoteIceCandidates)this._iceTransport.addRemoteCandidate(e);this._iceTransport.addRemoteCandidate({})}}async getTransportStats(){return this._iceTransport.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){Ka.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),this._transportReady||await this.setupTransport({localDtlsRole:"server"}),Ka.debug("send() | calling new RTCRtpSender()");const n=new RTCRtpSender(e,this._dtlsTransport),s=Ga.clone(this._sendingRtpParametersByKind[e.kind]);s.codecs=qa.reduceCodecs(s.codecs,i);const o=s.codecs.some((e=>/.+\/rtx$/i.test(e.mimeType)));t||(t=[{}]);for(const e of t)e.ssrc=Ga.generateRandomNumber(),o&&(e.rtx={ssrc:Ga.generateRandomNumber()});s.encodings=t,s.rtcp={cname:this._cname,reducedSize:!0,mux:!0};const a=Ha.mangleRtpParameters(s);Ka.debug("send() | calling rtpSender.send() [params:%o]",a),await n.send(a);const c=String(this._nextSendLocalId);return this._nextSendLocalId++,this._rtpSenders.set(c,n),{localId:c,rtpParameters:s,rtpSender:n}}async stopSending(e){Ka.debug("stopSending() [localId:%s]",e);const t=this._rtpSenders.get(e);if(!t)throw new Error("RTCRtpSender not found");this._rtpSenders.delete(e);try{Ka.debug("stopSending() | calling rtpSender.stop()"),t.stop()}catch(e){throw Ka.warn("stopSending() | rtpSender.stop() failed:%o",e),e}}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){t?Ka.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Ka.debug("replaceTrack() [localId:%s, no track]",e);const r=this._rtpSenders.get(e);if(!r)throw new Error("RTCRtpSender not found");r.setTrack(t)}async setMaxSpatialLayer(e,t){Ka.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._rtpSenders.get(e);if(!r)throw new Error("RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.setParameters(i)}async setRtpEncodingParameters(e,t){Ka.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._rtpSenders.get(e);if(!r)throw new Error("RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.setParameters(i)}async getSenderStats(e){const t=this._rtpSenders.get(e);if(!t)throw new Error("RTCRtpSender not found");return t.getStats()}async sendDataChannel(e){throw new Va.UnsupportedError("not implemented")}async receive(e){const t=[];for(const t of e){const{trackId:e,kind:r}=t;Ka.debug("receive() [trackId:%s, kind:%s]",e,r)}this._transportReady||await this.setupTransport({localDtlsRole:"server"});for(const r of e){const{trackId:e,kind:i,rtpParameters:n}=r;Ka.debug("receive() | calling new RTCRtpReceiver()");const s=new RTCRtpReceiver(this._dtlsTransport,i);s.addEventListener("error",(e=>{Ka.error('rtpReceiver "error" event [event:%o]',e)}));const o=Ha.mangleRtpParameters(n);Ka.debug("receive() | calling rtpReceiver.receive() [params:%o]",o),await s.receive(o);const a=e;this._rtpReceivers.set(a,s),t.push({localId:a,track:s.track,rtpReceiver:s})}return t}async stopReceiving(e){for(const t of e){Ka.debug("stopReceiving() [localId:%s]",t);const e=this._rtpReceivers.get(t);if(!e)throw new Error("RTCRtpReceiver not found");this._rtpReceivers.delete(t);try{Ka.debug("stopReceiving() | calling rtpReceiver.stop()"),e.stop()}catch(e){Ka.warn("stopReceiving() | rtpReceiver.stop() failed:%o",e)}}}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){const t=this._rtpReceivers.get(e);if(!t)throw new Error("RTCRtpReceiver not found");return t.getStats()}async receiveDataChannel(e){throw new Va.UnsupportedError("not implemented")}setIceGatherer({iceServers:e,iceTransportPolicy:t}){const r=new RTCIceGatherer({iceServers:e||[],gatherPolicy:t||"all"});r.addEventListener("error",(e=>{Ka.error('iceGatherer "error" event [event:%o]',e)}));try{r.gather()}catch(e){Ka.debug("setIceGatherer() | iceGatherer.gather() failed: %s",e.toString())}this._iceGatherer=r}setIceTransport(){const e=new RTCIceTransport(this._iceGatherer);e.addEventListener("statechange",(()=>{switch(e.state){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})),e.addEventListener("icestatechange",(()=>{switch(e.state){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})),e.addEventListener("candidatepairchange",(e=>{Ka.debug('iceTransport "candidatepairchange" event [pair:%o]',e.pair)})),this._iceTransport=e}setDtlsTransport(){const e=new RTCDtlsTransport(this._iceTransport);e.addEventListener("statechange",(()=>{Ka.debug('dtlsTransport "statechange" event [state:%s]',e.state)})),e.addEventListener("dtlsstatechange",(()=>{Ka.debug('dtlsTransport "dtlsstatechange" event [state:%s]',e.state),"closed"===e.state&&this.emit("@connectionstatechange","closed")})),e.addEventListener("error",(e=>{Ka.error('dtlsTransport "error" event [event:%o]',e)})),this._dtlsTransport=e}async setupTransport({localDtlsRole:e}){Ka.debug("setupTransport()");const t=this._iceGatherer.getLocalParameters(),r=this._dtlsTransport.getLocalParameters();r.role=e,await new Promise(((e,i)=>{this.safeEmit("@connect",{iceParameters:t,dtlsParameters:r},e,i)})),this._iceTransport.start(this._iceGatherer,this._remoteIceParameters,"controlling");for(const e of this._remoteIceCandidates)this._iceTransport.addRemoteCandidate(e);this._iceTransport.addRemoteCandidate({}),this._remoteDtlsParameters.fingerprints=this._remoteDtlsParameters.fingerprints.filter((e=>"sha-256"===e.algorithm||"sha-384"===e.algorithm||"sha-512"===e.algorithm)),this._dtlsTransport.start(this._remoteDtlsParameters),this._transportReady=!0}}Ma.Edge11=Ja;var Qa={},Za=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Ya=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Xa=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Za(t,e,r);return Ya(t,e),t};Object.defineProperty(Qa,"__esModule",{value:!0}),Qa.ReactNativeUnifiedPlan=void 0;const ec=Xa(bn),tc=Er,rc=Xa(Ur),ic=Xa($r),nc=Xa(Mn),sc=Xa(Bn),oc=Xa(Fn),ac=Br,cc=zn,dc=Vn,lc=ns,pc=new tc.Logger("ReactNativeUnifiedPlan"),uc={OS:1024,MIS:1024};class hc extends cc.HandlerInterface{static createFactory(){return()=>new hc}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"ReactNativeUnifiedPlan"}close(){if(pc.debug("close()"),!this._closed){if(this._closed=!0,this._sendStream.release(!1),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){pc.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=ec.parse(t.sdp),i=nc.extractRtpCapabilities({sdpObject:r});return oc.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return pc.debug("getNativeSctpCapabilities()"),{numStreams:uc}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),pc.debug("run()"),this._direction=e,this._remoteSdp=new dc.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:ic.getSendingRtpParameters("audio",d),video:ic.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:ic.getSendingRemoteRtpParameters("audio",d),video:ic.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(pc.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){this.assertNotClosed(),pc.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),pc.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});pc.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};pc.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};pc.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();pc.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertNotClosed(),this.assertSendDirection(),pc.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1&&t.forEach(((e,t)=>{e.rid=`r${t}`}));const n=rc.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=ic.reduceCodecs(n.codecs,i);const s=rc.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=ic.reduceCodecs(s.codecs,i);const o=this._remoteSdp.getNextMediaSectionIdx(),a=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t});let c,d=await this._pc.createOffer(),l=ec.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l});let p=!1;const u=(0,lc.parse)((t||[{}])[0].scalabilityMode);t&&1===t.length&&u.spatialLayers>1&&"video/vp9"===n.codecs[0].mimeType.toLowerCase()&&(pc.debug("send() | enabling legacy simulcast for VP9 SVC"),p=!0,l=ec.parse(d.sdp),c=l.media[o.idx],sc.addLegacySimulcast({offerMediaObject:c,numStreams:u.spatialLayers}),d={type:"offer",sdp:ec.write(l)}),pc.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);let h=a.mid??void 0;if(h||pc.warn("send() | missing transceiver.mid (bug in react-native-webrtc, using a workaround"),n.mid=h,l=ec.parse(this._pc.localDescription.sdp),c=l.media[o.idx],n.rtcp.cname=nc.getCname({offerMediaObject:c}),t)if(1===t.length){let e=sc.getRtpEncodings({offerMediaObject:c});Object.assign(e[0],t[0]),p&&(e=[e[0]]),n.encodings=e}else n.encodings=t;else n.encodings=sc.getRtpEncodings({offerMediaObject:c});if(n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(const e of n.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${u.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:o.reuseMid,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return pc.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),h||(h=a.mid,n.mid=h),this._mapMidTransceiver.set(h,a),{localId:h,rtpParameters:n,rtpSender:a.sender}}async stopSending(e){if(this.assertSendDirection(),this._closed)return;pc.debug("stopSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();pc.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};pc.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),pc.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();pc.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};pc.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),pc.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(this._remoteSdp.resumeSendingMediaSection(e),!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly";const r=await this._pc.createOffer();pc.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};pc.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?pc.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):pc.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),pc.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();pc.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};pc.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),pc.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();pc.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};pc.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};pc.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%uc.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=ec.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),pc.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};pc.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;pc.debug("receive() [trackId:%s, kind:%s]",e,i);const o=n.mid||String(this._mapMidTransceiver.size);r.set(e,o),this._remoteSdp.receive({mid:o,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};pc.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=ec.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,n=r.get(e),o=s.media.find((e=>String(e.mid)===n));nc.applyCodecParameters({offerRtpParameters:i,answerMediaObject:o})}n={type:"answer",sdp:ec.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),pc.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const i of e){const{trackId:e}=i,n=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),t.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){pc.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};pc.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();pc.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){pc.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};pc.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();pc.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){pc.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};pc.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();pc.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:o,protocol:r};pc.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};pc.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=ec.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}pc.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=ec.parse(this._pc.localDescription.sdp));const r=nc.extractIceParameters({sdpObject:t}),i=nc.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new ac.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Qa.ReactNativeUnifiedPlan=hc;var mc={},fc=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),gc=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),vc=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&fc(t,e,r);return gc(t,e),t};Object.defineProperty(mc,"__esModule",{value:!0}),mc.ReactNative=void 0;const bc=vc(bn),yc=Er,_c=Br,wc=vc(Ur),Sc=vc($r),Cc=vc(Mn),Rc=vc(so),Tc=zn,Pc=Vn,kc=new yc.Logger("ReactNative"),Oc={OS:1024,MIS:1024};class Ec extends Tc.HandlerInterface{static createFactory(){return()=>new Ec}constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdTrack=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"ReactNative"}close(){if(kc.debug("close()"),this._sendStream.release(!1),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){kc.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=bc.parse(t.sdp);return Cc.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return kc.debug("getNativeSctpCapabilities()"),{numStreams:Oc}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){kc.debug("run()"),this._direction=e,this._remoteSdp=new Pc.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:Sc.getSendingRtpParameters("audio",d),video:Sc.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Sc.getSendingRemoteRtpParameters("audio",d),video:Sc.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(kc.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){kc.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(kc.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});kc.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};kc.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};kc.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();kc.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertSendDirection(),kc.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&kc.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let n,s=await this._pc.createOffer(),o=bc.parse(s.sdp);const a=wc.clone(this._sendingRtpParametersByKind[e.kind]);a.codecs=Sc.reduceCodecs(a.codecs);const c=wc.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=Sc.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(kc.debug("send() | enabling simulcast"),o=bc.parse(s.sdp),n=o.media.find((e=>"video"===e.type)),Rc.addLegacySimulcast({offerMediaObject:n,track:e,numStreams:t.length}),s={type:"offer",sdp:bc.write(o)}),kc.debug("send() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s),o=bc.parse(this._pc.localDescription.sdp),n=o.media.find((t=>t.type===e.kind)),a.rtcp.cname=Cc.getCname({offerMediaObject:n}),a.encodings=Rc.getRtpEncodings({offerMediaObject:n,track:e}),t)for(let e=0;e<a.encodings.length;++e)t[e]&&Object.assign(a.encodings[e],t[e]);if(a.encodings.length>1&&("video/vp8"===a.codecs[0].mimeType.toLowerCase()||"video/h264"===a.codecs[0].mimeType.toLowerCase()))for(const e of a.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:n,offerRtpParameters:a,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};kc.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);return this._nextSendLocalId++,this._mapSendLocalIdTrack.set(l,e),{localId:l,rtpParameters:a}}async stopSending(e){this.assertSendDirection(),kc.debug("stopSending() [localId:%s]",e);const t=this._mapSendLocalIdTrack.get(e);if(!t)throw new Error("track not found");this._mapSendLocalIdTrack.delete(e),this._sendStream.removeTrack(t),this._pc.addStream(this._sendStream);const r=await this._pc.createOffer();kc.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void kc.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const i={type:"answer",sdp:this._remoteSdp.getSdp()};kc.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){throw new _c.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new _c.UnsupportedError("not implemented")}async setRtpEncodingParameters(e,t){throw new _c.UnsupportedError("not implemented")}async getSenderStats(e){throw new _c.UnsupportedError("not implemented")}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:n};kc.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Oc.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=bc.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),kc.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};kc.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n}=t;kc.debug("receive() [trackId:%s, kind:%s]",e,i);const s=i;let o=t.streamId||n.rtcp.cname;kc.debug("receive() | forcing a random remote streamId to avoid well known bug in react-native-webrtc"),o+=`-hack-${wc.generateRandomNumber()}`,r.set(e,o),this._remoteSdp.receive({mid:s,kind:i,offerRtpParameters:n,streamId:o,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};kc.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=bc.parse(n.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,n=s.media.find((e=>String(e.mid)===i));Cc.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}n={type:"answer",sdp:bc.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),kc.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const i of e){const{kind:e,trackId:n,rtpParameters:s}=i,o=n,a=e,c=r.get(n),d=this._pc.getRemoteStreams().find((e=>e.id===c)).getTrackById(o);if(!d)throw new Error("remote track not found");this._mapRecvLocalIdInfo.set(o,{mid:a,rtpParameters:s}),t.push({localId:o,track:d})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){kc.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};kc.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();kc.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new _c.UnsupportedError("not implemented")}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmitTime:s,maxRetransmits:o,protocol:r};kc.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};kc.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=bc.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}kc.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=bc.parse(this._pc.localDescription.sdp));const r=Cc.extractIceParameters({sdpObject:t}),i=Cc.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}mc.ReactNative=Ec;var Dc=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Ic=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),xc=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Dc(t,e,r);return Ic(t,e),t};Object.defineProperty(Pr,"__esModule",{value:!0}),Pr.Device=Pr.detectDevice=void 0;const Mc=Or,jc=Er,Lc=Mr,Ac=Br,Nc=xc(Ur),Bc=xc($r),Fc=Ci,zc=vn,Uc=Rs,$c=$s,Vc=no,Gc=wo,qc=No,Hc=ea,Wc=ba,Kc=Ma,Jc=Qa,Qc=mc,Zc=new jc.Logger("Device");function Yc(){if("object"==typeof navigator&&"ReactNative"===navigator.product)return Zc.debug("detectDevice() | React-Native detected"),"undefined"==typeof RTCPeerConnection?void Zc.warn("detectDevice() | unsupported react-native-webrtc without RTCPeerConnection, forgot to call registerGlobals()?"):"undefined"!=typeof RTCRtpTransceiver?(Zc.debug("detectDevice() | ReactNative UnifiedPlan handler chosen"),"ReactNativeUnifiedPlan"):(Zc.debug("detectDevice() | ReactNative PlanB handler chosen"),"ReactNative");if("object"!=typeof navigator||"string"!=typeof navigator.userAgent)Zc.warn("detectDevice() | unknown device");else{const e=navigator.userAgent,t=new Mc.UAParser(e);Zc.debug("detectDevice() | browser detected [ua:%s, parsed:%o]",e,t.getResult());const r=t.getBrowser(),i=r.name?.toLowerCase(),n=parseInt(r.major??"0"),s=t.getEngine(),o=s.name?.toLowerCase(),a=t.getOS(),c=a.name?.toLowerCase(),d=parseFloat(a.version??"0"),l=t.getDevice(),p=l.model?.toLowerCase(),u="ios"===c||"ipad"===p,h=i&&["chrome","chromium","mobile chrome","chrome webview","chrome headless"].includes(i),m=i&&["firefox","mobile firefox","mobile focus"].includes(i),f=i&&["safari","mobile safari"].includes(i),g=i&&["edge"].includes(i);if((h||g)&&!u&&n>=111)return"Chrome111";if(h&&!u&&n>=74||g&&!u&&n>=88)return"Chrome74";if(h&&!u&&n>=70)return"Chrome70";if(h&&!u&&n>=67)return"Chrome67";if(h&&!u&&n>=55)return"Chrome55";if(m&&!u&&n>=60)return"Firefox60";if(m&&u&&d>=14.3)return"Safari12";if(f&&n>=12&&"undefined"!=typeof RTCRtpTransceiver&&RTCRtpTransceiver.prototype.hasOwnProperty("currentDirection"))return"Safari12";if(f&&n>=11)return"Safari11";if(g&&!u&&n>=11&&n<=18)return"Edge11";if("webkit"===o&&u&&"undefined"!=typeof RTCRtpTransceiver&&RTCRtpTransceiver.prototype.hasOwnProperty("currentDirection"))return"Safari12";if("blink"===o){const t=e.match(/(?:(?:Chrome|Chromium))[ /](\w+)/i);if(t){const e=Number(t[1]);return e>=111?"Chrome111":e>=74?"Chrome74":e>=70?"Chrome70":e>=67?"Chrome67":"Chrome55"}return"Chrome111"}Zc.warn("detectDevice() | browser not supported [name:%s, version:%s]",i,n)}}Pr.detectDevice=Yc;Pr.Device=class{constructor({handlerName:e,handlerFactory:t,Handler:r}={}){if(this._loaded=!1,this._observer=new Lc.EnhancedEventEmitter,Zc.debug("constructor()"),r){if(Zc.warn("constructor() | Handler option is DEPRECATED, use handlerName or handlerFactory instead"),"string"!=typeof r)throw new TypeError("non string Handler option no longer supported, use handlerFactory instead");e=r}if(e&&t)throw new TypeError("just one of handlerName or handlerInterface can be given");if(t)this._handlerFactory=t;else{if(e)Zc.debug("constructor() | handler given: %s",e);else{if(!(e=Yc()))throw new Ac.UnsupportedError("device not supported");Zc.debug("constructor() | detected handler: %s",e)}switch(e){case"Chrome111":this._handlerFactory=zc.Chrome111.createFactory();break;case"Chrome74":this._handlerFactory=Uc.Chrome74.createFactory();break;case"Chrome70":this._handlerFactory=$c.Chrome70.createFactory();break;case"Chrome67":this._handlerFactory=Vc.Chrome67.createFactory();break;case"Chrome55":this._handlerFactory=Gc.Chrome55.createFactory();break;case"Firefox60":this._handlerFactory=qc.Firefox60.createFactory();break;case"Safari12":this._handlerFactory=Hc.Safari12.createFactory();break;case"Safari11":this._handlerFactory=Wc.Safari11.createFactory();break;case"Edge11":this._handlerFactory=Kc.Edge11.createFactory();break;case"ReactNativeUnifiedPlan":this._handlerFactory=Jc.ReactNativeUnifiedPlan.createFactory();break;case"ReactNative":this._handlerFactory=Qc.ReactNative.createFactory();break;default:throw new TypeError(`unknown handlerName "${e}"`)}}const i=this._handlerFactory();this._handlerName=i.name,i.close(),this._extendedRtpCapabilities=void 0,this._recvRtpCapabilities=void 0,this._canProduceByKind={audio:!1,video:!1},this._sctpCapabilities=void 0}get handlerName(){return this._handlerName}get loaded(){return this._loaded}get rtpCapabilities(){if(!this._loaded)throw new Ac.InvalidStateError("not loaded");return this._recvRtpCapabilities}get sctpCapabilities(){if(!this._loaded)throw new Ac.InvalidStateError("not loaded");return this._sctpCapabilities}get observer(){return this._observer}async load({routerRtpCapabilities:e}){let t;Zc.debug("load() [routerRtpCapabilities:%o]",e),e=Nc.clone(e);try{if(this._loaded)throw new Ac.InvalidStateError("already loaded");Bc.validateRtpCapabilities(e),t=this._handlerFactory();const r=await t.getNativeRtpCapabilities();Zc.debug("load() | got native RTP capabilities:%o",r),Bc.validateRtpCapabilities(r),this._extendedRtpCapabilities=Bc.getExtendedRtpCapabilities(r,e),Zc.debug("load() | got extended RTP capabilities:%o",this._extendedRtpCapabilities),this._canProduceByKind.audio=Bc.canSend("audio",this._extendedRtpCapabilities),this._canProduceByKind.video=Bc.canSend("video",this._extendedRtpCapabilities),this._recvRtpCapabilities=Bc.getRecvRtpCapabilities(this._extendedRtpCapabilities),Bc.validateRtpCapabilities(this._recvRtpCapabilities),Zc.debug("load() | got receiving RTP capabilities:%o",this._recvRtpCapabilities),this._sctpCapabilities=await t.getNativeSctpCapabilities(),Zc.debug("load() | got native SCTP capabilities:%o",this._sctpCapabilities),Bc.validateSctpCapabilities(this._sctpCapabilities),Zc.debug("load() succeeded"),this._loaded=!0,t.close()}catch(e){throw t&&t.close(),e}}canProduce(e){if(!this._loaded)throw new Ac.InvalidStateError("not loaded");if("audio"!==e&&"video"!==e)throw new TypeError(`invalid kind "${e}"`);return this._canProduceByKind[e]}createSendTransport({id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,appData:d}){return Zc.debug("createSendTransport()"),this.createTransport({direction:"send",id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,appData:d})}createRecvTransport({id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,appData:d}){return Zc.debug("createRecvTransport()"),this.createTransport({direction:"recv",id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,appData:d})}createTransport({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:n,sctpParameters:s,iceServers:o,iceTransportPolicy:a,additionalSettings:c,proprietaryConstraints:d,appData:l}){if(!this._loaded)throw new Ac.InvalidStateError("not loaded");if("string"!=typeof t)throw new TypeError("missing id");if("object"!=typeof r)throw new TypeError("missing iceParameters");if(!Array.isArray(i))throw new TypeError("missing iceCandidates");if("object"!=typeof n)throw new TypeError("missing dtlsParameters");if(s&&"object"!=typeof s)throw new TypeError("wrong sctpParameters");if(l&&"object"!=typeof l)throw new TypeError("if given, appData must be an object");const p=new Fc.Transport({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:n,sctpParameters:s,iceServers:o,iceTransportPolicy:a,additionalSettings:c,proprietaryConstraints:d,appData:l,handlerFactory:this._handlerFactory,extendedRtpCapabilities:this._extendedRtpCapabilities,canProduceByKind:this._canProduceByKind});return this._observer.safeEmit("newtransport",p),p}};var Xc={},ed={};Object.defineProperty(ed,"__esModule",{value:!0});var td={};Object.defineProperty(td,"__esModule",{value:!0}),function(e){var t=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),r=s&&s.__exportStar||function(e,r){for(var i in e)"default"===i||Object.prototype.hasOwnProperty.call(r,i)||t(r,e,i)};Object.defineProperty(e,"__esModule",{value:!0}),r(Pr,e),r(Ci,e),r(Mi,e),r(Bi,e),r(Vi,e),r(Ki,e),r(ed,e),r(td,e),r(zn,e),r(Br,e)}(Xc),function(e){var t=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),r=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var i={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&t(i,e,n);return r(i,e),i},n=s&&s.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.debug=e.parseScalabilityMode=e.detectDevice=e.Device=e.version=e.types=void 0;const o=n(Tr);e.debug=o.default;const a=Pr;Object.defineProperty(e,"Device",{enumerable:!0,get:function(){return a.Device}}),Object.defineProperty(e,"detectDevice",{enumerable:!0,get:function(){return a.detectDevice}});const c=i(Xc);e.types=c,e.version="3.7.3";var d=ns;Object.defineProperty(e,"parseScalabilityMode",{enumerable:!0,get:function(){return d.parse}})}(wr);let rd=!0,id=!0;function nd(e,t,r){const i=e.match(t);return i&&i.length>=r&&parseInt(i[r],10)}function sd(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 s=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,s),n.apply(this,[e,s])};const s=i.removeEventListener;i.removeEventListener=function(e,r){if(e!==t||!this._eventMap||!this._eventMap[t])return s.apply(this,arguments);if(!this._eventMap[t].has(r))return s.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,s.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 od(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(rd=e,e?"adapter.js logging disabled":"adapter.js logging enabled")}function ad(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(id=!e,"adapter.js deprecation warnings "+(e?"disabled":"enabled"))}function cd(){if("object"==typeof window){if(rd)return;"undefined"!=typeof console&&"function"==typeof console.log&&console.log.apply(console,arguments)}}function dd(e,t){id&&console.warn(e+" is deprecated, please use "+t+" instead.")}function ld(e){return"[object Object]"===Object.prototype.toString.call(e)}function pd(e){return ld(e)?Object.keys(e).reduce((function(t,r){const i=ld(e[r]),n=i?pd(e[r]):e[r],s=i&&!Object.keys(n).length;return void 0===n||s?t:Object.assign(t,{[r]:n})}),{}):e}function ud(e,t,r){t&&!r.has(t.id)&&(r.set(t.id,t),Object.keys(t).forEach((i=>{i.endsWith("Id")?ud(e,e.get(t[i]),r):i.endsWith("Ids")&&t[i].forEach((t=>{ud(e,e.get(t),r)}))})))}function hd(e,t,r){const i=r?"outbound-rtp":"inbound-rtp",n=new Map;if(null===t)return n;const s=[];return e.forEach((e=>{"track"===e.type&&e.trackIdentifier===t.id&&s.push(e)})),s.forEach((t=>{e.forEach((r=>{r.type===i&&r.trackId===t.id&&ud(e,r,n)}))})),n}const md=cd;function fd(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 s=e.video.facingMode;s=s&&("object"==typeof s?s:{ideal:s});const o=t.version<66;if(s&&("user"===s.exact||"environment"===s.exact||"user"===s.ideal||"environment"===s.ideal)&&(!r.mediaDevices.getSupportedConstraints||!r.mediaDevices.getSupportedConstraints().facingMode||o)){let t;if(delete e.video.facingMode,"environment"===s.exact||"environment"===s.ideal?t=["back","rear"]:"user"!==s.exact&&"user"!==s.ideal||(t=["front"]),t)return r.mediaDevices.enumerateDevices().then((r=>{let o=(r=r.filter((e=>"videoinput"===e.kind))).find((e=>t.some((t=>e.label.toLowerCase().includes(t)))));return!o&&r.length&&t.includes("back")&&(o=r[r.length-1]),o&&(e.video.deviceId=s.exact?{exact:o.deviceId}:{ideal:o.deviceId}),e.video=i(e.video),md("chrome: "+JSON.stringify(e)),n(e)}))}e.video=i(e.video)}return md("chrome: "+JSON.stringify(e)),n(e)},s=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(s(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(s(e))))))}}}function gd(e){e.MediaStream=e.MediaStream||e.webkitMediaStream}function vd(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 sd(e,"track",(e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e)))}function bd(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 yd(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},s=function(e){return new Map(Object.keys(e).map((t=>[t,e[t]])))};if(arguments.length>=2){const i=function(e){r(s(n(e)))};return t.apply(this,[i,e])}return new Promise(((e,r)=>{t.apply(this,[function(t){e(s(n(t)))},r])})).then(r,i)}}function _d(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=>hd(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}),sd(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>hd(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 wd(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 Sd(e,t){if(!e.RTCPeerConnection)return;if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65)return wd(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 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(n.id,"g"),i.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");if(this.getSenders().find((e=>e.track===t)))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};const n=this._streams[r.id];if(n)n.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=s(this,t);e[0].apply(null,[r])},t=>{e[1]&&e[1].apply(null,t)},arguments[2]]):r.apply(this,arguments).then((e=>s(this,e)))}};e.RTCPeerConnection.prototype[t]=i[t]}));const o=e.RTCPeerConnection.prototype.setLocalDescription;e.RTCPeerConnection.prototype.setLocalDescription=function(){return arguments.length&&arguments[0].type?(arguments[0]=function(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})}(this,arguments[0]),o.apply(this,arguments)):o.apply(this,arguments)};const a=Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(e.RTCPeerConnection.prototype,"localDescription",{get(){const e=a.get.apply(this);return""===e.type?e:s(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 Cd(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 Rd(e,t){sd(e,"negotiationneeded",(e=>{const r=e.target;if(!(t.version<72||r.getConfiguration&&"plan-b"===r.getConfiguration().sdpSemantics)||"stable"===r.signalingState)return e}))}var Td=Object.freeze({__proto__:null,fixNegotiationNeeded:Rd,shimAddTrackRemoveTrack:Sd,shimAddTrackRemoveTrackWithNative:wd,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,s=r.video&&r.video.frameRate;return r.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:t,maxFrameRate:s||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"))},shimGetSendersWithDtmf:bd,shimGetStats:yd,shimGetUserMedia:fd,shimMediaStream:gd,shimOnTrack:vd,shimPeerConnection:Cd,shimSenderReceiverGetStats:_d});function Pd(e,t){const r=e&&e.navigator,i=e&&e.MediaStreamTrack;if(r.getUserMedia=function(e,t,i){dd("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 kd(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 Od(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,s]=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,s)}}function Ed(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 Dd(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}),sd(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function Id(e){e.RTCPeerConnection&&!("removeStream"in e.RTCPeerConnection.prototype)&&(e.RTCPeerConnection.prototype.removeStream=function(e){dd("removeStream","removeTrack"),this.getSenders().forEach((t=>{t.track&&e.getTracks().includes(t.track)&&this.removeTrack(t)}))})}function xd(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)}function Md(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.addTransceiver;t&&(e.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];let e=arguments[1]&&arguments[1].sendEncodings;void 0===e&&(e=[]),e=[...e];const r=e.length>0;r&&e.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,t.sendEncodings=e,this.setParametersPromises.push(t.setParameters(r).then((()=>{delete t.sendEncodings})).catch((()=>{delete t.sendEncodings}))))}return i})}function jd(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 Ld(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 Ad(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 Nd=Object.freeze({__proto__:null,shimAddTransceiver:Md,shimCreateAnswer:Ad,shimCreateOffer:Ld,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)})},shimGetParameters:jd,shimGetUserMedia:Pd,shimOnTrack:kd,shimPeerConnection:Od,shimRTCDataChannel:xd,shimReceiverGetStats:Dd,shimRemoveStream:Id,shimSenderGetStats:Ed});function Bd(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 Fd(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 zd(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype,r=t.createOffer,i=t.createAnswer,n=t.setLocalDescription,s=t.setRemoteDescription,o=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=s.apply(this,[e]);return r?(i.then(t,r),Promise.resolve()):i},t.setRemoteDescription=a,a=function(e,t,r){const i=o.apply(this,[e]);return r?(i.then(t,r),Promise.resolve()):i},t.addIceCandidate=a}function Ud(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($d(e))}!t.getUserMedia&&t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=function(e,r,i){t.mediaDevices.getUserMedia(e).then(r,i)}.bind(t))}function $d(e){return e&&void 0!==e.video?Object.assign({},e,{video:pd(e.video)}):e}function Vd(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];void 0===i.urls&&i.url?(dd("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 Gd(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 qd(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",{direction:"recvonly"}),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",{direction:"recvonly"})}return t.apply(this,arguments)}}function Hd(e){"object"!=typeof e||e.AudioContext||(e.AudioContext=e.webkitAudioContext)}var Wd=Object.freeze({__proto__:null,shimAudioContext:Hd,shimCallbacksAPI:zd,shimConstraints:$d,shimCreateOfferLegacy:qd,shimGetUserMedia:Ud,shimLocalStreamsAPI:Bd,shimRTCIceServerUrls:Vd,shimRemoteStreamsAPI:Fd,shimTrackEventTransceiver:Gd}),Kd={exports:{}};!function(e){const t={generateIdentifier:function(){return Math.random().toString(36).substring(2,12)}};t.localCName=t.generateIdentifier(),t.splitLines=function(e){return e.trim().split("\n").map((e=>e.trim()))},t.splitSections=function(e){return e.split("\nm=").map(((e,t)=>(t>0?"m="+e:e).trim()+"\r\n"))},t.getDescription=function(e){const r=t.splitSections(e);return r&&r[0]},t.getMediaSections=function(e){const r=t.splitSections(e);return r.shift(),r},t.matchPrefix=function(e,r){return t.splitLines(e).filter((e=>0===e.indexOf(r)))},t.parseCandidate=function(e){let t;t=0===e.indexOf("a=candidate:")?e.substring(12).split(" "):e.substring(10).split(" ");const r={foundation:t[0],component:{1:"rtp",2:"rtcp"}[t[1]]||t[1],protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],address:t[4],port:parseInt(t[5],10),type:t[7]};for(let e=8;e<t.length;e+=2)switch(t[e]){case"raddr":r.relatedAddress=t[e+1];break;case"rport":r.relatedPort=parseInt(t[e+1],10);break;case"tcptype":r.tcpType=t[e+1];break;case"ufrag":r.ufrag=t[e+1],r.usernameFragment=t[e+1];break;default:void 0===r[t[e]]&&(r[t[e]]=t[e+1])}return r},t.writeCandidate=function(e){const t=[];t.push(e.foundation);const r=e.component;"rtp"===r?t.push(1):"rtcp"===r?t.push(2):t.push(r),t.push(e.protocol.toUpperCase()),t.push(e.priority),t.push(e.address||e.ip),t.push(e.port);const i=e.type;return t.push("typ"),t.push(i),"host"!==i&&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.substring(14).split(" ")},t.parseRtpMap=function(e){let t=e.substring(9).split(" ");const 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){let t=e.payloadType;void 0!==e.preferredPayloadType&&(t=e.preferredPayloadType);const r=e.channels||e.numChannels||1;return"a=rtpmap:"+t+" "+e.name+"/"+e.clockRate+(1!==r?"/"+r:"")+"\r\n"},t.parseExtmap=function(e){const t=e.substring(9).split(" ");return{id:parseInt(t[0],10),direction:t[0].indexOf("/")>0?t[0].split("/")[1]:"sendrecv",uri:t[1],attributes:t.slice(2).join(" ")}},t.writeExtmap=function(e){return"a=extmap:"+(e.id||e.preferredId)+(e.direction&&"sendrecv"!==e.direction?"/"+e.direction:"")+" "+e.uri+(e.attributes?" "+e.attributes:"")+"\r\n"},t.parseFmtp=function(e){const t={};let r;const i=e.substring(e.indexOf(" ")+1).split(";");for(let e=0;e<i.length;e++)r=i[e].trim().split("="),t[r[0].trim()]=r[1];return t},t.writeFmtp=function(e){let t="",r=e.payloadType;if(void 0!==e.preferredPayloadType&&(r=e.preferredPayloadType),e.parameters&&Object.keys(e.parameters).length){const i=[];Object.keys(e.parameters).forEach((t=>{void 0!==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){const t=e.substring(e.indexOf(" ")+1).split(" ");return{type:t.shift(),parameter:t.join(" ")}},t.writeRtcpFb=function(e){let t="",r=e.payloadType;return void 0!==e.preferredPayloadType&&(r=e.preferredPayloadType),e.rtcpFeedback&&e.rtcpFeedback.length&&e.rtcpFeedback.forEach((e=>{t+="a=rtcp-fb:"+r+" "+e.type+(e.parameter&&e.parameter.length?" "+e.parameter:"")+"\r\n"})),t},t.parseSsrcMedia=function(e){const t=e.indexOf(" "),r={ssrc:parseInt(e.substring(7,t),10)},i=e.indexOf(":",t);return i>-1?(r.attribute=e.substring(t+1,i),r.value=e.substring(i+1)):r.attribute=e.substring(t+1),r},t.parseSsrcGroup=function(e){const t=e.substring(13).split(" ");return{semantics:t.shift(),ssrcs:t.map((e=>parseInt(e,10)))}},t.getMid=function(e){const r=t.matchPrefix(e,"a=mid:")[0];if(r)return r.substring(6)},t.parseFingerprint=function(e){const t=e.substring(14).split(" ");return{algorithm:t[0].toLowerCase(),value:t[1].toUpperCase()}},t.getDtlsParameters=function(e,r){return{role:"auto",fingerprints:t.matchPrefix(e+r,"a=fingerprint:").map(t.parseFingerprint)}},t.writeDtlsParameters=function(e,t){let r="a=setup:"+t+"\r\n";return e.fingerprints.forEach((e=>{r+="a=fingerprint:"+e.algorithm+" "+e.value+"\r\n"})),r},t.parseCryptoLine=function(e){const t=e.substring(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;const t=e.substring(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){const i=t.matchPrefix(e+r,"a=ice-ufrag:")[0],n=t.matchPrefix(e+r,"a=ice-pwd:")[0];return i&&n?{usernameFragment:i.substring(12),password:n.substring(10)}:null},t.writeIceParameters=function(e){let t="a=ice-ufrag:"+e.usernameFragment+"\r\na=ice-pwd:"+e.password+"\r\n";return e.iceLite&&(t+="a=ice-lite\r\n"),t},t.parseRtpParameters=function(e){const r={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},i=t.splitLines(e)[0].split(" ");r.profile=i[2];for(let n=3;n<i.length;n++){const s=i[n],o=t.matchPrefix(e,"a=rtpmap:"+s+" ")[0];if(o){const i=t.parseRtpMap(o),n=t.matchPrefix(e,"a=fmtp:"+s+" ");switch(i.parameters=n.length?t.parseFmtp(n[0]):{},i.rtcpFeedback=t.matchPrefix(e,"a=rtcp-fb:"+s+" ").map(t.parseRtcpFb),r.codecs.push(i),i.name.toUpperCase()){case"RED":case"ULPFEC":r.fecMechanisms.push(i.name.toUpperCase())}}}t.matchPrefix(e,"a=extmap:").forEach((e=>{r.headerExtensions.push(t.parseExtmap(e))}));const n=t.matchPrefix(e,"a=rtcp-fb:* ").map(t.parseRtcpFb);return r.codecs.forEach((e=>{n.forEach((t=>{e.rtcpFeedback.find((e=>e.type===t.type&&e.parameter===t.parameter))||e.rtcpFeedback.push(t)}))})),r},t.writeRtpDescription=function(e,r){let i="";i+="m="+e+" ",i+=r.codecs.length>0?"9":"0",i+=" "+(r.profile||"UDP/TLS/RTP/SAVPF")+" ",i+=r.codecs.map((e=>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((e=>{i+=t.writeRtpMap(e),i+=t.writeFmtp(e),i+=t.writeRtcpFb(e)}));let n=0;return r.codecs.forEach((e=>{e.maxptime>n&&(n=e.maxptime)})),n>0&&(i+="a=maxptime:"+n+"\r\n"),r.headerExtensions&&r.headerExtensions.forEach((e=>{i+=t.writeExtmap(e)})),i},t.parseRtpEncodingParameters=function(e){const r=[],i=t.parseRtpParameters(e),n=-1!==i.fecMechanisms.indexOf("RED"),s=-1!==i.fecMechanisms.indexOf("ULPFEC"),o=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"cname"===e.attribute)),a=o.length>0&&o[0].ssrc;let c;const d=t.matchPrefix(e,"a=ssrc-group:FID").map((e=>e.substring(17).split(" ").map((e=>parseInt(e,10)))));d.length>0&&d[0].length>1&&d[0][0]===a&&(c=d[0][1]),i.codecs.forEach((e=>{if("RTX"===e.name.toUpperCase()&&e.parameters.apt){let t={ssrc:a,codecPayloadType:parseInt(e.parameters.apt,10)};a&&c&&(t.rtx={ssrc:c}),r.push(t),n&&(t=JSON.parse(JSON.stringify(t)),t.fec={ssrc:a,mechanism:s?"red+ulpfec":"red"},r.push(t))}})),0===r.length&&a&&r.push({ssrc:a});let l=t.matchPrefix(e,"b=");return l.length&&(l=0===l[0].indexOf("b=TIAS:")?parseInt(l[0].substring(7),10):0===l[0].indexOf("b=AS:")?1e3*parseInt(l[0].substring(5),10)*.95-16e3:void 0,r.forEach((e=>{e.maxBitrate=l}))),r},t.parseRtcpParameters=function(e){const r={},i=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"cname"===e.attribute))[0];i&&(r.cname=i.value,r.ssrc=i.ssrc);const n=t.matchPrefix(e,"a=rtcp-rsize");r.reducedSize=n.length>0,r.compound=0===n.length;const s=t.matchPrefix(e,"a=rtcp-mux");return r.mux=s.length>0,r},t.writeRtcpParameters=function(e){let t="";return e.reducedSize&&(t+="a=rtcp-rsize\r\n"),e.mux&&(t+="a=rtcp-mux\r\n"),void 0!==e.ssrc&&e.cname&&(t+="a=ssrc:"+e.ssrc+" cname:"+e.cname+"\r\n"),t},t.parseMsid=function(e){let r;const i=t.matchPrefix(e,"a=msid:");if(1===i.length)return r=i[0].substring(7).split(" "),{stream:r[0],track:r[1]};const n=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"msid"===e.attribute));return n.length>0?(r=n[0].value.split(" "),{stream:r[0],track:r[1]}):void 0},t.parseSctpDescription=function(e){const r=t.parseMLine(e),i=t.matchPrefix(e,"a=max-message-size:");let n;i.length>0&&(n=parseInt(i[0].substring(19),10)),isNaN(n)&&(n=65536);const s=t.matchPrefix(e,"a=sctp-port:");if(s.length>0)return{port:parseInt(s[0].substring(12),10),protocol:r.fmt,maxMessageSize:n};const o=t.matchPrefix(e,"a=sctpmap:");if(o.length>0){const e=o[0].substring(10).split(" ");return{port:parseInt(e[0],10),protocol:e[1],maxMessageSize:n}}},t.writeSctpDescription=function(e,t){let 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,22)},t.writeSessionBoilerplate=function(e,r,i){let n;const s=void 0!==r?r:2;n=e||t.generateSessionId();return"v=0\r\no="+(i||"thisisadapterortc")+" "+n+" "+s+" IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},t.getDirection=function(e,r){const i=t.splitLines(e);for(let e=0;e<i.length;e++)switch(i[e]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return i[e].substring(2)}return r?t.getDirection(r):"sendrecv"},t.getKind=function(e){return t.splitLines(e)[0].split(" ")[0].substring(2)},t.isRejected=function(e){return"0"===e.split(" ",2)[1]},t.parseMLine=function(e){const r=t.splitLines(e)[0].substring(2).split(" ");return{kind:r[0],port:parseInt(r[1],10),protocol:r[2],fmt:r.slice(3).join(" ")}},t.parseOLine=function(e){const r=t.matchPrefix(e,"o=")[0].substring(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;const r=t.splitLines(e);for(let e=0;e<r.length;e++)if(r[e].length<2||"="!==r[e].charAt(1))return!1;return!0},e.exports=t}(Kd);var Jd=Kd.exports,Qd=o(Jd),Zd=i({__proto__:null,default:Qd},[Jd]);function Yd(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.substring(2)),e.candidate&&e.candidate.length){const r=new t(e),i=Qd.parseCandidate(e.candidate);for(const e in i)e in r||Object.defineProperty(r,e,{value:i[e]});return r.toJSON=function(){return{candidate:r.candidate,sdpMid:r.sdpMid,sdpMLineIndex:r.sdpMLineIndex,usernameFragment:r.usernameFragment}},r}return new t(e)},e.RTCIceCandidate.prototype=t.prototype,sd(e,"icecandidate",(t=>(t.candidate&&Object.defineProperty(t,"candidate",{value:new e.RTCIceCandidate(t.candidate),writable:"false"}),t)))}function Xd(e){!e.RTCIceCandidate||e.RTCIceCandidate&&"relayProtocol"in e.RTCIceCandidate.prototype||sd(e,"icecandidate",(e=>{if(e.candidate){const t=Qd.parseCandidate(e.candidate.candidate);"relay"===t.type&&(e.candidate.relayProtocol={0:"tls",1:"tcp",2:"udp"}[t.priority>>24])}return e}))}function el(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=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(function(e){if(!e||!e.sdp)return!1;const t=Qd.splitSections(e.sdp);return t.shift(),t.some((e=>{const t=Qd.parseMLine(e);return t&&"application"===t.kind&&-1!==t.protocol.indexOf("SCTP")}))}(arguments[0])){const e=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}(arguments[0]),r=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}(e),i=function(e,r){let i=65536;"firefox"===t.browser&&57===t.version&&(i=65535);const n=Qd.matchPrefix(e.sdp,"a=max-message-size:");return n.length>0?i=parseInt(n[0].substring(19),10):"firefox"===t.browser&&-1!==r&&(i=2147483637),i}(arguments[0],e);let n;n=0===r&&0===i?Number.POSITIVE_INFINITY:0===r||0===i?Math.max(r,i):Math.min(r,i);const s={};Object.defineProperty(s,"maxMessageSize",{get:()=>n}),this._sctp=s}return r.apply(this,arguments)}}function tl(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},sd(e,"datachannel",(e=>(t(e.channel,e.target),e)))}function rl(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 il(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 nl(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())})}function sl(e,t){if(!e.RTCPeerConnection||!e.RTCPeerConnection.prototype)return;const r=e.RTCPeerConnection.prototype.setLocalDescription;r&&0!==r.length&&(e.RTCPeerConnection.prototype.setLocalDescription=function(){let e=arguments[0]||{};if("object"!=typeof e||e.type&&e.sdp)return r.apply(this,arguments);if(e={type:e.type,sdp:e.sdp},!e.type)switch(this.signalingState){case"stable":case"have-local-offer":case"have-remote-pranswer":e.type="offer";break;default:e.type="answer"}if(e.sdp||"offer"!==e.type&&"answer"!==e.type)return r.apply(this,[e]);return("offer"===e.type?this.createOffer:this.createAnswer).apply(this).then((e=>r.apply(this,[e])))})}var ol=Object.freeze({__proto__:null,removeExtmapAllowMixed:il,shimAddIceCandidateNullOrEmpty:nl,shimConnectionState:rl,shimMaxMessageSize:el,shimParameterlessSetLocalDescription:sl,shimRTCIceCandidate:Yd,shimRTCIceCandidateRelayProtocol:Xd,shimSendThrowTypeError:tl});const al=function({window:e}={},t={shimChrome:!0,shimFirefox:!0,shimSafari:!0}){const r=cd,i=function(e){const t={browser:null,version:null};if(void 0===e||!e.navigator||!e.navigator.userAgent)return t.browser="Not a browser.",t;const{navigator:r}=e;if(r.mozGetUserMedia)t.browser="firefox",t.version=nd(r.userAgent,/Firefox\/(\d+)\./,1);else if(r.webkitGetUserMedia||!1===e.isSecureContext&&e.webkitRTCPeerConnection)t.browser="chrome",t.version=nd(r.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else{if(!e.RTCPeerConnection||!r.userAgent.match(/AppleWebKit\/(\d+)\./))return t.browser="Not a supported browser.",t;t.browser="safari",t.version=nd(r.userAgent,/AppleWebKit\/(\d+)\./,1),t.supportsUnifiedPlan=e.RTCRtpTransceiver&&"currentDirection"in e.RTCRtpTransceiver.prototype}return t}(e),n={browserDetails:i,commonShim:ol,extractVersion:nd,disableLog:od,disableWarnings:ad,sdp:Zd};switch(i.browser){case"chrome":if(!Td||!Cd||!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=Td,nl(e,i),sl(e),fd(e,i),gd(e),Cd(e,i),vd(e),Sd(e,i),bd(e),yd(e),_d(e),Rd(e,i),Yd(e),Xd(e),rl(e),el(e,i),tl(e),il(e,i);break;case"firefox":if(!Nd||!Od||!t.shimFirefox)return r("Firefox shim is not included in this adapter release."),n;r("adapter.js shimming firefox."),n.browserShim=Nd,nl(e,i),sl(e),Pd(e,i),Od(e,i),kd(e),Id(e),Ed(e),Dd(e),xd(e),Md(e),jd(e),Ld(e),Ad(e),Yd(e),rl(e),el(e,i),tl(e);break;case"safari":if(!Wd||!t.shimSafari)return r("Safari shim is not included in this adapter release."),n;r("adapter.js shimming safari."),n.browserShim=Wd,nl(e,i),sl(e),Vd(e),qd(e),zd(e),Bd(e),Fd(e),Gd(e),Ud(e),Hd(e),Yd(e),Xd(e),el(e,i),tl(e),il(e,i);break;default:r("Unsupported browser!")}return n}({window:"undefined"==typeof window?void 0:window});function cl(e){return{id:e.id,tracks:e.getTracks().map((function(e){return{id:e.id,kind:e.kind,label:e.label,enabled:e.enabled,muted:e.muted,readyState:e.readyState}}))}}var dl=function(e,t,r){var i=0,n=!!window.mozRTCPeerConnection,s=!!window.RTCIceGatherer,o={};if(r.forEach((function(r){if(window[r+"RTCPeerConnection"]&&("webkit"!==r||!s)){var a=window[r+"RTCPeerConnection"],c=function(r,c){var d=new a(r,c),l="PC_"+i++;d.__rtcStatsId=l,r||(r={nullConfig:!0}),((r=JSON.parse(JSON.stringify(r)))&&r.iceServers||[]).forEach((function(e){delete e.credential})),r.browserType=n?"moz":s?"edge":"webkit",e("create",l,r),c&&e("constraints",l,c),d.addEventListener("icecandidate",(function(t){e("onicecandidate",l,t.candidate)})),d.addEventListener("addstream",(function(t){e("onaddstream",l,t.stream.id+" "+t.stream.getTracks().map((function(e){return e.kind+":"+e.id})))})),d.addEventListener("track",(function(t){e("ontrack",l,t.track.kind+":"+t.track.id+" "+t.streams.map((function(e){return"stream:"+e.id})))})),d.addEventListener("removestream",(function(t){e("onremovestream",l,t.stream.id+" "+t.stream.getTracks().map((function(e){return e.kind+":"+e.id})))})),d.addEventListener("signalingstatechange",(function(){e("onsignalingstatechange",l,d.signalingState)})),d.addEventListener("iceconnectionstatechange",(function(){e("oniceconnectionstatechange",l,d.iceConnectionState)})),d.addEventListener("icegatheringstatechange",(function(){e("onicegatheringstatechange",l,d.iceGatheringState)})),d.addEventListener("connectionstatechange",(function(){e("onconnectionstatechange",l,d.connectionState)})),d.addEventListener("negotiationneeded",(function(){e("onnegotiationneeded",l,void 0)})),d.addEventListener("datachannel",(function(t){e("ondatachannel",l,[t.channel.id,t.channel.label])}));var p=function(){d.getStats(null).then((function(t){var r=function(e){if(!e.entries)return e;var t={};return e.forEach((function(e,r){t[r]=e})),t}(t),i=JSON.parse(JSON.stringify(r));e("getstats",l,function(e,t){t=JSON.parse(JSON.stringify(t)),Object.keys(t).forEach((function(r){var i=t[r];delete i.id,e[r]&&Object.keys(i).forEach((function(n){i[n]===e[r][n]&&delete t[r][n],(0===Object.keys(i).length||1===Object.keys(i).length&&i.timestamp)&&delete t[r]}))}));var r=-1/0;return Object.keys(t).forEach((function(e){var i=t[e];i.timestamp>r&&(r=i.timestamp)})),Object.keys(t).forEach((function(e){var i=t[e];i.timestamp===r&&(i.timestamp=0)})),t.timestamp=r,t}(o[l]||{},r)),o[l]=i}))};if(!s&&t)var u=window.setInterval((function(){"closed"!==d.signalingState?p():window.clearInterval(u)}),t);return s||d.addEventListener("connectionstatechange",(function(){"connected"!==d.connectionState&&"failed"!==d.connectionState||p()})),d};["createDataChannel","close"].forEach((function(t){var r=a.prototype[t];r&&(a.prototype[t]=function(){return e(t,this.__rtcStatsId,arguments),r.apply(this,arguments)})})),["addStream","removeStream"].forEach((function(t){var r=a.prototype[t];r&&(a.prototype[t]=function(){var i=arguments[0],n=i.getTracks().map((function(e){return e.kind+":"+e.id})).join(",");return e(t,this.__rtcStatsId,i.id+" "+n),r.apply(this,arguments)})})),["addTrack"].forEach((function(t){var r=a.prototype[t];r&&(a.prototype[t]=function(){var i=arguments[0],n=[].slice.call(arguments,1);return e(t,this.__rtcStatsId,i.kind+":"+i.id+" "+(n.map((function(e){return"stream:"+e.id})).join(";")||"-")),r.apply(this,arguments)})})),["removeTrack"].forEach((function(t){var r=a.prototype[t];r&&(a.prototype[t]=function(){var i=arguments[0].track;return e(t,this.__rtcStatsId,i?i.kind+":"+i.id:"null"),r.apply(this,arguments)})})),["createOffer","createAnswer"].forEach((function(t){var r=a.prototype[t];r&&(a.prototype[t]=function(){var i,n=this.__rtcStatsId,s=arguments;return 1===arguments.length&&"object"==typeof arguments[0]?i=arguments[0]:3===arguments.length&&"object"==typeof arguments[2]&&(i=arguments[2]),e(t,this.__rtcStatsId,i),r.apply(this,i?[i]:void 0).then((function(r){if(e(t+"OnSuccess",n,r),!(s.length>0&&"function"==typeof s[0]))return r;s[0].apply(null,[r])}),(function(r){if(e(t+"OnFailure",n,r.toString()),!(s.length>1&&"function"==typeof s[1]))throw r;s[1].apply(null,[r])}))})})),["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){var r=a.prototype[t];r&&(a.prototype[t]=function(){var i=this.__rtcStatsId,n=arguments;return e(t,this.__rtcStatsId,n[0]),r.apply(this,[n[0]]).then((function(){e(t+"OnSuccess",i,void 0),n.length>=2&&"function"==typeof n[1]&&n[1].apply(null,[])}),(function(r){if(e(t+"OnFailure",i,r.toString()),!(n.length>=3&&"function"==typeof n[2]))throw r;n[2].apply(null,[r])}))})})),a.generateCertificate&&Object.defineProperty(c,"generateCertificate",{get:function(){return arguments.length?a.generateCertificate.apply(null,arguments):a.generateCertificate}}),window[r+"RTCPeerConnection"]=c,window[r+"RTCPeerConnection"].prototype=a.prototype}})),r.forEach((function(t){var r=t+(t.length?"GetUserMedia":"getUserMedia");if(navigator[r]){var i=navigator[r].bind(navigator);navigator[r]=function(){e("getUserMedia",null,arguments[0]);var t=arguments[1],r=arguments[2];i(arguments[0],(function(r){e("getUserMediaOnSuccess",null,cl(r)),t&&t(r)}),(function(t){e("getUserMediaOnFailure",null,t.name),r&&r(t)}))}.bind(navigator)}})),navigator.mediaDevices&&navigator.mediaDevices.getUserMedia){var a=navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);navigator.mediaDevices.getUserMedia=function(){return e("navigator.mediaDevices.getUserMedia",null,arguments[0]),a.apply(navigator.mediaDevices,arguments).then((function(t){return e("navigator.mediaDevices.getUserMediaOnSuccess",null,cl(t)),t}),(function(t){return e("navigator.mediaDevices.getUserMediaOnFailure",null,t.name),Promise.reject(t)}))}.bind(navigator.mediaDevices)}if(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia){var c=navigator.mediaDevices.getDisplayMedia.bind(navigator.mediaDevices);navigator.mediaDevices.getDisplayMedia=function(){return e("navigator.mediaDevices.getDisplayMedia",null,arguments[0]),c.apply(navigator.mediaDevices,arguments).then((function(t){return e("navigator.mediaDevices.getDisplayMediaOnSuccess",null,cl(t)),t}),(function(t){return e("navigator.mediaDevices.getDisplayMediaOnFailure",null,t.name),Promise.reject(t)}))}.bind(navigator.mediaDevices)}return{resetDelta(){o={}}}},ll=o(dl);let pl;const ul=new Uint8Array(16);function hl(){if(!pl&&(pl="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!pl))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return pl(ul)}const ml=[];for(let QS=0;QS<256;++QS)ml.push((QS+256).toString(16).slice(1));var fl={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function gl(e,t,r){if(fl.randomUUID&&!t&&!e)return fl.randomUUID();const i=(e=e||{}).random||(e.rng||hl)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,t){r=r||0;for(let e=0;e<16;++e)t[r+e]=i[e];return t}return function(e,t=0){return ml[e[t+0]]+ml[e[t+1]]+ml[e[t+2]]+ml[e[t+3]]+"-"+ml[e[t+4]]+ml[e[t+5]]+"-"+ml[e[t+6]]+ml[e[t+7]]+"-"+ml[e[t+8]]+ml[e[t+9]]+"-"+ml[e[t+10]]+ml[e[t+11]]+ml[e[t+12]]+ml[e[t+13]]+ml[e[t+14]]+ml[e[t+15]]}(i)}var vl={},bl={},yl={};Object.defineProperty(yl,"__esModule",{value:!0}),yl.isCorrect=yl.isInSubnet=void 0,yl.isInSubnet=function(e){return!(this.subnetMask<e.subnetMask)&&this.mask(e.subnetMask)===e.mask()},yl.isCorrect=function(e){return function(){return this.addressMinusSuffix===this.correctForm()&&(this.subnetMask===e&&!this.parsedSubnet||this.parsedSubnet===String(this.subnetMask))}};var _l={};Object.defineProperty(_l,"__esModule",{value:!0}),_l.RE_SUBNET_STRING=_l.RE_ADDRESS=_l.GROUPS=_l.BITS=void 0,_l.BITS=32,_l.GROUPS=4,_l.RE_ADDRESS=/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/g,_l.RE_SUBNET_STRING=/\/\d{1,2}$/;var wl={};Object.defineProperty(wl,"__esModule",{value:!0}),wl.AddressError=void 0;class Sl extends Error{constructor(e,t){super(e),this.name="AddressError",null!==t&&(this.parseMessage=t)}}wl.AddressError=Sl;var Cl,Rl={exports:{}};Cl=Rl,function(){var e;function t(e,t,r){null!=e&&("number"==typeof e?this.fromNumber(e,t,r):null==t&&"string"!=typeof e?this.fromString(e,256):this.fromString(e,t))}function r(){return new t(null)}var i="undefined"!=typeof navigator;i&&"Microsoft Internet Explorer"==navigator.appName?(t.prototype.am=function(e,t,r,i,n,s){for(var o=32767&t,a=t>>15;--s>=0;){var c=32767&this[e],d=this[e++]>>15,l=a*c+d*o;n=((c=o*c+((32767&l)<<15)+r[i]+(1073741823&n))>>>30)+(l>>>15)+a*d+(n>>>30),r[i++]=1073741823&c}return n},e=30):i&&"Netscape"!=navigator.appName?(t.prototype.am=function(e,t,r,i,n,s){for(;--s>=0;){var o=t*this[e++]+r[i]+n;n=Math.floor(o/67108864),r[i++]=67108863&o}return n},e=26):(t.prototype.am=function(e,t,r,i,n,s){for(var o=16383&t,a=t>>14;--s>=0;){var c=16383&this[e],d=this[e++]>>14,l=a*c+d*o;n=((c=o*c+((16383&l)<<14)+r[i]+n)>>28)+(l>>14)+a*d,r[i++]=268435455&c}return n},e=28),t.prototype.DB=e,t.prototype.DM=(1<<e)-1,t.prototype.DV=1<<e,t.prototype.FV=Math.pow(2,52),t.prototype.F1=52-e,t.prototype.F2=2*e-52;var n,s,o="0123456789abcdefghijklmnopqrstuvwxyz",a=new Array;for(n="0".charCodeAt(0),s=0;s<=9;++s)a[n++]=s;for(n="a".charCodeAt(0),s=10;s<36;++s)a[n++]=s;for(n="A".charCodeAt(0),s=10;s<36;++s)a[n++]=s;function c(e){return o.charAt(e)}function d(e,t){var r=a[e.charCodeAt(t)];return null==r?-1:r}function l(e){var t=r();return t.fromInt(e),t}function p(e){var t,r=1;return 0!=(t=e>>>16)&&(e=t,r+=16),0!=(t=e>>8)&&(e=t,r+=8),0!=(t=e>>4)&&(e=t,r+=4),0!=(t=e>>2)&&(e=t,r+=2),0!=(t=e>>1)&&(e=t,r+=1),r}function u(e){this.m=e}function h(e){this.m=e,this.mp=e.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<<e.DB-15)-1,this.mt2=2*e.t}function m(e,t){return e&t}function f(e,t){return e|t}function g(e,t){return e^t}function v(e,t){return e&~t}function b(e){if(0==e)return-1;var t=0;return 0==(65535&e)&&(e>>=16,t+=16),0==(255&e)&&(e>>=8,t+=8),0==(15&e)&&(e>>=4,t+=4),0==(3&e)&&(e>>=2,t+=2),0==(1&e)&&++t,t}function y(e){for(var t=0;0!=e;)e&=e-1,++t;return t}function _(){}function w(e){return e}function S(e){this.r2=r(),this.q3=r(),t.ONE.dlShiftTo(2*e.t,this.r2),this.mu=this.r2.divide(e),this.m=e}u.prototype.convert=function(e){return e.s<0||e.compareTo(this.m)>=0?e.mod(this.m):e},u.prototype.revert=function(e){return e},u.prototype.reduce=function(e){e.divRemTo(this.m,null,e)},u.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},u.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},h.prototype.convert=function(e){var i=r();return e.abs().dlShiftTo(this.m.t,i),i.divRemTo(this.m,null,i),e.s<0&&i.compareTo(t.ZERO)>0&&this.m.subTo(i,i),i},h.prototype.revert=function(e){var t=r();return e.copyTo(t),this.reduce(t),t},h.prototype.reduce=function(e){for(;e.t<=this.mt2;)e[e.t++]=0;for(var t=0;t<this.m.t;++t){var r=32767&e[t],i=r*this.mpl+((r*this.mph+(e[t]>>15)*this.mpl&this.um)<<15)&e.DM;for(e[r=t+this.m.t]+=this.m.am(0,i,e,t,0,this.m.t);e[r]>=e.DV;)e[r]-=e.DV,e[++r]++}e.clamp(),e.drShiftTo(this.m.t,e),e.compareTo(this.m)>=0&&e.subTo(this.m,e)},h.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},h.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},t.prototype.copyTo=function(e){for(var t=this.t-1;t>=0;--t)e[t]=this[t];e.t=this.t,e.s=this.s},t.prototype.fromInt=function(e){this.t=1,this.s=e<0?-1:0,e>0?this[0]=e:e<-1?this[0]=e+this.DV:this.t=0},t.prototype.fromString=function(e,r){var i;if(16==r)i=4;else if(8==r)i=3;else if(256==r)i=8;else if(2==r)i=1;else if(32==r)i=5;else{if(4!=r)return void this.fromRadix(e,r);i=2}this.t=0,this.s=0;for(var n=e.length,s=!1,o=0;--n>=0;){var a=8==i?255&e[n]:d(e,n);a<0?"-"==e.charAt(n)&&(s=!0):(s=!1,0==o?this[this.t++]=a:o+i>this.DB?(this[this.t-1]|=(a&(1<<this.DB-o)-1)<<o,this[this.t++]=a>>this.DB-o):this[this.t-1]|=a<<o,(o+=i)>=this.DB&&(o-=this.DB))}8==i&&0!=(128&e[0])&&(this.s=-1,o>0&&(this[this.t-1]|=(1<<this.DB-o)-1<<o)),this.clamp(),s&&t.ZERO.subTo(this,this)},t.prototype.clamp=function(){for(var e=this.s&this.DM;this.t>0&&this[this.t-1]==e;)--this.t},t.prototype.dlShiftTo=function(e,t){var r;for(r=this.t-1;r>=0;--r)t[r+e]=this[r];for(r=e-1;r>=0;--r)t[r]=0;t.t=this.t+e,t.s=this.s},t.prototype.drShiftTo=function(e,t){for(var r=e;r<this.t;++r)t[r-e]=this[r];t.t=Math.max(this.t-e,0),t.s=this.s},t.prototype.lShiftTo=function(e,t){var r,i=e%this.DB,n=this.DB-i,s=(1<<n)-1,o=Math.floor(e/this.DB),a=this.s<<i&this.DM;for(r=this.t-1;r>=0;--r)t[r+o+1]=this[r]>>n|a,a=(this[r]&s)<<i;for(r=o-1;r>=0;--r)t[r]=0;t[o]=a,t.t=this.t+o+1,t.s=this.s,t.clamp()},t.prototype.rShiftTo=function(e,t){t.s=this.s;var r=Math.floor(e/this.DB);if(r>=this.t)t.t=0;else{var i=e%this.DB,n=this.DB-i,s=(1<<i)-1;t[0]=this[r]>>i;for(var o=r+1;o<this.t;++o)t[o-r-1]|=(this[o]&s)<<n,t[o-r]=this[o]>>i;i>0&&(t[this.t-r-1]|=(this.s&s)<<n),t.t=this.t-r,t.clamp()}},t.prototype.subTo=function(e,t){for(var r=0,i=0,n=Math.min(e.t,this.t);r<n;)i+=this[r]-e[r],t[r++]=i&this.DM,i>>=this.DB;if(e.t<this.t){for(i-=e.s;r<this.t;)i+=this[r],t[r++]=i&this.DM,i>>=this.DB;i+=this.s}else{for(i+=this.s;r<e.t;)i-=e[r],t[r++]=i&this.DM,i>>=this.DB;i-=e.s}t.s=i<0?-1:0,i<-1?t[r++]=this.DV+i:i>0&&(t[r++]=i),t.t=r,t.clamp()},t.prototype.multiplyTo=function(e,r){var i=this.abs(),n=e.abs(),s=i.t;for(r.t=s+n.t;--s>=0;)r[s]=0;for(s=0;s<n.t;++s)r[s+i.t]=i.am(0,n[s],r,s,0,i.t);r.s=0,r.clamp(),this.s!=e.s&&t.ZERO.subTo(r,r)},t.prototype.squareTo=function(e){for(var t=this.abs(),r=e.t=2*t.t;--r>=0;)e[r]=0;for(r=0;r<t.t-1;++r){var i=t.am(r,t[r],e,2*r,0,1);(e[r+t.t]+=t.am(r+1,2*t[r],e,2*r+1,i,t.t-r-1))>=t.DV&&(e[r+t.t]-=t.DV,e[r+t.t+1]=1)}e.t>0&&(e[e.t-1]+=t.am(r,t[r],e,2*r,0,1)),e.s=0,e.clamp()},t.prototype.divRemTo=function(e,i,n){var s=e.abs();if(!(s.t<=0)){var o=this.abs();if(o.t<s.t)return null!=i&&i.fromInt(0),void(null!=n&&this.copyTo(n));null==n&&(n=r());var a=r(),c=this.s,d=e.s,l=this.DB-p(s[s.t-1]);l>0?(s.lShiftTo(l,a),o.lShiftTo(l,n)):(s.copyTo(a),o.copyTo(n));var u=a.t,h=a[u-1];if(0!=h){var m=h*(1<<this.F1)+(u>1?a[u-2]>>this.F2:0),f=this.FV/m,g=(1<<this.F1)/m,v=1<<this.F2,b=n.t,y=b-u,_=null==i?r():i;for(a.dlShiftTo(y,_),n.compareTo(_)>=0&&(n[n.t++]=1,n.subTo(_,n)),t.ONE.dlShiftTo(u,_),_.subTo(a,a);a.t<u;)a[a.t++]=0;for(;--y>=0;){var w=n[--b]==h?this.DM:Math.floor(n[b]*f+(n[b-1]+v)*g);if((n[b]+=a.am(0,w,n,y,0,u))<w)for(a.dlShiftTo(y,_),n.subTo(_,n);n[b]<--w;)n.subTo(_,n)}null!=i&&(n.drShiftTo(u,i),c!=d&&t.ZERO.subTo(i,i)),n.t=u,n.clamp(),l>0&&n.rShiftTo(l,n),c<0&&t.ZERO.subTo(n,n)}}},t.prototype.invDigit=function(){if(this.t<1)return 0;var e=this[0];if(0==(1&e))return 0;var t=3&e;return(t=(t=(t=(t=t*(2-(15&e)*t)&15)*(2-(255&e)*t)&255)*(2-((65535&e)*t&65535))&65535)*(2-e*t%this.DV)%this.DV)>0?this.DV-t:-t},t.prototype.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},t.prototype.exp=function(e,i){if(e>4294967295||e<1)return t.ONE;var n=r(),s=r(),o=i.convert(this),a=p(e)-1;for(o.copyTo(n);--a>=0;)if(i.sqrTo(n,s),(e&1<<a)>0)i.mulTo(s,o,n);else{var c=n;n=s,s=c}return i.revert(n)},t.prototype.toString=function(e){if(this.s<0)return"-"+this.negate().toString(e);var t;if(16==e)t=4;else if(8==e)t=3;else if(2==e)t=1;else if(32==e)t=5;else{if(4!=e)return this.toRadix(e);t=2}var r,i=(1<<t)-1,n=!1,s="",o=this.t,a=this.DB-o*this.DB%t;if(o-- >0)for(a<this.DB&&(r=this[o]>>a)>0&&(n=!0,s=c(r));o>=0;)a<t?(r=(this[o]&(1<<a)-1)<<t-a,r|=this[--o]>>(a+=this.DB-t)):(r=this[o]>>(a-=t)&i,a<=0&&(a+=this.DB,--o)),r>0&&(n=!0),n&&(s+=c(r));return n?s:"0"},t.prototype.negate=function(){var e=r();return t.ZERO.subTo(this,e),e},t.prototype.abs=function(){return this.s<0?this.negate():this},t.prototype.compareTo=function(e){var t=this.s-e.s;if(0!=t)return t;var r=this.t;if(0!=(t=r-e.t))return this.s<0?-t:t;for(;--r>=0;)if(0!=(t=this[r]-e[r]))return t;return 0},t.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+p(this[this.t-1]^this.s&this.DM)},t.prototype.mod=function(e){var i=r();return this.abs().divRemTo(e,null,i),this.s<0&&i.compareTo(t.ZERO)>0&&e.subTo(i,i),i},t.prototype.modPowInt=function(e,t){var r;return r=e<256||t.isEven()?new u(t):new h(t),this.exp(e,r)},t.ZERO=l(0),t.ONE=l(1),_.prototype.convert=w,_.prototype.revert=w,_.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r)},_.prototype.sqrTo=function(e,t){e.squareTo(t)},S.prototype.convert=function(e){if(e.s<0||e.t>2*this.m.t)return e.mod(this.m);if(e.compareTo(this.m)<0)return e;var t=r();return e.copyTo(t),this.reduce(t),t},S.prototype.revert=function(e){return e},S.prototype.reduce=function(e){for(e.drShiftTo(this.m.t-1,this.r2),e.t>this.m.t+1&&(e.t=this.m.t+1,e.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);e.compareTo(this.r2)<0;)e.dAddOffset(1,this.m.t+1);for(e.subTo(this.r2,e);e.compareTo(this.m)>=0;)e.subTo(this.m,e)},S.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},S.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)};var C,R,T,P=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],k=(1<<26)/P[P.length-1];function O(){var e;e=(new Date).getTime(),R[T++]^=255&e,R[T++]^=e>>8&255,R[T++]^=e>>16&255,R[T++]^=e>>24&255,T>=L&&(T-=L)}if(t.prototype.chunkSize=function(e){return Math.floor(Math.LN2*this.DB/Math.log(e))},t.prototype.toRadix=function(e){if(null==e&&(e=10),0==this.signum()||e<2||e>36)return"0";var t=this.chunkSize(e),i=Math.pow(e,t),n=l(i),s=r(),o=r(),a="";for(this.divRemTo(n,s,o);s.signum()>0;)a=(i+o.intValue()).toString(e).substr(1)+a,s.divRemTo(n,s,o);return o.intValue().toString(e)+a},t.prototype.fromRadix=function(e,r){this.fromInt(0),null==r&&(r=10);for(var i=this.chunkSize(r),n=Math.pow(r,i),s=!1,o=0,a=0,c=0;c<e.length;++c){var l=d(e,c);l<0?"-"==e.charAt(c)&&0==this.signum()&&(s=!0):(a=r*a+l,++o>=i&&(this.dMultiply(n),this.dAddOffset(a,0),o=0,a=0))}o>0&&(this.dMultiply(Math.pow(r,o)),this.dAddOffset(a,0)),s&&t.ZERO.subTo(this,this)},t.prototype.fromNumber=function(e,r,i){if("number"==typeof r)if(e<2)this.fromInt(1);else for(this.fromNumber(e,i),this.testBit(e-1)||this.bitwiseTo(t.ONE.shiftLeft(e-1),f,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(r);)this.dAddOffset(2,0),this.bitLength()>e&&this.subTo(t.ONE.shiftLeft(e-1),this);else{var n=new Array,s=7&e;n.length=1+(e>>3),r.nextBytes(n),s>0?n[0]&=(1<<s)-1:n[0]=0,this.fromString(n,256)}},t.prototype.bitwiseTo=function(e,t,r){var i,n,s=Math.min(e.t,this.t);for(i=0;i<s;++i)r[i]=t(this[i],e[i]);if(e.t<this.t){for(n=e.s&this.DM,i=s;i<this.t;++i)r[i]=t(this[i],n);r.t=this.t}else{for(n=this.s&this.DM,i=s;i<e.t;++i)r[i]=t(n,e[i]);r.t=e.t}r.s=t(this.s,e.s),r.clamp()},t.prototype.changeBit=function(e,r){var i=t.ONE.shiftLeft(e);return this.bitwiseTo(i,r,i),i},t.prototype.addTo=function(e,t){for(var r=0,i=0,n=Math.min(e.t,this.t);r<n;)i+=this[r]+e[r],t[r++]=i&this.DM,i>>=this.DB;if(e.t<this.t){for(i+=e.s;r<this.t;)i+=this[r],t[r++]=i&this.DM,i>>=this.DB;i+=this.s}else{for(i+=this.s;r<e.t;)i+=e[r],t[r++]=i&this.DM,i>>=this.DB;i+=e.s}t.s=i<0?-1:0,i>0?t[r++]=i:i<-1&&(t[r++]=this.DV+i),t.t=r,t.clamp()},t.prototype.dMultiply=function(e){this[this.t]=this.am(0,e-1,this,0,0,this.t),++this.t,this.clamp()},t.prototype.dAddOffset=function(e,t){if(0!=e){for(;this.t<=t;)this[this.t++]=0;for(this[t]+=e;this[t]>=this.DV;)this[t]-=this.DV,++t>=this.t&&(this[this.t++]=0),++this[t]}},t.prototype.multiplyLowerTo=function(e,t,r){var i,n=Math.min(this.t+e.t,t);for(r.s=0,r.t=n;n>0;)r[--n]=0;for(i=r.t-this.t;n<i;++n)r[n+this.t]=this.am(0,e[n],r,n,0,this.t);for(i=Math.min(e.t,t);n<i;++n)this.am(0,e[n],r,n,0,t-n);r.clamp()},t.prototype.multiplyUpperTo=function(e,t,r){--t;var i=r.t=this.t+e.t-t;for(r.s=0;--i>=0;)r[i]=0;for(i=Math.max(t-this.t,0);i<e.t;++i)r[this.t+i-t]=this.am(t-i,e[i],r,0,0,this.t+i-t);r.clamp(),r.drShiftTo(1,r)},t.prototype.modInt=function(e){if(e<=0)return 0;var t=this.DV%e,r=this.s<0?e-1:0;if(this.t>0)if(0==t)r=this[0]%e;else for(var i=this.t-1;i>=0;--i)r=(t*r+this[i])%e;return r},t.prototype.millerRabin=function(e){var i=this.subtract(t.ONE),n=i.getLowestSetBit();if(n<=0)return!1;var s=i.shiftRight(n);(e=e+1>>1)>P.length&&(e=P.length);for(var o=r(),a=0;a<e;++a){o.fromInt(P[Math.floor(Math.random()*P.length)]);var c=o.modPow(s,this);if(0!=c.compareTo(t.ONE)&&0!=c.compareTo(i)){for(var d=1;d++<n&&0!=c.compareTo(i);)if(0==(c=c.modPowInt(2,this)).compareTo(t.ONE))return!1;if(0!=c.compareTo(i))return!1}}return!0},t.prototype.clone=function(){var e=r();return this.copyTo(e),e},t.prototype.intValue=function(){if(this.s<0){if(1==this.t)return this[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<<this.DB|this[0]},t.prototype.byteValue=function(){return 0==this.t?this.s:this[0]<<24>>24},t.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},t.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},t.prototype.toByteArray=function(){var e=this.t,t=new Array;t[0]=this.s;var r,i=this.DB-e*this.DB%8,n=0;if(e-- >0)for(i<this.DB&&(r=this[e]>>i)!=(this.s&this.DM)>>i&&(t[n++]=r|this.s<<this.DB-i);e>=0;)i<8?(r=(this[e]&(1<<i)-1)<<8-i,r|=this[--e]>>(i+=this.DB-8)):(r=this[e]>>(i-=8)&255,i<=0&&(i+=this.DB,--e)),0!=(128&r)&&(r|=-256),0==n&&(128&this.s)!=(128&r)&&++n,(n>0||r!=this.s)&&(t[n++]=r);return t},t.prototype.equals=function(e){return 0==this.compareTo(e)},t.prototype.min=function(e){return this.compareTo(e)<0?this:e},t.prototype.max=function(e){return this.compareTo(e)>0?this:e},t.prototype.and=function(e){var t=r();return this.bitwiseTo(e,m,t),t},t.prototype.or=function(e){var t=r();return this.bitwiseTo(e,f,t),t},t.prototype.xor=function(e){var t=r();return this.bitwiseTo(e,g,t),t},t.prototype.andNot=function(e){var t=r();return this.bitwiseTo(e,v,t),t},t.prototype.not=function(){for(var e=r(),t=0;t<this.t;++t)e[t]=this.DM&~this[t];return e.t=this.t,e.s=~this.s,e},t.prototype.shiftLeft=function(e){var t=r();return e<0?this.rShiftTo(-e,t):this.lShiftTo(e,t),t},t.prototype.shiftRight=function(e){var t=r();return e<0?this.lShiftTo(-e,t):this.rShiftTo(e,t),t},t.prototype.getLowestSetBit=function(){for(var e=0;e<this.t;++e)if(0!=this[e])return e*this.DB+b(this[e]);return this.s<0?this.t*this.DB:-1},t.prototype.bitCount=function(){for(var e=0,t=this.s&this.DM,r=0;r<this.t;++r)e+=y(this[r]^t);return e},t.prototype.testBit=function(e){var t=Math.floor(e/this.DB);return t>=this.t?0!=this.s:0!=(this[t]&1<<e%this.DB)},t.prototype.setBit=function(e){return this.changeBit(e,f)},t.prototype.clearBit=function(e){return this.changeBit(e,v)},t.prototype.flipBit=function(e){return this.changeBit(e,g)},t.prototype.add=function(e){var t=r();return this.addTo(e,t),t},t.prototype.subtract=function(e){var t=r();return this.subTo(e,t),t},t.prototype.multiply=function(e){var t=r();return this.multiplyTo(e,t),t},t.prototype.divide=function(e){var t=r();return this.divRemTo(e,t,null),t},t.prototype.remainder=function(e){var t=r();return this.divRemTo(e,null,t),t},t.prototype.divideAndRemainder=function(e){var t=r(),i=r();return this.divRemTo(e,t,i),new Array(t,i)},t.prototype.modPow=function(e,t){var i,n,s=e.bitLength(),o=l(1);if(s<=0)return o;i=s<18?1:s<48?3:s<144?4:s<768?5:6,n=s<8?new u(t):t.isEven()?new S(t):new h(t);var a=new Array,c=3,d=i-1,m=(1<<i)-1;if(a[1]=n.convert(this),i>1){var f=r();for(n.sqrTo(a[1],f);c<=m;)a[c]=r(),n.mulTo(f,a[c-2],a[c]),c+=2}var g,v,b=e.t-1,y=!0,_=r();for(s=p(e[b])-1;b>=0;){for(s>=d?g=e[b]>>s-d&m:(g=(e[b]&(1<<s+1)-1)<<d-s,b>0&&(g|=e[b-1]>>this.DB+s-d)),c=i;0==(1&g);)g>>=1,--c;if((s-=c)<0&&(s+=this.DB,--b),y)a[g].copyTo(o),y=!1;else{for(;c>1;)n.sqrTo(o,_),n.sqrTo(_,o),c-=2;c>0?n.sqrTo(o,_):(v=o,o=_,_=v),n.mulTo(_,a[g],o)}for(;b>=0&&0==(e[b]&1<<s);)n.sqrTo(o,_),v=o,o=_,_=v,--s<0&&(s=this.DB-1,--b)}return n.revert(o)},t.prototype.modInverse=function(e){var r=e.isEven();if(this.isEven()&&r||0==e.signum())return t.ZERO;for(var i=e.clone(),n=this.clone(),s=l(1),o=l(0),a=l(0),c=l(1);0!=i.signum();){for(;i.isEven();)i.rShiftTo(1,i),r?(s.isEven()&&o.isEven()||(s.addTo(this,s),o.subTo(e,o)),s.rShiftTo(1,s)):o.isEven()||o.subTo(e,o),o.rShiftTo(1,o);for(;n.isEven();)n.rShiftTo(1,n),r?(a.isEven()&&c.isEven()||(a.addTo(this,a),c.subTo(e,c)),a.rShiftTo(1,a)):c.isEven()||c.subTo(e,c),c.rShiftTo(1,c);i.compareTo(n)>=0?(i.subTo(n,i),r&&s.subTo(a,s),o.subTo(c,o)):(n.subTo(i,n),r&&a.subTo(s,a),c.subTo(o,c))}return 0!=n.compareTo(t.ONE)?t.ZERO:c.compareTo(e)>=0?c.subtract(e):c.signum()<0?(c.addTo(e,c),c.signum()<0?c.add(e):c):c},t.prototype.pow=function(e){return this.exp(e,new _)},t.prototype.gcd=function(e){var t=this.s<0?this.negate():this.clone(),r=e.s<0?e.negate():e.clone();if(t.compareTo(r)<0){var i=t;t=r,r=i}var n=t.getLowestSetBit(),s=r.getLowestSetBit();if(s<0)return t;for(n<s&&(s=n),s>0&&(t.rShiftTo(s,t),r.rShiftTo(s,r));t.signum()>0;)(n=t.getLowestSetBit())>0&&t.rShiftTo(n,t),(n=r.getLowestSetBit())>0&&r.rShiftTo(n,r),t.compareTo(r)>=0?(t.subTo(r,t),t.rShiftTo(1,t)):(r.subTo(t,r),r.rShiftTo(1,r));return s>0&&r.lShiftTo(s,r),r},t.prototype.isProbablePrime=function(e){var t,r=this.abs();if(1==r.t&&r[0]<=P[P.length-1]){for(t=0;t<P.length;++t)if(r[0]==P[t])return!0;return!1}if(r.isEven())return!1;for(t=1;t<P.length;){for(var i=P[t],n=t+1;n<P.length&&i<k;)i*=P[n++];for(i=r.modInt(i);t<n;)if(i%P[t++]==0)return!1}return r.millerRabin(e)},t.prototype.square=function(){var e=r();return this.squareTo(e),e},t.prototype.Barrett=S,null==R){var E;if(R=new Array,T=0,"undefined"!=typeof window&&window.crypto)if(window.crypto.getRandomValues){var D=new Uint8Array(32);for(window.crypto.getRandomValues(D),E=0;E<32;++E)R[T++]=D[E]}else if("Netscape"==navigator.appName&&navigator.appVersion<"5"){var I=window.crypto.random(32);for(E=0;E<I.length;++E)R[T++]=255&I.charCodeAt(E)}for(;T<L;)E=Math.floor(65536*Math.random()),R[T++]=E>>>8,R[T++]=255&E;T=0,O()}function x(){if(null==C){for(O(),(C=new j).init(R),T=0;T<R.length;++T)R[T]=0;T=0}return C.next()}function M(){}function j(){this.i=0,this.j=0,this.S=new Array}M.prototype.nextBytes=function(e){var t;for(t=0;t<e.length;++t)e[t]=x()},j.prototype.init=function(e){var t,r,i;for(t=0;t<256;++t)this.S[t]=t;for(r=0,t=0;t<256;++t)r=r+this.S[t]+e[t%e.length]&255,i=this.S[t],this.S[t]=this.S[r],this.S[r]=i;this.i=0,this.j=0},j.prototype.next=function(){var e;return this.i=this.i+1&255,this.j=this.j+this.S[this.i]&255,e=this.S[this.i],this.S[this.i]=this.S[this.j],this.S[this.j]=e,this.S[e+this.S[this.i]&255]};var L=256;Cl.exports={default:t,BigInteger:t,SecureRandom:M}}.call(s);var Tl=Rl.exports,Pl={};!function(e){!function(){var t={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function r(e){return function(e,i){var n,s,o,a,c,d,l,p,u,h=1,m=e.length,f="";for(s=0;s<m;s++)if("string"==typeof e[s])f+=e[s];else if("object"==typeof e[s]){if((a=e[s]).keys)for(n=i[h],o=0;o<a.keys.length;o++){if(null==n)throw new Error(r('[sprintf] Cannot access property "%s" of undefined value "%s"',a.keys[o],a.keys[o-1]));n=n[a.keys[o]]}else n=a.param_no?i[a.param_no]:i[h++];if(t.not_type.test(a.type)&&t.not_primitive.test(a.type)&&n instanceof Function&&(n=n()),t.numeric_arg.test(a.type)&&"number"!=typeof n&&isNaN(n))throw new TypeError(r("[sprintf] expecting number but found %T",n));switch(t.number.test(a.type)&&(p=n>=0),a.type){case"b":n=parseInt(n,10).toString(2);break;case"c":n=String.fromCharCode(parseInt(n,10));break;case"d":case"i":n=parseInt(n,10);break;case"j":n=JSON.stringify(n,null,a.width?parseInt(a.width):0);break;case"e":n=a.precision?parseFloat(n).toExponential(a.precision):parseFloat(n).toExponential();break;case"f":n=a.precision?parseFloat(n).toFixed(a.precision):parseFloat(n);break;case"g":n=a.precision?String(Number(n.toPrecision(a.precision))):parseFloat(n);break;case"o":n=(parseInt(n,10)>>>0).toString(8);break;case"s":n=String(n),n=a.precision?n.substring(0,a.precision):n;break;case"t":n=String(!!n),n=a.precision?n.substring(0,a.precision):n;break;case"T":n=Object.prototype.toString.call(n).slice(8,-1).toLowerCase(),n=a.precision?n.substring(0,a.precision):n;break;case"u":n=parseInt(n,10)>>>0;break;case"v":n=n.valueOf(),n=a.precision?n.substring(0,a.precision):n;break;case"x":n=(parseInt(n,10)>>>0).toString(16);break;case"X":n=(parseInt(n,10)>>>0).toString(16).toUpperCase()}t.json.test(a.type)?f+=n:(!t.number.test(a.type)||p&&!a.sign?u="":(u=p?"+":"-",n=n.toString().replace(t.sign,"")),d=a.pad_char?"0"===a.pad_char?"0":a.pad_char.charAt(1):" ",l=a.width-(u+n).length,c=a.width&&l>0?d.repeat(l):"",f+=a.align?u+n+c:"0"===d?u+c+n:c+u+n)}return f}(function(e){if(n[e])return n[e];var r,i=e,s=[],o=0;for(;i;){if(null!==(r=t.text.exec(i)))s.push(r[0]);else if(null!==(r=t.modulo.exec(i)))s.push("%");else{if(null===(r=t.placeholder.exec(i)))throw new SyntaxError("[sprintf] unexpected placeholder");if(r[2]){o|=1;var a=[],c=r[2],d=[];if(null===(d=t.key.exec(c)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(a.push(d[1]);""!==(c=c.substring(d[0].length));)if(null!==(d=t.key_access.exec(c)))a.push(d[1]);else{if(null===(d=t.index_access.exec(c)))throw new SyntaxError("[sprintf] failed to parse named argument key");a.push(d[1])}r[2]=a}else o|=2;if(3===o)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");s.push({placeholder:r[0],param_no:r[1],keys:r[2],sign:r[3],pad_char:r[4],align:r[5],width:r[6],precision:r[7],type:r[8]})}i=i.substring(r[0].length)}return n[e]=s}(e),arguments)}function i(e,t){return r.apply(null,[e].concat(t||[]))}var n=Object.create(null);e.sprintf=r,e.vsprintf=i,"undefined"!=typeof window&&(window.sprintf=r,window.vsprintf=i)}()}(Pl);var kl=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Ol=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),El=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&kl(t,e,r);return Ol(t,e),t};Object.defineProperty(bl,"__esModule",{value:!0}),bl.Address4=void 0;const Dl=El(yl),Il=El(_l),xl=wl,Ml=Tl,jl=Pl;class Ll{constructor(e){this.groups=Il.GROUPS,this.parsedAddress=[],this.parsedSubnet="",this.subnet="/32",this.subnetMask=32,this.v4=!0,this.isCorrect=Dl.isCorrect(Il.BITS),this.isInSubnet=Dl.isInSubnet,this.address=e;const t=Il.RE_SUBNET_STRING.exec(e);if(t){if(this.parsedSubnet=t[0].replace("/",""),this.subnetMask=parseInt(this.parsedSubnet,10),this.subnet=`/${this.subnetMask}`,this.subnetMask<0||this.subnetMask>Il.BITS)throw new xl.AddressError("Invalid subnet mask.");e=e.replace(Il.RE_SUBNET_STRING,"")}this.addressMinusSuffix=e,this.parsedAddress=this.parse(e)}static isValid(e){try{return new Ll(e),!0}catch(e){return!1}}parse(e){const t=e.split(".");if(!e.match(Il.RE_ADDRESS))throw new xl.AddressError("Invalid IPv4 address.");return t}correctForm(){return this.parsedAddress.map((e=>parseInt(e,10))).join(".")}static fromHex(e){const t=e.replace(/:/g,"").padStart(8,"0"),r=[];let i;for(i=0;i<8;i+=2){const e=t.slice(i,i+2);r.push(parseInt(e,16))}return new Ll(r.join("."))}static fromInteger(e){return Ll.fromHex(e.toString(16))}static fromArpa(e){const t=e.replace(/(\.in-addr\.arpa)?\.$/,"").split(".").reverse().join(".");return new Ll(t)}toHex(){return this.parsedAddress.map((e=>(0,jl.sprintf)("%02x",parseInt(e,10)))).join(":")}toArray(){return this.parsedAddress.map((e=>parseInt(e,10)))}toGroup6(){const e=[];let t;for(t=0;t<Il.GROUPS;t+=2){const r=(0,jl.sprintf)("%02x%02x",parseInt(this.parsedAddress[t],10),parseInt(this.parsedAddress[t+1],10));e.push((0,jl.sprintf)("%x",parseInt(r,16)))}return e.join(":")}bigInteger(){return new Ml.BigInteger(this.parsedAddress.map((e=>(0,jl.sprintf)("%02x",parseInt(e,10)))).join(""),16)}_startAddress(){return new Ml.BigInteger(this.mask()+"0".repeat(Il.BITS-this.subnetMask),2)}startAddress(){return Ll.fromBigInteger(this._startAddress())}startAddressExclusive(){const e=new Ml.BigInteger("1");return Ll.fromBigInteger(this._startAddress().add(e))}_endAddress(){return new Ml.BigInteger(this.mask()+"1".repeat(Il.BITS-this.subnetMask),2)}endAddress(){return Ll.fromBigInteger(this._endAddress())}endAddressExclusive(){const e=new Ml.BigInteger("1");return Ll.fromBigInteger(this._endAddress().subtract(e))}static fromBigInteger(e){return Ll.fromInteger(parseInt(e.toString(),10))}mask(e){return void 0===e&&(e=this.subnetMask),this.getBitsBase2(0,e)}getBitsBase2(e,t){return this.binaryZeroPad().slice(e,t)}reverseForm(e){e||(e={});const t=this.correctForm().split(".").reverse().join(".");return e.omitSuffix?t:(0,jl.sprintf)("%s.in-addr.arpa.",t)}isMulticast(){return this.isInSubnet(new Ll("224.0.0.0/4"))}binaryZeroPad(){return this.bigInteger().toString(2).padStart(Il.BITS,"0")}groupForV6(){const e=this.parsedAddress;return this.address.replace(Il.RE_ADDRESS,(0,jl.sprintf)('<span class="hover-group group-v4 group-6">%s</span>.<span class="hover-group group-v4 group-7">%s</span>',e.slice(0,2).join("."),e.slice(2,4).join(".")))}}bl.Address4=Ll;var Al={},Nl={};Object.defineProperty(Nl,"__esModule",{value:!0}),Nl.RE_URL_WITH_PORT=Nl.RE_URL=Nl.RE_ZONE_STRING=Nl.RE_SUBNET_STRING=Nl.RE_BAD_ADDRESS=Nl.RE_BAD_CHARACTERS=Nl.TYPES=Nl.SCOPES=Nl.GROUPS=Nl.BITS=void 0,Nl.BITS=128,Nl.GROUPS=8,Nl.SCOPES={0:"Reserved",1:"Interface local",2:"Link local",4:"Admin local",5:"Site local",8:"Organization local",14:"Global",15:"Reserved"},Nl.TYPES={"ff01::1/128":"Multicast (All nodes on this interface)","ff01::2/128":"Multicast (All routers on this interface)","ff02::1/128":"Multicast (All nodes on this link)","ff02::2/128":"Multicast (All routers on this link)","ff05::2/128":"Multicast (All routers in this site)","ff02::5/128":"Multicast (OSPFv3 AllSPF routers)","ff02::6/128":"Multicast (OSPFv3 AllDR routers)","ff02::9/128":"Multicast (RIP routers)","ff02::a/128":"Multicast (EIGRP routers)","ff02::d/128":"Multicast (PIM routers)","ff02::16/128":"Multicast (MLDv2 reports)","ff01::fb/128":"Multicast (mDNSv6)","ff02::fb/128":"Multicast (mDNSv6)","ff05::fb/128":"Multicast (mDNSv6)","ff02::1:2/128":"Multicast (All DHCP servers and relay agents on this link)","ff05::1:2/128":"Multicast (All DHCP servers and relay agents in this site)","ff02::1:3/128":"Multicast (All DHCP servers on this link)","ff05::1:3/128":"Multicast (All DHCP servers in this site)","::/128":"Unspecified","::1/128":"Loopback","ff00::/8":"Multicast","fe80::/10":"Link-local unicast"},Nl.RE_BAD_CHARACTERS=/([^0-9a-f:/%])/gi,Nl.RE_BAD_ADDRESS=/([0-9a-f]{5,}|:{3,}|[^:]:$|^:[^:]|\/$)/gi,Nl.RE_SUBNET_STRING=/\/\d{1,3}(?=%|$)/,Nl.RE_ZONE_STRING=/%.*$/,Nl.RE_URL=new RegExp(/^\[{0,1}([0-9a-f:]+)\]{0,1}/),Nl.RE_URL_WITH_PORT=new RegExp(/\[([0-9a-f:]+)\]:([0-9]{1,5})/);var Bl={};Object.defineProperty(Bl,"__esModule",{value:!0}),Bl.simpleGroup=Bl.spanLeadingZeroes=Bl.spanAll=Bl.spanAllZeroes=void 0;const Fl=Pl;function zl(e){return e.replace(/(0+)/g,'<span class="zero">$1</span>')}function Ul(e){return e.replace(/^(0+)/,'<span class="zero">$1</span>')}Bl.spanAllZeroes=zl,Bl.spanAll=function(e,t=0){return e.split("").map(((e,r)=>(0,Fl.sprintf)('<span class="digit value-%s position-%d">%s</span>',e,r+t,zl(e)))).join("")},Bl.spanLeadingZeroes=function(e){return e.split(":").map((e=>Ul(e))).join(":")},Bl.simpleGroup=function(e,t=0){return e.split(":").map(((e,r)=>/group-v4/.test(e)?e:(0,Fl.sprintf)('<span class="hover-group group-%d">%s</span>',r+t,Ul(e))))};var $l={},Vl=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Gl=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ql=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Vl(t,e,r);return Gl(t,e),t};Object.defineProperty($l,"__esModule",{value:!0}),$l.possibleElisions=$l.simpleRegularExpression=$l.ADDRESS_BOUNDARY=$l.padGroup=$l.groupPossibilities=void 0;const Hl=ql(Nl),Wl=Pl;function Kl(e){return(0,Wl.sprintf)("(%s)",e.join("|"))}function Jl(e){return e.length<4?(0,Wl.sprintf)("0{0,%d}%s",4-e.length,e):e}$l.groupPossibilities=Kl,$l.padGroup=Jl,$l.ADDRESS_BOUNDARY="[^A-Fa-f0-9:]",$l.simpleRegularExpression=function(e){const t=[];e.forEach(((e,r)=>{0===parseInt(e,16)&&t.push(r)}));const r=t.map((t=>e.map(((e,r)=>{if(r===t){const t=0===r||r===Hl.GROUPS-1?":":"";return Kl([Jl(e),t])}return Jl(e)})).join(":")));return r.push(e.map(Jl).join(":")),Kl(r)},$l.possibleElisions=function(e,t,r){const i=t?"":":",n=r?"":":",s=[];t||r||s.push("::"),t&&r&&s.push(""),(r&&!t||!r&&t)&&s.push(":"),s.push((0,Wl.sprintf)("%s(:0{1,4}){1,%d}",i,e-1)),s.push((0,Wl.sprintf)("(0{1,4}:){1,%d}%s",e-1,n)),s.push((0,Wl.sprintf)("(0{1,4}:){%d}0{1,4}",e-1));for(let t=1;t<e-1;t++)for(let r=1;r<e-t;r++)s.push((0,Wl.sprintf)("(0{1,4}:){%d}:(0{1,4}:){%d}0{1,4}",r,e-r-t-1));return Kl(s)};var Ql=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Zl=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Yl=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Ql(t,e,r);return Zl(t,e),t};Object.defineProperty(Al,"__esModule",{value:!0}),Al.Address6=void 0;const Xl=Yl(yl),ep=Yl(_l),tp=Yl(Nl),rp=Yl(Bl),ip=bl,np=$l,sp=wl,op=Tl,ap=Pl;function cp(e){if(!e)throw new Error("Assertion failed.")}function dp(e){return e=(e=e.replace(/^(0{1,})([1-9]+)$/,'<span class="parse-error">$1</span>$2')).replace(/^(0{1,})(0)$/,'<span class="parse-error">$1</span>$2')}function lp(e){return(0,ap.sprintf)("%04x",parseInt(e,16))}function pp(e){return 255&e}class up{constructor(e,t){this.addressMinusSuffix="",this.parsedSubnet="",this.subnet="/128",this.subnetMask=128,this.v4=!1,this.zone="",this.isInSubnet=Xl.isInSubnet,this.isCorrect=Xl.isCorrect(tp.BITS),this.groups=void 0===t?tp.GROUPS:t,this.address=e;const r=tp.RE_SUBNET_STRING.exec(e);if(r){if(this.parsedSubnet=r[0].replace("/",""),this.subnetMask=parseInt(this.parsedSubnet,10),this.subnet=`/${this.subnetMask}`,Number.isNaN(this.subnetMask)||this.subnetMask<0||this.subnetMask>tp.BITS)throw new sp.AddressError("Invalid subnet mask.");e=e.replace(tp.RE_SUBNET_STRING,"")}else if(/\//.test(e))throw new sp.AddressError("Invalid subnet mask.");const i=tp.RE_ZONE_STRING.exec(e);i&&(this.zone=i[0],e=e.replace(tp.RE_ZONE_STRING,"")),this.addressMinusSuffix=e,this.parsedAddress=this.parse(this.addressMinusSuffix)}static isValid(e){try{return new up(e),!0}catch(e){return!1}}static fromBigInteger(e){const t=e.toString(16).padStart(32,"0"),r=[];let i;for(i=0;i<tp.GROUPS;i++)r.push(t.slice(4*i,4*(i+1)));return new up(r.join(":"))}static fromURL(e){let t,r,i=null;if(-1!==e.indexOf("[")&&-1!==e.indexOf("]:")){if(r=tp.RE_URL_WITH_PORT.exec(e),null===r)return{error:"failed to parse address with port",address:null,port:null};t=r[1],i=r[2]}else if(-1!==e.indexOf("/")){if(e=e.replace(/^[a-z0-9]+:\/\//,""),r=tp.RE_URL.exec(e),null===r)return{error:"failed to parse address from URL",address:null,port:null};t=r[1]}else t=e;return i?(i=parseInt(i,10),(i<0||i>65536)&&(i=null)):i=null,{address:new up(t),port:i}}static fromAddress4(e){const t=new ip.Address4(e),r=tp.BITS-(ep.BITS-t.subnetMask);return new up(`::ffff:${t.correctForm()}/${r}`)}static fromArpa(e){let t=e.replace(/(\.ip6\.arpa)?\.$/,"");if(63!==t.length)throw new sp.AddressError("Invalid 'ip6.arpa' form.");const r=t.split(".").reverse();for(let e=7;e>0;e--){const t=4*e;r.splice(t,0,":")}return t=r.join(""),new up(t)}microsoftTranscription(){return(0,ap.sprintf)("%s.ipv6-literal.net",this.correctForm().replace(/:/g,"-"))}mask(e=this.subnetMask){return this.getBitsBase2(0,e)}possibleSubnets(e=128){const t=tp.BITS-this.subnetMask-Math.abs(e-tp.BITS);return t<0?"0":function(e){const t=/(\d+)(\d{3})/;for(;t.test(e);)e=e.replace(t,"$1,$2");return e}(new op.BigInteger("2",10).pow(t).toString(10))}_startAddress(){return new op.BigInteger(this.mask()+"0".repeat(tp.BITS-this.subnetMask),2)}startAddress(){return up.fromBigInteger(this._startAddress())}startAddressExclusive(){const e=new op.BigInteger("1");return up.fromBigInteger(this._startAddress().add(e))}_endAddress(){return new op.BigInteger(this.mask()+"1".repeat(tp.BITS-this.subnetMask),2)}endAddress(){return up.fromBigInteger(this._endAddress())}endAddressExclusive(){const e=new op.BigInteger("1");return up.fromBigInteger(this._endAddress().subtract(e))}getScope(){let e=tp.SCOPES[this.getBits(12,16).intValue()];return"Global unicast"===this.getType()&&"Link local"!==e&&(e="Global"),e||"Unknown"}getType(){for(const e of Object.keys(tp.TYPES))if(this.isInSubnet(new up(e)))return tp.TYPES[e];return"Global unicast"}getBits(e,t){return new op.BigInteger(this.getBitsBase2(e,t),2)}getBitsBase2(e,t){return this.binaryZeroPad().slice(e,t)}getBitsBase16(e,t){const r=t-e;if(r%4!=0)throw new Error("Length of bits to retrieve must be divisible by four");return this.getBits(e,t).toString(16).padStart(r/4,"0")}getBitsPastSubnet(){return this.getBitsBase2(this.subnetMask,tp.BITS)}reverseForm(e){e||(e={});const t=Math.floor(this.subnetMask/4),r=this.canonicalForm().replace(/:/g,"").split("").slice(0,t).reverse().join(".");return t>0?e.omitSuffix?r:(0,ap.sprintf)("%s.ip6.arpa.",r):e.omitSuffix?"":"ip6.arpa."}correctForm(){let e,t=[],r=0;const i=[];for(e=0;e<this.parsedAddress.length;e++){const t=parseInt(this.parsedAddress[e],16);0===t&&r++,0!==t&&r>0&&(r>1&&i.push([e-r,e-1]),r=0)}r>1&&i.push([this.parsedAddress.length-r,this.parsedAddress.length-1]);const n=i.map((e=>e[1]-e[0]+1));if(i.length>0){const e=n.indexOf(Math.max(...n));t=function(e,t){const r=[],i=[];let n;for(n=0;n<e.length;n++)n<t[0]?r.push(e[n]):n>t[1]&&i.push(e[n]);return r.concat(["compact"]).concat(i)}(this.parsedAddress,i[e])}else t=this.parsedAddress;for(e=0;e<t.length;e++)"compact"!==t[e]&&(t[e]=parseInt(t[e],16).toString(16));let s=t.join(":");return s=s.replace(/^compact$/,"::"),s=s.replace(/^compact|compact$/,":"),s=s.replace(/compact/,""),s}binaryZeroPad(){return this.bigInteger().toString(2).padStart(tp.BITS,"0")}parse4in6(e){const t=e.split(":"),r=t.slice(-1)[0].match(ep.RE_ADDRESS);if(r){this.parsedAddress4=r[0],this.address4=new ip.Address4(this.parsedAddress4);for(let t=0;t<this.address4.groups;t++)if(/^0[0-9]+/.test(this.address4.parsedAddress[t]))throw new sp.AddressError("IPv4 addresses can't have leading zeroes.",e.replace(ep.RE_ADDRESS,this.address4.parsedAddress.map(dp).join(".")));this.v4=!0,t[t.length-1]=this.address4.toGroup6(),e=t.join(":")}return e}parse(e){const t=(e=this.parse4in6(e)).match(tp.RE_BAD_CHARACTERS);if(t)throw new sp.AddressError((0,ap.sprintf)("Bad character%s detected in address: %s",t.length>1?"s":"",t.join("")),e.replace(tp.RE_BAD_CHARACTERS,'<span class="parse-error">$1</span>'));const r=e.match(tp.RE_BAD_ADDRESS);if(r)throw new sp.AddressError((0,ap.sprintf)("Address failed regex: %s",r.join("")),e.replace(tp.RE_BAD_ADDRESS,'<span class="parse-error">$1</span>'));let i=[];const n=e.split("::");if(2===n.length){let e=n[0].split(":"),t=n[1].split(":");1===e.length&&""===e[0]&&(e=[]),1===t.length&&""===t[0]&&(t=[]);const r=this.groups-(e.length+t.length);if(!r)throw new sp.AddressError("Error parsing groups");this.elidedGroups=r,this.elisionBegin=e.length,this.elisionEnd=e.length+this.elidedGroups,i=i.concat(e);for(let e=0;e<r;e++)i.push("0");i=i.concat(t)}else{if(1!==n.length)throw new sp.AddressError("Too many :: groups found");i=e.split(":"),this.elidedGroups=0}if(i=i.map((e=>(0,ap.sprintf)("%x",parseInt(e,16)))),i.length!==this.groups)throw new sp.AddressError("Incorrect number of groups found");return i}canonicalForm(){return this.parsedAddress.map(lp).join(":")}decimal(){return this.parsedAddress.map((e=>(0,ap.sprintf)("%05d",parseInt(e,16)))).join(":")}bigInteger(){return new op.BigInteger(this.parsedAddress.map(lp).join(""),16)}to4(){const e=this.binaryZeroPad().split("");return ip.Address4.fromHex(new op.BigInteger(e.slice(96,128).join(""),2).toString(16))}to4in6(){const e=this.to4(),t=new up(this.parsedAddress.slice(0,6).join(":"),6).correctForm();let r="";return/:$/.test(t)||(r=":"),t+r+e.address}inspectTeredo(){const e=this.getBitsBase16(0,32),t=this.getBits(80,96).xor(new op.BigInteger("ffff",16)).toString(),r=ip.Address4.fromHex(this.getBitsBase16(32,64)),i=ip.Address4.fromHex(this.getBits(96,128).xor(new op.BigInteger("ffffffff",16)).toString(16)),n=this.getBits(64,80),s=this.getBitsBase2(64,80),o=n.testBit(15),a=n.testBit(14),c=n.testBit(8),d=n.testBit(9),l=new op.BigInteger(s.slice(2,6)+s.slice(8,16),2).toString(10);return{prefix:(0,ap.sprintf)("%s:%s",e.slice(0,4),e.slice(4,8)),server4:r.address,client4:i.address,flags:s,coneNat:o,microsoft:{reserved:a,universalLocal:d,groupIndividual:c,nonce:l},udpPort:t}}inspect6to4(){const e=this.getBitsBase16(0,16),t=ip.Address4.fromHex(this.getBitsBase16(16,48));return{prefix:(0,ap.sprintf)("%s",e.slice(0,4)),gateway:t.address}}to6to4(){if(!this.is4())return null;const e=["2002",this.getBitsBase16(96,112),this.getBitsBase16(112,128),"","/16"].join(":");return new up(e)}toByteArray(){const e=this.bigInteger().toByteArray();return 17===e.length&&0===e[0]?e.slice(1):e}toUnsignedByteArray(){return this.toByteArray().map(pp)}static fromByteArray(e){return this.fromUnsignedByteArray(e.map(pp))}static fromUnsignedByteArray(e){const t=new op.BigInteger("256",10);let r=new op.BigInteger("0",10),i=new op.BigInteger("1",10);for(let n=e.length-1;n>=0;n--)r=r.add(i.multiply(new op.BigInteger(e[n].toString(10),10))),i=i.multiply(t);return up.fromBigInteger(r)}isCanonical(){return this.addressMinusSuffix===this.canonicalForm()}isLinkLocal(){return"1111111010000000000000000000000000000000000000000000000000000000"===this.getBitsBase2(0,64)}isMulticast(){return"Multicast"===this.getType()}is4(){return this.v4}isTeredo(){return this.isInSubnet(new up("2001::/32"))}is6to4(){return this.isInSubnet(new up("2002::/16"))}isLoopback(){return"Loopback"===this.getType()}href(e){return e=void 0===e?"":(0,ap.sprintf)(":%s",e),(0,ap.sprintf)("http://[%s]%s/",this.correctForm(),e)}link(e){e||(e={}),void 0===e.className&&(e.className=""),void 0===e.prefix&&(e.prefix="/#address="),void 0===e.v4&&(e.v4=!1);let t=this.correctForm;return e.v4&&(t=this.to4in6),e.className?(0,ap.sprintf)('<a href="%1$s%2$s" class="%3$s">%2$s</a>',e.prefix,t.call(this),e.className):(0,ap.sprintf)('<a href="%1$s%2$s">%2$s</a>',e.prefix,t.call(this))}group(){if(0===this.elidedGroups)return rp.simpleGroup(this.address).join(":");cp("number"==typeof this.elidedGroups),cp("number"==typeof this.elisionBegin);const e=[],[t,r]=this.address.split("::");t.length?e.push(...rp.simpleGroup(t)):e.push("");const i=["hover-group"];for(let e=this.elisionBegin;e<this.elisionBegin+this.elidedGroups;e++)i.push((0,ap.sprintf)("group-%d",e));return e.push((0,ap.sprintf)('<span class="%s"></span>',i.join(" "))),r.length?e.push(...rp.simpleGroup(r,this.elisionEnd)):e.push(""),this.is4()&&(cp(this.address4 instanceof ip.Address4),e.pop(),e.push(this.address4.groupForV6())),e.join(":")}regularExpressionString(e=!1){let t=[];const r=new up(this.correctForm());if(0===r.elidedGroups)t.push((0,np.simpleRegularExpression)(r.parsedAddress));else if(r.elidedGroups===tp.GROUPS)t.push((0,np.possibleElisions)(tp.GROUPS));else{const e=r.address.split("::");e[0].length&&t.push((0,np.simpleRegularExpression)(e[0].split(":"))),cp("number"==typeof r.elidedGroups),t.push((0,np.possibleElisions)(r.elidedGroups,0!==e[0].length,0!==e[1].length)),e[1].length&&t.push((0,np.simpleRegularExpression)(e[1].split(":"))),t=[t.join(":")]}return e||(t=["(?=^|",np.ADDRESS_BOUNDARY,"|[^\\w\\:])(",...t,")(?=[^\\w\\:]|",np.ADDRESS_BOUNDARY,"|$)"]),t.join("")}regularExpression(e=!1){return new RegExp(this.regularExpressionString(e),"i")}}Al.Address6=up,function(e){var t=s&&s.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),r=s&&s.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=s&&s.__importStar||function(e){if(e&&e.__esModule)return e;var i={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&t(i,e,n);return r(i,e),i};Object.defineProperty(e,"__esModule",{value:!0}),e.v6=e.AddressError=e.Address6=e.Address4=void 0;const n=bl;Object.defineProperty(e,"Address4",{enumerable:!0,get:function(){return n.Address4}});const o=Al;Object.defineProperty(e,"Address6",{enumerable:!0,get:function(){return o.Address6}});const a=wl;Object.defineProperty(e,"AddressError",{enumerable:!0,get:function(){return a.AddressError}});const c=i(Bl);e.v6={helpers:c}}(vl);var hp={exports:{}};!function(e){(function(){var t,r,i,n,s,o,a,c;r={},null!==e&&e.exports?e.exports=r:this.ipaddr=r,a=function(e,t,r,i){var n,s;if(e.length!==t.length)throw new Error("ipaddr: cannot match CIDR for objects with different lengths");for(n=0;i>0;){if((s=r-i)<0&&(s=0),e[n]>>s!=t[n]>>s)return!1;i-=r,n+=1}return!0},r.subnetMatch=function(e,t,r){var i,n,s,o,a;for(s in null==r&&(r="unicast"),t)for(!(o=t[s])[0]||o[0]instanceof Array||(o=[o]),i=0,n=o.length;i<n;i++)if(a=o[i],e.kind()===a[0].kind()&&e.match.apply(e,a))return s;return r},r.IPv4=function(){function e(e){var t,r,i;if(4!==e.length)throw new Error("ipaddr: ipv4 octet count should be 4");for(t=0,r=e.length;t<r;t++)if(!(0<=(i=e[t])&&i<=255))throw new Error("ipaddr: ipv4 octet should fit in 8 bits");this.octets=e}return e.prototype.kind=function(){return"ipv4"},e.prototype.toString=function(){return this.octets.join(".")},e.prototype.toNormalizedString=function(){return this.toString()},e.prototype.toByteArray=function(){return this.octets.slice(0)},e.prototype.match=function(e,t){var r;if(void 0===t&&(e=(r=e)[0],t=r[1]),"ipv4"!==e.kind())throw new Error("ipaddr: cannot match ipv4 address with non-ipv4 one");return a(this.octets,e.octets,8,t)},e.prototype.SpecialRanges={unspecified:[[new e([0,0,0,0]),8]],broadcast:[[new e([255,255,255,255]),32]],multicast:[[new e([224,0,0,0]),4]],linkLocal:[[new e([169,254,0,0]),16]],loopback:[[new e([127,0,0,0]),8]],carrierGradeNat:[[new e([100,64,0,0]),10]],private:[[new e([10,0,0,0]),8],[new e([172,16,0,0]),12],[new e([192,168,0,0]),16]],reserved:[[new e([192,0,0,0]),24],[new e([192,0,2,0]),24],[new e([192,88,99,0]),24],[new e([198,51,100,0]),24],[new e([203,0,113,0]),24],[new e([240,0,0,0]),4]]},e.prototype.range=function(){return r.subnetMatch(this,this.SpecialRanges)},e.prototype.toIPv4MappedAddress=function(){return r.IPv6.parse("::ffff:"+this.toString())},e.prototype.prefixLengthFromSubnetMask=function(){var e,t,r,i,n,s,o;for(o={0:8,128:7,192:6,224:5,240:4,248:3,252:2,254:1,255:0},e=0,n=!1,t=r=3;r>=0;t=r+=-1){if(!((i=this.octets[t])in o))return null;if(s=o[i],n&&0!==s)return null;8!==s&&(n=!0),e+=s}return 32-e},e}(),i="(0?\\d+|0x[a-f0-9]+)",n={fourOctet:new RegExp("^"+i+"\\."+i+"\\."+i+"\\."+i+"$","i"),longValue:new RegExp("^"+i+"$","i")},r.IPv4.parser=function(e){var t,r,i,s,o;if(r=function(e){return"0"===e[0]&&"x"!==e[1]?parseInt(e,8):parseInt(e)},t=e.match(n.fourOctet))return function(){var e,n,s,o;for(o=[],e=0,n=(s=t.slice(1,6)).length;e<n;e++)i=s[e],o.push(r(i));return o}();if(t=e.match(n.longValue)){if((o=r(t[1]))>4294967295||o<0)throw new Error("ipaddr: address outside defined range");return function(){var e,t;for(t=[],s=e=0;e<=24;s=e+=8)t.push(o>>s&255);return t}().reverse()}return null},r.IPv6=function(){function e(e,t){var r,i,n,s,o,a;if(16===e.length)for(this.parts=[],r=i=0;i<=14;r=i+=2)this.parts.push(e[r]<<8|e[r+1]);else{if(8!==e.length)throw new Error("ipaddr: ipv6 part count should be 8 or 16");this.parts=e}for(n=0,s=(a=this.parts).length;n<s;n++)if(!(0<=(o=a[n])&&o<=65535))throw new Error("ipaddr: ipv6 part should fit in 16 bits");t&&(this.zoneId=t)}return e.prototype.kind=function(){return"ipv6"},e.prototype.toString=function(){return this.toNormalizedString().replace(/((^|:)(0(:|$))+)/,"::")},e.prototype.toRFC5952String=function(){var e,t,r,i,n;for(i=/((^|:)(0(:|$)){2,})/g,n=this.toNormalizedString(),e=0,t=-1;r=i.exec(n);)r[0].length>t&&(e=r.index,t=r[0].length);return t<0?n:n.substring(0,e)+"::"+n.substring(e+t)},e.prototype.toByteArray=function(){var e,t,r,i,n;for(e=[],t=0,r=(n=this.parts).length;t<r;t++)i=n[t],e.push(i>>8),e.push(255&i);return e},e.prototype.toNormalizedString=function(){var e,t,r;return e=function(){var e,r,i,n;for(n=[],e=0,r=(i=this.parts).length;e<r;e++)t=i[e],n.push(t.toString(16));return n}.call(this).join(":"),r="",this.zoneId&&(r="%"+this.zoneId),e+r},e.prototype.toFixedLengthString=function(){var e,t,r;return e=function(){var e,r,i,n;for(n=[],e=0,r=(i=this.parts).length;e<r;e++)t=i[e],n.push(t.toString(16).padStart(4,"0"));return n}.call(this).join(":"),r="",this.zoneId&&(r="%"+this.zoneId),e+r},e.prototype.match=function(e,t){var r;if(void 0===t&&(e=(r=e)[0],t=r[1]),"ipv6"!==e.kind())throw new Error("ipaddr: cannot match ipv6 address with non-ipv6 one");return a(this.parts,e.parts,16,t)},e.prototype.SpecialRanges={unspecified:[new e([0,0,0,0,0,0,0,0]),128],linkLocal:[new e([65152,0,0,0,0,0,0,0]),10],multicast:[new e([65280,0,0,0,0,0,0,0]),8],loopback:[new e([0,0,0,0,0,0,0,1]),128],uniqueLocal:[new e([64512,0,0,0,0,0,0,0]),7],ipv4Mapped:[new e([0,0,0,0,0,65535,0,0]),96],rfc6145:[new e([0,0,0,0,65535,0,0,0]),96],rfc6052:[new e([100,65435,0,0,0,0,0,0]),96],"6to4":[new e([8194,0,0,0,0,0,0,0]),16],teredo:[new e([8193,0,0,0,0,0,0,0]),32],reserved:[[new e([8193,3512,0,0,0,0,0,0]),32]]},e.prototype.range=function(){return r.subnetMatch(this,this.SpecialRanges)},e.prototype.isIPv4MappedAddress=function(){return"ipv4Mapped"===this.range()},e.prototype.toIPv4Address=function(){var e,t,i;if(!this.isIPv4MappedAddress())throw new Error("ipaddr: trying to convert a generic ipv6 address to ipv4");return e=(i=this.parts.slice(-2))[0],t=i[1],new r.IPv4([e>>8,255&e,t>>8,255&t])},e.prototype.prefixLengthFromSubnetMask=function(){var e,t,r,i,n,s,o;for(o={0:16,32768:15,49152:14,57344:13,61440:12,63488:11,64512:10,65024:9,65280:8,65408:7,65472:6,65504:5,65520:4,65528:3,65532:2,65534:1,65535:0},e=0,n=!1,t=r=7;r>=0;t=r+=-1){if(!((i=this.parts[t])in o))return null;if(s=o[i],n&&0!==s)return null;16!==s&&(n=!0),e+=s}return 128-e},e}(),s="(?:[0-9a-f]+::?)+",c="%[0-9a-z]{1,}",o={zoneIndex:new RegExp(c,"i"),native:new RegExp("^(::)?("+s+")?([0-9a-f]+)?(::)?("+c+")?$","i"),transitional:new RegExp("^((?:"+s+")|(?:::)(?:"+s+")?)"+i+"\\."+i+"\\."+i+"\\."+i+"("+c+")?$","i")},t=function(e,t){var r,i,n,s,a,c;if(e.indexOf("::")!==e.lastIndexOf("::"))return null;for((c=(e.match(o.zoneIndex)||[])[0])&&(c=c.substring(1),e=e.replace(/%.+$/,"")),r=0,i=-1;(i=e.indexOf(":",i+1))>=0;)r++;if("::"===e.substr(0,2)&&r--,"::"===e.substr(-2,2)&&r--,r>t)return null;for(a=t-r,s=":";a--;)s+="0:";return":"===(e=e.replace("::",s))[0]&&(e=e.slice(1)),":"===e[e.length-1]&&(e=e.slice(0,-1)),{parts:t=function(){var t,r,i,s;for(s=[],t=0,r=(i=e.split(":")).length;t<r;t++)n=i[t],s.push(parseInt(n,16));return s}(),zoneId:c}},r.IPv6.parser=function(e){var r,i,n,s,a,c,d;if(o.native.test(e))return t(e,8);if((s=e.match(o.transitional))&&(d=s[6]||"",(r=t(s[1].slice(0,-1)+d,6)).parts)){for(i=0,n=(c=[parseInt(s[2]),parseInt(s[3]),parseInt(s[4]),parseInt(s[5])]).length;i<n;i++)if(!(0<=(a=c[i])&&a<=255))return null;return r.parts.push(c[0]<<8|c[1]),r.parts.push(c[2]<<8|c[3]),{parts:r.parts,zoneId:r.zoneId}}return null},r.IPv4.isIPv4=r.IPv6.isIPv6=function(e){return null!==this.parser(e)},r.IPv4.isValid=function(e){try{return new this(this.parser(e)),!0}catch(e){return!1}},r.IPv4.isValidFourPartDecimal=function(e){return!(!r.IPv4.isValid(e)||!e.match(/^(0|[1-9]\d*)(\.(0|[1-9]\d*)){3}$/))},r.IPv6.isValid=function(e){var t;if("string"==typeof e&&-1===e.indexOf(":"))return!1;try{return new this((t=this.parser(e)).parts,t.zoneId),!0}catch(e){return!1}},r.IPv4.parse=function(e){var t;if(null===(t=this.parser(e)))throw new Error("ipaddr: string is not formatted like ip address");return new this(t)},r.IPv6.parse=function(e){var t;if(null===(t=this.parser(e)).parts)throw new Error("ipaddr: string is not formatted like ip address");return new this(t.parts,t.zoneId)},r.IPv4.parseCIDR=function(e){var t,r,i;if((r=e.match(/^(.+)\/(\d+)$/))&&(t=parseInt(r[2]))>=0&&t<=32)return i=[this.parse(r[1]),t],Object.defineProperty(i,"toString",{value:function(){return this.join("/")}}),i;throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range")},r.IPv4.subnetMaskFromPrefixLength=function(e){var t,r,i;if((e=parseInt(e))<0||e>32)throw new Error("ipaddr: invalid IPv4 prefix length");for(i=[0,0,0,0],r=0,t=Math.floor(e/8);r<t;)i[r]=255,r++;return t<4&&(i[t]=Math.pow(2,e%8)-1<<8-e%8),new this(i)},r.IPv4.broadcastAddressFromCIDR=function(e){var t,r,i,n,s;try{for(i=(t=this.parseCIDR(e))[0].toByteArray(),s=this.subnetMaskFromPrefixLength(t[1]).toByteArray(),n=[],r=0;r<4;)n.push(parseInt(i[r],10)|255^parseInt(s[r],10)),r++;return new this(n)}catch(e){throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},r.IPv4.networkAddressFromCIDR=function(e){var t,r,i,n,s;try{for(i=(t=this.parseCIDR(e))[0].toByteArray(),s=this.subnetMaskFromPrefixLength(t[1]).toByteArray(),n=[],r=0;r<4;)n.push(parseInt(i[r],10)&parseInt(s[r],10)),r++;return new this(n)}catch(e){throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},r.IPv6.parseCIDR=function(e){var t,r,i;if((r=e.match(/^(.+)\/(\d+)$/))&&(t=parseInt(r[2]))>=0&&t<=128)return i=[this.parse(r[1]),t],Object.defineProperty(i,"toString",{value:function(){return this.join("/")}}),i;throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range")},r.isValid=function(e){return r.IPv6.isValid(e)||r.IPv4.isValid(e)},r.parse=function(e){if(r.IPv6.isValid(e))return r.IPv6.parse(e);if(r.IPv4.isValid(e))return r.IPv4.parse(e);throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format")},r.parseCIDR=function(e){try{return r.IPv6.parseCIDR(e)}catch(t){try{return r.IPv4.parseCIDR(e)}catch(e){throw new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format")}}},r.fromByteArray=function(e){var t;if(4===(t=e.length))return new r.IPv4(e);if(16===t)return new r.IPv6(e);throw new Error("ipaddr: the binary input is neither an IPv6 nor IPv4 address")},r.process=function(e){var t;return"ipv6"===(t=this.parse(e)).kind()&&t.isIPv4MappedAddress()?t.toIPv4Address():t}}).call(s)}(hp);var mp=hp.exports,fp=function(e,t){if("string"==typeof t)return gp(e,t);if("object"==typeof t){for(var r=!1,i=0;i<t.length;i++)if(gp(e,t[i])){r=!0;break}return r}};function gp(e,t){try{var r=mp.process(e);if(-1===t.indexOf("/")){var i=mp.process(t);return"ipv6"===r.kind()&&"ipv6"===i.kind()?r.toNormalizedString()===i.toNormalizedString():r.toString()==i.toString()}var n=mp.parseCIDR(t);return r.match(n)}catch(e){return!1}}var vp=fp,bp=/^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,yp=["0.0.0.0/8","10.0.0.0/8","100.64.0.0/10","127.0.0.0/8","169.254.0.0/16","172.16.0.0/12","192.0.0.0/24","192.0.2.0/24","192.168.0.0/16","198.18.0.0/15","198.51.100.0/24","203.0.113.0/24","224.0.0.0/3"],_p=["10.0.0.0/8","172.16.0.0/12","192.168.0.0/16"];for(var wp=function(e){var t=[],r={originalIp:e,boiledIp:!1,isValid:!1,isBogon:!1,isApipa:!1,isMulticast:!1,isRfc1918:!1,isPublicIp:!1};if(bp.test(e)){r.isValid=!0;for(var i=e.split("."),n=0;n<4;n++)t.push(parseInt(i[n],10));r.boiledIp=t.join("."),vp(r.boiledIp,yp)&&(r.isBogon=!0),vp(r.boiledIp,"169.254.0.0/16")&&(r.isApipa=!0),vp(r.boiledIp,"224.0.0.0/4")&&(r.isMulticast=!0),vp(r.boiledIp,_p)?r.isRfc1918=!0:!1===r.isBogon&&(r.isPublicIp=!0)}return r},Sp=o(wp),Cp={exports:{}},Rp=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}$/i,Tp=[],Pp=0;Pp<256;Pp++)Tp[Pp]=(Pp+256).toString(16).substr(1);Cp.exports=function(e,t){var r;if(Buffer.isBuffer(e))r=function(e,t){var r=t||0,i=Tp;return i[e[r++]]+i[e[r++]]+i[e[r++]]+i[e[r++]]+"-"+i[e[r++]]+i[e[r++]]+"-"+i[e[r++]]+i[e[r++]]+"-"+i[e[r++]]+i[e[r++]]+"-"+i[e[r++]]+i[e[r++]]+i[e[r++]]+i[e[r++]]+i[e[r++]]+i[e[r++]]}(e);else{if("[object String]"!==Object.prototype.toString.call(e))return!1;r=e}if(r=r.toLowerCase(),!Rp.test(r))return!1;if(void 0===t)t=kp(r);else if(kp(r)!==t)return!1;switch(t){case 1:case 2:return!0;case 3:case 4:case 5:return-1!==["8","9","a","b"].indexOf(r.charAt(19));default:throw new Error("Invalid version provided.")}};var kp=Cp.exports.version=function(e){return 0|e.charAt(14)},Op=o(Cp.exports);const Ep=Object.create(null);Ep.open="0",Ep.close="1",Ep.ping="2",Ep.pong="3",Ep.message="4",Ep.upgrade="5",Ep.noop="6";const Dp=Object.create(null);Object.keys(Ep).forEach((e=>{Dp[Ep[e]]=e}));const Ip={type:"error",data:"parser error"},xp="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),Mp="function"==typeof ArrayBuffer,jp=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,Lp=({type:e,data:t},r,i)=>xp&&t instanceof Blob?r?i(t):Ap(t,i):Mp&&(t instanceof ArrayBuffer||jp(t))?r?i(t):Ap(new Blob([t]),i):i(Ep[e]+(t||"")),Ap=(e,t)=>{const r=new FileReader;return r.onload=function(){const e=r.result.split(",")[1];t("b"+(e||""))},r.readAsDataURL(e)};function Np(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let Bp;const Fp="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",zp="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let ZS=0;ZS<64;ZS++)zp[Fp.charCodeAt(ZS)]=ZS;const Up="function"==typeof ArrayBuffer,$p=(e,t)=>{if("string"!=typeof e)return{type:"message",data:Gp(e,t)};const r=e.charAt(0);if("b"===r)return{type:"message",data:Vp(e.substring(1),t)};return Dp[r]?e.length>1?{type:Dp[r],data:e.substring(1)}:{type:Dp[r]}:Ip},Vp=(e,t)=>{if(Up){const r=(e=>{let t,r,i,n,s,o=.75*e.length,a=e.length,c=0;"="===e[e.length-1]&&(o--,"="===e[e.length-2]&&o--);const d=new ArrayBuffer(o),l=new Uint8Array(d);for(t=0;t<a;t+=4)r=zp[e.charCodeAt(t)],i=zp[e.charCodeAt(t+1)],n=zp[e.charCodeAt(t+2)],s=zp[e.charCodeAt(t+3)],l[c++]=r<<2|i>>4,l[c++]=(15&i)<<4|n>>2,l[c++]=(3&n)<<6|63&s;return d})(e);return Gp(r,t)}return{base64:!0,data:e}},Gp=(e,t)=>"blob"===t?e instanceof Blob?e:new Blob([e]):e instanceof ArrayBuffer?e:e.buffer,qp=String.fromCharCode(30);function Hp(){return new TransformStream({transform(e,t){!function(e,t){xp&&e.data instanceof Blob?e.data.arrayBuffer().then(Np).then(t):Mp&&(e.data instanceof ArrayBuffer||jp(e.data))?t(Np(e.data)):Lp(e,!1,(e=>{Bp||(Bp=new TextEncoder),t(Bp.encode(e))}))}(e,(r=>{const i=r.length;let n;if(i<126)n=new Uint8Array(1),new DataView(n.buffer).setUint8(0,i);else if(i<65536){n=new Uint8Array(3);const e=new DataView(n.buffer);e.setUint8(0,126),e.setUint16(1,i)}else{n=new Uint8Array(9);const e=new DataView(n.buffer);e.setUint8(0,127),e.setBigUint64(1,BigInt(i))}e.data&&"string"!=typeof e.data&&(n[0]|=128),t.enqueue(n),t.enqueue(r)}))}})}let Wp;function Kp(e){return e.reduce(((e,t)=>e+t.length),0)}function Jp(e,t){if(e[0].length===t)return e.shift();const r=new Uint8Array(t);let i=0;for(let n=0;n<t;n++)r[n]=e[0][i++],i===e[0].length&&(e.shift(),i=0);return e.length&&i<e[0].length&&(e[0]=e[0].slice(i)),r}function Qp(e){if(e)return function(e){for(var t in Qp.prototype)e[t]=Qp.prototype[t];return e}(e)}Qp.prototype.on=Qp.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},Qp.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this},Qp.prototype.off=Qp.prototype.removeListener=Qp.prototype.removeAllListeners=Qp.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var r,i=this._callbacks["$"+e];if(!i)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var n=0;n<i.length;n++)if((r=i[n])===t||r.fn===t){i.splice(n,1);break}return 0===i.length&&delete this._callbacks["$"+e],this},Qp.prototype.emit=function(e){this._callbacks=this._callbacks||{};for(var t=new Array(arguments.length-1),r=this._callbacks["$"+e],i=1;i<arguments.length;i++)t[i-1]=arguments[i];if(r){i=0;for(var n=(r=r.slice(0)).length;i<n;++i)r[i].apply(this,t)}return this},Qp.prototype.emitReserved=Qp.prototype.emit,Qp.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},Qp.prototype.hasListeners=function(e){return!!this.listeners(e).length};const Zp="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function Yp(e,...t){return t.reduce(((t,r)=>(e.hasOwnProperty(r)&&(t[r]=e[r]),t)),{})}const Xp=Zp.setTimeout,eu=Zp.clearTimeout;function tu(e,t){t.useNativeTimers?(e.setTimeoutFn=Xp.bind(Zp),e.clearTimeoutFn=eu.bind(Zp)):(e.setTimeoutFn=Zp.setTimeout.bind(Zp),e.clearTimeoutFn=Zp.clearTimeout.bind(Zp))}class ru extends Error{constructor(e,t,r){super(e),this.description=t,this.context=r,this.type="TransportError"}}class iu extends Qp{constructor(e){super(),this.writable=!1,tu(this,e),this.opts=e,this.query=e.query,this.socket=e.socket}onError(e,t,r){return super.emitReserved("error",new ru(e,t,r)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(e){"open"===this.readyState&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(e){const t=$p(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emitReserved("packet",e)}onClose(e){this.readyState="closed",super.emitReserved("close",e)}pause(e){}createUri(e,t={}){return e+"://"+this._hostname()+this._port()+this.opts.path+this._query(t)}_hostname(){const e=this.opts.hostname;return-1===e.indexOf(":")?e:"["+e+"]"}_port(){return this.opts.port&&(this.opts.secure&&Number(443!==this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""}_query(e){const t=function(e){let t="";for(let r in e)e.hasOwnProperty(r)&&(t.length&&(t+="&"),t+=encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t}(e);return t.length?"?"+t:""}}const nu="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),su=64,ou={};let au,cu=0,du=0;function lu(e){let t="";do{t=nu[e%su]+t,e=Math.floor(e/su)}while(e>0);return t}function pu(){const e=lu(+new Date);return e!==au?(cu=0,au=e):e+"."+lu(cu++)}for(;du<su;du++)ou[nu[du]]=du;let uu=!1;try{uu="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(YS){}const hu=uu;function mu(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||hu))return new XMLHttpRequest}catch(e){}if(!t)try{return new(Zp[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}function fu(){}const gu=null!=new mu({xdomain:!1}).responseType;class vu extends Qp{constructor(e,t){super(),tu(this,t),this.opts=t,this.method=t.method||"GET",this.uri=e,this.data=void 0!==t.data?t.data:null,this.create()}create(){var e;const t=Yp(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this.opts.xd;const r=this.xhr=new mu(t);try{r.open(this.method,this.uri,!0);try{if(this.opts.extraHeaders){r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0);for(let e in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(e)&&r.setRequestHeader(e,this.opts.extraHeaders[e])}}catch(e){}if("POST"===this.method)try{r.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{r.setRequestHeader("Accept","*/*")}catch(e){}null===(e=this.opts.cookieJar)||void 0===e||e.addCookies(r),"withCredentials"in r&&(r.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(r.timeout=this.opts.requestTimeout),r.onreadystatechange=()=>{var e;3===r.readyState&&(null===(e=this.opts.cookieJar)||void 0===e||e.parseCookies(r)),4===r.readyState&&(200===r.status||1223===r.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof r.status?r.status:0)}),0))},r.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=vu.requestsCount++,vu.requests[this.index]=this)}onError(e){this.emitReserved("error",e,this.xhr),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=fu,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete vu.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&(this.emitReserved("data",e),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}}if(vu.requestsCount=0,vu.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",bu);else if("function"==typeof addEventListener){addEventListener("onpagehide"in Zp?"pagehide":"unload",bu,!1)}function bu(){for(let e in vu.requests)vu.requests.hasOwnProperty(e)&&vu.requests[e].abort()}const yu="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),_u=Zp.WebSocket||Zp.MozWebSocket,wu="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();const Su={websocket:class extends iu{constructor(e){super(e),this.supportsBinary=!e.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const e=this.uri(),t=this.opts.protocols,r=wu?{}:Yp(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=wu?new _u(e,t,r):t?new _u(e,t):new _u(e)}catch(e){return this.emitReserved("error",e)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=e=>this.onClose({description:"websocket connection closed",context:e}),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const r=e[t],i=t===e.length-1;Lp(r,this.supportsBinary,(e=>{try{this.ws.send(e)}catch(e){}i&&yu((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){const e=this.opts.secure?"wss":"ws",t=this.query||{};return this.opts.timestampRequests&&(t[this.opts.timestampParam]=pu()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}check(){return!!_u}},webtransport:class extends iu{get name(){return"webtransport"}doOpen(){"function"==typeof WebTransport&&(this.transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name]),this.transport.closed.then((()=>{this.onClose()})).catch((e=>{this.onError("webtransport error",e)})),this.transport.ready.then((()=>{this.transport.createBidirectionalStream().then((e=>{const t=function(e,t){Wp||(Wp=new TextDecoder);const r=[];let i=0,n=-1,s=!1;return new TransformStream({transform(o,a){for(r.push(o);;){if(0===i){if(Kp(r)<1)break;const e=Jp(r,1);s=128==(128&e[0]),n=127&e[0],i=n<126?3:126===n?1:2}else if(1===i){if(Kp(r)<2)break;const e=Jp(r,2);n=new DataView(e.buffer,e.byteOffset,e.length).getUint16(0),i=3}else if(2===i){if(Kp(r)<8)break;const e=Jp(r,8),t=new DataView(e.buffer,e.byteOffset,e.length),s=t.getUint32(0);if(s>Math.pow(2,21)-1){a.enqueue(Ip);break}n=s*Math.pow(2,32)+t.getUint32(4),i=3}else{if(Kp(r)<n)break;const e=Jp(r,n);a.enqueue($p(s?e:Wp.decode(e),t)),i=0}if(0===n||n>e){a.enqueue(Ip);break}}}})}(Number.MAX_SAFE_INTEGER,this.socket.binaryType),r=e.readable.pipeThrough(t).getReader(),i=Hp();i.readable.pipeTo(e.writable),this.writer=i.writable.getWriter();const n=()=>{r.read().then((({done:e,value:t})=>{e||(this.onPacket(t),n())})).catch((e=>{}))};n();const s={type:"open"};this.query.sid&&(s.data=`{"sid":"${this.query.sid}"}`),this.writer.write(s).then((()=>this.onOpen()))}))})))}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const r=e[t],i=t===e.length-1;this.writer.write(r).then((()=>{i&&yu((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){var e;null===(e=this.transport)||void 0===e||e.close()}},polling:class extends iu{constructor(e){if(super(e),this.polling=!1,"undefined"!=typeof location){const t="https:"===location.protocol;let r=location.port;r||(r=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||r!==e.port}const t=e&&e.forceBase64;this.supportsBinary=gu&&!t,this.opts.withCredentials&&(this.cookieJar=void 0)}get name(){return"polling"}doOpen(){this.poll()}pause(e){this.readyState="pausing";const t=()=>{this.readyState="paused",e()};if(this.polling||!this.writable){let e=0;this.polling&&(e++,this.once("pollComplete",(function(){--e||t()}))),this.writable||(e++,this.once("drain",(function(){--e||t()})))}else t()}poll(){this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(e){((e,t)=>{const r=e.split(qp),i=[];for(let e=0;e<r.length;e++){const n=$p(r[e],t);if(i.push(n),"error"===n.type)break}return i})(e,this.socket.binaryType).forEach((e=>{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState&&this.poll())}doClose(){const e=()=>{this.write([{type:"close"}])};"open"===this.readyState?e():this.once("open",e)}write(e){this.writable=!1,((e,t)=>{const r=e.length,i=new Array(r);let n=0;e.forEach(((e,s)=>{Lp(e,!1,(e=>{i[s]=e,++n===r&&t(i.join(qp))}))}))})(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emitReserved("drain")}))}))}uri(){const e=this.opts.secure?"https":"http",t=this.query||{};return!1!==this.opts.timestampRequests&&(t[this.opts.timestampParam]=pu()),this.supportsBinary||t.sid||(t.b64=1),this.createUri(e,t)}request(e={}){return Object.assign(e,{xd:this.xd,cookieJar:this.cookieJar},this.opts),new vu(this.uri(),e)}doWrite(e,t){const r=this.request({method:"POST",data:e});r.on("success",t),r.on("error",((e,t)=>{this.onError("xhr post error",e,t)}))}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",((e,t)=>{this.onError("xhr poll error",e,t)})),this.pollXhr=e}}},Cu=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Ru=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function Tu(e){if(e.length>2e3)throw"URI too long";const t=e,r=e.indexOf("["),i=e.indexOf("]");-1!=r&&-1!=i&&(e=e.substring(0,r)+e.substring(r,i).replace(/:/g,";")+e.substring(i,e.length));let n=Cu.exec(e||""),s={},o=14;for(;o--;)s[Ru[o]]=n[o]||"";return-1!=r&&-1!=i&&(s.source=t,s.host=s.host.substring(1,s.host.length-1).replace(/;/g,":"),s.authority=s.authority.replace("[","").replace("]","").replace(/;/g,":"),s.ipv6uri=!0),s.pathNames=function(e,t){const r=/\/{2,9}/g,i=t.replace(r,"/").split("/");"/"!=t.slice(0,1)&&0!==t.length||i.splice(0,1);"/"==t.slice(-1)&&i.splice(i.length-1,1);return i}(0,s.path),s.queryKey=function(e,t){const r={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,i){t&&(r[t]=i)})),r}(0,s.query),s}let Pu=class e extends Qp{constructor(e,t={}){super(),this.binaryType="arraybuffer",this.writeBuffer=[],e&&"object"==typeof e&&(t=e,e=null),e?(e=Tu(e),t.hostname=e.host,t.secure="https"===e.protocol||"wss"===e.protocol,t.port=e.port,e.query&&(t.query=e.query)):t.host&&(t.hostname=Tu(t.host).host),tu(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=t.transports||["polling","websocket","webtransport"],this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=function(e){let t={},r=e.split("&");for(let e=0,i=r.length;e<i;e++){let i=r[e].split("=");t[decodeURIComponent(i[0])]=decodeURIComponent(i[1])}return t}(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&(this.beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){const t=Object.assign({},this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);const r=Object.assign({},this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[e]);return new Su[e](r)}open(){let t;if(this.opts.rememberUpgrade&&e.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))t="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);t=this.transports[0]}this.readyState="opening";try{t=this.createTransport(t)}catch(e){return this.transports.shift(),void this.open()}t.open(),this.setTransport(t)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(e=>this.onClose("transport close",e)))}probe(t){let r=this.createTransport(t),i=!1;e.priorWebsocketSuccess=!1;const n=()=>{i||(r.send([{type:"ping",data:"probe"}]),r.once("packet",(t=>{if(!i)if("pong"===t.type&&"probe"===t.data){if(this.upgrading=!0,this.emitReserved("upgrading",r),!r)return;e.priorWebsocketSuccess="websocket"===r.name,this.transport.pause((()=>{i||"closed"!==this.readyState&&(l(),this.setTransport(r),r.send([{type:"upgrade"}]),this.emitReserved("upgrade",r),r=null,this.upgrading=!1,this.flush())}))}else{const e=new Error("probe error");e.transport=r.name,this.emitReserved("upgradeError",e)}})))};function s(){i||(i=!0,l(),r.close(),r=null)}const o=e=>{const t=new Error("probe error: "+e);t.transport=r.name,s(),this.emitReserved("upgradeError",t)};function a(){o("transport closed")}function c(){o("socket closed")}function d(e){r&&e.name!==r.name&&s()}const l=()=>{r.removeListener("open",n),r.removeListener("error",o),r.removeListener("close",a),this.off("close",c),this.off("upgrading",d)};r.once("open",n),r.once("error",o),r.once("close",a),this.once("close",c),this.once("upgrading",d),-1!==this.upgrades.indexOf("webtransport")&&"webtransport"!==t?this.setTimeoutFn((()=>{i||r.open()}),200):r.open()}onOpen(){if(this.readyState="open",e.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade){let e=0;const t=this.upgrades.length;for(;e<t;e++)this.probe(this.upgrades[e])}}onPacket(e){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(this.emitReserved("packet",e),this.emitReserved("heartbeat"),this.resetPingTimeout(),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"ping":this.sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong");break;case"error":const t=new Error("server error");t.code=e.data,this.onError(t);break;case"message":this.emitReserved("data",e.data),this.emitReserved("message",e.data)}}onHandshake(e){this.emitReserved("handshake",e),this.id=e.sid,this.transport.query.sid=e.sid,this.upgrades=this.filterUpgrades(e.upgrades),this.pingInterval=e.pingInterval,this.pingTimeout=e.pingTimeout,this.maxPayload=e.maxPayload,this.onOpen(),"closed"!==this.readyState&&this.resetPingTimeout()}resetPingTimeout(){this.clearTimeoutFn(this.pingTimeoutTimer),this.pingTimeoutTimer=this.setTimeoutFn((()=>{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const e=this.getWritablePackets();this.transport.send(e),this.prevBufferLen=e.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let e=1;for(let r=0;r<this.writeBuffer.length;r++){const i=this.writeBuffer[r].data;if(i&&(e+="string"==typeof(t=i)?function(e){let t=0,r=0;for(let i=0,n=e.length;i<n;i++)t=e.charCodeAt(i),t<128?r+=1:t<2048?r+=2:t<55296||t>=57344?r+=3:(i++,r+=4);return r}(t):Math.ceil(1.33*(t.byteLength||t.size))),r>0&&e>this.maxPayload)return this.writeBuffer.slice(0,r);e+=2}var t;return this.writeBuffer}write(e,t,r){return this.sendPacket("message",e,t,r),this}send(e,t,r){return this.sendPacket("message",e,t,r),this}sendPacket(e,t,r,i){if("function"==typeof t&&(i=t,t=void 0),"function"==typeof r&&(i=r,r=null),"closing"===this.readyState||"closed"===this.readyState)return;(r=r||{}).compress=!1!==r.compress;const n={type:e,data:t,options:r};this.emitReserved("packetCreate",n),this.writeBuffer.push(n),i&&this.once("flush",i),this.flush()}close(){const e=()=>{this.onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},r=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?r():e()})):this.upgrading?r():e()),this}onError(t){e.priorWebsocketSuccess=!1,this.emitReserved("error",t),this.onClose("transport error",t)}onClose(e,t){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(e){const t=[];let r=0;const i=e.length;for(;r<i;r++)~this.transports.indexOf(e[r])&&t.push(e[r]);return t}};Pu.protocol=4;const ku="function"==typeof ArrayBuffer,Ou=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,Eu=Object.prototype.toString,Du="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Eu.call(Blob),Iu="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===Eu.call(File);function xu(e){return ku&&(e instanceof ArrayBuffer||Ou(e))||Du&&e instanceof Blob||Iu&&e instanceof File}function Mu(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,r=e.length;t<r;t++)if(Mu(e[t]))return!0;return!1}if(xu(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return Mu(e.toJSON(),!0);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&Mu(e[t]))return!0;return!1}function ju(e){const t=[],r=e.data,i=e;return i.data=Lu(r,t),i.attachments=t.length,{packet:i,buffers:t}}function Lu(e,t){if(!e)return e;if(xu(e)){const r={_placeholder:!0,num:t.length};return t.push(e),r}if(Array.isArray(e)){const r=new Array(e.length);for(let i=0;i<e.length;i++)r[i]=Lu(e[i],t);return r}if("object"==typeof e&&!(e instanceof Date)){const r={};for(const i in e)Object.prototype.hasOwnProperty.call(e,i)&&(r[i]=Lu(e[i],t));return r}return e}function Au(e,t){return e.data=Nu(e.data,t),delete e.attachments,e}function Nu(e,t){if(!e)return e;if(e&&!0===e._placeholder){if("number"==typeof e.num&&e.num>=0&&e.num<t.length)return t[e.num];throw new Error("illegal attachments")}if(Array.isArray(e))for(let r=0;r<e.length;r++)e[r]=Nu(e[r],t);else if("object"==typeof e)for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(e[r]=Nu(e[r],t));return e}const Bu=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];var Fu;!function(e){e[e.CONNECT=0]="CONNECT",e[e.DISCONNECT=1]="DISCONNECT",e[e.EVENT=2]="EVENT",e[e.ACK=3]="ACK",e[e.CONNECT_ERROR=4]="CONNECT_ERROR",e[e.BINARY_EVENT=5]="BINARY_EVENT",e[e.BINARY_ACK=6]="BINARY_ACK"}(Fu||(Fu={}));function zu(e){return"[object Object]"===Object.prototype.toString.call(e)}class Uu extends Qp{constructor(e){super(),this.reviver=e}add(e){let t;if("string"==typeof e){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");t=this.decodeString(e);const r=t.type===Fu.BINARY_EVENT;r||t.type===Fu.BINARY_ACK?(t.type=r?Fu.EVENT:Fu.ACK,this.reconstructor=new $u(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else{if(!xu(e)&&!e.base64)throw new Error("Unknown type: "+e);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t))}}decodeString(e){let t=0;const r={type:Number(e.charAt(0))};if(void 0===Fu[r.type])throw new Error("unknown packet type "+r.type);if(r.type===Fu.BINARY_EVENT||r.type===Fu.BINARY_ACK){const i=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const n=e.substring(i,t);if(n!=Number(n)||"-"!==e.charAt(t))throw new Error("Illegal attachments");r.attachments=Number(n)}if("/"===e.charAt(t+1)){const i=t+1;for(;++t;){if(","===e.charAt(t))break;if(t===e.length)break}r.nsp=e.substring(i,t)}else r.nsp="/";const i=e.charAt(t+1);if(""!==i&&Number(i)==i){const i=t+1;for(;++t;){const r=e.charAt(t);if(null==r||Number(r)!=r){--t;break}if(t===e.length)break}r.id=Number(e.substring(i,t+1))}if(e.charAt(++t)){const i=this.tryParse(e.substr(t));if(!Uu.isPayloadValid(r.type,i))throw new Error("invalid payload");r.data=i}return r}tryParse(e){try{return JSON.parse(e,this.reviver)}catch(e){return!1}}static isPayloadValid(e,t){switch(e){case Fu.CONNECT:return zu(t);case Fu.DISCONNECT:return void 0===t;case Fu.CONNECT_ERROR:return"string"==typeof t||zu(t);case Fu.EVENT:case Fu.BINARY_EVENT:return Array.isArray(t)&&("number"==typeof t[0]||"string"==typeof t[0]&&-1===Bu.indexOf(t[0]));case Fu.ACK:case Fu.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class $u{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){const e=Au(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}var Vu=Object.freeze({__proto__:null,Decoder:Uu,Encoder:class{constructor(e){this.replacer=e}encode(e){return e.type!==Fu.EVENT&&e.type!==Fu.ACK||!Mu(e)?[this.encodeAsString(e)]:this.encodeAsBinary({type:e.type===Fu.EVENT?Fu.BINARY_EVENT:Fu.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id})}encodeAsString(e){let t=""+e.type;return e.type!==Fu.BINARY_EVENT&&e.type!==Fu.BINARY_ACK||(t+=e.attachments+"-"),e.nsp&&"/"!==e.nsp&&(t+=e.nsp+","),null!=e.id&&(t+=e.id),null!=e.data&&(t+=JSON.stringify(e.data,this.replacer)),t}encodeAsBinary(e){const t=ju(e),r=this.encodeAsString(t.packet),i=t.buffers;return i.unshift(r),i}},get PacketType(){return Fu},protocol:5});function Gu(e,t,r){return e.on(t,r),function(){e.off(t,r)}}const qu=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class Hu extends Qp{constructor(e,t,r){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,r&&r.auth&&(this.auth=r.auth),this._opts=Object.assign({},r),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const e=this.io;this.subs=[Gu(e,"open",this.onopen.bind(this)),Gu(e,"packet",this.onpacket.bind(this)),Gu(e,"error",this.onerror.bind(this)),Gu(e,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...e){return e.unshift("message"),this.emit.apply(this,e),this}emit(e,...t){if(qu.hasOwnProperty(e))throw new Error('"'+e.toString()+'" is a reserved event name');if(t.unshift(e),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(t),this;const r={type:Fu.EVENT,data:t,options:{}};if(r.options.compress=!1!==this.flags.compress,"function"==typeof t[t.length-1]){const e=this.ids++,i=t.pop();this._registerAckCallback(e,i),r.id=e}const i=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return this.flags.volatile&&(!i||!this.connected)||(this.connected?(this.notifyOutgoingListeners(r),this.packet(r)):this.sendBuffer.push(r)),this.flags={},this}_registerAckCallback(e,t){var r;const i=null!==(r=this.flags.timeout)&&void 0!==r?r:this._opts.ackTimeout;if(void 0===i)return void(this.acks[e]=t);const n=this.io.setTimeoutFn((()=>{delete this.acks[e];for(let t=0;t<this.sendBuffer.length;t++)this.sendBuffer[t].id===e&&this.sendBuffer.splice(t,1);t.call(this,new Error("operation has timed out"))}),i);this.acks[e]=(...e)=>{this.io.clearTimeoutFn(n),t.apply(this,[null,...e])}}emitWithAck(e,...t){const r=void 0!==this.flags.timeout||void 0!==this._opts.ackTimeout;return new Promise(((i,n)=>{t.push(((e,t)=>r?e?n(e):i(t):i(e))),this.emit(e,...t)}))}_addToQueue(e){let t;"function"==typeof e[e.length-1]&&(t=e.pop());const r={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push(((e,...i)=>{if(r!==this._queue[0])return;return null!==e?r.tryCount>this._opts.retries&&(this._queue.shift(),t&&t(e)):(this._queue.shift(),t&&t(null,...i)),r.pending=!1,this._drainQueue()})),this._queue.push(r),this._drainQueue()}_drainQueue(e=!1){if(!this.connected||0===this._queue.length)return;const t=this._queue[0];t.pending&&!e||(t.pending=!0,t.tryCount++,this.flags=t.flags,this.emit.apply(this,t.args))}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){"function"==typeof this.auth?this.auth((e=>{this._sendConnectPacket(e)})):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:Fu.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},e):e})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e,t){this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t)}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case Fu.CONNECT:e.data&&e.data.sid?this.onconnect(e.data.sid,e.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case Fu.EVENT:case Fu.BINARY_EVENT:this.onevent(e);break;case Fu.ACK:case Fu.BINARY_ACK:this.onack(e);break;case Fu.DISCONNECT:this.ondisconnect();break;case Fu.CONNECT_ERROR:this.destroy();const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];null!=e.id&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){const t=this._anyListeners.slice();for(const r of t)r.apply(this,e)}super.emit.apply(this,e),this._pid&&e.length&&"string"==typeof e[e.length-1]&&(this._lastOffset=e[e.length-1])}ack(e){const t=this;let r=!1;return function(...i){r||(r=!0,t.packet({type:Fu.ACK,id:e,data:i}))}}onack(e){const t=this.acks[e.id];"function"==typeof t&&(t.apply(this,e.data),delete this.acks[e.id])}onconnect(e,t){this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((e=>{this.notifyOutgoingListeners(e),this.packet(e)})),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((e=>e())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:Fu.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}timeout(e){return this.flags.timeout=e,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){const t=this._anyListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(e),this}prependAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(e),this}offAnyOutgoing(e){if(!this._anyOutgoingListeners)return this;if(e){const t=this._anyOutgoingListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(e){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const t=this._anyOutgoingListeners.slice();for(const r of t)r.apply(this,e.data)}}}function Wu(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}Wu.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),r=Math.floor(t*this.jitter*e);e=0==(1&Math.floor(10*t))?e-r:e+r}return 0|Math.min(e,this.max)},Wu.prototype.reset=function(){this.attempts=0},Wu.prototype.setMin=function(e){this.ms=e},Wu.prototype.setMax=function(e){this.max=e},Wu.prototype.setJitter=function(e){this.jitter=e};class Ku extends Qp{constructor(e,t){var r;super(),this.nsps={},this.subs=[],e&&"object"==typeof e&&(t=e,e=void 0),(t=t||{}).path=t.path||"/socket.io",this.opts=t,tu(this,t),this.reconnection(!1!==t.reconnection),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(r=t.randomizationFactor)&&void 0!==r?r:.5),this.backoff=new Wu({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==t.timeout?2e4:t.timeout),this._readyState="closed",this.uri=e;const i=t.parser||Vu;this.encoder=new i.Encoder,this.decoder=new i.Decoder,this._autoConnect=!1!==t.autoConnect,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,this):this._reconnection}reconnectionAttempts(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}randomizationFactor(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(e){if(~this._readyState.indexOf("open"))return this;this.engine=new Pu(this.uri,this.opts);const t=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const i=Gu(t,"open",(function(){r.onopen(),e&&e()})),n=t=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",t),e?e(t):this.maybeReconnectOnOpen()},s=Gu(t,"error",n);if(!1!==this._timeout){const e=this._timeout,r=this.setTimeoutFn((()=>{i(),n(new Error("timeout")),t.close()}),e);this.opts.autoUnref&&r.unref(),this.subs.push((()=>{this.clearTimeoutFn(r)}))}return this.subs.push(i),this.subs.push(s),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(Gu(e,"ping",this.onping.bind(this)),Gu(e,"data",this.ondata.bind(this)),Gu(e,"error",this.onerror.bind(this)),Gu(e,"close",this.onclose.bind(this)),Gu(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(e){this.onclose("parse error",e)}}ondecoded(e){yu((()=>{this.emitReserved("packet",e)}),this.setTimeoutFn)}onerror(e){this.emitReserved("error",e)}socket(e,t){let r=this.nsps[e];return r?this._autoConnect&&!r.active&&r.connect():(r=new Hu(this,e,t),this.nsps[e]=r),r}_destroy(e){const t=Object.keys(this.nsps);for(const e of t){if(this.nsps[e].active)return}this._close()}_packet(e){const t=this.encoder.encode(e);for(let r=0;r<t.length;r++)this.engine.write(t[r],e.options)}cleanup(){this.subs.forEach((e=>e())),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e,t){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e,t),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const r=this.setTimeoutFn((()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((t=>{t?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):e.onreconnect()})))}),t);this.opts.autoUnref&&r.unref(),this.subs.push((()=>{this.clearTimeoutFn(r)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const Ju={};function Qu(e,t){"object"==typeof e&&(t=e,e=void 0);const r=function(e,t="",r){let i=e;r=r||"undefined"!=typeof location&&location,null==e&&(e=r.protocol+"//"+r.host),"string"==typeof e&&("/"===e.charAt(0)&&(e="/"===e.charAt(1)?r.protocol+e:r.host+e),/^(https?|wss?):\/\//.test(e)||(e=void 0!==r?r.protocol+"//"+e:"https://"+e),i=Tu(e)),i.port||(/^(http|ws)$/.test(i.protocol)?i.port="80":/^(http|ws)s$/.test(i.protocol)&&(i.port="443")),i.path=i.path||"/";const n=-1!==i.host.indexOf(":")?"["+i.host+"]":i.host;return i.id=i.protocol+"://"+n+":"+i.port+t,i.href=i.protocol+"://"+n+(r&&r.port===i.port?"":":"+i.port),i}(e,(t=t||{}).path||"/socket.io"),i=r.source,n=r.id,s=r.path,o=Ju[n]&&s in Ju[n].nsps;let a;return t.forceNew||t["force new connection"]||!1===t.multiplex||o?a=new Ku(i,t):(Ju[n]||(Ju[n]=new Ku(i,t)),a=Ju[n]),r.query&&!t.query&&(t.query=r.queryKey),a.socket(r.path,t)}Object.assign(Qu,{Manager:Ku,Socket:Hu,io:Qu,connect:Qu});const Zu=new URLSearchParams(window.location.search).has("debug");class Yu{constructor(){this._isEnabled=!1,this._debugger=null,this._isEnabled=Zu}isEnabled(){return this._isEnabled}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}info(...e){if(this._isEnabled)return console.info(...e)}warn(...e){if(this._isEnabled)return console.warn(...e)}error(...e){if(this._isEnabled)return console.error(...e)}withDebugLogger(e=null){return this._debugger=e,this}debug(...e){if(!this._isEnabled||!this._debugger)return;const t=[];e.forEach((e=>{if("function"==typeof e){const r=e();t.push(r)}else t.push(e)})),this._debugger.print(...t)}}function Xu(e,t,r,i){return new(r||(r=Promise))((function(n,s){function o(e){try{c(i.next(e))}catch(e){s(e)}}function a(e){try{c(i.throw(e))}catch(e){s(e)}}function c(e){e.done?n(e.value):function(e){return e instanceof r?e:new r((function(t){t(e)}))}(e.value).then(o,a)}c((i=i.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;let eh=[],th=0;const rh=new WeakMap;if(window.RTCPeerConnection){const XS=window.RTCPeerConnection;function eC(e){const t=new XS(e);eh.push(t),rh.set(t,{index:th++});const r=()=>{"closed"===t.connectionState&&((e=>{eh=eh.filter((t=>t!==e))})(t),t.removeEventListener("connectionstatechange",r))};return t.addEventListener("connectionstatechange",r),t}eC.prototype=XS.prototype,window.RTCPeerConnection=eC}const ih=null,nh=()=>{var e;return null===(e=ih)||void 0===e?void 0:e.getUpdatedStats()};class sh{static parse(e){let t;try{t=JSON.parse(e)}catch(e){return}if("object"==typeof t&&!Array.isArray(t))return t.request?sh._handleRequest(t):t.response?sh._handleResponse(t):t.message?sh._handleMessage(t):void 0}static _handleRequest(e){const t={request:!0};if("string"==typeof e.method&&"number"==typeof e.id)return t.id=e.id,t.method=e.method,t.data=e.data||{},t}static _handleResponse(e){const t={response:!0};if("number"==typeof e.id)return t.id=e.id,e.ok?(t.ok=!0,t.data=e.data||{}):(t.ok=!1,t.errorCode=e.errorCode,t.errorReason=e.errorReason),t}static _handleMessage(e){const t={message:!0};if("string"==typeof e.method)return t.method=e.method,t.data=e.data||{},t}static createRequest(e,t){return{request:!0,id:Math.round(1e7*Math.random()),method:e,data:t||{}}}static createSuccessResponse(e,t){return{response:!0,id:e.id,ok:!0,data:t||{}}}static createErrorResponse(e,t,r){return{response:!0,id:e.id,errorCode:t,errorReason:r}}static createMessage(e,t){return{message:!0,method:e,data:t||{}}}}const oh=new Yu;class ah extends ur{constructor(e,t="whereby-sfu#v4"){super(),this.socket=null,this.wsUrl=e,this.protocol=t,this.sents=new Map,this._setupSocket()}_setupSocket(){this.socket=new WebSocket(this.wsUrl,this.protocol),this.socket.onopen=this._onOpen.bind(this),this.socket.onmessage=this._onMessage.bind(this),this.socket.onclose=this._onClose.bind(this),this.socket.onerror=this._onError.bind(this)}_tearDown(){null!==this.socket&&(this.socket.onopen=null,this.socket.onmessage=null,this.socket.onclose=null,this.socket.onerror=null,this.socket=null,this.sents.forEach((e=>e.close())),this.emit("close"))}close(){var e;null===(e=this.socket)||void 0===e||e.close()}_onOpen(){oh.info("Connected"),this.emit("open")}_onMessage(e){const t=sh.parse(e.data);oh.info("Received message",t),(null==t?void 0:t.response)?this._handleResponse(t):(null==t?void 0:t.message)&&this.emit("message",t)}_onClose(){oh.info("Disconnected"),this._tearDown()}_onError(e){oh.info("Error",e)}_handleResponse(e){const t=this.sents.get(e.id);if(e.ok)t.resolve(e.data);else{const r=new Error(e.errorReason);t.reject(r)}}send(e){try{this.socket&&this.socket.send(JSON.stringify(e))}catch(e){}}message(e,t={}){const r=sh.createMessage(e,t);this.send(r)}request(e,t={},r=1500*(15+.1*this.sents.size)){const i=sh.createRequest(e,t);return this.send(i),new Promise(((e,t)=>{const n={id:i.id,method:i.method,resolve:t=>{this.sents.delete(i.id)&&(clearTimeout(n.timer),e(t))},reject:e=>{this.sents.delete(i.id)&&(clearTimeout(n.timer),t(e))},timer:setTimeout((()=>{this.sents.delete(i.id)&&t(new Error("request timeout"))}),r),close:()=>{clearTimeout(n.timer),t(new Error("transport closed"))}};this.sents.set(i.id,n)}))}}const ch={codecOptions:{opusDtx:!0,opusFec:!0},encodings:[{dtx:!0}]},dh={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scaleResolutionDownBy:4,maxBitrate:15e4},{scaleResolutionDownBy:2,maxBitrate:5e5},{scaleResolutionDownBy:1,maxBitrate:1e6}]},lh={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scaleResolutionDownBy:2,maxBitrate:15e4},{scaleResolutionDownBy:1,maxBitrate:5e5}]},ph={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scalabilityMode:"L3T2_KEY"}]},uh={encodings:[{}]},hh={encodings:[{scaleResolutionDownBy:2,dtx:!0,maxBitrate:5e5},{scaleResolutionDownBy:1,dtx:!0,maxBitrate:15e5}]},mh={encodings:[{dtx:!0}]},fh=(e,t,r)=>{const{lowDataModeEnabled:i,simulcastScreenshareOn:n,vp9On:s}=r;return"audio"===e?ch:t?s?mh:n?hh:uh:s?ph:i?lh:dh},gh=()=>{let e=wr.detectDevice()||(/applecoremedia|applewebkit|safari/i.test(navigator.userAgent)?"Safari12":void 0);return/iphone|ipad/i.test(navigator.userAgent)&&(e="Safari12"),e};var vh;const bh=null!==(vh=al.default)&&void 0!==vh?vh:al;const yh=400;var _h;const wh="safari"===(null!==(_h=al.default)&&void 0!==_h?_h:al).browserDetails.browser,Sh=e=>e.split(/[^\d]/g).map((e=>parseInt(e,10)));function Ch({devices:e,videoId:t,audioId:r,options:i,type:n="ideal"}){const s=e.filter((e=>"audioinput"===e.kind)),o=e.filter((e=>"videoinput"===e.kind)),a=!r||!s.some((e=>e.deviceId===r)),c=!t||!o.some((e=>e.deviceId===t)),d=function({disableAEC:e,disableAGC:t,hd:r,lax:i,lowDataMode:n,preferredDeviceIds:s,resolution:o,simulcast:a,widescreen:c}){var d,l;let p=480,u=240;r&&(p=i||wh?720:{min:360,ideal:720}),a&&(!1===r?(p=360,u=270):u=360);const h={audio:Object.assign({},s.audioId&&{deviceId:s.audioId}),video:Object.assign(Object.assign({},s.videoId?{deviceId:s.videoId}:{facingMode:"user"}),{height:n?u:p,frameRate:n&&!a?15:24})};if(i)return(null===(d=h.audio)||void 0===d?void 0:d.deviceId)||(h.audio=!0),null===(l=h.video)||void 0===l||delete l.facingMode,h;if(o){const[e,t,r]=Sh(o);e&&(h.video.width={exact:e}),t&&(h.video.height={exact:t}),r&&(h.video.frameRate={exact:r}),delete h.video.facingMode}else h.video.aspectRatio=c?16/9:4/3;return t&&(h.audio.autoGainControl=!1),e&&(h.audio.echoCancellation=!1),h}(Object.assign({preferredDeviceIds:{audioId:a?null:{[n]:r},videoId:c?null:{[n]:t}}},i));return!1!==r&&s.length||delete d.audio,!1!==t&&o.length||delete d.video,d}const Rh=new Yu,Th=/mobi/i.test(navigator.userAgent);class Ph extends Error{constructor(...e){super(...e),this.name="nodevices"}}function kh(e){return e.audio||e.video?navigator.mediaDevices.getUserMedia(e).catch((t=>{const r=`${t}, ${JSON.stringify(e,null,2)}`;throw Rh.error(`getUserMedia ${r}`),t})):Promise.reject(new Ph("No provided devices"))}function Oh(e,t,r,i){var n,s,o;let a={deviceId:null};return t?(a.label=t.label,t.getSettings&&(a=Object.assign(Object.assign({},a),t.getSettings())),a.deviceId?a:(t.getCapabilities&&(a.deviceId=t.getCapabilities().deviceId),a.deviceId?a:(t.label&&r&&(a.deviceId=null===(s=r.find((r=>t.label===r.label&&r.kind===e)))||void 0===s?void 0:s.deviceId),a.deviceId||(a.deviceId=null===(o=t.getConstraints())||void 0===o?void 0:o.deviceId,a.broken=1),a))):(i&&r&&(a.deviceId=null===(n=r.find((t=>t.deviceId===i&&t.kind===e)))||void 0===n?void 0:n.deviceId),a)}function Eh(e,t){t&&"audio"!==t||e.getAudioTracks().forEach((e=>e.stop())),t&&"video"!==t||e.getVideoTracks().forEach((e=>e.stop()))}function Dh(e,{replaceStream:t,fallback:r=!0}={}){var i;return Xu(this,void 0,void 0,(function*(){let n,s,o,a=null;const c=!1===e.audioId?"video":!1===e.videoId&&"audio",d=Th||"video"!==c,l=Ch(e),p=(e,t)=>(e.details=Object.assign({constraints:l,constraint:e.constraint||(null==t?void 0:t.constraint),newConstraints:s,fallback:r,stopTracks:d},e!==n&&{error:String(n)}),e);d&&t&&Eh(t,c);try{a=yield kh(l)}catch(s){if(n=s,!r)throw p(s);if("OverconstrainedError"===s.name){o={deviceId:{videoId:null,audioId:null},width:{lax:!0},height:{lax:!0},"":{audioId:null,videoId:null,lax:!0}}[s.constraint||""]}else if("NotFoundError"===s.name){if(l.audio&&l.video){try{a=yield kh(Ch(Object.assign(Object.assign({},e),{audioId:!1})))}catch(e){if("NotFoundError"!==e.name)throw p(e,s)}try{a||(a=yield kh(Ch(Object.assign(Object.assign({},e),{videoId:!1}))))}catch(e){throw p(e,s)}}}else if("NotAllowedError"===s.name||"NotReadableError"===s.name||"AbortError"===s.name)if(t&&!d)Eh(t,c),o=e;else if("NotAllowedError"!==s.name){try{a=yield kh(Ch(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{lax:!0})})))}catch(e){Rh.warn("Tried getting stream again with laxer constraints, but failed: "+(""+e))}const t=(""+s).toLowerCase(),r={audio:"audioId",video:"videoId"}[(null===(i=/(video|audio)/.exec(t))||void 0===i?void 0:i[0])||c||""];if(!a&&r)try{a=yield kh(Ch(Object.assign(Object.assign({},e),{[r]:null})))}catch(e){Rh.warn(`Re-tried ${r} with no constraints, but failed: ${""+e}`)}if(!a){const t=r?[r]:["videoId","audioId"];for(const r of t){try{a=yield kh(Ch(Object.assign(Object.assign({},e),{[r]:!1})))}catch(e){Rh.warn(`Re-tried without ${r}, but failed: ${""+e}`)}if(a)break}}}}if(o){const t=c?{audio:{videoId:!1},video:{audioId:!1}}[c]:{};s=Ch(Object.assign(Object.assign(Object.assign(Object.assign({},e),o),{options:Object.assign(Object.assign({},e.options),{lax:o.lax})}),t));try{a=yield kh(s)}catch(e){throw p(e,n)}}if(!a)throw p(n);let u;return t&&(d||Eh(t,c),u=function(e,t,r){const i=[];return r&&"audio"!==r||(i.push(...e.getAudioTracks()),t.getAudioTracks().forEach((t=>{t.replacement=!0,e.addTrack(t)}))),r&&"video"!==r||(i.push(...e.getVideoTracks()),t.getVideoTracks().forEach((t=>{t.replacement=!0,e.addTrack(t)}))),i.forEach((t=>{t.replaced=!0,e.removeTrack(t)})),i}(t,a,c),a=t),{error:n&&p(n),stream:a,replacedTracks:u}}))}function Ih({oldDevices:e,newDevices:t,currentAudioId:r,currentVideoId:i,currentSpeakerId:n}){const s=function(e,t){const[r,i]=[e,t].map((e=>e.filter((e=>e.kind&&e.deviceId)).reduce(((e,t)=>Object.assign(Object.assign({},e),{[t.kind]:Object.assign(Object.assign({},e[t.kind]),{[t.deviceId]:t})})),{}))),n={};return e.forEach((e=>{e.kind&&e.deviceId&&(n[e.kind]||(n[e.kind]={added:{},removed:{},changed:{}}),i[e.kind]&&i[e.kind][e.deviceId]||(n[e.kind].removed[e.deviceId]=e))})),t.forEach((e=>{e.kind&&e.deviceId&&(n[e.kind]||(n[e.kind]={added:{},removed:{},changed:{}}),r[e.kind]&&r[e.kind][e.deviceId]?r[e.kind][e.deviceId].label&&r[e.kind][e.deviceId].label!==e.label&&(n[e.kind].changed[e.deviceId]=e):n[e.kind].added[e.deviceId]=e)})),n}(e,t),o={},a={};return[["audioinput",r],["videoinput",i],["audiooutput",n]].forEach((([e,r])=>{const i=s[e=e||""];if(i){if(r){if(i.removed[r]&&(o[e]={deviceId:null},"audiooutput"===e)){const r=t.find((e=>"audiooutput"===e.kind));o[e]={deviceId:null==r?void 0:r.deviceId}}i.changed[r]&&(o[e]={deviceId:r})}if(Object.keys(i.added).length){const[t]=Object.keys(i.added).slice(0,1),r=i.added[t];a[e]={deviceId:r.deviceId,label:r.label,kind:r.kind}}}})),{addedDevices:a,changedDevices:o}}al.default;const xh={id:gl(),connectionNumber:0},Mh=()=>{};let jh=Mh;const Lh=function(e,t=console){const r=[];let i,n,s,o,a,c,d,l,p,u,h,m,f=0,g=!1,v=0;const b={connected:!1,trace:(...e)=>{if(e.push(Date.now()),"customEvent"===e[0]&&"roomSessionId"===e[2].type){const t=c&&c[2].value.roomSessionId,r=e[2].value.roomSessionId;if(c=e,g&&r&&r!==t&&i)return void i.close();r&&(g=!0)}else"customEvent"===e[0]&&"clientId"===e[2].type?s=e:"customEvent"===e[0]&&"organizationId"===e[2].type?n=e:"customEvent"===e[0]&&"displayName"===e[2].type?o=e:"customEvent"===e[0]&&"userRole"===e[2].type?a=e:"customEvent"===e[0]&&"deviceId"===e[2].type?l=e:"customEvent"===e[0]&&"roomProduct"===e[2].type?p=e:"customEvent"===e[0]&&"roomMode"===e[2].type?u=e:"customEvent"===e[0]&&"sfuServer"===e[2].type?h=e:"customEvent"===e[0]&&"featureFlags"===e[2].type&&(m=e);i.readyState===WebSocket.OPEN?(f=0,i.send(JSON.stringify(e))):"getstats"===e[0]?v<20&&(v++,r.push(e)):"customEvent"===e[0]&&"insightsStats"===e[2].type||r.push(e),i.readyState===WebSocket.CLOSED&&d&&setTimeout((()=>{i.readyState===WebSocket.CLOSED&&d&&b.connect()}),1e3*f)},close:()=>{d=!1,i&&i.close()},connect:()=>{d=!0,f+=1,i&&i.close(),b.connected=!0,i=new WebSocket(e+window.location.pathname,"1.0"),i.onerror=e=>{b.connected=!1,t.warn("[RTCSTATS] WebSocket error",e)},i.onclose=e=>{b.connected=!1,t.info(`[RTCSTATS] Closed ${e.code}`),jh()},i.onopen=()=>{for(xh.connectionNumber++,i.send(JSON.stringify(["clientInfo",null,xh])),n&&i.send(JSON.stringify(n)),s&&i.send(JSON.stringify(s)),c&&i.send(JSON.stringify(c)),o&&i.send(JSON.stringify(o)),a&&i.send(JSON.stringify(a)),l&&i.send(JSON.stringify(l)),u&&i.send(JSON.stringify(u)),p&&i.send(JSON.stringify(p)),h&&i.send(JSON.stringify(h)),m&&i.send(JSON.stringify(m));r.length;)i.send(JSON.stringify(r.shift()));v=0}}};return b.connect(),b}("wss://rtcstats.srv.whereby.com"),Ah=ll(Lh.trace,1e4,[""]);jh=(null==Ah?void 0:Ah.resetDelta)||Mh;const Nh={sendEvent:(e,t)=>{Lh.trace("customEvent",null,{type:e,value:t})},sendAudioMuted:e=>{Nh.sendEvent("audio_muted",{muted:e})},sendVideoMuted:e=>{Nh.sendEvent("video_muted",{muted:e})},server:Lh};var Bh;const Fh=null!==(Bh=al.default)&&void 0!==Bh?Bh:al,zh=new Yu,Uh=Fh.browserDetails.browser,$h=Fh.browserDetails.version;function Vh(e,t){let r=e.match(/a=ssrc-group:FID (\d+) (\d+)\r\n/),i=t.match(/a=ssrc-group:FID (\d+) (\d+)\r\n/);r||(r=e.match(/a=ssrc:(\d+) cname:(.*)\r\n/g)[1].match(/a=ssrc:(\d+)/),i=t.match(/a=ssrc:(\d+) cname:(.*)\r\n/g)[1].match(/a=ssrc:(\d+)/));for(let e=1;e<r.length;e++)t=t.replace(new RegExp(i[e],"g"),r[e]);return t}function Gh(e){return"firefox"!==Uh?e:Qd.splitLines(e.trim()).map((e=>e.startsWith("a=msid-semantic:")?"a=msid-semantic: WMS *":e)).join("\r\n")+"\r\n"}function qh(e){return function(e,t,r=!1,i=!1){var n,s;try{const o=xn(e);if((null===(n=null==o?void 0:o.ext)||void 0===n?void 0:n.length)&&o.ext.length>0)return e;if((null==o?void 0:o.media.length)<1)return e;const a=null==o?void 0:o.media.flatMap((e=>e.ext||[])),c=(null===(s=a.find((e=>e.uri===t)))||void 0===s?void 0:s.value)||[...new Set([0,15,...a.map((e=>e.value))])].sort(((e,t)=>e-t)).find(((e,t,r)=>e+1!==r[t+1]))+1;return o.media.forEach((e=>{var n;(r&&"audio"===e.type||i&&"video"===e.type)&&((null===(n=e.ext)||void 0===n?void 0:n.find((e=>e.uri===t)))||(Array.isArray(e.ext)?e.ext.push({value:c,uri:t}):e.ext=[{value:c,uri:t}]))})),In(o)}catch(e){console.error("Error during addAbsCaptureTimeExtMap: ",e)}return e}(e,"http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time",!0,!0)}function Hh(e,t,r=console){const i=e.getSenders().find((e=>e.track&&"video"===e.track.kind));if(!i)return Promise.resolve();const n=i.getParameters();return n.encodings&&0===n.encodings.length?Promise.resolve():(n.encodings||(n.encodings=[{}]),0===t?delete n.encodings[0].maxBitrate:n.encodings[0].maxBitrate=1e3*t,i.setParameters(n).catch((e=>{r.error("setParameters err: ",e)})))}var Wh;const Kh=null!==(Wh=al.default)&&void 0!==Wh?Wh:al,Jh=new Yu;class Qh{constructor({peerConnectionId:e,bandwidth:t,maximumTurnBandwidth:r,deprioritizeH264Encoding:i}){this.peerConnectionId=e,this.relayCandidateSeen=!1,this.serverReflexiveCandidateSeen=!1,this.publicHostCandidateSeen=!1,this.ipv6HostCandidateSeen=!1,this.ipv6HostCandidateTeredoSeen=!1,this.ipv6HostCandidate6to4Seen=!1,this.mdnsHostCandidateSeen=!1,this.pc=null,this.wasEverConnected=!1,this.connectionStatus=null,this.stats={totalSent:0,totalRecv:0},this.bandwidth=t||0,this.maximumTurnBandwidth=r,this.pending=[],this.isOperationPending=!1,this.streamIds=[],this.streams=[],this.earlyIceCandidates=[],this.afterConnected=new Promise((e=>{this.registerConnected=e})),this.offerOptions={offerToReceiveAudio:!0,offerToReceiveVideo:!0},this._deprioritizeH264Encoding=i}setAndGetPeerConnection({clientId:e,constraints:t,peerConnectionConfig:r,shouldAddLocalVideo:i}){return this.peerConnectionConfig=r,this.shouldAddLocalVideo=i,this.clientId=e,this.pc=new RTCPeerConnection(r),this.signalingState=this.pc.signalingState,this.pc.addEventListener("signalingstatechange",(()=>{if(this.signalingState!==this.pc.signalingState&&(this.signalingState=this.pc.signalingState,"stable"===this.pc.signalingState)){this.isOperationPending=!1;const e=this.pending.shift();e&&e.apply()}})),this.pc}addStream(e){this.streamIds.push(e.id),this.streams.push(e),RTCPeerConnection.prototype.addTrack?(e.getAudioTracks().forEach((t=>{this.pc.addTrack(t,e)})),e.getVideoTracks().forEach((t=>{this.pc.addTrack(t,e)}))):this.pc.addStream(e)}addTrack(e,t){t||(t=this.streams[0]),null==t||t.addTrack(e),this.pc.addTrack(e,t)}removeTrack(e){this.streams[0].removeTrack(e);const t=this.pc.getSenders().find((t=>t.track===e));t&&this.pc.removeTrack(t)}removeStream(e){for(let t=0;t<this.streamIds.length;t++)this.streamIds[t]===e.id&&(this.streamIds.splice(t,1),this.streams.splice(t,1));this.pc&&(this.pc.removeTrack?e.getTracks().forEach((e=>{const t=this.pc.getSenders().find((t=>t.track===e));t&&this.pc.removeTrack(t)})):this.pc.removeStream&&this.pc.removeStream(e))}_setRemoteDescription(e){return this._deprioritizeH264Encoding&&(e.sdp=function(e){return Qd.splitSections(e).map((e=>{if("video"!==Qd.getKind(e))return e;const t=Qd.matchPrefix(e,"a=rtpmap:").map((e=>Qd.parseRtpMap(e))).filter((e=>/h264/i.test(e.name))).map((e=>""+e.payloadType));if(!t.length)return e;const r=Qd.matchPrefix(e,"m=video")[0],i=/(\s\d+)+$/i.exec(r),n=i?i[0]:"",s=[...n.split(" ").filter((e=>e&&!t.includes(e))),...t].join(" "),o=r.replace(n," "+s);return e.replace(r,o)})).join("")}(e.sdp)),this.srdComplete=this.pc.setRemoteDescription(e),this.srdComplete.then((()=>{this.earlyIceCandidates.forEach((e=>this.pc.addIceCandidate(e))),this.earlyIceCandidates=[]}))}handleOffer(e){if(!this.canModifyPeerConnection())return new Promise((t=>{this.pending.push((()=>this.handleOffer(e).then(t)))}));this.isOperationPending=!0;let t=e.sdp;t=function(e){return"safari"!==Uh&&("firefox"!==Uh||$h&&$h>=63||60===$h)?e:Qd.splitLines(e.trim()).filter((e=>!e.startsWith("a=extmap:")||"urn:ietf:params:rtp-hdrext:sdes:mid"!==Qd.parseExtmap(e).uri)).join("\r\n")+"\r\n"}(t),t=Gh(t);const r={type:e.type,sdp:t};let i;return this._setRemoteDescription(r).then((()=>this.pc.createAnswer())).then((e=>(i=e,this.pc.setLocalDescription(e)))).then((()=>Hh(this.pc,this.bandwidth))).then((()=>i))}handleAnswer(e){if(this.pendingOffer){const t=this.pendingOffer;return delete this.pendingOffer,this.pc.setLocalDescription(t).then((()=>this.handleAnswer(e)))}let t=e.sdp;t=Gh(t);const r={type:e.type,sdp:t};return this._setRemoteDescription(r).then((()=>Hh(this.pc,this.bandwidth)),(e=>{Jh.warn("Could not set remote description from remote answer: ",e)}))}addIceCandidate(e){this.srdComplete?this.srdComplete.then((()=>{"closed"!==this.pc.signalingState&&("safari"===Kh.browserDetails.browser&&e&&""===e.candidate||this.pc.addIceCandidate(e).catch((t=>{Jh.warn("Failed to add ICE candidate ('%s'): %s",e?e.candidate:null,t)})))})):this.earlyIceCandidates.push(e)}canModifyPeerConnection(){return"stable"===this.pc.signalingState&&!this.isOperationPending}close(){const e=this.pc;if(e){e.oniceconnectionstatechange=null,e.onicecandidate=null,e.ontrack=null;try{e.close()}catch(e){Jh.warn("failures during close of session",e)}}}hasConnectedPeerConnection(){return this.pc&&"connected"===this.pc.connectionState}replaceTrack(e,t){const r=this.pc;if(!r)return!1;const i=r.getSenders();function n(r){const n=e=>e&&`id:${e.id},kind:${e.kind},state:${e.readyState}`;Jh.warn(`${r}. newTrack:${n(t)}, oldTrack:${n(e)}, sender tracks: ${JSON.stringify(i.map((e=>`s ${n(e.track)}`)))}, sender first codecs: ${JSON.stringify(i.map((e=>(e.getParameters().codecs||[])[0])))}`)}if(i.length||n("No senders!"),e||(e=(i.find((e=>e.track&&e.track.kind===t.kind))||{}).track)||n("No sender with same kind! Add new track then."),window.RTCRtpSender&&window.RTCRtpSender.prototype.replaceTrack){if(e){const r=()=>{for(let r=0;r<i.length;r++){const s=i[r],o=s.track;if(s||o||n("One of the tracks is null!"),o.id===t.id)return Promise.resolve(t);if(o.id===e.id)return i[r].replaceTrack(t)}return null};let s=r();if(s)return s;let o=null,a=null;s=new Promise(((e,t)=>{o=e,a=t}));let c=0,d=setInterval((()=>Xu(this,void 0,void 0,(function*(){const e=r();if(!e)return void(3<++c&&(clearInterval(d),d=null,n("No sender track to replace"),a("No sender track to replace")));clearInterval(d),d=null;const t=yield e;o(t)}))),1e3);return s}const s=this.streams.find((e=>e.getTracks().find((e=>e.id===t.id))))||this.streams[0];return s?r.addTrack(t,s):(n("No stream?"),Promise.reject(new Error("replaceTrack: No stream?")))}if(!this.canModifyPeerConnection())return void this.pending.push((()=>{this.replaceTrack(e,t)}));this.isOperationPending=!0;const s=r.onnegotiationneeded;return r.onnegotiationneeded=null,this.removeTrack(e),this.addTrack(t),setTimeout((()=>{r.onnegotiationneeded=s}),0),"offer"===r.localDescription.type?r.createOffer().then((e=>(e.sdp=Vh(r.localDescription.sdp,e.sdp),r.setLocalDescription(e)))).then((()=>this._setRemoteDescription(r.remoteDescription))):this._setRemoteDescription(r.remoteDescription).then((()=>r.createAnswer())).then((e=>(e.sdp=Vh(r.localDescription.sdp,e.sdp),r.setLocalDescription(e))))}maybeRestrictRelayBandwidth(){var e;-1!==this.maximumTurnBandwidth&&(this.pc.getStats&&(e=this.pc,e.getStats(null).then((e=>{let t,r;return e.forEach((i=>{if("transport"===i.type&&i.selectedCandidatePairId){const n=e.get(i.selectedCandidatePairId);if(!n)return;return t=e.get(n.localCandidateId).candidateType,void(r=e.get(n.remoteCandidateId).candidateType)}"candidate-pair"===i.type&&i.selected&&(t=e.get(i.localCandidateId).candidateType,r=e.get(i.remoteCandidateId).candidateType)})),"relay"===t||"relayed"===t||"relay"===r||"relayed"===r}))).then((e=>{e&&0===this.bandwidth&&this.changeBandwidth(this.maximumTurnBandwidth)})))}changeBandwidth(e){e!==this.bandwidth&&(this.canModifyPeerConnection()?(this.bandwidth=e,this.pc.localDescription&&""!==this.pc.localDescription.type&&Hh(this.pc,this.bandwidth)):this.pending.push((()=>this.changeBandwidth(e))))}setAudioOnly(e,t=[]){this.pc.getTransceivers().filter((e=>{var r,i,n,s,o,a;return"recvonly"!==(null==e?void 0:e.direction)&&"video"===(null===(i=null===(r=null==e?void 0:e.receiver)||void 0===r?void 0:r.track)||void 0===i?void 0:i.kind)&&!t.includes(null===(s=null===(n=null==e?void 0:e.receiver)||void 0===n?void 0:n.track)||void 0===s?void 0:s.id)&&!t.includes(null===(a=null===(o=null==e?void 0:e.sender)||void 0===o?void 0:o.track)||void 0===a?void 0:a.id)})).forEach((t=>{t.direction=e?"sendonly":"sendrecv"}))}}const Zh="fetch_mediaserver_config",Yh="start_screenshare",Xh="stop_screenshare",em="audio_enabled",tm="client_left",rm="mediaserver_config",im="new_client",nm="screenshare_started",sm="screenshare_stopped",om="room_joined",am="video_enabled",cm="ice_candidate",dm="ice_endofcandidates",lm="ready_to_receive_offer",pm="sdp_answer",um="sdp_offer",hm="pending_client_left",mm="media_quality_changed",fm="client_connection_status_changed",gm="stream_added",vm="rtc_manager_created",bm="rtc_manager_destroyed",ym="local_stream_track_added",_m="local_stream_track_removed",wm="connecting",Sm="connection_failed",Cm="connection_successful",Rm="connection_disconnected",Tm="camera",Pm="screen_share";const km=57600,Om=2.6041666666666665,Em=921600,Dm=1.0850694444444444;const Im="[a-fA-F\\d:]",xm=e=>e&&e.includeBoundaries?`(?:(?<=\\s|^)(?=${Im})|(?<=${Im})(?=\\s|$))`:"",Mm="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",jm="[a-fA-F\\d]{1,4}",Lm=`\n(?:\n(?:${jm}:){7}(?:${jm}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:${jm}:){6}(?:${Mm}|:${jm}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\n(?:${jm}:){5}(?::${Mm}|(?::${jm}){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\n(?:${jm}:){4}(?:(?::${jm}){0,1}:${Mm}|(?::${jm}){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\n(?:${jm}:){3}(?:(?::${jm}){0,2}:${Mm}|(?::${jm}){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\n(?:${jm}:){2}(?:(?::${jm}){0,3}:${Mm}|(?::${jm}){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\n(?:${jm}:){1}(?:(?::${jm}){0,4}:${Mm}|(?::${jm}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::${jm}){0,5}:${Mm}|(?::${jm}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\n)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1\n`.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),Am=new RegExp(`(?:^${Mm}$)|(?:^${Lm}$)`),Nm=new RegExp(`^${Mm}$`),Bm=new RegExp(`^${Lm}$`),Fm=e=>e&&e.exact?Am:new RegExp(`(?:${xm(e)}${Mm}${xm(e)})|(?:${xm(e)}${Lm}${xm(e)})`,"g");Fm.v4=e=>e&&e.exact?Nm:new RegExp(`${xm(e)}${Mm}${xm(e)}`,"g"),Fm.v6=e=>e&&e.exact?Bm:new RegExp(`${xm(e)}${Lm}${xm(e)}`,"g");var zm,Um,$m="connection_blocked_by_network",Vm="ice_ipv6_seen",Gm="ice_mdns_seen",qm="ice_no_public_ip_gathered",Hm="ice_no_public_ip_gathered_3sec",Wm="ice_restart",Km="microphone_not_working",Jm="microphone_stopped_working",Qm="new_pc",Zm="sfu_connection_open",Ym="sfu_connection_closed",Xm="dominant_speaker";const ef=null!==(zm=al.default)&&void 0!==zm?zm:al,tf=new Yu,rf=class{constructor(e,t){this.id=""+e,this.type=t,this.isEnabled=!0,this.hasSupportForAutoSuperSize=!1,this.isAudioEnabled=!0,this.isVideoEnabled=!0,this.status=wm,this.stream=null,this.streamId=null}setup(e){return this.stream=e,this.streamId=e.id,this.setVideoEnabled(this.isVideoEnabled&&e.getVideoTracks().length>0),this.setAudioEnabled(this.isAudioEnabled&&e.getAudioTracks().length>0),this}setStatus(e){return this.status=e,this}setVideoEnabled(e){this.isVideoEnabled=e,this.stream&&this.stream.getVideoTracks().forEach((t=>{t.enabled=e}))}setAudioEnabled(e){this.isAudioEnabled=e,this.stream&&this.stream.getAudioTracks().forEach((t=>{t.enabled=e}))}static getCameraId(){return"0"}static getTypeFromId(e){return"0"===""+e?Tm:Pm}}.getCameraId(),nf=ef.browserDetails.browser,sf=ef.browserDetails.version;"firefox"===nf&&ef.browserShim&&"shimGetDisplayMedia"in ef.browserShim&&(null===(Um=ef.browserShim)||void 0===Um||Um.shimGetDisplayMedia(window,"screen"));let of=!1;"chrome"===nf&&window.document.addEventListener("beforeunload",(()=>{of=!0}));class af{constructor({selfId:e,room:t,emitter:r,serverSocket:i,webrtcProvider:n,features:s}){const{name:o,session:a,iceServers:c,sfuServer:d,mediaserverConfigTtlSeconds:l}=t;this._selfId=e,this._roomName=o,this._roomSessionId=a&&a.id,this.peerConnections={},this.localStreams={},this.enabledLocalStreamIds=[],this._screenshareVideoTrackIds=[],this._socketListenerDeregisterFunctions=[],this._localStreamDeregisterFunction=null,this._emitter=r,this._serverSocket=i,this._webrtcProvider=n,this._features=s||{},this._isAudioOnlyMode=!1,this.offerOptions={offerToReceiveAudio:!0,offerToReceiveVideo:!0},this._pendingActionsForConnectedPeerConnections=[],this._audioTrackOnEnded=()=>{Nh.sendEvent("audio_ended",{unloading:of}),this._emit(Jm,{})},this._updateAndScheduleMediaServersRefresh({sfuServer:d,iceServers:c.iceServers||[],mediaserverConfigTtlSeconds:l}),this.totalSessionsCreated=0}numberOfPeerconnections(){return Object.keys(this.peerConnections).length}isInitializedWith({selfId:e,roomName:t,isSfu:r}){return this._selfId===e&&this._roomName===t&&r===!!this._sfuServer}supportsScreenShareAudio(){return!0}maybeRestrictRelayBandwidth(e){e.maybeRestrictRelayBandwidth()}addNewStream(e,t){if(t!==this.localStreams[e]){if(this._addLocalStream(e,t),e===rf){this._addStreamToPeerConnections(t);const[e]=t.getAudioTracks();e&&this._startMonitoringAudioTrack(e),this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null);const r=e=>{const{enable:t,track:r}=e.detail;this._handleStopOrResumeVideo({enable:t,track:r})};return t.addEventListener("stopresumevideo",r),void(this._localStreamDeregisterFunction=()=>{t.removeEventListener("stopresumevideo",r)})}this._screenshareVideoTrackIds.push(t.getVideoTracks()[0].id),this._shareScreen(e,t)}}replaceTrack(e,t){return e&&"audio"===e.kind&&this._stopMonitoringAudioTrack(e),t&&"audio"===t.kind&&this._startMonitoringAudioTrack(t),this._replaceTrackToPeerConnections(e,t)}accept({clientId:e,shouldAddLocalVideo:t}){return this.acceptNewStream({streamId:e,clientId:e,shouldAddLocalVideo:t})}disconnectAll(){Object.keys(this.peerConnections).forEach((e=>{this.disconnect(e)})),this.peerConnections={},this._socketListenerDeregisterFunctions.forEach((e=>{e()})),this._socketListenerDeregisterFunctions=[],this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null)}fixChromeAudio(e){if("chrome"!==nf)return;const t=this._getLocalCameraStream(),r=t.getAudioTracks()[0];return r&&"ended"===r.readyState?navigator.mediaDevices.getUserMedia({audio:e}).then((e=>{const i=e.getAudioTracks()[0];return i.enabled=r.enabled,t.removeTrack(r),t.addTrack(i),this.replaceTrack(r,i)})):void 0}setupSocketListeners(){this._socketListenerDeregisterFunctions=[()=>this._clearMediaServersRefresh(),this._serverSocket.on(rm,(e=>{e.error?tf.warn("FETCH_MEDIASERVER_CONFIG failed:",e.error):this._updateAndScheduleMediaServersRefresh(e)})),this._serverSocket.on(lm,(e=>{this._connect(e.clientId)})),this._serverSocket.on(cm,(e=>{const t=this._getSession(e.clientId);t?t.addIceCandidate(e.message):tf.warn("No RTCPeerConnection on ICE_CANDIDATE",e)})),this._serverSocket.on(dm,(e=>{const t=this._getSession(e.clientId);t?t.addIceCandidate(null):tf.warn("No RTCPeerConnection on ICE_END_OF_CANDIDATES",e)})),this._serverSocket.on(um,(e=>{const t=this._getSession(e.clientId);if(!t)return void tf.warn("No RTCPeerConnection on SDP_OFFER",e);const r=this._transformIncomingSdp(e.message,t.pc);t.handleOffer(r).then((t=>{this._emitServerEvent(pm,{receiverId:e.clientId,message:this._transformOutgoingSdp(t)})}))})),this._serverSocket.on(pm,(e=>{const t=this._getSession(e.clientId);if(!t)return void tf.warn("No RTCPeerConnection on SDP_ANSWER",e);const r=this._transformIncomingSdp(e.message,t.pc);t.handleAnswer(r)})),this._serverSocket.on(om,(({room:{sfuServer:e}})=>{if(e||!this._wasScreenSharing)return;const t=Object.keys(this.localStreams).find((e=>e!==rf));if(!t)return;const r=this.localStreams[t];if(!r)return void tf.warn("screenshare stream %s not found",t);const i=r.getAudioTracks().length>0;this._emitServerEvent(Yh,{streamId:t,hasAudioTrack:i})}))]}sendAudioMutedStats(e){Nh.sendEvent("audio_muted",{muted:e})}sendVideoMutedStats(e){Nh.sendEvent("video_muted",{muted:e})}sendStatsCustomEvent(e,t){Nh.sendEvent(e,t)}rtcStatsDisconnect(){Nh.server.close()}rtcStatsReconnect(){Nh.server.connected||Nh.server.connect()}setAudioOnly(e){this._isAudioOnlyMode=e,this._forEachPeerConnection((e=>{e.hasConnectedPeerConnection()&&this._withForcedRenegotiation(e,(()=>e.setAudioOnly(this._isAudioOnlyMode,this._screenshareVideoTrackIds)))}))}setRemoteScreenshareVideoTrackIds(e=[]){const t=this._getFirstLocalNonCameraStream();this._screenshareVideoTrackIds=[...(null==t?void 0:t.track)?[t.track.id]:[],...e]}setRoomSessionId(e){this._roomSessionId=e}_setConnectionStatus(e,t,r){const i=e.connectionStatus;i!==t&&e.peerConnectionId!==this._selfId&&(i===Rm&&t===wm||(e.connectionStatus=t,setTimeout((()=>{this._emit(fm,{streamIds:e.streamIds,clientId:r,status:t,previous:i})}),0)))}_setJitterBufferTarget(e){try{e.getReceivers().forEach((e=>{e.jitterBufferTarget=yh,e.playoutDelayHint=.4}))}catch(e){tf.error("Error during setting jitter buffer target:",e)}}_emitServerEvent(e,t,r){this._serverSocket.emit(e,t,r)}_emit(e,t){this._emitter.emit(e,t)}_addEnabledLocalStreamId(e){this.enabledLocalStreamIds.push(e)}_deleteEnabledLocalStreamId(e){const t=this.enabledLocalStreamIds.indexOf(e);-1!==t&&this.enabledLocalStreamIds.splice(t,1)}_getSession(e){return e in this.peerConnections?this.peerConnections[e]:null}_getOrCreateSession(e,t){let r=this.peerConnections[e];if(void 0===r){const i="safari"===nf&&sf&&sf>=14&&this._features.deprioritizeH264OnSafari;this.peerConnections[e]=r=new Qh({peerConnectionId:e,bandwidth:t,maximumTurnBandwidth:this._features.unlimitedBandwidthWhenUsingRelayP2POn?-1:1280,deprioritizeH264Encoding:i}),this.totalSessionsCreated++}return r}_getLocalCameraStream(){return this.localStreams[rf]}_getNonLocalCameraStreamIds(){return Object.keys(this.localStreams).filter((e=>e!==rf))}_isScreensharingLocally(){return this._getNonLocalCameraStreamIds().length>0}_getFirstLocalNonCameraStream(){const e=this._getNonLocalCameraStreamIds();return 0===e.length?null:this.localStreams[e[0]]}_transformIncomingSdp(e,t){return{type:e.type,sdp:e.sdpU}}_transformOutgoingSdp(e){return{type:e.type,sdpU:e.sdp}}_createSession({clientId:e,initialBandwidth:t,isOfferer:r,peerConnectionId:i,shouldAddLocalVideo:n}){if(!i)throw new Error("peerConnectionId is missing");if(!e)throw new Error("clientId is missing");const s=this._getOrCreateSession(i,t),o={optional:[]};"chrome"===nf&&o.optional.push({googCpuOveruseDetection:!0}),o.optional.push({rtcStatsRoomSessionId:this._roomSessionId}),o.optional.push({rtcStatsClientId:this._selfId}),o.optional.push({rtcStatsPeerId:i}),o.optional.push({rtcStatsConferenceId:this._roomName});const a={iceServers:this._iceServers};if(this._features.turnServerOverrideHost){const e=this._features.turnServerOverrideHost,t=e.indexOf(":")>0?"":":443",r=":"+e+t;a.iceServers=a.iceServers.map((e=>{const t=Object.assign({},e);return t.url&&(t.url=t.url.replace(/:[^?]*/,r)),t.urls&&(t.urls=t.urls.map((e=>e.replace(/:[^?]*/,r)))),t}))}if(this._features.useOnlyTURN){a.iceTransportPolicy="relay";const e={onlyudp:/^turn:.*transport=udp$/,onlytcp:/^turn:.*transport=tcp$/,onlytls:/^turns:.*transport=tcp$/}[this._features.useOnlyTURN];e&&(a.iceServers=a.iceServers.filter((t=>t.url&&t.url.match(e))))}"chrome"===nf&&(a.sdpSemantics="unified-plan");const c=s.setAndGetPeerConnection({constraints:o,peerConnectionConfig:a,shouldAddLocalVideo:n,clientId:e});setTimeout((()=>this._emit(Qm)),0),c.ontrack=t=>{const r=t.streams[0];"default"===r.id&&0===r.getAudioTracks().length||-1===s.streamIds.indexOf(r.id)&&(s.streamIds.push(r.id),this._emit(gm,{clientId:e,stream:r}),s.connectionStatus===Cm&&setTimeout((()=>{this._emit(fm,{streamIds:s.streamIds,clientId:e,status:s.connectionStatus,previous:wm})}),0))},c.oniceconnectionstatechange=()=>{let t;const r=s.connectionStatus;switch(c.iceConnectionState){case"checking":t=wm;break;case"connected":case"completed":t=Cm,s.wasEverConnected||(this._pendingActionsForConnectedPeerConnections.forEach((e=>{"function"==typeof e&&e()})),this._pendingActionsForConnectedPeerConnections=[]),!s.wasEverConnected&&(c.iceConnectionState.match(/connected|completed/)||"chrome"===nf&&c.localDescription&&"answer"===c.localDescription.type)&&(s.wasEverConnected=!0,"false"!==this._features.bandwidth&&this.maybeRestrictRelayBandwidth(s)),this._isAudioOnlyMode&&s.setAudioOnly(!0,this._screenshareVideoTrackIds),s.registerConnected();break;case"disconnected":t=Rm,setTimeout((()=>{"disconnected"===c.iceConnectionState&&this._maybeRestartIce(e,s)}),2e3);break;case"failed":t=Sm,r!==t&&this._maybeRestartIce(e,s),null!==s.relayCandidateSeen||s.wasEverConnected||this._emit($m);break;default:return}this._setConnectionStatus(s,t,e)},c.onconnectionstate=()=>{switch(c.connectionState){case"connected":setTimeout((()=>{(function(e){if("chrome"!==bh.browserDetails.browser||bh.browserDetails.browser<58||"closed"===e.signalingState)return Promise.resolve(!1);const t=e.getSenders().some((e=>e.track&&"audio"===e.track.kind)),r=e.getReceivers().some((e=>e.track&&"audio"===e.track.kind));return e.getStats(null).then((e=>{let i=!1;return e.forEach((e=>{"outbound-rtp"!==e.type||"audio"!==e.kind&&"audio"!==e.mediaType||!t?"inbound-rtp"!==e.type||"audio"!==e.kind&&"audio"!==e.mediaType||!r||0===e.bytesReceived&&(i="inbound"):0===e.bytesSent&&(i="outbound")})),i}))})(s.pc).then((t=>{!1!==t&&this._emit(Km,{failureDirection:t,clientId:e})}))}),3e3),s.registerConnected();break;case"failed":const t=Sm;null!==s.relayCandidateSeen||s.wasEverConnected||this._emit($m),this._setConnectionStatus(s,t,e)}};const d=this.localStreams[rf];return n&&d&&s.addStream(d),n&&Object.keys(this.localStreams).forEach((e=>{if(e===rf)return;const t=this.localStreams[e];r?s.addStream(t):s.afterConnected.then((()=>{this._emitServerEvent(Yh,{receiverId:s.clientId,streamId:t.id,hasAudioTrack:!!t.getAudioTracks().length}),this._withForcedRenegotiation(s,(()=>s.addStream(t)))}))})),s}_cleanup(e){const t=this._getSession(e);t?(t.close(),delete this.peerConnections[e]):tf.warn("No RTCPeerConnection in RTCManager.disconnect()",e)}_forEachPeerConnection(e){Object.values(this.peerConnections).forEach((t=>{e(t)}))}_addStreamToPeerConnections(e){this._forEachPeerConnection((t=>{this._withForcedRenegotiation(t,(()=>t.addStream(e)))}))}_addTrackToPeerConnections(e,t){this._forEachPeerConnection((r=>{this._withForcedRenegotiation(r,(()=>r.addTrack(e,t)))}))}_replaceTrackToPeerConnections(e,t){const r=[];return this._forEachPeerConnection((i=>{if(!i.hasConnectedPeerConnection()){tf.info("Session doesn't have a connected PeerConnection, adding pending action!");const n=this._pendingActionsForConnectedPeerConnections;if(!n)return void tf.warn("No pending action is created to repalce track, because the pending actions array is null");const s=new Promise(((r,s)=>{n.push((()=>{const n=i.replaceTrack(e,t);if(!n)return tf.error("replaceTrack returned false!"),void s("ReplaceTrack returned false");n.then((e=>r(e))).catch((e=>s(e)))}))}));return void r.push(s)}const n=i.replaceTrack(e,t);n?r.push(n):tf.error("replaceTrack returned false!")})),Promise.all(r)}_removeStreamFromPeerConnections(e){this._forEachPeerConnection((t=>{this._withForcedRenegotiation(t,(()=>t.removeStream(e)))}))}_removeTrackFromPeerConnections(e){this._forEachPeerConnection((t=>{this._withForcedRenegotiation(t,(()=>t.removeTrack(e)))}))}_addLocalStream(e,t){this._addEnabledLocalStreamId(e),this.localStreams[e]=t}_removeLocalStream(e){delete this.localStreams[e],this._deleteEnabledLocalStreamId(e)}_updateAndScheduleMediaServersRefresh({iceServers:e,sfuServer:t,mediaserverConfigTtlSeconds:r}){this._iceServers=e,this._sfuServer=t,this._mediaserverConfigTtlSeconds=r,this._clearMediaServersRefresh(),r&&(this._fetchMediaServersTimer=setTimeout((()=>this._emitServerEvent(Zh)),1e3*r))}_clearMediaServersRefresh(){this._fetchMediaServersTimer&&(clearTimeout(this._fetchMediaServersTimer),this._fetchMediaServersTimer=null)}_startMonitoringAudioTrack(e){e.addEventListener("ended",this._audioTrackOnEnded)}_stopMonitoringAudioTrack(e){e.removeEventListener("ended",this._audioTrackOnEnded)}_connect(e){this.rtcStatsReconnect();let t=this._getSession(e),r=t&&t.bandwidth||0;return t?(tf.warn("Replacing peer session",e),this._cleanup(e)):r=this._changeBandwidthForAllClients(!0),t=this._createP2pSession(e,r,!0,!0),this._negotiatePeerConnection(e,t),Promise.resolve(t)}_maybeRestartIce(e,t){const r=t.pc;"disconnected"!==r.iceConnectionState&&"failed"!==r.iceConnectionState||"offer"===r.localDescription.type&&(t.wasEverConnected=!1,t.relayCandidateSeen=!1,t.serverReflexiveCandidateSeen=!1,t.publicHostCandidateSeen=!1,t.ipv6HostCandidateSeen=!1,this.ipv6HostCandidateTeredoSeen=!1,this.ipv6HostCandidate6to4Seen=!1,this.mdnsHostCandidateSeen=!1,this._emit(Wm),this._negotiatePeerConnection(e,t,Object.assign({},this.offerOptions,{iceRestart:!0})))}_setCodecPreferences(e,t,r,i){try{const n=e.getTransceivers().filter((e=>{var t,r;return"audio"===(null===(r=null===(t=null==e?void 0:e.sender)||void 0===t?void 0:t.track)||void 0===r?void 0:r.kind)}));n.forEach((e=>{if(void 0===RTCRtpSender.getCapabilities)return;const t=RTCRtpSender.getCapabilities("audio");for(let e=0;e<t.codecs.length;e++)if(i&&"audio/red"===t.codecs[e].mimeType.toLowerCase()){t.codecs.unshift(t.codecs.splice(e,1)[0]);break}void 0!==e.setCodecPreferences&&e.setCodecPreferences(t.codecs)}));const s=e.getTransceivers().filter((e=>{var t,r;return"video"===(null===(r=null===(t=null==e?void 0:e.sender)||void 0===t?void 0:t.track)||void 0===r?void 0:r.kind)}));s.forEach((e=>{if(void 0===RTCRtpSender.getCapabilities)return;const i=RTCRtpSender.getCapabilities("video");for(let e=0;e<i.codecs.length;e++){if(t&&"video/vp9"===i.codecs[e].mimeType.toLowerCase()){i.codecs.unshift(i.codecs.splice(e,1)[0]);break}if(r&&"video/av1"===i.codecs[e].mimeType.toLowerCase()){i.codecs.unshift(i.codecs.splice(e,1)[0]);break}}void 0!==e.setCodecPreferences&&e.setCodecPreferences(i.codecs)}))}catch(e){tf.error("Error during setting setCodecPreferences:",e)}}_negotiatePeerConnection(e,t,r){if(!t)return void tf.warn("No RTCPeerConnection in negotiatePeerConnection()",e);const i=t.pc;if(!t.canModifyPeerConnection())return void t.pending.push((()=>{this._negotiatePeerConnection(e,t,r)}));t.isOperationPending=!0;const{vp9On:n,av1On:s,redOn:o,rtpAbsCaptureTimeOn:a}=this._features;(n||s||o)&&this._setCodecPreferences(i,n,s,o),i.createOffer(r||this.offerOptions).then((r=>{a&&(r.sdp=qh(r.sdp)),(n||o)&&"firefox"===nf&&(r.sdp=function(e,t,r){var i,n;try{const s=xn(e);if(Array.isArray(null==s?void 0:s.media)){const e=s.media.find((e=>"audio"===e.type));if(Array.isArray(null==e?void 0:e.rtp)){const t=e.rtp;for(let n=0;n<t.length;n++)if(r&&"red"===t[n].codec){const r=null===(i=e.payloads)||void 0===i?void 0:i.split(" "),s=null==r?void 0:r.indexOf(""+t[n].payload);s&&-1!==s&&s>=0&&(null==r||r.unshift(r.splice(s,1)[0]),e.payloads=null==r?void 0:r.join(" "))}}const o=s.media.find((e=>"video"===e.type));if(Array.isArray(null==o?void 0:o.rtp)){const e=o.rtp;for(let r=0;r<e.length;r++)if(t&&"VP9"===e[r].codec){const t=null===(n=o.payloads)||void 0===n?void 0:n.split(" "),i=null==t?void 0:t.indexOf(""+e[r].payload);i&&-1!==i&&i>=0&&(null==t||t.unshift(t.splice(i,1)[0]),o.payloads=null==t?void 0:t.join(" "))}}}return In(s)}catch(e){zh.error("setCodecPreferenceSDP error:",e)}}(r.sdp,n,o)),this._emitServerEvent(um,{receiverId:e,message:this._transformOutgoingSdp(r)}),"chrome"===nf&&i.getSenders().filter((e=>e.track&&"video"===e.track.kind)).length>=2?t.pendingOffer=r:i.setLocalDescription(r).catch((t=>{tf.warn("RTCPeerConnection.setLocalDescription() failed with local offer",t),this._features.reverseOfferOnFailure&&(this._lastReverseDirectionAttemptByClientId||(this._lastReverseDirectionAttemptByClientId={}),(!this._lastReverseDirectionAttemptByClientId[e]||this._lastReverseDirectionAttemptByClientId[e]<Date.now()-1e4)&&(this.acceptNewStream({clientId:e,streamId:e,shouldAddLocalVideo:!0}),this._lastReverseDirectionAttemptByClientId[e]=Date.now()))}))})).catch((e=>{tf.warn("RTCPeerConnection.createOffer() failed to create local offer",e)}))}_withForcedRenegotiation(e,t){const r=e.pc,i=r.onnegotationneeded;r.onnegotiationneeded=null,t(),this._negotiatePeerConnection(e.clientId,e),setTimeout((()=>r.onnegotiationneeded=i),0)}_changeBandwidthForAllClients(e){let t=this.numberOfPeerconnections();if(e&&(t+=1),0===t)return 0;t>7&&(t=7);let r=this._features.bandwidth?parseInt(this._features.bandwidth,10):{1:0,2:this._features.highP2PBandwidth?768:384,3:this._features.highP2PBandwidth?512:256,4:192,5:128,6:128,7:64}[t];if(void 0===r)return 0;if(this._features.adjustBitratesFromResolution){const e=this._getLocalCameraStream();if(e){const t=e&&e.getVideoTracks()[0];if(t){const{width:e,height:i,frameRate:n}=t.getSettings();if(e&&i&&n){const t=Math.round(function(e,t,r){let i=e*t;i<km&&(i=km),i>Em&&(i=Em);let n=Om;i>Em?n=Dm:i>km&&(n+=-17582143775720163e-22*(i-km));let s=e*t*n;return r<=15?s*=.7:r<=24&&(s*=.9),s}(e,i,n)/1e3);r=Math.min(t,r||t)}}}}return this._features.higherP2PBitrates&&(r*=1.5),this._forEachPeerConnection((e=>{e.changeBandwidth(r)})),r}_createP2pSession(e,t,r,i){const n=this._createSession({peerConnectionId:e,clientId:e,initialBandwidth:t,shouldAddLocalVideo:r,isOfferer:i}),s=n.pc;this._features.increaseIncomingMediaBufferOn&&this._setJitterBufferTarget(s);const o=this.localStreams[rf];return r&&o&&!o.getVideoTracks().length&&this._stoppedVideoTrack&&s.addTrack(this._stoppedVideoTrack,o),s.onicegatheringstatechange=e=>{switch(e.target.iceGatheringState){case"gathering":this.icePublicIPGatheringTimeoutID&&clearTimeout(this.icePublicIPGatheringTimeoutID),this.icePublicIPGatheringTimeoutID=setTimeout((()=>{n.publicHostCandidateSeen||n.relayCandidateSeen||n.serverReflexiveCandidateSeen||this._emit(Hm)}),3e3);break;case"complete":this.icePublicIPGatheringTimeoutID&&clearTimeout(this.icePublicIPGatheringTimeoutID),this.icePublicIPGatheringTimeoutID=void 0}},s.onicecandidate=t=>{var r,i;if(t.candidate){switch(null===(r=t.candidate)||void 0===r?void 0:r.type){case"host":const e=null===(i=null==t?void 0:t.candidate)||void 0===i?void 0:i.address;try{if(Fm.v4({exact:!0}).test(e)){Sp(e).isPublicIp&&(n.publicHostCandidateSeen=!0)}else if(Fm.v6({exact:!0}).test(e.replace(/^\[(.*)\]/,"$1"))){const t=new vl.Address6(e.replace(/^\[(.*)\]/,"$1"));n.ipv6HostCandidateSeen=!0,"Global"===t.getScope()&&(n.publicHostCandidateSeen=!0),t.isTeredo()&&(n.ipv6HostCandidateTeredoSeen=!0),t.is6to4()&&(n.ipv6HostCandidate6to4Seen=!0)}else{const t=e.replace(/.local/,"");t&&Op(t,4)&&(n.mdnsHostCandidateSeen=!0)}}catch(e){tf.info("Error during parsing candidates! Error: ",{error:e})}break;case"srflx":n.serverReflexiveCandidateSeen||(n.serverReflexiveCandidateSeen=!0);break;case"relay":case"relayed":n.relayCandidateSeen||(n.relayCandidateSeen=!0)}this._emitServerEvent(cm,{receiverId:e,message:t.candidate})}else this._emitServerEvent(dm,{receiverId:e}),n.publicHostCandidateSeen||n.relayCandidateSeen||n.serverReflexiveCandidateSeen||this._emit(qm),n.ipv6HostCandidateSeen&&this._emit(Vm,{teredoSeen:n.ipv6HostCandidateTeredoSeen,sixtofourSeen:n.ipv6HostCandidate6to4Seen}),n.mdnsHostCandidateSeen&&this._emit(Gm)},s.onnegotiationneeded=()=>{"new"!==s.iceConnectionState&&n.connectionStatus&&this._negotiatePeerConnection(e,n)},n}acceptNewStream({streamId:e,clientId:t,shouldAddLocalVideo:r}){let i=this._getSession(t);if(i&&e!==t)return i;let n=i&&i.bandwidth||0;return i?(tf.warn("Replacing peer session",t),this._cleanup(t)):n=this._changeBandwidthForAllClients(!0),i=this._createP2pSession(t,n,r),this._emitServerEvent(lm,{receiverId:t}),i}disconnect(e){this._cleanup(e),this._changeBandwidthForAllClients(!1);0===this.numberOfPeerconnections()&&setTimeout((()=>{0===this.numberOfPeerconnections()&&this.rtcStatsDisconnect()}),6e4)}updateStreamResolution(){}stopOrResumeAudio(){}_handleStopOrResumeVideo({enable:e,track:t}){e?this._stoppedVideoTrack?(this._replaceTrackToPeerConnections(this._stoppedVideoTrack,t),delete this._stoppedVideoTrack):this._addTrackToPeerConnections(t):this._stoppedVideoTrack=t}stopOrResumeVideo(e,t){if(["chrome","safari"].includes(nf))if(!1===t)setTimeout((()=>{e.getVideoTracks().forEach((r=>{!1===r.enabled&&(r.stop(),e.removeTrack(r),this._emit(_m,{stream:e,track:r}),this._handleStopOrResumeVideo({enable:t,track:r}))}))}),5e3);else if(0===e.getVideoTracks().length){const r=this._webrtcProvider.getMediaConstraints().video;if(!r)return;navigator.mediaDevices.getUserMedia({video:r}).then((r=>{const i=r.getVideoTracks()[0];e.addTrack(i),this._emit(ym,{streamId:e.id,tracks:[i],screenShare:!1}),this._handleStopOrResumeVideo({enable:t,track:i})}))}}_shareScreen(e,t){this._emitServerEvent(Yh,{streamId:e,hasAudioTrack:!!t.getAudioTracks().length}),this._wasScreenSharing=!0,this._addStreamToPeerConnections(t)}removeStream(e,t,r){this._removeLocalStream(e),this._removeStreamFromPeerConnections(t),this._wasScreenSharing=!1,this._emitServerEvent(Xh,{streamId:e,requestedByClientId:r})}hasClient(e){return Object.keys(this.peerConnections).includes(e)}}var cf=Object.freeze({__proto__:null,KalmanFilter:class{constructor({R:e=.01,Q:t=2,A:r=1.1,B:i=1,C:n=1.2}={R:.01,Q:2,A:1.1,B:1,C:1.2}){this.R=e,this.Q=t,this.A=r,this.C=n,this.B=i,this.cov=NaN,this.x=NaN}filter(e,t=0){if(isNaN(this.x))this.x=1/this.C*e,this.cov=1/this.C*this.Q*(1/this.C);else{const r=this.predict(t),i=this.uncertainty(),n=i*this.C*(1/(this.C*i*this.C+this.Q));this.x=r+n*(e-this.C*r),this.cov=i-n*this.C*i}return this.x}predict(e=0){return this.A*this.x+this.B*e}uncertainty(){return this.A*this.cov*this.A+this.R}lastMeasurement(){return this.x}setMeasurementNoise(e){this.Q=e}setProcessNoise(e){this.R=e}},calculateStd:e=>{const t=e.reduce(((e,t)=>e+t),0)/e.length;return e.reduce(((e,r)=>e.concat(Math.pow(r-t,2))),[]).reduce(((e,t)=>e+t),0)/e.length},createACFCalculator:()=>{let e=-1,t=0,r=0;return i=>{const n=i.reduce(((e,t)=>e+t),0)/i.length;if(e=e<0?n:.95*e+.05*n,++r<2)return t=n,0;const s=(n-e)*(t-e);return t=n,s}},standardDeviation:e=>{const t=e.reduce(((e,t)=>e+t),0)/e.length;return{mean:t,SD:Math.sqrt(e.reduce(((e,r)=>e+Math.pow(r-t,2)),0)/e.length)}},variance:(e,t=!1)=>{const r=e.reduce(((e,t)=>e+t),0)/e.length;return e.reduce(((e,t)=>e.concat(Math.pow(t-r,2))),[]).reduce(((e,t)=>e+t),0)/(e.length-(t?0:1))}});const df={minDecibels:-80,maxDecibels:-10,smoothingTimeConstant:.8,aggSize:1,sampleRate:10,reportRate:2,bins:32,bands:[[0,1,2,3],[4,5,6,7]],separateTrack:{autoGainControl:!1,noiseSupression:!1},binFormula:"bin",scoreFormula:"300 * bands[1].avg / Math.max(bands[1].avg + bands[0].avg, 0.01)",outFormula:"score"},lf=new Yu;const pf=new Yu,uf=Object.freeze({ok:"ok",warning:"warning",critical:"critical"});class hf extends ur{constructor(){super(),this._clients={},this._producers={},this._startMonitor()}close(){clearInterval(this._intervalHandle),delete this._intervalHandle,this._producers={},this._clients={}}_startMonitor(){this._intervalHandle=setInterval((()=>{Object.entries(this._producers).forEach((([e,t])=>{this._evaluateClient(e,t)}))}),600)}_evaluateClient(e,t){this._clients[e]||(this._clients[e]={audio:{currentQuality:uf.ok,trend:[]},video:{currentQuality:uf.ok,trend:[]}}),this._evaluateProducer(e,Object.values(t).filter((e=>"audio"===e.kind)),"audio"),this._evaluateProducer(e,Object.values(t).filter((e=>"video"===e.kind)),"video")}_evaluateProducer(e,t,r){if(0===t.length)return;const i=t.reduce(((e,t)=>e+t.score),0)/t.length,n=this._evaluateScore(i);this._updateTrend(n,this._clients[e][r])&&this.emit(mm,{clientId:e,kind:r,quality:n})}_updateTrend(e,t){return t.trend.push(e),t.trend.length>3&&t.trend.shift(),!(e===t.currentQuality||!t.trend.every((e=>e!==t.currentQuality)))&&(t.currentQuality=e,!0)}addProducer(e,t){e&&t&&"string"==typeof e&&"string"==typeof t?(this._producers[e]||(this._producers[e]={}),this._producers[e][t]={}):pf.warn("Missing clientId or producerId")}removeProducer(e,t){delete this._producers[e][t],0===Object.keys(this._producers[e]).length&&delete this._producers[e]}addConsumer(e,t){e&&t?(this._producers[e]||(this._producers[e]={}),this._producers[e][t]={}):pf.warn("Missing clientId or consumerId")}removeConsumer(e,t){delete this._producers[e][t],0===Object.keys(this._producers[e]).length&&delete this._producers[e]}addProducerScore(e,t,r,i){Array.isArray(i)&&0!==i.length&&!i.some((e=>!e||!e.hasOwnProperty("score")||"number"!=typeof e.score||isNaN(e.score)))?this._producers[e][t]={kind:r,score:this._calcAvgProducerScore(i.map((e=>e.score)))}:pf.warn("Unexpected producer score format")}addConsumerScore(e,t,r,i){i&&i.hasOwnProperty("producerScores")&&Array.isArray(i.producerScores)?this._producers[e][t]={kind:r,score:this._calcAvgProducerScore(i.producerScores)}:pf.warn("Unexpected consumer score format")}_evaluateScore(e){return e<=9&&e>7?uf.warning:e<=7&&e>0?uf.critical:uf.ok}_calcAvgProducerScore(e){try{if(!Array.isArray(e)||0===e.length)return 0;let t=0,r=0;return e.forEach((e=>{e>0&&(t+=e,r++)})),0===t||0===r?0:t/r}catch(e){return pf.error(e),0}}}var mf;const ff=null!==(mf=al.default)&&void 0!==mf?mf:al,gf=new Yu,vf=ff.browserDetails.browser;let bf=!1;const yf=gl(),_f=gl();"chrome"===vf&&window.document.addEventListener("beforeunload",(()=>bf=!0));class wf{constructor({selfId:e,room:t,emitter:r,serverSocket:i,webrtcProvider:n,features:s,eventClaim:o,deviceHandlerFactory:a}){const{session:c,iceServers:d,sfuServer:l,mediaserverConfigTtlSeconds:p}=t;this._selfId=e,this._room=t,this._roomSessionId=null==c?void 0:c.id,this._emitter=r,this._serverSocket=i,this._webrtcProvider=n,this._features=s||{},this._eventClaim=o,this._vegaConnection=null,this._micAnalyser=null,this._micAnalyserDebugger=null,this._mediasoupDevice=a?new wr.Device({handlerFactory:a}):new wr.Device({handlerName:gh()}),this._routerRtpCapabilities=null,this._sendTransport=null,this._receiveTransport=null,this._clientStates=new Map,this._streamIdToVideoConsumerId=new Map,this._consumers=new Map,this._dataConsumers=new Map,this._localStreamDeregisterFunction=null,this._micTrack=null,this._webcamTrack=null,this._screenVideoTrack=null,this._screenAudioTrack=null,this._micProducer=null,this._micProducerPromise=null,this._micPaused=!1,this._micScoreProducer=null,this._micScoreProducerPromise=null,this._webcamProducer=null,this._webcamProducerPromise=null,this._webcamPaused=!1,this._screenVideoProducer=null,this._screenVideoProducerPromise=null,this._screenAudioProducer=null,this._screenAudioProducerPromise=null,this._sndTransportIceRestartPromise=null,this._rcvTransportIceRestartPromise=null,this._colocation=null,this._stopCameraTimeout=null,this._audioTrackOnEnded=()=>{Nh.sendEvent("audio_ended",{unloading:bf}),this._emitToPWA(Jm,{})},this._updateAndScheduleMediaServersRefresh({sfuServer:l,iceServers:d.iceServers||[],mediaserverConfigTtlSeconds:p}),this._socketListenerDeregisterFunctions=[],this._reconnect=!0,this._reconnectTimeOut=null,this._qualityMonitor=new hf,this._qualityMonitor.on(mm,(e=>{this._emitToPWA(mm,e)}))}_updateAndScheduleMediaServersRefresh({iceServers:e,sfuServer:t,mediaserverConfigTtlSeconds:r}){var i,n;this._iceServers=e,this._sfuServer=t,this._mediaserverConfigTtlSeconds=r,null===(i=this._sendTransport)||void 0===i||i.updateIceServers({iceServers:this._iceServers}),null===(n=this._receiveTransport)||void 0===n||n.updateIceServers({iceServers:this._iceServers}),this._clearMediaServersRefresh(),r&&(this._fetchMediaServersTimer=setTimeout((()=>this._emitToSignal(Zh)),1e3*r))}_clearMediaServersRefresh(){this._fetchMediaServersTimer&&(clearTimeout(this._fetchMediaServersTimer),this._fetchMediaServersTimer=null)}setupSocketListeners(){this._socketListenerDeregisterFunctions.push((()=>this._clearMediaServersRefresh()),this._serverSocket.on(rm,(e=>{e.error?gf.warn("FETCH_MEDIASERVER_CONFIG failed:",e.error):this._updateAndScheduleMediaServersRefresh(e)})),this._serverSocket.on(om,(()=>{this._screenVideoTrack&&this._emitScreenshareStarted()}))),this._connect()}_emitScreenshareStarted(){this._emitToSignal(Yh,{streamId:_f,hasAudioTrack:Boolean(this._screenAudioTrack)})}_connect(){const e=this._features.sfuServerOverrideHost||[this._sfuServer.url],t=new URLSearchParams(Object.assign({clientId:this._selfId,organizationId:this._room.organizationId,roomName:this._room.name,eventClaim:this._room.isClaimed?this._eventClaim:null,lowBw:"true"},Object.keys(this._features||{}).filter((e=>this._features[e]&&/^sfu/.test(e))).reduce(((e,t)=>Object.assign(Object.assign({},e),{[t]:this._features[t]})),{}))),r=`wss://${e}?${t.toString()}`;this._vegaConnection=new ah(r),this._vegaConnection.on("open",(()=>this._join())),this._vegaConnection.on("close",(()=>this._onClose())),this._vegaConnection.on("message",(e=>this._onMessage(e)))}_onClose(){var e,t;gf.info("_onClose()"),null===(e=this._sendTransport)||void 0===e||e.close(),null===(t=this._receiveTransport)||void 0===t||t.close(),this._sendTransport=null,this._receiveTransport=null,this._streamIdToVideoConsumerId.clear(),this._reconnect&&(this._reconnectTimeOut=setTimeout((()=>this._connect()),1e3)),this._qualityMonitor.close(),this._emitToPWA(Ym)}_join(){return Xu(this,void 0,void 0,(function*(){gf.info("join()"),this._emitToPWA(Zm);try{const{routerRtpCapabilities:e}=yield this._vegaConnection.request("getCapabilities");this._routerRtpCapabilities||(((e,t)=>{const{vp9On:r,h264On:i}=t;if(r){const{preferredPayloadType:t}=e.codecs.find((e=>"video/vp9"===e.mimeType.toLowerCase())),{preferredPayloadType:r}=e.codecs.find((e=>"video/rtx"===e.mimeType.toLowerCase()&&e.parameters.apt===t));e.codecs=e.codecs.filter((e=>"audio"===e.kind||e.preferredPayloadType===t||e.preferredPayloadType===r))}else if(i){const{preferredPayloadType:t}=e.codecs.find((e=>"video/h264"===e.mimeType.toLowerCase())),{preferredPayloadType:r}=e.codecs.find((e=>"video/rtx"===e.mimeType.toLowerCase()&&e.parameters.apt===t));e.codecs=e.codecs.filter((e=>"audio"===e.kind||e.preferredPayloadType===t||e.preferredPayloadType===r))}})(e,this._features),this._routerRtpCapabilities=e,yield this._mediasoupDevice.load({routerRtpCapabilities:e})),this._vegaConnection.message("setCapabilities",{rtpCapabilities:this._mediasoupDevice.rtpCapabilities}),this._colocation&&this._vegaConnection.message("setColocation",{colocation:this._colocation}),yield Promise.all([this._createTransport(!0),this._createTransport(!1)]);const t=[];!this._micTrack||this._micProducer||this._micProducerPromise||t.push(this._internalSendMic()),!this._webcamTrack||this._webcamProducer||this._webcamProducerPromise||t.push(this._internalSendWebcam()),!this._screenVideoTrack||this._screenVideoProducer||this._screenVideoProducerPromise||t.push(this._internalSendScreenVideo()),!this._screenAudioTrack||this._screenAudioProducer||this._screenAudioProducerPromise||t.push(this._internalSendScreenAudio()),yield Promise.all(t)}catch(e){gf.error("_join() [error:%o]",e)}}))}_createTransport(e){return Xu(this,void 0,void 0,(function*(){const t=e?"createSendTransport":"createRecvTransport",r=yield this._vegaConnection.request("createTransport",{producing:e,consuming:!e,enableTcp:!0,enableUdp:!0,preferUdp:!0,sctpParameters:{enableSctp:!0,numSctpStreams:{OS:1024,MIS:1024},maxSctpMessageSize:262144,sctpSendBufferSize:262144}});r.iceServers=this._iceServers,((e,t)=>{if(!t.useOnlyTURN)return;e.iceTransportPolicy="relay";const r={onlyudp:/^turn:.*transport=udp$/,onlytcp:/^turn:.*transport=tcp$/,onlytls:/^turns:.*transport=tcp$/}[t.useOnlyTURN];r&&(e.iceServers=e.iceServers.filter((e=>e.url&&e.url.match(r))))})(r,this._features);const i=this._mediasoupDevice[t](r),n=t=>Xu(this,void 0,void 0,(function*(){if(gf.info(`Transport ConnectionStateChanged ${t}`),"disconnected"===t||"failed"===t)if(e){if(this._sndTransportIceRestartPromise)return;this._sndTransportIceRestartPromise=this._restartIce(i).finally((()=>{this._sndTransportIceRestartPromise=null}))}else{if(this._rcvTransportIceRestartPromise)return;this._rcvTransportIceRestartPromise=this._restartIce(i).finally((()=>{this._rcvTransportIceRestartPromise=null}))}}));i.on("connect",(({dtlsParameters:e},t)=>{var r;null===(r=this._vegaConnection)||void 0===r||r.message("connectTransport",{transportId:i.id,dtlsParameters:e}),t()})).on("connectionstatechange",n),i.observer.once("close",(()=>{i.removeListener(n)})),e?(i.on("produce",(({kind:e,rtpParameters:t,appData:r},n,s)=>Xu(this,void 0,void 0,(function*(){var o;try{const{paused:s}=r,{id:a}=yield null===(o=this._vegaConnection)||void 0===o?void 0:o.request("produce",{transportId:i.id,kind:e,rtpParameters:t,paused:s,appData:r});n({id:a})}catch(e){s(e)}})))),i.on("producedata",(({appData:e,sctpStreamParameters:t},r,n)=>Xu(this,void 0,void 0,(function*(){var s;try{const{id:n}=yield null===(s=this._vegaConnection)||void 0===s?void 0:s.request("produceData",{transportId:i.id,sctpStreamParameters:t,appData:e});r({id:n})}catch(e){n(e)}})))),this._sendTransport=i):this._receiveTransport=i}))}_restartIce(e,t=0){return Xu(this,void 0,void 0,(function*(){if(!e||!("closed"in e)||!("connectionState"in e))return void gf.info("_restartIce: No transport or property closed or connectionState!");if(e.closed)return void gf.info("_restartIce: Transport is closed!");if("disconnected"!==e.connectionState&&"failed"!==e.connectionState)return void gf.info("_restartIce: Connection is healthy ICE restart no loneger needed!");const{iceRestartStarted:r}=e.appData,i=Date.now();if(Number.isFinite(r)&&i-r<3500)return;if(e.appData.iceRestartStarted=i,5<=t)return void gf.info("_restartIce: Reached restart ICE maximum retry count!");if(!this._vegaConnection)return void gf.info("_restartIce: Connection is undefined");const{iceParameters:n}=yield this._vegaConnection.request("restartIce",{transportId:e.id});gf.info("_restartIce: ICE restart iceParameters received from SFU: ",n);const s=yield e.restartIce({iceParameters:n}).then((()=>null)).catch((e=>e));if(s)switch(gf.error(`_restartIce: ICE restart failed: ${s}`),s.message){case"missing transportId":case"no such transport":break;default:yield new Promise((e=>{setTimeout((()=>{e(void 0)}),Math.min(3500*Math.pow(2,t),6e4))})),yield this._restartIce(e,t+1)}else yield new Promise((e=>{setTimeout((()=>{e(void 0)}),6e4*Math.min(8,t+1))})),"failed"!==e.connectionState&&"disconnected"!==e.connectionState||(yield this._restartIce(e,t+1))}))}_internalSendMic(){return Xu(this,void 0,void 0,(function*(){gf.info("_internalSendMic()"),this._micProducerPromise=(()=>Xu(this,void 0,void 0,(function*(){try{if(!this._micTrack||!this._sendTransport||this._micProducer)return void(this._micProducerPromise=null);const e=this._micPaused,t=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._micTrack,disableTrackOnPause:!1,stopTracks:!1},fh("audio",!1,this._features)),{appData:{streamId:yf,sourceClientId:this._selfId,screenShare:!1,source:"mic",paused:e}}));e?t.pause():t.resume(),this._micProducer=t,this._qualityMonitor.addProducer(this._selfId,t.id),t.observer.once("close",(()=>{var e;gf.info('micProducer "close" event'),t.appData.localClosed&&(null===(e=this._vegaConnection)||void 0===e||e.message("closeProducers",{producerIds:[t.id]})),this._micProducer=null,this._micProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,t.id)})),this._micTrack!==this._micProducer.track&&(yield this._replaceMicTrack()),this._micPaused!==this._micProducer.paused&&this._pauseResumeMic()}catch(e){gf.error("micProducer failed:%o",e)}finally{this._micProducerPromise=null,this._micTrack||(this._stopProducer(this._micProducer),this._micProducer=null)}})))()}))}_internalSetupMicScore(){return Xu(this,void 0,void 0,(function*(){gf.info("_internalSetupMicScore()"),this._micScoreProducerPromise=(()=>Xu(this,void 0,void 0,(function*(){try{if(!this._micProducer||!this._colocation||this._micScoreProducer)return void(this._micScoreProducerPromise=null);const e=yield this._sendTransport.produceData({ordered:!1,maxPacketLifeTime:3e3,label:"micscore",appData:{producerId:this._micProducer.id,clientId:this._selfId}});this._micScoreProducer=e,e.observer.once("close",(()=>{var t;gf.info('micScoreProducer "close" event'),e.appData.localClosed&&(null===(t=this._vegaConnection)||void 0===t||t.message("closeDataProducers",{dataProducerIds:[e.id]})),this._micScoreProducer=null,this._micScoreProducerPromise=null}))}catch(e){gf.error("micScoreProducer failed:%o",e)}finally{this._micScoreProducerPromise=null,this._micProducer&&this._colocation||this._stopMicScoreProducer()}})))()}))}_stopMicScoreProducer(){this._stopProducer(this._micScoreProducer),this._micScoreProducer=null}_replaceMicTrack(){var e;return Xu(this,void 0,void 0,(function*(){gf.info("_replaceMicTrack()"),this._micTrack&&this._micProducer&&!this._micProducer.closed&&this._micProducer.track!==this._micTrack&&(yield this._micProducer.replaceTrack({track:this._micTrack}),null===(e=this._micAnalyser)||void 0===e||e.setTrack(this._micTrack),yield this._replaceMicTrack())}))}_pauseResumeMic(){var e,t;gf.info("_pauseResumeMic()"),this._micProducer&&!this._micProducer.closed&&this._micPaused!==this._micProducer.paused&&(this._micPaused?(this._micProducer.pause(),null===(e=this._vegaConnection)||void 0===e||e.message("pauseProducers",{producerIds:[this._micProducer.id]})):(this._micProducer.resume(),null===(t=this._vegaConnection)||void 0===t||t.message("resumeProducers",{producerIds:[this._micProducer.id]})),this._pauseResumeMic())}_sendMic(e){return Xu(this,void 0,void 0,(function*(){return gf.info("_sendMic() [track:%o]",e),this._micTrack=e,this._micProducer?yield this._replaceMicTrack():this._micProducerPromise?void 0:this._sendTransport?yield this._internalSendMic():void 0}))}_sendMicScore(e){if(!isNaN(e)&&isFinite(e))if(this._micScoreProducer){if(this._micScoreProducer.closed)return void this._stopMicScoreProducer();try{this._micScoreProducer.send(JSON.stringify({score:e}))}catch(e){gf.error("_sendMicScore failed [error:%o]",e)}}else!this._micScoreProducerPromise&&this._micProducer&&this._colocation&&0!==e&&this._internalSetupMicScore()}_internalSendWebcam(){return Xu(this,void 0,void 0,(function*(){gf.info("_internalSendWebcam()"),this._webcamProducerPromise=(()=>Xu(this,void 0,void 0,(function*(){try{if(!this._webcamTrack||!this._sendTransport||this._webcamProducer)return void(this._webcamProducerPromise=null);const e=this._webcamPaused,t=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._webcamTrack,disableTrackOnPause:!1,stopTracks:!1},fh("video",!1,this._features)),{appData:{streamId:yf,sourceClientId:this._selfId,screenShare:!1,source:"webcam",paused:e}}));e?t.pause():t.resume(),this._webcamProducer=t,this._qualityMonitor.addProducer(this._selfId,t.id),t.observer.once("close",(()=>{var e;gf.info('webcamProducer "close" event'),t.appData.localClosed&&(null===(e=this._vegaConnection)||void 0===e||e.message("closeProducers",{producerIds:[t.id]})),this._webcamProducer=null,this._webcamProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,t.id)})),this._webcamTrack!==this._webcamProducer.track&&(yield this._replaceWebcamTrack()),this._webcamPaused!==this._webcamProducer.paused&&this._pauseResumeWebcam()}catch(e){gf.error("webcamProducer failed:%o",e)}finally{this._webcamProducerPromise=null,this._webcamTrack||(yield this._stopProducer(this._webcamProducer),this._webcamProducer=null)}})))()}))}_replaceWebcamTrack(){return Xu(this,void 0,void 0,(function*(){gf.info("_replaceWebcamTrack()"),this._webcamTrack&&this._webcamProducer&&!this._webcamProducer.closed&&this._webcamProducer.track!==this._webcamTrack&&(yield this._webcamProducer.replaceTrack({track:this._webcamTrack}),yield this._replaceWebcamTrack())}))}_pauseResumeWebcam(){var e,t;gf.info("_pauseResumeWebcam()"),this._webcamProducer&&!this._webcamProducer.closed&&this._webcamPaused!==this._webcamProducer.paused&&(this._webcamPaused?(this._webcamProducer.pause(),null===(e=this._vegaConnection)||void 0===e||e.message("pauseProducers",{producerIds:[this._webcamProducer.id]})):(this._webcamProducer.resume(),null===(t=this._vegaConnection)||void 0===t||t.message("resumeProducers",{producerIds:[this._webcamProducer.id]})),this._pauseResumeWebcam())}_sendWebcam(e){return Xu(this,void 0,void 0,(function*(){return gf.info("_sendWebcam() [track:%o]",e),this._webcamTrack=e,this._webcamProducer?yield this._replaceWebcamTrack():this._webcamProducerPromise?void 0:this._sendTransport?yield this._internalSendWebcam():void 0}))}_internalSendScreenVideo(){return Xu(this,void 0,void 0,(function*(){gf.info("_internalSendScreenVideo()"),this._screenVideoProducerPromise=(()=>Xu(this,void 0,void 0,(function*(){try{if(!this._screenVideoTrack||!this._sendTransport||this._screenVideoProducer)return void(this._screenVideoProducerPromise=null);const e=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._screenVideoTrack,disableTrackOnPause:!1,stopTracks:!1},fh("video",!0,this._features)),{appData:{streamId:_f,sourceClientId:this._selfId,screenShare:!0,source:"screenvideo",paused:!1}}));this._screenVideoProducer=e,this._qualityMonitor.addProducer(this._selfId,e.id),e.observer.once("close",(()=>{var t;gf.info('screenVideoProducer "close" event'),e.appData.localClosed&&(null===(t=this._vegaConnection)||void 0===t||t.message("closeProducers",{producerIds:[e.id]})),this._screenVideoProducer=null,this._screenVideoProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,e.id)})),this._screenVideoTrack!==this._screenVideoProducer.track&&(yield this._replaceScreenVideoTrack())}catch(e){gf.error("screenVideoProducer failed:%o",e)}finally{this._screenVideoProducerPromise=null,this._screenVideoTrack||(yield this._stopProducer(this._screenVideoProducer),this._screenVideoProducer=null)}})))()}))}_replaceScreenVideoTrack(){return Xu(this,void 0,void 0,(function*(){gf.info("_replaceScreenVideoTrack()"),this._screenVideoTrack&&this._screenVideoProducer&&!this._screenVideoProducer.closed&&this._screenVideoProducer.track!==this._screenVideoTrack&&(yield this._screenVideoProducer.replaceTrack({track:this._screenVideoTrack}),yield this._replaceScreenVideoTrack())}))}_sendScreenVideo(e){return Xu(this,void 0,void 0,(function*(){return gf.info("_sendScreenVideo() [track:%o]",e),this._screenVideoTrack=e,this._screenVideoProducer?yield this._replaceScreenVideoTrack():this._screenVideoProducerPromise?void 0:this._sendTransport?yield this._internalSendScreenVideo():void 0}))}_internalSendScreenAudio(){return Xu(this,void 0,void 0,(function*(){gf.info("_internalSendScreenAudio()"),this._screenAudioProducerPromise=(()=>Xu(this,void 0,void 0,(function*(){try{if(!this._screenAudioTrack||!this._sendTransport||this._screenAudioProducer)return void(this._screenAudioProducerPromise=null);const e=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._screenAudioTrack,disableTrackOnPause:!1,stopTracks:!1},fh("audio",!0,this._features)),{appData:{streamId:_f,sourceClientId:this._selfId,screenShare:!0,source:"screenaudio",paused:!1}}));this._screenAudioProducer=e,this._qualityMonitor.addProducer(this._selfId,e.id),e.observer.once("close",(()=>{var t;gf.info('screenAudioProducer "close" event'),e.appData.localClosed&&(null===(t=this._vegaConnection)||void 0===t||t.message("closeProducers",{producerIds:[e.id]})),this._screenAudioProducer=null,this._screenAudioProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,e.id)})),this._screenAudioTrack!==this._screenAudioProducer.track&&(yield this._replaceScreenAudioTrack())}catch(e){gf.error("screenAudioProducer failed:%o",e)}finally{this._screenAudioProducerPromise=null,this._screenAudioTrack||(yield this._stopProducer(this._screenAudioProducer),this._screenAudioProducer=null)}})))()}))}_replaceScreenAudioTrack(){return Xu(this,void 0,void 0,(function*(){gf.info("_replaceScreenAudioTrack()"),this._screenAudioTrack&&this._screenAudioProducer&&!this._screenAudioProducer.closed&&this._screenAudioProducer.track!==this._screenAudioTrack&&(yield this._screenAudioProducer.replaceTrack({track:this._screenAudioTrack}),yield this._replaceScreenAudioTrack())}))}_sendScreenAudio(e){return Xu(this,void 0,void 0,(function*(){return gf.info("_sendScreenAudio() [track:%o]",e),this._screenAudioTrack=e,this._screenAudioProducer?yield this._replaceScreenAudioTrack():this._screenAudioProducerPromise?void 0:this._sendTransport?yield this._internalSendScreenAudio():void 0}))}_stopProducer(e){gf.info("_stopProducer()"),e&&!e.closed&&(e.appData.localClosed=!0,e.close())}isInitializedWith({selfId:e,roomName:t,isSfu:r}){return this._selfId===e&&this._room.name===t&&Boolean(r)}setEventClaim(e){var t;this._eventClaim=e,null===(t=this._vegaConnection)||void 0===t||t.message("eventClaim",{eventClaim:e})}setColocation(e){var t;this._colocation=e,null===(t=this._vegaConnection)||void 0===t||t.message("setColocation",{colocation:e}),e||!this._micScoreProducer||this._micScoreProducerPromise||this._stopMicScoreProducer(),this._syncMicAnalyser(),Nh.sendEvent("colocation_changed",{colocation:e})}setAudioOnly(e){var t;null===(t=this._vegaConnection)||void 0===t||t.message(e?"enableAudioOnly":"disableAudioOnly")}setRemoteScreenshareVideoTrackIds(){}setRoomSessionId(e){this._roomSessionId=e}disconnect(e,t,r){var i;if(gf.info("disconnect() [clientIdOrStreamId:%s, eventClaim:%s]",e,r),this._clientStates.has(e)){const t=this._clientStates.get(e);t.hasAcceptedWebcamStream=!1,t.hasAcceptedScreenStream=!1,this._syncIncomingStreamsWithPWA(e)}r&&(this._eventClaim=r,null===(i=this._vegaConnection)||void 0===i||i.message("eventClaim",{eventClaim:r}))}replaceTrack(e,t){e&&"audio"===e.kind&&this._stopMonitoringAudioTrack(e),"audio"===t.kind&&(this._startMonitoringAudioTrack(t),this._micTrack=t,this._replaceMicTrack()),"video"===t.kind&&(this._webcamTrack=t,this._replaceWebcamTrack())}removeStream(e,t,r){gf.info("removeStream() [streamId:%s, requestedByClientId:%s]",e,r),this._emitToSignal(Xh,{streamId:_f,requestedByClientId:r}),this._stopProducer(this._screenVideoProducer),this._screenVideoProducer=null,this._screenVideoTrack=null,this._stopProducer(this._screenAudioProducer),this._screenAudioProducer=null,this._screenAudioTrack=null}_onMicAnalyserScoreUpdated(e){var t,r;null===(r=null===(t=this._micAnalyserDebugger)||void 0===t?void 0:t.onScoreUpdated)||void 0===r||r.call(t,e),this._sendMicScore(this._micPaused?0:e.out)}addNewStream(e,t,r,i){if("0"===e){this._micPaused=r,this._webcamPaused=i;const e=t.getVideoTracks()[0],n=t.getAudioTracks()[0];e&&this._sendWebcam(e),n&&(this._sendMic(n),this._syncMicAnalyser(),this._startMonitoringAudioTrack(n)),this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null);const s=e=>{const{enable:t,track:r}=e.detail;this._webcamPaused=!t,this._pauseResumeWebcam(),this._handleStopOrResumeVideo({enable:t,track:r})};t.addEventListener("stopresumevideo",s),this._localStreamDeregisterFunction=()=>{t.removeEventListener("stopresumevideo",s)}}else{const e=t.getVideoTracks()[0],r=t.getAudioTracks()[0];e&&this._sendScreenVideo(e),r&&this._sendScreenAudio(r),this._emitScreenshareStarted()}}_syncMicAnalyser(){if(!this._micTrack||!this._colocation||this._micAnalyser)return this._micAnalyser&&!this._colocation?(this._micAnalyser.close(),void(this._micAnalyser=null)):void 0;this._micAnalyser=function({micTrack:e,params:t,onScoreUpdated:r}){const i=new AudioContext;let n=null,s=null,o=null,a=!1;const c=e=>Xu(this,void 0,void 0,(function*(){if(o&&a&&o.stop(),a=!1,e&&t.separateTrack)try{const r=yield navigator.mediaDevices.getUserMedia({audio:Object.assign({deviceId:null==o?void 0:o.getSettings().deviceId},t.separateTrack),video:!1});e=r.getAudioTracks()[0],a=!0}catch(e){lf.warn("unable to fetch new track for colocation speaker analysis, using current",e)}if(o=e,s&&(s.disconnect(),s=null),e){const t=new MediaStream([e]);s=i.createMediaStreamSource(t),s.connect(n)}}));let d;const l=e=>{if(clearInterval(d),t=Object.assign(Object.assign({},df),e),!n||n.fftSize!==2*t.bins){let e=null;n&&(e=o,c(null)),n=i.createAnalyser(),n.fftSize=2*t.bins,e&&c(e)}const s=new Uint8Array(n.frequencyBinCount),a=[];n.minDecibels=t.minDecibels,n.maxDecibels=t.maxDecibels,n.smoothingTimeConstant=t.smoothingTimeConstant;const l=t.initScript&&new Function("f","setTrack","lastTrack",t.initScript.join("\n")),p=t.scoreScript&&new Function("bins","g","f",t.scoreScript.join("\n")),u=t.scoreFormula&&new Function("bands",`return ${t.scoreFormula}`),h=t.outFormula&&new Function("score","avg","max","scores",`return ${t.outFormula}`),m=t.binFormula&&new Function("bin","index",`return ${t.binFormula}`);let f=0;const g=l&&l(cf,c,o);d=setInterval((()=>{n.getByteFrequencyData(s);let e=0;if(u){const r=t.bands.map((e=>{const t=e.map((e=>m(s[e]/255,e)));return{avg:t.reduce(((e,t)=>e+t),0)/e.length,min:t.reduce(((e,t)=>Math.min(e,t/255)),Number.MAX_VALUE),max:t.reduce(((e,t)=>Math.max(e,t/255)),0)}}));e=u(r)||0}else p&&(e=p(s,g,cf),isNaN(e)&&(e=0));if(a.push(e),a.length>t.aggSize&&a.shift(),f++,f>=t.reportRate){f=0;const t=a.reduce(((e,t)=>Math.max(e,t)),0),i=a.reduce(((e,t)=>e+t),0)/a.length,n=h(e,i,t,a);r({bins:s,score:e,max:t,avg:i,out:n})}}),1e3/t.sampleRate)};return l(t),c(e),{setParams:l,setTrack:c,close(){c(null),clearInterval(d),i.close()}}}({micTrack:this._micTrack,onScoreUpdated:this._onMicAnalyserScoreUpdated.bind(this)})}stopOrResumeAudio(e,t){gf.info("stopOrResumeAudio() [enabled:%s]",t),this._micPaused=!t,this._pauseResumeMic()}_handleStopOrResumeVideo({enable:e,track:t}){e?this._sendWebcam(t):this._webcamProducer&&!this._webcamProducer.closed&&this._webcamProducer.track===t&&(this._stopProducer(this._webcamProducer),this._webcamProducer=null,this._webcamTrack=null)}stopOrResumeVideo(e,t){if(gf.info("stopOrResumeVideo() [enable:%s]",t),this._webcamPaused=!t,this._pauseResumeWebcam(),["chrome","safari"].includes(vf))if(t){if(0===e.getVideoTracks().length){const r=this._webrtcProvider.getMediaConstraints().video;navigator.mediaDevices.getUserMedia({video:r}).then((r=>{const i=r.getVideoTracks()[0];e.addTrack(i),this._emitToPWA(ym,{streamId:e.id,tracks:[i],screenShare:!1}),this._handleStopOrResumeVideo({enable:t,track:i})}))}}else clearTimeout(this._stopCameraTimeout),this._stopCameraTimeout=setTimeout((()=>{e.getVideoTracks().forEach((r=>{!1===r.enabled&&(r.stop(),e.removeTrack(r),this._emitToPWA(_m,{stream:e,track:r}),this._handleStopOrResumeVideo({enable:t,track:r}))}))}),5e3)}supportsScreenShareAudio(){return!0}acceptNewStream({streamId:e,clientId:t}){gf.info("acceptNewStream()",{streamId:e,clientId:t}),this.rtcStatsReconnect();const r=this._getOrCreateClientState(t);e!==t?(r.hasAcceptedScreenStream=!0,r.hasEmittedScreenStream=!1):(r.hasAcceptedWebcamStream=!0,r.hasEmittedWebcamStream=!1),this._syncIncomingStreamsWithPWA(t)}updateStreamResolution(e,t,{width:r,height:i}){var n,s,o,a;gf.info("updateStreamResolution()",{streamId:e,width:r,height:i});const c=this._streamIdToVideoConsumerId.get(e),d=this._consumers.get(c);if(!d)return;let l=0;this._consumers.forEach((e=>{var t,r;e._closed||e._paused||"webcam"!==(null===(t=e._appData)||void 0===t?void 0:t.source)&&"screenvideo"!==(null===(r=e._appData)||void 0===r?void 0:r.source)||l++}));let p=2;/T3/.test((null===(o=null===(s=null===(n=d._rtpParameters)||void 0===n?void 0:n.encodings)||void 0===s?void 0:s[0])||void 0===o?void 0:o.scalabilityMode)||"")&&(p=3);const u=Math.max(r,i);let h=u>=480?u>=960?2:1:0,m=p-1;u<100&&(m=Math.max(p-2,0)),l>8&&0===h&&(m=Math.max(p-2,0)),l<4&&u>300&&0===h&&(h=1),d.appData.spatialLayer===h&&d.appData.temporalLayer===m||(d.appData.spatialLayer=h,d.appData.temporalLayer=m,null===(a=this._vegaConnection)||void 0===a||a.message("setConsumersPreferredLayers",{consumerIds:[c],spatialLayer:h,temporalLayer:m}))}disconnectAll(){var e,t,r,i;this._reconnect=!1,this._reconnectTimeOut&&(clearTimeout(this._reconnectTimeOut),this._reconnectTimeOut=null),this._socketListenerDeregisterFunctions.forEach((e=>{e()})),this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null),this._socketListenerDeregisterFunctions=[],null===(e=this._vegaConnection)||void 0===e||e.removeAllListeners(),null===(t=this._vegaConnection)||void 0===t||t.close(),null===(r=this._sendTransport)||void 0===r||r.close(),null===(i=this._receiveTransport)||void 0===i||i.close(),this._micTrack=null,this._webcamTrack=null,this._screenVideoTrack=null,this._screenAudioTrack=null,this._streamIdToVideoConsumerId.clear(),this._mediasoupDevice=null}sendAudioMutedStats(e){Nh.sendEvent("audio_muted",{muted:e})}sendVideoMutedStats(e){Nh.sendEvent("video_muted",{muted:e})}sendStatsCustomEvent(e,t){Nh.sendEvent(e,t)}rtcStatsDisconnect(){Nh.server.close()}rtcStatsReconnect(){Nh.server.connected||Nh.server.connect()}_startMonitoringAudioTrack(e){e.addEventListener("ended",this._audioTrackOnEnded)}_stopMonitoringAudioTrack(e){e.removeEventListener("ended",this._audioTrackOnEnded)}_onMessage(e){return Xu(this,void 0,void 0,(function*(){const{method:t,data:r}=e;return Promise.resolve().then((()=>{switch(t){case"consumerReady":return this._onConsumerReady(r);case"consumerClosed":return this._onConsumerClosed(r);case"consumerPaused":return this._onConsumerPaused(r);case"consumerResumed":return this._onConsumerResumed(r);case"dataConsumerReady":return this._onDataConsumerReady(r);case"dataConsumerClosed":return this._onDataConsumerClosed(r);case"dominantSpeaker":return this._onDominantSpeaker(r);case"consumerScore":return this._onConsumerScore(r);case"producerScore":return this._onProducerScore(r);default:return void gf.info(`unknown message method "${t}"`)}})).catch((e=>{gf.error('"message" failed [error:%o]',e)}))}))}_onConsumerReady(e){return Xu(this,void 0,void 0,(function*(){gf.info("_onConsumerReady()",{id:e.id,producerId:e.producerId});const t=yield this._receiveTransport.consume(e);if(t.pause(),t.appData.localPaused=!0,t.appData.spatialLayer=2,this._consumers.set(t.id,t),this._qualityMonitor.addConsumer(t.appData.sourceClientId,t.id),t.observer.once("close",(()=>{this._consumers.delete(t.id),this._qualityMonitor.removeConsumer(t.appData.sourceClientId,t.id),this._consumerClosedCleanup(t)})),this._features.increaseIncomingMediaBufferOn&&t.rtpReceiver)try{t.rtpReceiver.jitterBufferTarget=yh,t.rtpReceiver.playoutDelayHint=.4}catch(e){gf.error("Error during setting jitter buffer target:",e)}const{sourceClientId:r,screenShare:i,streamId:n}=t.appData,s=this._getOrCreateClientState(r);i?(s.hasEmittedScreenStream=!1,s.screenShareStreamId=n):(s.hasEmittedWebcamStream=!1,s.camStreamId=n);let o=i?s.screenStream:s.webcamStream;o&&o.inboundId===n||(o=new MediaStream,o.inboundId=n,i?s.screenStream=o:s.webcamStream=o),"video"===t.kind&&this._streamIdToVideoConsumerId.set(o.id,t.id),o.addTrack(t.track),this._syncIncomingStreamsWithPWA(r)}))}_onConsumerClosed({consumerId:e,reason:t}){var r;return Xu(this,void 0,void 0,(function*(){gf.info("_onConsumerClosed()",{consumerId:e,reason:t}),null===(r=this._consumers.get(e))||void 0===r||r.close()}))}_onConsumerPaused({consumerId:e}){gf.info("_onConsumerPaused()",{consumerId:e});const t=this._consumers.get(e);t&&(t.appData.remotePaused=!0,t.pause())}_onConsumerResumed({consumerId:e}){gf.info("_onConsumerResumed()",{consumerId:e});const t=this._consumers.get(e);t&&(t.appData.remotePaused=!1,t.appData.localPaused||t.resume())}_onConsumerScore({consumerId:e,kind:t,score:r}){gf.info("_onConsumerScore()",{consumerId:e,kind:t,score:r});const{appData:{sourceClientId:i}}=this._consumers.get(e)||{appData:{}};i&&this._qualityMonitor.addConsumerScore(i,e,t,r)}_onProducerScore({producerId:e,kind:t,score:r}){gf.info("_onProducerScore()",{producerId:e,kind:t,score:r}),[this._micProducer,this._webcamProducer,this._screenVideoProducer,this._screenAudioProducer].forEach((i=>{(null==i?void 0:i.id)===e&&this._qualityMonitor.addProducerScore(this._selfId,e,t,r)}))}_onDataConsumerReady(e){return Xu(this,void 0,void 0,(function*(){gf.info("_onDataConsumerReady()",{id:e.id,producerId:e.producerId});const t=yield this._receiveTransport.consumeData(e);this._dataConsumers.set(t.id,t),t.once("close",(()=>{this._dataConsumers.delete(t.id)}));const{clientId:r}=t.appData;t.on("message",(e=>{var r;if(!this._micAnalyserDebugger)return;if("string"!=typeof e)return;const{score:i}=JSON.parse(e);i&&(null===(r=this._micAnalyserDebugger)||void 0===r||r.onConsumerScore(t.appData.clientId,i))})),this._syncIncomingStreamsWithPWA(r)}))}_onDataConsumerClosed({dataConsumerId:e,reason:t}){return Xu(this,void 0,void 0,(function*(){gf.info("_onDataConsumerClosed()",{dataConsumerId:e,reason:t});const r=this._dataConsumers.get(e);null==r||r.close()}))}_onDominantSpeaker({consumerId:e}){const t=this._consumers.get(e);if(!t)return;const{sourceClientId:r}=t.appData;this._emitToPWA(Xm,{clientId:r})}_consumerClosedCleanup(e){const{sourceClientId:t,screenShare:r}=e.appData,i=this._getOrCreateClientState(t),n=r?i.screenStream:i.webcamStream;n&&(n.removeTrack(e.track),0===n.getTracks().length&&(this._streamIdToVideoConsumerId.delete(n.id),r?(i.screenStream=null,i.hasEmittedScreenStream=!1,i.screenShareStreamId=null):(i.hasEmittedWebcamStream=!1,i.camStreamId=null)))}_syncIncomingStreamsWithPWA(e){var t,r;const i=this._getOrCreateClientState(e),{webcamStream:n,screenStream:s,hasEmittedWebcamStream:o,hasEmittedScreenStream:a,hasAcceptedWebcamStream:c,hasAcceptedScreenStream:d,screenShareStreamId:l,camStreamId:p}=i,u=[],h=[];this._consumers.forEach((t=>{if(t.appData.sourceClientId!==e)return;const r=t.appData.screenShare?d:c;!t.appData.localPaused!==r&&(r?(t.appData.remotePaused||t.resume(),t.appData.localPaused=!1,h.push(t.id)):(t.pause(),t.appData.localPaused=!0,u.push(t.id)))})),u.length>0&&(null===(t=this._vegaConnection)||void 0===t||t.message("pauseConsumers",{consumerIds:u})),h.length>0&&(null===(r=this._vegaConnection)||void 0===r||r.message("resumeConsumers",{consumerIds:h})),n&&!o&&c&&(this._emitToPWA(gm,{clientId:e,stream:n,streamId:p,streamType:"webcam"}),i.hasEmittedWebcamStream=!0),s&&!a&&d&&(this._emitToPWA(gm,{clientId:e,stream:s,streamId:l,streamType:"screenshare"}),i.hasEmittedScreenStream=!0)}_getOrCreateClientState(e){let t=this._clientStates.get(e);return t||(t={hasAcceptedWebcamStream:!1,hasAcceptedScreenStream:!1,hasEmittedWebcamStream:!1,hasEmittedScreenStream:!1,webcamStream:null,screenStream:null,screenShareStreamId:null,camStreamId:null},this._clientStates.set(e,t)),t}_emitToPWA(e,t){this._emitter.emit(e,t)}_emitToSignal(e,t,r){this._serverSocket.emit(e,t,r)}shouldAcceptStreamsFromBothSides(){return!0}setMicAnalyserDebugger(e){this._micAnalyserDebugger=e}setMicAnalyserParams(e){var t;null===(t=this._micAnalyser)||void 0===t||t.setParams(e)}hasClient(e){return this._clientStates.has(e)}}class Sf{constructor({emitter:e,serverSocket:t,webrtcProvider:r,features:i}){this.emitter=e,this.currentManager=null,t.on(om,(({room:n,selfId:s,error:o,eventClaim:a})=>{if(o)return;const c={selfId:s,room:n,emitter:e,serverSocket:t,webrtcProvider:r,features:i,eventClaim:a,deviceHandlerFactory:null==i?void 0:i.deviceHandlerFactory},d=!!n.sfuServer;if(this.currentManager){if(this.currentManager.isInitializedWith({selfId:s,roomName:n.name,isSfu:d}))return void(this.currentManager.setEventClaim&&a&&this.currentManager.setEventClaim(a));this.currentManager.disconnectAll(),e.emit(bm)}let l=null;l=d?new wf(c):new af(c),l.setupSocketListeners(),e.emit(vm,{rtcManager:l}),this.currentManager=l,t.setRtcManager(l)}))}stopRtcManager(){this.currentManager&&(this.currentManager.disconnectAll(),this.emitter.emit(bm))}}var Cf;!function(e){e.rtc_manager_created="rtc_manager_created",e.stream_added="stream_added"}(Cf||(Cf={}));class Rf extends Error{constructor(e){super(e.message),this.name="AssertionError",this.code="ERR_ASSERTION",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,Error.captureStackTrace&&Error.captureStackTrace(this,e.stackStartFn)}}function Tf(e){if(e.message instanceof Error)throw e.message;throw new Rf(e)}function Pf(...e){!function(e,t,r,i){if(!r){let n=!1;if(0===t)n=!0,i="No value argument passed to `assert.ok()`";else if(i instanceof Error)throw i;const s=new Rf({actual:r,expected:!0,message:i,operator:"==",stackStartFn:e});throw s.generatedMessage=n,s}}(Pf,e.length,...e)}const kf={fail:e=>{Tf({actual:"fail()",expected:"fail() should not be called",message:e,operator:"fail",stackStartFn:kf.fail})},ok:Pf,notEqual:function e(t,r,i){if(arguments.length<2)throw new Error("'actual' and 'expected' arguments are required");t==r&&Tf({actual:t,expected:r,message:i,operator:"!=",stackStartFn:e})}};kf.ok=Pf;const Of=new Yu;class Ef extends ur{constructor(e){super(),this._socket=e,this._clients={},this._signalDisconnectTime=void 0,this.rtcManager=void 0,this.metrics={roomJoinedLate:0,pendingClientCanceled:0,evaluationFailed:0,roomJoined:0},e.on("disconnect",(()=>{this._signalDisconnectTime=Date.now()})),e.on(om,(e=>this._onRoomJoined(e))),e.on(im,(e=>this._onNewClient(e))),e.on(tm,(e=>this._onClientLeft(e))),e.on(hm,(e=>this._onPendingClientLeft(e))),e.on(em,(e=>this._onAudioEnabled(e))),e.on(am,(e=>this._onVideoEnabled(e))),e.on(nm,(e=>this._onScreenshareChanged(e,!0))),e.on(sm,(e=>this._onScreenshareChanged(e,!1)))}_onRoomJoined(e){var t,r;return Xu(this,void 0,void 0,(function*(){if(!(null===(t=e.room)||void 0===t?void 0:t.clients))return void this.emit(om,e);if(!e.selfId)return void this.emit(om,e);const i=null===(r=e.room.clients.find((t=>e.selfId===t.id)))||void 0===r?void 0:r.deviceId;if(!i)return void this.emit(om,e);if(!this._signalDisconnectTime)return this._resetClientState(e),e.room.clients=e.room.clients.filter((e=>!(e.deviceId===i&&e.isPendingToLeave))),void this.emit(om,e);const n=.8*e.disconnectTimeout;if(Date.now()-this._signalDisconnectTime>n)return this._resetClientState(e),this.emit(om,e),void this.metrics.roomJoinedLate++;e.room.clients=e.room.clients.filter((e=>!(e.deviceId===i&&e.isPendingToLeave)));const s=yield nh();e.room.clients.forEach((t=>{var r;try{if(t.id===e.selfId)return;if(!this._clients[t.id])return void this._addClientToState(t);if(!(null===(r=this.rtcManager)||void 0===r?void 0:r.hasClient(t.id)))return;if(this._hasClientStateChanged({clientId:t.id,webcam:t.isVideoEnabled,mic:t.isAudioEnabled,screenShare:t.streams.length>1}))return;if(this._wasClientSendingMedia(t.id)&&!this._isClientMediaActive(s,t.id))return;t.mergeWithOldClientState=!0}catch(e){Of.error("Failed to evaluate if we should merge client state %o",e),this.metrics.evaluationFailed++}})),e.room.clients.forEach((e=>{e.isPendingToLeave&&this._onPendingClientLeft({clientId:e.id})})),this.metrics.roomJoined++,this.emit(om,e)}))}_onClientLeft(e){var t;const{clientId:r}=e,i=this._clients[r];i&&(clearTimeout(i.timeout),delete this._clients[r]),null===(t=this.rtcManager)||void 0===t||t.disconnect(r,null,e.eventClaim),this.emit(tm,e)}_onPendingClientLeft(e){const{clientId:t}=e,r=this._clients[t];r?r.isPendingToLeave||(r.isPendingToLeave=!0,this._wasClientSendingMedia(t)&&(r.checkActiveMediaAttempts=0,this._abortIfNotActive(e))):Of.warn(`client ${t} not found`)}_onNewClient(e){const{client:{id:t,deviceId:r}}=e,i=this._clients[t];if(i&&i.isPendingToLeave)return clearTimeout(i.timeoutHandler),i.isPendingToLeave=!1,void this.metrics.pendingClientCanceled++;this._getPendingClientsByDeviceId(r).forEach((e=>{clearTimeout(e.timeoutHandler),e.isPendingToLeave=void 0,this.emit(tm,{clientId:e.clientId})})),this._addClientToState(e.client),this.emit(im,e)}_abortIfNotActive(e){return Xu(this,void 0,void 0,(function*(){const{clientId:t}=e;let r=this._clients[t];if(!(null==r?void 0:r.isPendingToLeave))return;if(r.checkActiveMediaAttempts++,r.checkActiveMediaAttempts>3)return;(yield this._checkIsActive(t))?r.timeoutHandler=setTimeout((()=>this._abortIfNotActive(e)),500):(r=this._clients[t],(null==r?void 0:r.isPendingToLeave)&&(clearTimeout(r.timeoutHandler),delete this._clients[t],this.emit(tm,e)))}))}_checkIsActive(e){return Xu(this,void 0,void 0,(function*(){const t=yield nh();return this._isClientMediaActive(t,e)}))}_isClientMediaActive(e,t){const r=null==e?void 0:e[t];let i=!1;return r&&Object.entries(r.tracks).forEach((([e,t])=>{"probator"!==e&&Object.values(t.ssrcs).forEach((e=>{(e.bitrate||0)>0&&(i=!0)}))})),i}_onAudioEnabled(e){const{clientId:t,isAudioEnabled:r}=e;this._clients[t]=Object.assign(Object.assign({},this._clients[t]||{}),{isAudioEnabled:r})}_onVideoEnabled(e){const{clientId:t,isVideoEnabled:r}=e;this._clients[t]=Object.assign(Object.assign({},this._clients[t]||{}),{isVideoEnabled:r})}_onScreenshareChanged(e,t){const{clientId:r}=e;this._clients[r]=Object.assign(Object.assign({},this._clients[r]||{}),{isScreenshareEnabled:t})}_hasClientStateChanged({clientId:e,webcam:t,mic:r,screenShare:i}){const n=this._clients[e];if(!n)throw new Error(`Client ${e} not found in ReconnectManager state`);return t!==n.isVideoEnabled||(r!==n.isAudioEnabled||i!==n.isScreenshareEnabled)}_addClientToState(e){this._clients[e.id]=Object.assign(Object.assign({},this._clients[e.id]||{}),{isAudioEnabled:e.isAudioEnabled,isVideoEnabled:e.isVideoEnabled,isScreenshareEnabled:e.streams.length>1,deviceId:e.deviceId,isPendingToLeave:e.isPendingToLeave,clientId:e.id})}_wasClientSendingMedia(e){const t=this._clients[e];if(!t)throw new Error(`Client ${e} not found in ReconnectManager state`);return t.isAudioEnabled||t.isVideoEnabled||t.isScreenshareEnabled}_getPendingClientsByDeviceId(e){return Object.values(this._clients).filter((t=>t.deviceId===e&&t.isPendingToLeave))}_resetClientState(e){this._clients={},e.room.clients.forEach((t=>{t.id!==e.selfId&&this._addClientToState(t)}))}}var Df;const If=null!==(Df=al.default)&&void 0!==Df?Df:al;class xf{constructor(e,t,r=!1){this._wasConnectedUsingWebsocket=!1,this._reconnectManager=null,this._socket=Qu(e,Object.assign({path:"/protocol/socket.io/v4",randomizationFactor:.5,reconnectionDelay:250,reconnectionDelayMax:5e3,timeout:5e3,transports:["websocket"],withCredentials:!0},t)),this._socket.io.on("reconnect",(()=>{this._socket.sendBuffer=[]})),this._socket.io.on("reconnect_attempt",(()=>{this._wasConnectedUsingWebsocket?(this._socket.io.opts.transports=["websocket"],"safari"!==If.browserDetails.browser&&delete this._wasConnectedUsingWebsocket):this._socket.io.opts.transports=["websocket","polling"]})),r&&(this._reconnectManager=new Ef(this._socket)),this._socket.on("connect",(()=>{"websocket"===this.getTransport()&&(this._wasConnectedUsingWebsocket=!0,this.noopKeepaliveInterval||(this.noopKeepaliveInterval=setInterval((()=>{try{this._socket.connected&&this._socket.io.engine.sendPacket("noop")}catch(e){}}),2e3)))})),this._socket.on("disconnect",(()=>{this.noopKeepaliveInterval&&(clearInterval(this.noopKeepaliveInterval),this.noopKeepaliveInterval=null)}))}setRtcManager(e){this._reconnectManager&&(this._reconnectManager.rtcManager=e)}connect(){this.isConnected()||this.isConnecting()||this._socket.open()}disconnect(){this._socket.disconnect()}disconnectOnConnect(){this._socket.once("connect",(()=>{this._socket.disconnect()}))}emit(e,...t){this._socket.emit.apply(this._socket,arguments)}emitIfConnected(e,t){this.isConnected()&&this.emit(e,t)}getTransport(){return this._socket&&this._socket.io&&this._socket.io.engine&&this._socket.io.engine.transport&&this._socket.io.engine.transport.name}getManager(){return this._socket.io}isConnecting(){return this._socket&&this._socket.connecting}isConnected(){return this._socket&&this._socket.connected}on(e,t){const r=[om,tm,im];return this._reconnectManager&&r.includes(e)?this._interceptEvent(e,t):(this._socket.on(e,t),()=>{this._socket.off(e,t)})}once(e,t){this._socket.once(e,t)}off(e,t){this._socket.off(e,t)}_interceptEvent(e,t){return this._reconnectManager&&this._reconnectManager.on(e,t),()=>{this._reconnectManager&&this._reconnectManager.removeListener(e,t)}}getGlitchFreeMetrics(){var e;return null===(e=this._reconnectManager)||void 0===e?void 0:e.metrics}}const Mf=[{pattern:/^(?:([^.]+)[.])?(server:?\d*)/,separator:"."},{pattern:/^(?:([^.]+)[.])?(localhost:?\d*)/,separator:"."},{pattern:/^(?:([^.]+)[.])?((\d+[.]){3}:?\d*)$/,separator:"."},{pattern:/^(?:([^.]+)-)?(ip-[^.]*[.](?:hereby[.]dev|rfc1918[.]disappear[.]at)(?::\d+|))$/,separator:"-"},{pattern:/^(?:([^.]+)[.])?((:?[^.]+[.]){1,}[^.]+)$/,separator:"."}];function jf({host:e="whereby.com",protocol:t="https:"}={}){let r="",i=e,n=".";for(const{separator:t,pattern:s}of Mf){const o=s.exec(e);if(o){r=o[1]||"",i=o[2],n=t;break}}const s=r?`${r}${n}${i}`:i;return{domain:i,domainWithSeparator:`${n}${i}`,organizationDomain:s,organization:`${t}//${s}`,service:`${t}//${i}`,subdomain:r}}jf(window&&window.location);var Lf={exports:{}};Lf.exports=function(e){return(e instanceof Buffer?e:Buffer.from(e.toString(),"binary")).toString("base64")};var Af=o(Lf.exports);function Nf(e,t){return function(){return e.apply(t,arguments)}}const{toString:Bf}=Object.prototype,{getPrototypeOf:Ff}=Object,zf=(e=>t=>{const r=Bf.call(t);return e[r]||(e[r]=r.slice(8,-1).toLowerCase())})(Object.create(null)),Uf=e=>(e=e.toLowerCase(),t=>zf(t)===e),$f=e=>t=>typeof t===e,{isArray:Vf}=Array,Gf=$f("undefined");const qf=Uf("ArrayBuffer");const Hf=$f("string"),Wf=$f("function"),Kf=$f("number"),Jf=e=>null!==e&&"object"==typeof e,Qf=e=>{if("object"!==zf(e))return!1;const t=Ff(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)},Zf=Uf("Date"),Yf=Uf("File"),Xf=Uf("Blob"),eg=Uf("FileList"),tg=Uf("URLSearchParams");function rg(e,t,{allOwnKeys:r=!1}={}){if(null==e)return;let i,n;if("object"!=typeof e&&(e=[e]),Vf(e))for(i=0,n=e.length;i<n;i++)t.call(null,e[i],i,e);else{const n=r?Object.getOwnPropertyNames(e):Object.keys(e),s=n.length;let o;for(i=0;i<s;i++)o=n[i],t.call(null,e[o],o,e)}}function ig(e,t){t=t.toLowerCase();const r=Object.keys(e);let i,n=r.length;for(;n-- >0;)if(i=r[n],t===i.toLowerCase())return i;return null}const ng="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,sg=e=>!Gf(e)&&e!==ng;const og=(ag="undefined"!=typeof Uint8Array&&Ff(Uint8Array),e=>ag&&e instanceof ag);var ag;const cg=Uf("HTMLFormElement"),dg=(({hasOwnProperty:e})=>(t,r)=>e.call(t,r))(Object.prototype),lg=Uf("RegExp"),pg=(e,t)=>{const r=Object.getOwnPropertyDescriptors(e),i={};rg(r,((r,n)=>{let s;!1!==(s=t(r,n,e))&&(i[n]=s||r)})),Object.defineProperties(e,i)},ug="abcdefghijklmnopqrstuvwxyz",hg="0123456789",mg={DIGIT:hg,ALPHA:ug,ALPHA_DIGIT:ug+ug.toUpperCase()+hg};const fg=Uf("AsyncFunction");var gg={isArray:Vf,isArrayBuffer:qf,isBuffer:function(e){return null!==e&&!Gf(e)&&null!==e.constructor&&!Gf(e.constructor)&&Wf(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||Wf(e.append)&&("formdata"===(t=zf(e))||"object"===t&&Wf(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&qf(e.buffer),t},isString:Hf,isNumber:Kf,isBoolean:e=>!0===e||!1===e,isObject:Jf,isPlainObject:Qf,isUndefined:Gf,isDate:Zf,isFile:Yf,isBlob:Xf,isRegExp:lg,isFunction:Wf,isStream:e=>Jf(e)&&Wf(e.pipe),isURLSearchParams:tg,isTypedArray:og,isFileList:eg,forEach:rg,merge:function e(){const{caseless:t}=sg(this)&&this||{},r={},i=(i,n)=>{const s=t&&ig(r,n)||n;Qf(r[s])&&Qf(i)?r[s]=e(r[s],i):Qf(i)?r[s]=e({},i):Vf(i)?r[s]=i.slice():r[s]=i};for(let e=0,t=arguments.length;e<t;e++)arguments[e]&&rg(arguments[e],i);return r},extend:(e,t,r,{allOwnKeys:i}={})=>(rg(t,((t,i)=>{r&&Wf(t)?e[i]=Nf(t,r):e[i]=t}),{allOwnKeys:i}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,r,i)=>{e.prototype=Object.create(t.prototype,i),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},toFlatObject:(e,t,r,i)=>{let n,s,o;const a={};if(t=t||{},null==e)return t;do{for(n=Object.getOwnPropertyNames(e),s=n.length;s-- >0;)o=n[s],i&&!i(o,e,t)||a[o]||(t[o]=e[o],a[o]=!0);e=!1!==r&&Ff(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:zf,kindOfTest:Uf,endsWith:(e,t,r)=>{e=String(e),(void 0===r||r>e.length)&&(r=e.length),r-=t.length;const i=e.indexOf(t,r);return-1!==i&&i===r},toArray:e=>{if(!e)return null;if(Vf(e))return e;let t=e.length;if(!Kf(t))return null;const r=new Array(t);for(;t-- >0;)r[t]=e[t];return r},forEachEntry:(e,t)=>{const r=(e&&e[Symbol.iterator]).call(e);let i;for(;(i=r.next())&&!i.done;){const r=i.value;t.call(e,r[0],r[1])}},matchAll:(e,t)=>{let r;const i=[];for(;null!==(r=e.exec(t));)i.push(r);return i},isHTMLForm:cg,hasOwnProperty:dg,hasOwnProp:dg,reduceDescriptors:pg,freezeMethods:e=>{pg(e,((t,r)=>{if(Wf(e)&&-1!==["arguments","caller","callee"].indexOf(r))return!1;const i=e[r];Wf(i)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")}))}))},toObjectSet:(e,t)=>{const r={},i=e=>{e.forEach((e=>{r[e]=!0}))};return Vf(e)?i(e):i(String(e).split(t)),r},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r})),noop:()=>{},toFiniteNumber:(e,t)=>(e=+e,Number.isFinite(e)?e:t),findKey:ig,global:ng,isContextDefined:sg,ALPHABET:mg,generateString:(e=16,t=mg.ALPHA_DIGIT)=>{let r="";const{length:i}=t;for(;e--;)r+=t[Math.random()*i|0];return r},isSpecCompliantForm:function(e){return!!(e&&Wf(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:e=>{const t=new Array(10),r=(e,i)=>{if(Jf(e)){if(t.indexOf(e)>=0)return;if(!("toJSON"in e)){t[i]=e;const n=Vf(e)?[]:{};return rg(e,((e,t)=>{const s=r(e,i+1);!Gf(s)&&(n[t]=s)})),t[i]=void 0,n}}return e};return r(e,0)},isAsyncFn:fg,isThenable:e=>e&&(Jf(e)||Wf(e))&&Wf(e.then)&&Wf(e.catch)};function vg(e,t,r,i,n){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),i&&(this.request=i),n&&(this.response=n)}gg.inherits(vg,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:gg.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const bg=vg.prototype,yg={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((e=>{yg[e]={value:e}})),Object.defineProperties(vg,yg),Object.defineProperty(bg,"isAxiosError",{value:!0}),vg.from=(e,t,r,i,n,s)=>{const o=Object.create(bg);return gg.toFlatObject(e,o,(function(e){return e!==Error.prototype}),(e=>"isAxiosError"!==e)),vg.call(o,e.message,t,r,i,n),o.cause=e,o.name=e.name,s&&Object.assign(o,s),o};function _g(e){return gg.isPlainObject(e)||gg.isArray(e)}function wg(e){return gg.endsWith(e,"[]")?e.slice(0,-2):e}function Sg(e,t,r){return e?e.concat(t).map((function(e,t){return e=wg(e),!r&&t?"["+e+"]":e})).join(r?".":""):t}const Cg=gg.toFlatObject(gg,{},null,(function(e){return/^is[A-Z]/.test(e)}));function Rg(e,t,r){if(!gg.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const i=(r=gg.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!gg.isUndefined(t[e])}))).metaTokens,n=r.visitor||d,s=r.dots,o=r.indexes,a=(r.Blob||"undefined"!=typeof Blob&&Blob)&&gg.isSpecCompliantForm(t);if(!gg.isFunction(n))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if(gg.isDate(e))return e.toISOString();if(!a&&gg.isBlob(e))throw new vg("Blob is not supported. Use a Buffer instead.");return gg.isArrayBuffer(e)||gg.isTypedArray(e)?a&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function d(e,r,n){let a=e;if(e&&!n&&"object"==typeof e)if(gg.endsWith(r,"{}"))r=i?r:r.slice(0,-2),e=JSON.stringify(e);else if(gg.isArray(e)&&function(e){return gg.isArray(e)&&!e.some(_g)}(e)||(gg.isFileList(e)||gg.endsWith(r,"[]"))&&(a=gg.toArray(e)))return r=wg(r),a.forEach((function(e,i){!gg.isUndefined(e)&&null!==e&&t.append(!0===o?Sg([r],i,s):null===o?r:r+"[]",c(e))})),!1;return!!_g(e)||(t.append(Sg(n,r,s),c(e)),!1)}const l=[],p=Object.assign(Cg,{defaultVisitor:d,convertValue:c,isVisitable:_g});if(!gg.isObject(e))throw new TypeError("data must be an object");return function e(r,i){if(!gg.isUndefined(r)){if(-1!==l.indexOf(r))throw Error("Circular reference detected in "+i.join("."));l.push(r),gg.forEach(r,(function(r,s){!0===(!(gg.isUndefined(r)||null===r)&&n.call(t,r,gg.isString(s)?s.trim():s,i,p))&&e(r,i?i.concat(s):[s])})),l.pop()}}(e),t}function Tg(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function Pg(e,t){this._pairs=[],e&&Rg(e,this,t)}const kg=Pg.prototype;function Og(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Eg(e,t,r){if(!t)return e;const i=r&&r.encode||Og,n=r&&r.serialize;let s;if(s=n?n(t,r):gg.isURLSearchParams(t)?t.toString():new Pg(t,r).toString(i),s){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+s}return e}kg.append=function(e,t){this._pairs.push([e,t])},kg.toString=function(e){const t=e?function(t){return e.call(this,t,Tg)}:Tg;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};class Dg{constructor(){this.handlers=[]}use(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){gg.forEach(this.handlers,(function(t){null!==t&&e(t)}))}}var Ig={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},xg={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:Pg,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]};const Mg="undefined"!=typeof window&&"undefined"!=typeof document,jg=(Lg="undefined"!=typeof navigator&&navigator.product,Mg&&["ReactNative","NativeScript","NS"].indexOf(Lg)<0);var Lg;const Ag="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts;var Ng={...Object.freeze({__proto__:null,hasBrowserEnv:Mg,hasStandardBrowserEnv:jg,hasStandardBrowserWebWorkerEnv:Ag}),...xg};function Bg(e){function t(e,r,i,n){let s=e[n++];if("__proto__"===s)return!0;const o=Number.isFinite(+s),a=n>=e.length;if(s=!s&&gg.isArray(i)?i.length:s,a)return gg.hasOwnProp(i,s)?i[s]=[i[s],r]:i[s]=r,!o;i[s]&&gg.isObject(i[s])||(i[s]=[]);return t(e,r,i[s],n)&&gg.isArray(i[s])&&(i[s]=function(e){const t={},r=Object.keys(e);let i;const n=r.length;let s;for(i=0;i<n;i++)s=r[i],t[s]=e[s];return t}(i[s])),!o}if(gg.isFormData(e)&&gg.isFunction(e.entries)){const r={};return gg.forEachEntry(e,((e,i)=>{t(function(e){return gg.matchAll(/\w+|\[(\w*)]/g,e).map((e=>"[]"===e[0]?"":e[1]||e[0]))}(e),i,r,0)})),r}return null}const Fg={transitional:Ig,adapter:["xhr","http"],transformRequest:[function(e,t){const r=t.getContentType()||"",i=r.indexOf("application/json")>-1,n=gg.isObject(e);n&&gg.isHTMLForm(e)&&(e=new FormData(e));if(gg.isFormData(e))return i?JSON.stringify(Bg(e)):e;if(gg.isArrayBuffer(e)||gg.isBuffer(e)||gg.isStream(e)||gg.isFile(e)||gg.isBlob(e))return e;if(gg.isArrayBufferView(e))return e.buffer;if(gg.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let s;if(n){if(r.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return Rg(e,new Ng.classes.URLSearchParams,Object.assign({visitor:function(e,t,r,i){return Ng.isNode&&gg.isBuffer(e)?(this.append(t,e.toString("base64")),!1):i.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((s=gg.isFileList(e))||r.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return Rg(s?{"files[]":e}:e,t&&new t,this.formSerializer)}}return n||i?(t.setContentType("application/json",!1),function(e,t,r){if(gg.isString(e))try{return(t||JSON.parse)(e),gg.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||Fg.transitional,r=t&&t.forcedJSONParsing,i="json"===this.responseType;if(e&&gg.isString(e)&&(r&&!this.responseType||i)){const r=!(t&&t.silentJSONParsing)&&i;try{return JSON.parse(e)}catch(e){if(r){if("SyntaxError"===e.name)throw vg.from(e,vg.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Ng.classes.FormData,Blob:Ng.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};gg.forEach(["delete","get","head","post","put","patch"],(e=>{Fg.headers[e]={}}));var zg=Fg;const Ug=gg.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]);const $g=Symbol("internals");function Vg(e){return e&&String(e).trim().toLowerCase()}function Gg(e){return!1===e||null==e?e:gg.isArray(e)?e.map(Gg):String(e)}function qg(e,t,r,i,n){return gg.isFunction(i)?i.call(this,t,r):(n&&(t=r),gg.isString(t)?gg.isString(i)?-1!==t.indexOf(i):gg.isRegExp(i)?i.test(t):void 0:void 0)}class Hg{constructor(e){e&&this.set(e)}set(e,t,r){const i=this;function n(e,t,r){const n=Vg(t);if(!n)throw new Error("header name must be a non-empty string");const s=gg.findKey(i,n);(!s||void 0===i[s]||!0===r||void 0===r&&!1!==i[s])&&(i[s||t]=Gg(e))}const s=(e,t)=>gg.forEach(e,((e,r)=>n(e,r,t)));return gg.isPlainObject(e)||e instanceof this.constructor?s(e,t):gg.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim())?s((e=>{const t={};let r,i,n;return e&&e.split("\n").forEach((function(e){n=e.indexOf(":"),r=e.substring(0,n).trim().toLowerCase(),i=e.substring(n+1).trim(),!r||t[r]&&Ug[r]||("set-cookie"===r?t[r]?t[r].push(i):t[r]=[i]:t[r]=t[r]?t[r]+", "+i:i)})),t})(e),t):null!=e&&n(t,e,r),this}get(e,t){if(e=Vg(e)){const r=gg.findKey(this,e);if(r){const e=this[r];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let i;for(;i=r.exec(e);)t[i[1]]=i[2];return t}(e);if(gg.isFunction(t))return t.call(this,e,r);if(gg.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=Vg(e)){const r=gg.findKey(this,e);return!(!r||void 0===this[r]||t&&!qg(0,this[r],r,t))}return!1}delete(e,t){const r=this;let i=!1;function n(e){if(e=Vg(e)){const n=gg.findKey(r,e);!n||t&&!qg(0,r[n],n,t)||(delete r[n],i=!0)}}return gg.isArray(e)?e.forEach(n):n(e),i}clear(e){const t=Object.keys(this);let r=t.length,i=!1;for(;r--;){const n=t[r];e&&!qg(0,this[n],n,e,!0)||(delete this[n],i=!0)}return i}normalize(e){const t=this,r={};return gg.forEach(this,((i,n)=>{const s=gg.findKey(r,n);if(s)return t[s]=Gg(i),void delete t[n];const o=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((e,t,r)=>t.toUpperCase()+r))}(n):String(n).trim();o!==n&&delete t[n],t[o]=Gg(i),r[o]=!0})),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return gg.forEach(this,((r,i)=>{null!=r&&!1!==r&&(t[i]=e&&gg.isArray(r)?r.join(", "):r)})),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((([e,t])=>e+": "+t)).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const r=new this(e);return t.forEach((e=>r.set(e))),r}static accessor(e){const t=(this[$g]=this[$g]={accessors:{}}).accessors,r=this.prototype;function i(e){const i=Vg(e);t[i]||(!function(e,t){const r=gg.toCamelCase(" "+t);["get","set","has"].forEach((i=>{Object.defineProperty(e,i+r,{value:function(e,r,n){return this[i].call(this,t,e,r,n)},configurable:!0})}))}(r,e),t[i]=!0)}return gg.isArray(e)?e.forEach(i):i(e),this}}Hg.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),gg.reduceDescriptors(Hg.prototype,(({value:e},t)=>{let r=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[r]=e}}})),gg.freezeMethods(Hg);var Wg=Hg;function Kg(e,t){const r=this||zg,i=t||r,n=Wg.from(i.headers);let s=i.data;return gg.forEach(e,(function(e){s=e.call(r,s,n.normalize(),t?t.status:void 0)})),n.normalize(),s}function Jg(e){return!(!e||!e.__CANCEL__)}function Qg(e,t,r){vg.call(this,null==e?"canceled":e,vg.ERR_CANCELED,t,r),this.name="CanceledError"}gg.inherits(Qg,vg,{__CANCEL__:!0});var Zg=Ng.hasStandardBrowserEnv?{write(e,t,r,i,n,s){const o=[e+"="+encodeURIComponent(t)];gg.isNumber(r)&&o.push("expires="+new Date(r).toGMTString()),gg.isString(i)&&o.push("path="+i),gg.isString(n)&&o.push("domain="+n),!0===s&&o.push("secure"),document.cookie=o.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}};function Yg(e,t){return e&&!function(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}(t)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}var Xg=Ng.hasStandardBrowserEnv?function(){const e=/(msie|trident)/i.test(navigator.userAgent),t=document.createElement("a");let r;function i(r){let i=r;return e&&(t.setAttribute("href",i),i=t.href),t.setAttribute("href",i),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return r=i(window.location.href),function(e){const t=gg.isString(e)?i(e):e;return t.protocol===r.protocol&&t.host===r.host}}():function(){return!0};function ev(e,t){let r=0;const i=function(e,t){e=e||10;const r=new Array(e),i=new Array(e);let n,s=0,o=0;return t=void 0!==t?t:1e3,function(a){const c=Date.now(),d=i[o];n||(n=c),r[s]=a,i[s]=c;let l=o,p=0;for(;l!==s;)p+=r[l++],l%=e;if(s=(s+1)%e,s===o&&(o=(o+1)%e),c-n<t)return;const u=d&&c-d;return u?Math.round(1e3*p/u):void 0}}(50,250);return n=>{const s=n.loaded,o=n.lengthComputable?n.total:void 0,a=s-r,c=i(a);r=s;const d={loaded:s,total:o,progress:o?s/o:void 0,bytes:a,rate:c||void 0,estimated:c&&o&&s<=o?(o-s)/c:void 0,event:n};d[t?"download":"upload"]=!0,e(d)}}var tv="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise((function(t,r){let i=e.data;const n=Wg.from(e.headers).normalize();let s,o,{responseType:a,withXSRFToken:c}=e;function d(){e.cancelToken&&e.cancelToken.unsubscribe(s),e.signal&&e.signal.removeEventListener("abort",s)}if(gg.isFormData(i))if(Ng.hasStandardBrowserEnv||Ng.hasStandardBrowserWebWorkerEnv)n.setContentType(!1);else if(!1!==(o=n.getContentType())){const[e,...t]=o?o.split(";").map((e=>e.trim())).filter(Boolean):[];n.setContentType([e||"multipart/form-data",...t].join("; "))}let l=new XMLHttpRequest;if(e.auth){const t=e.auth.username||"",r=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";n.set("Authorization","Basic "+btoa(t+":"+r))}const p=Yg(e.baseURL,e.url);function u(){if(!l)return;const i=Wg.from("getAllResponseHeaders"in l&&l.getAllResponseHeaders());!function(e,t,r){const i=r.config.validateStatus;r.status&&i&&!i(r.status)?t(new vg("Request failed with status code "+r.status,[vg.ERR_BAD_REQUEST,vg.ERR_BAD_RESPONSE][Math.floor(r.status/100)-4],r.config,r.request,r)):e(r)}((function(e){t(e),d()}),(function(e){r(e),d()}),{data:a&&"text"!==a&&"json"!==a?l.response:l.responseText,status:l.status,statusText:l.statusText,headers:i,config:e,request:l}),l=null}if(l.open(e.method.toUpperCase(),Eg(p,e.params,e.paramsSerializer),!0),l.timeout=e.timeout,"onloadend"in l?l.onloadend=u:l.onreadystatechange=function(){l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))&&setTimeout(u)},l.onabort=function(){l&&(r(new vg("Request aborted",vg.ECONNABORTED,e,l)),l=null)},l.onerror=function(){r(new vg("Network Error",vg.ERR_NETWORK,e,l)),l=null},l.ontimeout=function(){let t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";const i=e.transitional||Ig;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),r(new vg(t,i.clarifyTimeoutError?vg.ETIMEDOUT:vg.ECONNABORTED,e,l)),l=null},Ng.hasStandardBrowserEnv&&(c&&gg.isFunction(c)&&(c=c(e)),c||!1!==c&&Xg(p))){const t=e.xsrfHeaderName&&e.xsrfCookieName&&Zg.read(e.xsrfCookieName);t&&n.set(e.xsrfHeaderName,t)}void 0===i&&n.setContentType(null),"setRequestHeader"in l&&gg.forEach(n.toJSON(),(function(e,t){l.setRequestHeader(t,e)})),gg.isUndefined(e.withCredentials)||(l.withCredentials=!!e.withCredentials),a&&"json"!==a&&(l.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&l.addEventListener("progress",ev(e.onDownloadProgress,!0)),"function"==typeof e.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",ev(e.onUploadProgress)),(e.cancelToken||e.signal)&&(s=t=>{l&&(r(!t||t.type?new Qg(null,e,l):t),l.abort(),l=null)},e.cancelToken&&e.cancelToken.subscribe(s),e.signal&&(e.signal.aborted?s():e.signal.addEventListener("abort",s)));const h=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(p);h&&-1===Ng.protocols.indexOf(h)?r(new vg("Unsupported protocol "+h+":",vg.ERR_BAD_REQUEST,e)):l.send(i||null)}))};const rv={http:null,xhr:tv};gg.forEach(rv,((e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}}));const iv=e=>`- ${e}`,nv=e=>gg.isFunction(e)||null===e||!1===e;var sv=e=>{e=gg.isArray(e)?e:[e];const{length:t}=e;let r,i;const n={};for(let s=0;s<t;s++){let t;if(r=e[s],i=r,!nv(r)&&(i=rv[(t=String(r)).toLowerCase()],void 0===i))throw new vg(`Unknown adapter '${t}'`);if(i)break;n[t||"#"+s]=i}if(!i){const e=Object.entries(n).map((([e,t])=>`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build")));throw new vg("There is no suitable adapter to dispatch the request "+(t?e.length>1?"since :\n"+e.map(iv).join("\n"):" "+iv(e[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return i};function ov(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Qg(null,e)}function av(e){ov(e),e.headers=Wg.from(e.headers),e.data=Kg.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1);return sv(e.adapter||zg.adapter)(e).then((function(t){return ov(e),t.data=Kg.call(e,e.transformResponse,t),t.headers=Wg.from(t.headers),t}),(function(t){return Jg(t)||(ov(e),t&&t.response&&(t.response.data=Kg.call(e,e.transformResponse,t.response),t.response.headers=Wg.from(t.response.headers))),Promise.reject(t)}))}const cv=e=>e instanceof Wg?e.toJSON():e;function dv(e,t){t=t||{};const r={};function i(e,t,r){return gg.isPlainObject(e)&&gg.isPlainObject(t)?gg.merge.call({caseless:r},e,t):gg.isPlainObject(t)?gg.merge({},t):gg.isArray(t)?t.slice():t}function n(e,t,r){return gg.isUndefined(t)?gg.isUndefined(e)?void 0:i(void 0,e,r):i(e,t,r)}function s(e,t){if(!gg.isUndefined(t))return i(void 0,t)}function o(e,t){return gg.isUndefined(t)?gg.isUndefined(e)?void 0:i(void 0,e):i(void 0,t)}function a(r,n,s){return s in t?i(r,n):s in e?i(void 0,r):void 0}const c={url:s,method:s,data:s,baseURL:o,transformRequest:o,transformResponse:o,paramsSerializer:o,timeout:o,timeoutMessage:o,withCredentials:o,withXSRFToken:o,adapter:o,responseType:o,xsrfCookieName:o,xsrfHeaderName:o,onUploadProgress:o,onDownloadProgress:o,decompress:o,maxContentLength:o,maxBodyLength:o,beforeRedirect:o,transport:o,httpAgent:o,httpsAgent:o,cancelToken:o,socketPath:o,responseEncoding:o,validateStatus:a,headers:(e,t)=>n(cv(e),cv(t),!0)};return gg.forEach(Object.keys(Object.assign({},e,t)),(function(i){const s=c[i]||n,o=s(e[i],t[i],i);gg.isUndefined(o)&&s!==a||(r[i]=o)})),r}const lv="1.6.7",pv={};["object","boolean","number","function","string","symbol"].forEach(((e,t)=>{pv[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}}));const uv={};pv.transitional=function(e,t,r){function i(e,t){return"[Axios v1.6.7] Transitional option '"+e+"'"+t+(r?". "+r:"")}return(r,n,s)=>{if(!1===e)throw new vg(i(n," has been removed"+(t?" in "+t:"")),vg.ERR_DEPRECATED);return t&&!uv[n]&&(uv[n]=!0,console.warn(i(n," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,n,s)}};var hv={assertOptions:function(e,t,r){if("object"!=typeof e)throw new vg("options must be an object",vg.ERR_BAD_OPTION_VALUE);const i=Object.keys(e);let n=i.length;for(;n-- >0;){const s=i[n],o=t[s];if(o){const t=e[s],r=void 0===t||o(t,s,e);if(!0!==r)throw new vg("option "+s+" must be "+r,vg.ERR_BAD_OPTION_VALUE)}else if(!0!==r)throw new vg("Unknown option "+s,vg.ERR_BAD_OPTION)}},validators:pv};const mv=hv.validators;class fv{constructor(e){this.defaults=e,this.interceptors={request:new Dg,response:new Dg}}async request(e,t){try{return await this._request(e,t)}catch(e){if(e instanceof Error){let t;Error.captureStackTrace?Error.captureStackTrace(t={}):t=new Error;const r=t.stack?t.stack.replace(/^.+\n/,""):"";e.stack?r&&!String(e.stack).endsWith(r.replace(/^.+\n.+\n/,""))&&(e.stack+="\n"+r):e.stack=r}throw e}}_request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=dv(this.defaults,t);const{transitional:r,paramsSerializer:i,headers:n}=t;void 0!==r&&hv.assertOptions(r,{silentJSONParsing:mv.transitional(mv.boolean),forcedJSONParsing:mv.transitional(mv.boolean),clarifyTimeoutError:mv.transitional(mv.boolean)},!1),null!=i&&(gg.isFunction(i)?t.paramsSerializer={serialize:i}:hv.assertOptions(i,{encode:mv.function,serialize:mv.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();let s=n&&gg.merge(n.common,n[t.method]);n&&gg.forEach(["delete","get","head","post","put","patch","common"],(e=>{delete n[e]})),t.headers=Wg.concat(s,n);const o=[];let a=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(a=a&&e.synchronous,o.unshift(e.fulfilled,e.rejected))}));const c=[];let d;this.interceptors.response.forEach((function(e){c.push(e.fulfilled,e.rejected)}));let l,p=0;if(!a){const e=[av.bind(this),void 0];for(e.unshift.apply(e,o),e.push.apply(e,c),l=e.length,d=Promise.resolve(t);p<l;)d=d.then(e[p++],e[p++]);return d}l=o.length;let u=t;for(p=0;p<l;){const e=o[p++],t=o[p++];try{u=e(u)}catch(e){t.call(this,e);break}}try{d=av.call(this,u)}catch(e){return Promise.reject(e)}for(p=0,l=c.length;p<l;)d=d.then(c[p++],c[p++]);return d}getUri(e){return Eg(Yg((e=dv(this.defaults,e)).baseURL,e.url),e.params,e.paramsSerializer)}}gg.forEach(["delete","get","head","options"],(function(e){fv.prototype[e]=function(t,r){return this.request(dv(r||{},{method:e,url:t,data:(r||{}).data}))}})),gg.forEach(["post","put","patch"],(function(e){function t(t){return function(r,i,n){return this.request(dv(n||{},{method:e,headers:t?{"Content-Type":"multipart/form-data"}:{},url:r,data:i}))}}fv.prototype[e]=t(),fv.prototype[e+"Form"]=t(!0)}));var gv=fv;class vv{constructor(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");let t;this.promise=new Promise((function(e){t=e}));const r=this;this.promise.then((e=>{if(!r._listeners)return;let t=r._listeners.length;for(;t-- >0;)r._listeners[t](e);r._listeners=null})),this.promise.then=e=>{let t;const i=new Promise((e=>{r.subscribe(e),t=e})).then(e);return i.cancel=function(){r.unsubscribe(t)},i},e((function(e,i,n){r.reason||(r.reason=new Qg(e,i,n),t(r.reason))}))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}static source(){let e;return{token:new vv((function(t){e=t})),cancel:e}}}var bv=vv;const yv={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(yv).forEach((([e,t])=>{yv[t]=e}));var _v=yv;const wv=function e(t){const r=new gv(t),i=Nf(gv.prototype.request,r);return gg.extend(i,gv.prototype,r,{allOwnKeys:!0}),gg.extend(i,r,null,{allOwnKeys:!0}),i.create=function(r){return e(dv(t,r))},i}(zg);function Sv(e,t){return kt(e,t)}function Cv(e,t){return r=>(i,n,s)=>e(n())?t(r)(i,n,s):(console.warn("Not authorized to perform this action"),!1)}wv.Axios=gv,wv.CanceledError=Qg,wv.CancelToken=bv,wv.isCancel=Jg,wv.VERSION=lv,wv.toFormData=Rg,wv.AxiosError=vg,wv.Cancel=wv.CanceledError,wv.all=function(e){return Promise.all(e)},wv.spread=function(e){return function(t){return e.apply(null,t)}},wv.isAxiosError=function(e){return gg.isObject(e)&&!0===e.isAxiosError},wv.mergeConfig=dv,wv.AxiosHeaders=Wg,wv.formToJSON=e=>Bg(gg.isHTMLForm(e)?new FormData(e):e),wv.getAdapter=sv,wv.HttpStatusCode=_v,wv.default=wv;const Rv=((e={})=>{const t=new Map,{extra:r,onError:i=lr}=e;Vt(i,"onError");const n=e=>{let r=it(Array.from(t.values()),(t=>t.effect===e.effect));return r||(r=nr(e)),(e=>(e.unsubscribe=()=>t.delete(e.id),t.set(e.id,e),t=>{e.unsubscribe(),t?.cancelActive&&sr(e)}))(r)};Object.assign(n,{withTypes:()=>n});const s=e=>{const{type:r,effect:i,predicate:n}=ir(e),s=it(Array.from(t.values()),(e=>("string"==typeof r?e.type===r:e.predicate===n)&&e.effect===i));return s&&(s.unsubscribe(),e.cancelActive&&sr(s)),!!s};Object.assign(s,{withTypes:()=>s});const o=async(e,s,o,a)=>{const c=new AbortController,d=rr(n,c.signal),l=[];try{e.pending.add(c),await Promise.resolve(e.effect(s,Yt({},o,{getOriginalState:a,condition:(e,t)=>d(e,t).then(Boolean),take:d,delay:Zt(c.signal),pause:Qt(c.signal),extra:r,signal:c.signal,fork:tr(c.signal,l),unsubscribe:e.unsubscribe,subscribe:()=>{t.set(e.id,e)},cancelActiveListeners:()=>{e.pending.forEach(((e,t,r)=>{e!==c&&(Wt(e,zt),r.delete(e))}))},cancel:()=>{Wt(c,zt),e.pending.delete(c)},throwIfCancelled:()=>{Kt(c.signal)}})))}catch(e){e instanceof $t||or(i,e,{raisedBy:"effect"})}finally{await Promise.all(l),Wt(c,Ut),e.pending.delete(c)}},a=(e=>()=>{e.forEach(sr),e.clear()})(t);return{middleware:e=>r=>c=>{if(!V(c))return r(c);if(ar.match(c))return n(c.payload);if(cr.match(c))return void a();if(dr.match(c))return s(c.payload);let d=e.getState();const l=()=>{if(d===Xt)throw new Error(`${er}: getOriginalState can only be called synchronously`);return d};let p;try{if(p=r(c),t.size>0){const r=e.getState(),n=Array.from(t.values());for(const t of n){let n=!1;try{n=t.predicate(c,r,d)}catch(e){n=!1,or(i,e,{raisedBy:"predicate"})}n&&o(t,c,e,l)}}}finally{d=Xt}return p},startListening:n,stopListening:s,clearListeners:a}})(),Tv=Rv.startListening,Pv=(e,t)=>Tv({predicate:(t,r,i)=>{const n=e.map((e=>e(i))),s=e.map((e=>e(r)));return n.some(((e,t)=>e!==s[t]))},effect:(r,{dispatch:i,getState:n,extra:s})=>{const o=e.map((e=>e(n())));t({dispatch:i,getState:n,extra:s},...o)}}),kv=Mt({name:"app",initialState:{isNodeSdk:!1,isActive:!1,roomName:null,roomUrl:null,displayName:null,userAgent:"core:0.16.2",externalId:null},reducers:{doAppStart:(e,t)=>{const r=new URL(t.payload.roomUrl);return Object.assign(Object.assign(Object.assign({},e),t.payload),{roomName:r.pathname,initialConfig:Object.assign({},t.payload),isActive:!0})},doAppStop:e=>Object.assign(Object.assign({},e),{isActive:!1})}}),{doAppStop:Ov,doAppStart:Ev}=kv.actions,Dv=e=>e.app.isActive,Iv=e=>e.app.roomName,xv=e=>e.app.displayName,Mv=e=>e.app.userAgent,jv=e=>e.app.externalId,Lv=e=>e.app.isNodeSdk;function Av(e){return et(`signalConnection/event/${e}`)}const Nv={audioEnabled:Av("audioEnabled"),audioEnableRequested:Av("audioEnableRequested"),chatMessage:Av("chatMessage"),clientLeft:Av("clientLeft"),clientKicked:Av("clientKicked"),clientMetadataReceived:Av("clientMetadataReceived"),cloudRecordingStarted:Av("cloudRecordingStarted"),cloudRecordingStopped:Av("cloudRecordingStopped"),disconnect:Av("disconnect"),knockerLeft:Av("knockerLeft"),knockHandled:Av("knockHandled"),newClient:Av("newClient"),roomJoined:Av("roomJoined"),roomKnocked:Av("roomKnocked"),roomLeft:Av("roomLeft"),roomLocked:Av("roomLocked"),roomSessionEnded:Av("roomSessionEnded"),screenshareStarted:Av("screenshareStarted"),screenshareStopped:Av("screenshareStopped"),spotlightAdded:Av("spotlightAdded"),spotlightRemoved:Av("spotlightRemoved"),streamingStopped:Av("streamingStopped"),videoEnabled:Av("videoEnabled")},Bv={canLockRoom:["host"],canRequestAudioEnable:["host"],canKickClient:["host"],canEndMeeting:["host"],canAskToSpeak:["host"],canSpotlight:["host"]},Fv=Mt({name:"authorization",initialState:{roomKey:null,roleName:"none"},reducers:{setRoomKey:(e,t)=>Object.assign(Object.assign({},e),{roomKey:t.payload})},extraReducers:e=>{e.addCase(Ev,((e,t)=>Object.assign(Object.assign({},e),{roomKey:t.payload.roomKey}))),e.addCase(Nv.roomJoined,((e,t)=>{var r,i;const n=null===(i=null===(r=t.payload)||void 0===r?void 0:r.room)||void 0===i?void 0:i.clients.find((e=>{var r;return e.id===(null===(r=t.payload)||void 0===r?void 0:r.selfId)}));return Object.assign(Object.assign({},e),{roleName:(null==n?void 0:n.role.roleName)||"none"})}))}}),{setRoomKey:zv}=Fv.actions,Uv=e=>e.authorization.roomKey,$v=e=>e.authorization.roleName,Vv=We($v,(e=>Bv.canLockRoom.includes(e))),Gv=We($v,(e=>Bv.canRequestAudioEnable.includes(e))),qv=We($v,(e=>Bv.canKickClient.includes(e))),Hv=We($v,(e=>Bv.canEndMeeting.includes(e))),Wv=We($v,(e=>Bv.canAskToSpeak.includes(e))),Kv=We($v,(e=>Bv.canSpotlight.includes(e)));function Jv(e,t){var r={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(r[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(i=Object.getOwnPropertySymbols(e);n<i.length;n++)t.indexOf(i[n])<0&&Object.prototype.propertyIsEnumerable.call(e,i[n])&&(r[i[n]]=e[i[n]])}return r}function Qv(e,t,r,i){return new(r||(r=Promise))((function(n,s){function o(e){try{c(i.next(e))}catch(e){s(e)}}function a(e){try{c(i.throw(e))}catch(e){s(e)}}function c(e){e.done?n(e.value):function(e){return e instanceof r?e:new r((function(t){t(e)}))}(e.value).then(o,a)}c((i=i.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const Zv=Mt({name:"deviceCredentials",initialState:{isFetching:!1,data:null},reducers:{},extraReducers:e=>{e.addCase(Yv.pending,(e=>Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(Yv.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isFetching:!1,data:t.payload}))),e.addCase(Yv.rejected,(e=>Object.assign(Object.assign({},e),{isFetching:!0})))}}),Yv=Sv("deviceCredentials/doGetDeviceCredentials",((e,{extra:t})=>Qv(void 0,void 0,void 0,(function*(){try{return yield t.services.credentialsService.getCredentials()}catch(e){console.error(e)}})))),Xv=e=>e.deviceCredentials;Pv([We(Dv,Xv,((e,t)=>!(!e||t.isFetching||t.data)))],(({dispatch:e},t)=>{t&&e(Yv())}));const eb=Mt({name:"signalConnection",initialState:{deviceIdentified:!1,isIdentifyingDevice:!1,status:"ready",socket:null},reducers:{socketConnecting:e=>Object.assign(Object.assign({},e),{status:"connecting"}),socketConnected:(e,t)=>Object.assign(Object.assign({},e),{socket:t.payload,status:"connected"}),socketDisconnected:e=>Object.assign(Object.assign({},e),{deviceIdentified:!1,status:"disconnected"}),socketReconnecting:e=>Object.assign(Object.assign({},e),{status:"reconnecting"}),deviceIdentifying:e=>Object.assign(Object.assign({},e),{isIdentifyingDevice:!0}),deviceIdentified:e=>Object.assign(Object.assign({},e),{deviceIdentified:!0,isIdentifyingDevice:!1})},extraReducers:e=>{e.addCase(Nv.disconnect,(e=>Object.assign(Object.assign({},e),{deviceIdentified:!1,status:"disconnected"})))}}),{deviceIdentifying:tb,deviceIdentified:rb,socketConnected:ib,socketConnecting:nb,socketDisconnected:sb,socketReconnecting:ob}=eb.actions,ab=()=>(e,t)=>{if(hb(t()))return;e(nb());const r=function(){const e=new URL("wss://signal.appearin.net").origin;return new xf(e,{autoConnect:!1})}();r.on("connect",(()=>e(ib(r)))),r.on("device_identified",(()=>e(rb()))),r.getManager().on("reconnect",(()=>e(ob()))),function(e,t){e.on("room_joined",(e=>t(Nv.roomJoined(e)))),e.on("new_client",(e=>t(Nv.newClient(e)))),e.on("client_left",(e=>t(Nv.clientLeft(e)))),e.on("client_kicked",(e=>t(Nv.clientKicked(e)))),e.on("audio_enabled",(e=>t(Nv.audioEnabled(e)))),e.on("video_enabled",(e=>t(Nv.videoEnabled(e)))),e.on("audio_enable_requested",(e=>t(Nv.audioEnableRequested(e)))),e.on("client_metadata_received",(e=>t(Nv.clientMetadataReceived(e)))),e.on("chat_message",(e=>t(Nv.chatMessage(e)))),e.on("disconnect",(()=>t(Nv.disconnect()))),e.on("room_knocked",(e=>t(Nv.roomKnocked(e)))),e.on("room_left",(()=>t(Nv.roomLeft()))),e.on("room_locked",(e=>t(Nv.roomLocked(e)))),e.on("room_session_ended",(e=>t(Nv.roomSessionEnded(e)))),e.on("knocker_left",(e=>t(Nv.knockerLeft(e)))),e.on("knock_handled",(e=>t(Nv.knockHandled(e)))),e.on("screenshare_started",(e=>t(Nv.screenshareStarted(e)))),e.on("screenshare_stopped",(e=>t(Nv.screenshareStopped(e)))),e.on("cloud_recording_started",(e=>t(Nv.cloudRecordingStarted(e)))),e.on("cloud_recording_stopped",(()=>t(Nv.cloudRecordingStopped()))),e.on("streaming_stopped",(()=>t(Nv.streamingStopped()))),e.on("spotlight_added",(e=>t(Nv.spotlightAdded(e)))),e.on("spotlight_removed",(e=>t(Nv.spotlightRemoved(e))))}(r,e),r.connect()},cb=({deviceCredentials:e})=>(t,r)=>{const i=r(),n=hb(i),s=pb(i);n&&(s||(n.emit("identify_device",{deviceCredentials:e}),t(tb())))},db=()=>(e,t)=>{const r=t();if("connected"===ub(r)){const t=lb(r).socket;null==t||t.disconnect(),e(sb())}},lb=e=>e.signalConnection,pb=e=>e.signalConnection.deviceIdentified,ub=e=>e.signalConnection.status,hb=e=>e.signalConnection.socket;Pv([We(Dv,ub,((e,t)=>!(!e||!["ready","reconnecting"].includes(t))))],(({dispatch:e},t)=>{t&&e(ab())}));const mb=We(Xv,ub,pb,(e=>e.signalConnection.isIdentifyingDevice),((e,t,r,i)=>!(!e.data||"connected"!==t||r||i)));Pv([mb,Xv],(({dispatch:e},t,r)=>{t&&r.data&&e(cb({deviceCredentials:r.data}))})),Tv({actionCreator:Nv.roomLeft,effect:(e,{dispatch:t})=>{t(db())}}),Tv({actionCreator:Nv.clientKicked,effect:(e,{dispatch:t})=>{t(db())}});const fb=Mt({name:"chat",initialState:{chatMessages:[]},reducers:{},extraReducers(e){e.addCase(Nv.chatMessage,((e,t)=>{const r={senderId:t.payload.senderId,timestamp:t.payload.timestamp,text:t.payload.text};return Object.assign(Object.assign({},e),{chatMessages:[...e.chatMessages,r]})}))}}),gb=e=>(t,r)=>{const i=r(),n=lb(i).socket;null==n||n.emit("chat_message",{text:e.text})},vb=Mt({name:"cloudRecording",initialState:{isRecording:!1,error:null,startedAt:void 0},reducers:{recordingRequestStarted:e=>Object.assign(Object.assign({},e),{status:"requested"})},extraReducers:e=>{e.addCase(Nv.cloudRecordingStopped,(e=>Object.assign(Object.assign({},e),{isRecording:!1,status:void 0}))),e.addCase(Nv.cloudRecordingStarted,((e,t)=>{const{payload:r}=t;return r.error?Object.assign(Object.assign({},e),{isRecording:!1,status:"error",error:r.error}):e})),e.addCase(Nv.newClient,((e,{payload:t})=>{var r;const{client:i}=t;return"recorder"===(null===(r=i.role)||void 0===r?void 0:r.roleName)?Object.assign(Object.assign({},e),{isRecording:!0,status:"recording",startedAt:i.startedCloudRecordingAt?new Date(i.startedCloudRecordingAt).getTime():(new Date).getTime()}):e}))}}),{recordingRequestStarted:bb}=vb.actions,yb=()=>(e,t)=>{const r=t(),i=lb(r).socket,n=wb(r);n&&["recording","requested"].includes(n)||(null==i||i.emit("start_recording",{recording:"cloud"}),e(bb()))},_b=()=>(e,t)=>{const r=t(),i=lb(r).socket;null==i||i.emit("stop_recording")},wb=e=>e.cloudRecording.status;function Sb(e,{delay:t=500,edges:r}={}){let i,n=0;return(...s)=>{n+=1,r&&1===n&&e(...s),clearTimeout(i),i=setTimeout((()=>{(!r||n>1)&&e(...s),i=void 0,n=0}),t)}}const Cb=Mt({name:"localMedia",initialState:{busyDeviceIds:[],cameraEnabled:!1,currentSpeakerDeviceId:"default",devices:[],isSettingCameraDevice:!1,isSettingMicrophoneDevice:!1,isSettingSpeakerDevice:!1,isTogglingCamera:!1,lowDataMode:!1,microphoneEnabled:!1,status:"inactive",stream:void 0,isSwitchingStream:!1},reducers:{deviceBusy:(e,t)=>e.busyDeviceIds.includes(t.payload.deviceId)?e:Object.assign(Object.assign({},e),{busyDeviceIds:[...e.busyDeviceIds,t.payload.deviceId]}),toggleCameraEnabled(e,t){var r;return Object.assign(Object.assign({},e),{cameraEnabled:null!==(r=t.payload.enabled)&&void 0!==r?r:!e.cameraEnabled})},setCurrentCameraDeviceId:(e,t)=>Object.assign(Object.assign({},e),{currentCameraDeviceId:t.payload.deviceId}),toggleMicrophoneEnabled(e,t){var r;return Object.assign(Object.assign({},e),{microphoneEnabled:null!==(r=t.payload.enabled)&&void 0!==r?r:!e.microphoneEnabled})},setCurrentMicrophoneDeviceId:(e,t)=>Object.assign(Object.assign({},e),{currentMicrophoneDeviceId:t.payload.deviceId}),setCurrentSpeakerDeviceId(e,t){var r;return Object.assign(Object.assign({},e),{currentSpeakerDeviceId:null!==(r=t.payload.deviceId)&&void 0!==r?r:"default"})},toggleLowDataModeEnabled(e,t){var r;return Object.assign(Object.assign({},e),{lowDataMode:null!==(r=t.payload.enabled)&&void 0!==r?r:!e.lowDataMode})},setDevices:(e,t)=>Object.assign(Object.assign({},e),{devices:t.payload.devices}),setLocalMediaStream:(e,t)=>Object.assign(Object.assign({},e),{stream:t.payload.stream}),setLocalMediaOptions:(e,t)=>Object.assign(Object.assign({},e),{options:t.payload.options}),localMediaStopped:e=>Object.assign(Object.assign({},e),{status:"stopped",stream:void 0}),localStreamMetadataUpdated(e,t){const{audio:r,video:i}=t.payload;return Object.assign(Object.assign({},e),{currentCameraDeviceId:i.deviceId,currentMicrophoneDeviceId:r.deviceId,busyDeviceIds:e.busyDeviceIds.filter((e=>e!==r.deviceId&&e!==i.deviceId))})}},extraReducers:e=>{e.addCase(Ev,((e,t)=>Object.assign(Object.assign({},e),{options:t.payload.localMediaOptions}))),e.addCase(Bb.pending,((e,t)=>{const{audio:r,video:i}=t.meta.arg;return Object.assign(Object.assign({},e),{isSettingCameraDevice:i,isSettingMicrophoneDevice:r})})),e.addCase(Bb.fulfilled,((e,t)=>{const{audio:r,video:i}=t.meta.arg;return Object.assign(Object.assign({},e),{isSettingCameraDevice:!i&&e.isSettingCameraDevice,isSettingMicrophoneDevice:!r&&e.isSettingMicrophoneDevice})})),e.addCase(Bb.rejected,((e,t)=>{const{audio:r,video:i}=t.meta.arg;return Object.assign(Object.assign({},e),{isSettingCameraDevice:!i&&e.isSettingCameraDevice,isSettingMicrophoneDevice:!r&&e.isSettingMicrophoneDevice,cameraDeviceError:i?t.error:e.cameraDeviceError,microphoneDeviceError:r?t.error:e.microphoneDeviceError})})),e.addCase(Lb.pending,(e=>Object.assign(Object.assign({},e),{isTogglingCamera:!0}))),e.addCase(Lb.fulfilled,(e=>Object.assign(Object.assign({},e),{isTogglingCamera:!1}))),e.addCase(Fb.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{devices:t.payload.devices}))),e.addCase(Ub.pending,(e=>Object.assign(Object.assign({},e),{status:"starting"}))),e.addCase(Ub.fulfilled,((e,{payload:{stream:t,onDeviceChange:r}})=>{let i,n,s=!1,o=!1;const a=t.getAudioTracks()[0],c=t.getVideoTracks()[0];return a&&(n=a.getSettings().deviceId,o=a.enabled),c&&(s=c.enabled,i=c.getSettings().deviceId),Object.assign(Object.assign({},e),{stream:t,status:"started",currentCameraDeviceId:i,currentMicrophoneDeviceId:n,cameraEnabled:s,microphoneEnabled:o,onDeviceChange:r})})),e.addCase(Ub.rejected,((e,t)=>Object.assign(Object.assign({},e),{status:"error",startError:t.error}))),e.addCase(zb.pending,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!0}))),e.addCase(zb.fulfilled,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!1}))),e.addCase(zb.rejected,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!1})))}}),{deviceBusy:Rb,setCurrentCameraDeviceId:Tb,setCurrentMicrophoneDeviceId:Pb,setCurrentSpeakerDeviceId:kb,toggleCameraEnabled:Ob,toggleMicrophoneEnabled:Eb,toggleLowDataModeEnabled:Db,setLocalMediaOptions:Ib,setLocalMediaStream:xb,localMediaStopped:Mb,localStreamMetadataUpdated:jb}=Cb.actions,Lb=Sv("localMedia/doToggleCamera",((e,{getState:t,rejectWithValue:r})=>Qv(void 0,void 0,void 0,(function*(){const e=t(),i=ey(e);if(!i)return;let n=i.getVideoTracks()[0];const s=Wb(e);try{if(s)if(n)n.enabled=!0;else{const t=ry(e),r=Gb(e);yield Dh(Object.assign(Object.assign({},t),{audioId:!1,videoId:r,type:"exact"}),{replaceStream:i}),n=i.getVideoTracks()[0]}else{if(!n)return;n.enabled=!1,n.stop(),i.removeTrack(n)}i.dispatchEvent(new CustomEvent("stopresumevideo",{detail:{track:n,enable:s}}))}catch(e){return r(e)}})))),Ab=Sv("localMedia/doToggleMicrophone",((e,{getState:t})=>{var r;const i=t(),n=ey(i);if(!n)return;const s=Kb(i),o=null===(r=n.getAudioTracks())||void 0===r?void 0:r[0];o&&(o.enabled=s)})),Nb=()=>(e,t)=>{const r=t();if(!ey(r))return;const i=Gb(r),n=qb(r);e(zb({audioId:n,videoId:i}))},Bb=Sv("localMedia/reactSetDevice",(({audio:e,video:t},{getState:r,rejectWithValue:i})=>Qv(void 0,void 0,void 0,(function*(){try{const i=r(),n=ey(i);if(!n)throw new Error("No stream");const s=!!e&&qb(i),o=!!t&&Gb(i),a=ry(i),{replacedTracks:c}=yield Dh(Object.assign(Object.assign({},a),{audioId:s,videoId:o,type:"exact"}),{replaceStream:n}),d=Kb(i);n.getAudioTracks().forEach((e=>e.enabled=d));const l=Wb(i);return n.getVideoTracks().forEach((e=>e.enabled=l)),{replacedTracks:c}}catch(e){return i(e)}})))),Fb=Sv("localMedia/doUpdateDeviceList",((e,{getState:t,dispatch:r,rejectWithValue:i})=>Qv(void 0,void 0,void 0,(function*(){var e,n,s,o;const a=t();let c=[],d=[];const l=ey(a);try{c=yield navigator.mediaDevices.enumerateDevices(),d=Qb(a);if(!(l&&!ty(a)&&c&&d&&d.find((e=>e.deviceId))))return{devices:c};const{changedDevices:t,addedDevices:i}=Ih({oldDevices:d,newDevices:c});let p=null===(e=t.audioinput)||void 0===e?void 0:e.deviceId,u=null===(n=t.videoinput)||void 0===n?void 0:n.deviceId;return void 0===p&&(p=null===(s=i.audioinput)||void 0===s?void 0:s.deviceId),void 0===u&&(u=null===(o=i.videoinput)||void 0===o?void 0:o.deviceId),void 0===p&&void 0===u||r(zb({audioId:p,videoId:u})),{devices:c}}catch(e){return i(e)}})))),zb=Sv("localMedia/doSwitchLocalStream",(({audioId:e,videoId:t},{dispatch:r,getState:i,rejectWithValue:n})=>Qv(void 0,void 0,void 0,(function*(){const s=i(),o=ey(s),a=ry(s),c=!(!t||e)||!(t||!e);if(o)try{const{replacedTracks:i}=yield Dh(Object.assign(Object.assign({},a),{audioId:void 0!==e&&e,videoId:void 0!==t&&t,type:"exact"}),{replaceStream:o}),n=e||t;return c&&n&&r(Rb({deviceId:n})),{replacedTracks:i}}catch(i){console.error(i);const s=e||t;return c&&s&&r(Rb({deviceId:s})),n(i)}})))),Ub=Sv("localMedia/doStartLocalMedia",((e,{getState:t,dispatch:r,rejectWithValue:i})=>Qv(void 0,void 0,void 0,(function*(){const n=Sb((()=>{r(Fb())}),{delay:500});if(navigator.mediaDevices&&navigator.mediaDevices.addEventListener("devicechange",n),"getTracks"in e)return Promise.resolve({stream:e,onDeviceChange:n});if(!e.audio&&!e.video)return{stream:new MediaStream,onDeviceChange:n};r(Ib({options:e}));try{yield r(Fb());const i=t(),s=ry(i),{stream:o}=yield Dh(Object.assign(Object.assign({},s),{audioId:e.audio,videoId:e.video}));return{stream:o,onDeviceChange:n}}catch(e){return i(e)}})))),$b=()=>(e,t)=>{const r=ey(t()),i=Yb(t()).onDeviceChange;null==r||r.getTracks().forEach((e=>{e.stop()})),navigator.mediaDevices&&i&&navigator.mediaDevices.removeEventListener("devicechange",i),e(Mb())},Vb=e=>e.localMedia.busyDeviceIds,Gb=e=>e.localMedia.currentCameraDeviceId,qb=e=>e.localMedia.currentMicrophoneDeviceId,Hb=e=>e.localMedia.currentSpeakerDeviceId,Wb=e=>e.localMedia.cameraEnabled,Kb=e=>e.localMedia.microphoneEnabled,Jb=e=>e.localMedia.lowDataMode,Qb=e=>e.localMedia.devices,Zb=e=>e.localMedia.options;We(Zb,(e=>!!e));const Yb=e=>e.localMedia,Xb=e=>e.localMedia.status,ey=e=>e.localMedia.stream,ty=e=>e.localMedia.isSwitchingStream,ry=We(Qb,Gb,qb,Jb,((e,t,r,i)=>({devices:e,videoId:t,audioId:r,options:{disableAEC:!1,disableAGC:!1,hd:!0,lax:!1,lowDataMode:i,simulcast:!0,widescreen:!0}}))),iy=We(Xb,(e=>"starting"===e)),ny=We(Qb,Vb,((e,t)=>e.filter((e=>"videoinput"===e.kind)).filter((e=>!t.includes(e.deviceId))))),sy=We(Qb,Vb,((e,t)=>e.filter((e=>"audioinput"===e.kind)).filter((e=>!t.includes(e.deviceId))))),oy=We(Qb,(e=>e.filter((e=>"audiooutput"===e.kind))));Pv([We(Dv,Xb,Zb,Lv,((e,t,r,i)=>{if(e&&["inactive","stopped"].includes(t)&&!i&&r)return r}))],(({dispatch:e},t)=>{t&&e(Ub(t))}));Pv([We(Dv,Xb,Zb,((e,t,r)=>!e&&"inactive"!==t&&!!r))],(({dispatch:e},t)=>{t&&e($b())})),Tv({predicate:(e,t,r)=>{const i=Kb(r),n=Kb(t);return"started"===Xb(r)&&i!==n},effect:(e,{dispatch:t})=>{t(Ab())}}),Tv({predicate:(e,t,r)=>{const i=Jb(r),n=Jb(t);return"started"===Xb(r)&&i!==n},effect:(e,{dispatch:t})=>{t(Nb())}}),Tv({predicate:(e,t,r)=>{if(t.localMedia.isTogglingCamera)return!1;const i=Wb(r),n=Wb(t);return"started"===Xb(r)&&i!==n},effect:(e,{dispatch:t})=>{t(Lb())}}),Tv({predicate:(e,t,r)=>{const i=Gb(r),n=Gb(t);return"started"===Xb(r)&&i!==n},effect:(e,{dispatch:t})=>{t(Bb({audio:!1,video:!0}))}}),Tv({predicate:(e,t,r)=>{const i=qb(r),n=qb(t);return"started"===Xb(r)&&i!==n},effect:(e,{dispatch:t})=>{t(Bb({audio:!0,video:!1}))}}),Tv({matcher:St(Ub.fulfilled,Fb.fulfilled,zb.fulfilled,zb.rejected),effect:(e,{dispatch:t,getState:r})=>{const i=r(),n=ey(i),s=Qb(i);if(!n)return;const o=function({audioTrack:e,videoTrack:t,devices:r,stoppedVideoTrack:i,lastAudioId:n,lastVideoId:s}){const o=e=>"live"===(null==e?void 0:e.readyState)?e:null;return t=o(t)||i,e=o(e),{video:Oh("videoinput",t,r,s),audio:Oh("audioinput",e,r,n)}}({audioTrack:n.getAudioTracks()[0],videoTrack:n.getVideoTracks()[0],devices:s});t(jb(o))}}),Tv({actionCreator:Nv.audioEnableRequested,effect:({payload:e},{dispatch:t})=>{const{enable:r}=e;r||t(Eb({enabled:!1}))}});const ay=Mt({name:"localParticipant",initialState:{displayName:"",id:"",isAudioEnabled:!0,isVideoEnabled:!0,isLocalParticipant:!0,stream:void 0,isScreenSharing:!1,roleName:"none",clientClaim:void 0,stickyReaction:void 0},reducers:{doSetDisplayName:(e,t)=>Object.assign(Object.assign({},e),{displayName:t.payload.displayName})},extraReducers:e=>{e.addCase(Ev,((e,t)=>Object.assign(Object.assign({},e),{displayName:t.payload.displayName}))),e.addCase(dy.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isAudioEnabled:t.payload}))),e.addCase(ly.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isVideoEnabled:t.payload}))),e.addCase(py.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{stickyReaction:t.payload}))),e.addCase(Nv.roomJoined,((e,t)=>{var r,i;const n=null===(i=null===(r=t.payload)||void 0===r?void 0:r.room)||void 0===i?void 0:i.clients.find((e=>{var r;return e.id===(null===(r=t.payload)||void 0===r?void 0:r.selfId)}));return Object.assign(Object.assign({},e),{id:t.payload.selfId,roleName:(null==n?void 0:n.role.roleName)||"none",clientClaim:t.payload.clientClaim})}))}}),{doSetDisplayName:cy}=ay.actions,dy=Sv("localParticipant/doEnableAudio",((e,{dispatch:t,getState:r})=>Qv(void 0,void 0,void 0,(function*(){const i=r(),n=lb(i).socket;return null==n||n.emit("enable_audio",{enabled:e.enabled}),e.enabled&&t(py({enabled:!1})),e.enabled})))),ly=Sv("localParticipant/doEnableVideo",((e,{getState:t})=>Qv(void 0,void 0,void 0,(function*(){const r=t(),i=lb(r).socket;return null==i||i.emit("enable_video",{enabled:e.enabled}),e.enabled})))),py=Sv("localParticipant/doSetLocalStickyReaction",((e,{getState:t,rejectWithValue:r})=>Qv(void 0,void 0,void 0,(function*(){var i;const n=t(),s=gy(n),o=Boolean(s),a=null!==(i=e.enabled)&&void 0!==i?i:!o;if(a===o)return r(s);return a?{reaction:"✋",timestamp:(new Date).toISOString()}:null})))),uy=()=>(e,t)=>{const r=t(),i=lb(r).socket,n={displayName:fy(r),stickyReaction:gy(r)};null==i||i.emit("send_client_metadata",{type:"UserData",payload:n})},hy=e=>e.localParticipant,my=e=>e.localParticipant.id,fy=e=>e.localParticipant.displayName,gy=e=>e.localParticipant.stickyReaction,vy=We(hy,ey,((e,t)=>({id:e.id,clientId:e.id,displayName:e.displayName,stream:t,isLocalClient:!0,isAudioEnabled:e.isAudioEnabled,isVideoEnabled:e.isVideoEnabled})));Tv({actionCreator:Ob,effect:({payload:e},{dispatch:t,getState:r})=>{const{enabled:i}=e,{isVideoEnabled:n}=hy(r());t(ly({enabled:i||!n}))}}),Tv({actionCreator:Eb,effect:({payload:e},{dispatch:t,getState:r})=>{const{enabled:i}=e,{isAudioEnabled:n}=hy(r());t(dy({enabled:i||!n}))}}),Pv([fy,gy],(({dispatch:e})=>{e(uy())}));const by=Mt({name:"localScreenshare",initialState:{status:"inactive",stream:null,error:null},reducers:{stopScreenshare:(e,t)=>Object.assign(Object.assign({},e),{status:"inactive",stream:null})},extraReducers:e=>{e.addCase(_y.pending,(e=>Object.assign(Object.assign({},e),{status:"starting"}))),e.addCase(_y.fulfilled,((e,{payload:{stream:t}})=>Object.assign(Object.assign({},e),{status:"active",stream:t}))),e.addCase(_y.rejected,((e,{payload:t})=>Object.assign(Object.assign({},e),{error:t,status:"inactive",stream:null})))}}),{stopScreenshare:yy}=by.actions,_y=Sv("localScreenshare/doStartScreenshare",((e,{dispatch:t,getState:r,rejectWithValue:i})=>Qv(void 0,void 0,void 0,(function*(){var e;try{const i=r(),n=Sy(i);if(n)return{stream:n};const s=yield navigator.mediaDevices.getDisplayMedia(),o=()=>{t(wy())};return"oninactive"in s?s.addEventListener("inactive",o):null===(e=s.getVideoTracks()[0])||void 0===e||e.addEventListener("ended",o),{stream:s}}catch(e){return i(e)}})))),wy=()=>(e,t)=>{const r=t(),i=Sy(r);i&&(i.getTracks().forEach((e=>e.stop())),e(yy({stream:i})))},Sy=e=>e.localScreenshare.stream;function Cy(e){return et(`rtcConnection/event/${e}`)}Tv({actionCreator:Mb,effect:(e,{getState:t})=>{const r=t(),i=Sy(r);i&&(null==i||i.getTracks().forEach((e=>{e.stop()})))}});const Ry={rtcManagerCreated:Cy("rtcManagerCreated"),rtcManagerDestroyed:Cy("rtcManagerDestroyed"),streamAdded:Cy("streamAdded")},Ty=["recorder","streamer"];function Py(e,t=!1){const{streams:r,role:i}=e,n=Jv(e,["streams","role"]);return Object.assign(Object.assign({},n),{stream:null,streams:r.map((e=>({id:e,state:t?"new_accept":"to_accept"}))),isLocalParticipant:!1,roleName:(null==i?void 0:i.roleName)||"none",presentationStream:null,newJoiner:t})}function ky(e,t){const r=e.remoteParticipants.findIndex((e=>e.id===t));return{index:r,participant:e.remoteParticipants[r]}}function Oy(e,t,r){const{participant:i,index:n}=ky(e,t);return i?Object.assign(Object.assign({},e),{remoteParticipants:[...e.remoteParticipants.slice(0,n),Object.assign(Object.assign({},i),r),...e.remoteParticipants.slice(n+1)]}):(console.error(`Did not find client for update ${t}`),e)}function Ey(e,t,r,i){const{participant:n}=ky(e,t);if(!n)return console.error(`No client ${t} found to update stream ${r} ${i}`),e;const s=n.streams.findIndex((e=>e.id===r)),o=[...n.streams];return o[s]=Object.assign(Object.assign({},o[s]),{state:i}),Oy(e,t,{streams:o})}function Dy(e,t,r){const{participant:i}=ky(e,t);return!i||i.streams.find((e=>e.id===r))?(console.warn(`No participant ${t} or stream ${r} already exists`),e):Oy(e,t,{streams:[...i.streams,{id:r,state:"to_accept"}]})}const Iy=Mt({name:"remoteParticipants",initialState:{remoteParticipants:[]},reducers:{streamStatusUpdated:(e,t)=>{let r=e;for(const{clientId:e,streamId:i,state:n}of t.payload)r=Ey(r,e,i,n);return r},participantStreamAdded:(e,t)=>{const{clientId:r,stream:i}=t.payload;return Oy(e,r,{stream:i})},participantStreamIdAdded:(e,t)=>{const{clientId:r,streamId:i}=t.payload;return Dy(e,r,i)}},extraReducers:e=>{e.addCase(Nv.roomJoined,((e,t)=>{var r;if(!(null===(r=t.payload)||void 0===r?void 0:r.room))return e;const i=t.payload.selfId,{clients:n}=t.payload.room;return Object.assign(Object.assign({},e),{remoteParticipants:n.filter((e=>e.id!==i)).filter((e=>!Ty.includes(e.role.roleName))).map((e=>Py(e)))})})),e.addCase(Ry.streamAdded,((e,t)=>function(e,t){const{clientId:r,stream:i,streamType:n}=t;let{streamId:s}=t;const{participant:o}=ky(e,r);if(!o)return console.error(`Did not find client ${r} for adding stream`),e;const a=e.remoteParticipants;s||(s=i.id);const c=a.find((e=>e.id===r));if(!c)return e;const d=c.streams.find((e=>e.id===s));return c.stream&&(c.stream.id===s||c.stream.inboundId===s)||!c.stream&&"webcam"===n||!c.stream&&!n&&!d?Oy(e,r,{stream:i}):Oy(e,r,{presentationStream:i})}(e,t.payload))),e.addCase(Nv.newClient,((e,t)=>{const{client:r}=t.payload;return Ty.includes(r.role.roleName)?e:function(e,t){const{participant:r}=ky(e,t.id);return r?(console.warn(`Client already existing ${t.id}. Ignoring`),e):Object.assign(Object.assign({},e),{remoteParticipants:[...e.remoteParticipants,t]})}(e,Py(r,!0))})),e.addCase(Nv.clientLeft,((e,t)=>{const{clientId:r}=t.payload;return function(e,t){return Object.assign(Object.assign({},e),{remoteParticipants:e.remoteParticipants.filter((e=>e.id!==t))})}(e,r)})),e.addCase(Nv.audioEnabled,((e,t)=>{const{clientId:r,isAudioEnabled:i}=t.payload;return Oy(e,r,{isAudioEnabled:i})})),e.addCase(Nv.videoEnabled,((e,t)=>{const{clientId:r,isVideoEnabled:i}=t.payload;return Oy(e,r,{isVideoEnabled:i})})),e.addCase(Nv.clientMetadataReceived,((e,t)=>{const{error:r,payload:i}=t.payload;if(r||!i)return console.warn(r||"Client metadata error received"),e;const{clientId:n,displayName:s,stickyReaction:o}=i;return Oy(e,n,{displayName:s,stickyReaction:o})})),e.addCase(Nv.screenshareStarted,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return Dy(e,r,i)})),e.addCase(Nv.screenshareStopped,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return function(e,t,r){var i,n;const{participant:s}=ky(e,t);if(!s)return console.error(`No participant ${t} found to remove stream ${r}`),e;const o=s.stream&&s.stream.id,a=(null===(i=s.presentationStream)||void 0===i?void 0:i.inboundId)||(null===(n=s.presentationStream)||void 0===n?void 0:n.id),c=s.streams.findIndex((e=>e.id===r));return Oy(e,t,Object.assign(Object.assign({streams:s.streams.filter(((e,t)=>t!==c))},o===r&&{stream:null}),a===r&&{presentationStream:null}))}(e,r,i)}))}}),{participantStreamAdded:xy,participantStreamIdAdded:My,streamStatusUpdated:jy}=Iy.actions,Ly=Cv((e=>Gv(e)),(e=>(t,r)=>{const i=r(),n=Wv(i);if(e.enable&&!n)return void console.warn("Not authorized to perform this action");const s=lb(i).socket;null==s||s.emit("request_audio_enable",e)})),Ay=e=>e.remoteParticipants.remoteParticipants,Ny=We(Ay,(e=>e.filter((e=>!Ty.includes(e.roleName))).length+1)),By=Mt({initialState:{data:null,isFetching:!1,error:null},name:"organization",reducers:{},extraReducers:e=>{e.addCase(Fy.pending,(e=>Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(Fy.fulfilled,((e,t)=>t.payload?Object.assign(Object.assign({},e),{isFetching:!1,data:t.payload}):Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(Fy.rejected,(e=>Object.assign(Object.assign({},e),{isFetching:!1,error:!0})))}}),Fy=Sv("organization/doOrganizationFetch",((e,{extra:t,getState:r})=>Qv(void 0,void 0,void 0,(function*(){try{const e=r().app.roomUrl,i=yield t.services.fetchOrganizationFromRoomUrl(e||"");if(!i)throw new Error("Invalid room url");return i}catch(e){console.error(e)}})))),zy=e=>{var t;return null===(t=e.organization.data)||void 0===t?void 0:t.organizationId};Pv([We(Dv,(e=>e.organization),Xv,((e,t,r)=>!(!e||t.data||t.isFetching||t.error||r.isFetching)))],(({dispatch:e},t)=>{t&&e(Fy())}));const Uy=Mt({initialState:{session:null,status:"ready",error:null},name:"roomConnection",reducers:{connectionStatusChanged:(e,t)=>Object.assign(Object.assign({},e),{status:t.payload})},extraReducers:e=>{e.addCase(Nv.roomJoined,((e,t)=>{var r,i;const{error:n,isLocked:s}=t.payload;return"room_locked"===n&&s?Object.assign(Object.assign({},e),{status:"room_locked"}):n?Object.assign(Object.assign({},e),{status:"disconnected",error:n}):Object.assign(Object.assign({},e),{status:"connected",session:null!==(i=null===(r=t.payload.room)||void 0===r?void 0:r.session)&&void 0!==i?i:null})})),e.addCase(Nv.disconnect,(e=>["kicked","left"].includes(e.status)?Object.assign({},e):Object.assign(Object.assign({},e),{status:"disconnected"}))),e.addCase(Nv.newClient,((e,t)=>{var r,i;return Object.assign(Object.assign({},e),{session:null!==(i=null===(r=t.payload.room)||void 0===r?void 0:r.session)&&void 0!==i?i:null})})),e.addCase(Nv.roomSessionEnded,((e,t)=>{var r;return(null===(r=e.session)||void 0===r?void 0:r.id)!==t.payload.roomSessionId?e:Object.assign(Object.assign({},e),{session:null})})),e.addCase(Nv.clientKicked,(e=>Object.assign(Object.assign({},e),{status:"kicked"}))),e.addCase(Nv.roomLeft,(e=>Object.assign(Object.assign({},e),{status:"left"}))),e.addCase(ob,(e=>Object.assign(Object.assign({},e),{status:"reconnecting"})))}}),{connectionStatusChanged:$y}=Uy.actions,Vy=()=>(e,t)=>{const r=t(),i=lb(r).socket,n=Iv(r),s=Uv(r),o=xv(r),a=Mv(r),c=jv(r),d=zy(r);null==i||i.emit("knock_room",{avatarUrl:null,config:{isAudioEnabled:!0,isVideoEnabled:!0},deviceCapabilities:{canScreenshare:!0},displayName:o,isCoLocated:!1,isDevicePermissionDenied:!1,kickFromOtherRooms:!1,organizationId:d,roomKey:s,roomName:n,userAgent:a,externalId:c}),e($y("knocking"))},Gy=()=>(e,t)=>{const r=t(),i=lb(r).socket,n=Iv(r),s=Uv(r),o=xv(r),a=Mv(r),c=jv(r),d=zy(r),l=Wb(t()),p=Kb(t()),u=(e=>e.localParticipant.clientClaim)(t());null==i||i.emit("join_room",Object.assign({avatarUrl:null,config:{isAudioEnabled:p,isVideoEnabled:l},deviceCapabilities:{canScreenshare:!0},displayName:o,isCoLocated:!1,isDevicePermissionDenied:!1,kickFromOtherRooms:!1,organizationId:d,roomKey:s,roomName:n,userAgent:a,externalId:c},u&&{clientClaim:u})),e($y("connecting"))},qy=e=>e.roomConnection.status;Pv([We([Dv,zy,qy,pb,Xb,Lv],((e,t,r,i,n,s)=>!!(e&&("started"===n||s)&&i&&t&&["ready","reconnecting","disconnected"].includes(r))))],(({dispatch:e},t)=>{t&&e(Gy())})),Tv({actionCreator:Nv.knockHandled,effect:({payload:e},{dispatch:t,getState:r})=>{const{clientId:i,resolution:n}=e,s=r();i===my(s)&&("accepted"===n?(t(zv(e.metadata.roomKey)),t(Gy())):"rejected"===n&&t($y("knock_rejected")))}}),Tv({actionCreator:Ov,effect:(e,{dispatch:t,getState:r})=>{const i=r();if("connected"===qy(i)){const e=lb(i).socket;null==e||e.emit("leave_room"),t($y("leaving"))}else db()}});function Hy(e){return Object.assign(Object.assign({},e),{timestamp:Date.now()})}const Wy=Mt({name:"notifications",initialState:{emitter:new ur,events:[]},reducers:{addNotification:(e,t)=>Object.assign(Object.assign({},e),{events:[...e.events,Object.assign({},t.payload)]}),doClearNotifications:e=>Object.assign(Object.assign({},e),{events:[]})}});Wy.actions;const Ky=e=>(t,r)=>{t(Wy.actions.addNotification(e));const i=r(),n=Jy(i);n.emit(e.type,e),n.emit("*",e)},Jy=e=>e.notifications.emitter;function Qy(e){return"recorder"===e.roleName}Tv({actionCreator:Nv.chatMessage,effect:({payload:e},{dispatch:t,getState:r})=>{const i=r(),n=Ay(i).find((({id:t})=>t===e.senderId));n?t(Ky(Hy({type:"chatMessageReceived",message:`${n.displayName} says: ${e.text}`,props:{client:n,chatMessage:{senderId:e.senderId,timestamp:e.timestamp,text:e.text}}}))):console.warn("Could not find remote client that sent chat message")}}),Tv({actionCreator:Nv.audioEnableRequested,effect:({payload:e},{dispatch:t,getState:r})=>{const{enable:i,requestedByClientId:n}=e,s=r(),o=Ay(s).find((({id:e})=>e===n));o?t(Ky(Hy({type:i?"requestAudioEnable":"requestAudioDisable",message:i?`${o.displayName} has requested for you to speak`:`${o.displayName} has muted your microphone`,props:{client:o,enable:i}}))):console.warn("Could not find remote client that requested a local audio change")}}),Tv({actionCreator:Nv.clientMetadataReceived,effect:(e,{dispatch:t,getOriginalState:r,getState:i})=>{var n;const{error:s,payload:o}=e.payload;if(s||!o)return;const{clientId:a,stickyReaction:c}=o,d=i();if(!Wv(d))return;const l=Ay(d).find((({id:e})=>e===a));if(!l)return void console.warn("Could not find remote client that provided updated metadata");const p=r(),u=Ay(p).find((({id:e})=>e===a));(c||(null==u?void 0:u.stickyReaction))&&(null==c?void 0:c.timestamp)!==(null===(n=null==u?void 0:u.stickyReaction)||void 0===n?void 0:n.timestamp)&&t(Ky(Hy({type:c?"remoteHandRaised":"remoteHandLowered",message:`${l.displayName} ${c?"raised":"lowered"} their hand`,props:{client:l,stickyReaction:c}})))}}),Pv([ub],(({dispatch:e,getState:t},r)=>{const i=t(),n=qy(i);["left","kicked"].includes(n)||("disconnected"===r?e(Ky(Hy({type:"signalTrouble",message:"Network connection lost. Trying to reconnect you...",props:{}}))):"connected"===r&&e(Ky(Hy({type:"signalOk",message:"Network connection available",props:{}}))))}));const Zy=Mt({name:"room",initialState:{isLocked:!1},reducers:{},extraReducers:e=>{e.addCase(Nv.roomJoined,((e,t)=>{const{error:r,isLocked:i}=t.payload;return r?e:Object.assign(Object.assign({},e),{isLocked:Boolean(i)})})),e.addCase(Nv.roomLocked,((e,t)=>{const{isLocked:r}=t.payload;return Object.assign(Object.assign({},e),{isLocked:Boolean(r)})}))}}),Yy=Cv((e=>Vv(e)),(e=>(t,r)=>{const i=r(),{socket:n}=lb(i);null==n||n.emit("set_lock",{locked:e.locked})})),Xy=Cv((e=>qv(e)),(e=>(t,r)=>{const i=r(),{socket:n}=lb(i);null==n||n.emit("kick_client",{clientId:e.clientId,reasonId:"kick"})})),e_=Cv((e=>Hv(e)),(e=>(t,r)=>{const i=r(),n=Ay(i).map((e=>e.id));if(n.length){const{socket:e}=lb(i);null==e||e.emit("kick_client",{clientIds:n,reasonId:"end-meeting"})}e.stayBehind||t(Ov())})),t_=We(Sy,Ay,((e,t)=>{const r=[];e&&r.push({id:e.id||"local-screenshare",participantId:"local",hasAudioTrack:e.getTracks().some((e=>"audio"===e.kind)),stream:e,isLocal:!0});for(const e of t)e.presentationStream&&r.push({id:e.presentationStream.id||`pres-${e.id}`,participantId:e.id,hasAudioTrack:e.presentationStream.getTracks().some((e=>"audio"===e.kind)),stream:e.presentationStream,isLocal:!1});return r})),r_=We(Sy,hy,Ay,((e,t,r)=>{const i=[];if(e){const r=!!e.getAudioTracks().length;i.push({clientId:t.id,displayName:"Your screenshare",id:"local-screenshare",isAudioEnabled:r,isLocalClient:!0,isPresentation:!0,isVideoEnabled:!0,stream:e})}for(const e of r){if("streamer"===e.roleName||Qy(e))continue;const{presentationStream:t}=e,r=Jv(e,["presentationStream"]),n=e.displayName||"Guest",s=t&&t.active,o="pres-"+e.id,a=e.stream&&e.stream.active,c=e.isVideoEnabled;i.push(Object.assign(Object.assign(Object.assign({},r),{clientId:e.id,displayName:n,hasActivePresentation:!!s}),e.isVideoEnabled?{isVideoEnabled:c}:{})),s&&i.push(Object.assign(Object.assign(Object.assign({},r),{clientId:e.id,stream:e.presentationStream,displayName:`Screenshare (${n})`,id:o,isPresentation:!0,isVideoEnabled:!0}),a&&{isRecording:null}))}return i})),i_=We(vy,r_,((e,t)=>[e,...t])),n_=e=>({emit:(t,r)=>{"rtc_manager_created"===t?e(b_(r)):"stream_added"===t?e(Ry.streamAdded(r)):"rtc_manager_destroyed"===t&&e(p_())}}),s_={dispatcherCreated:!1,error:null,isCreatingDispatcher:!1,reportedStreamResolutions:{},rtcManager:null,rtcManagerDispatcher:null,rtcManagerInitialized:!1,status:"inactive",isAcceptingStreams:!1},o_=Mt({name:"rtcConnection",initialState:s_,reducers:{isAcceptingStreams:(e,t)=>Object.assign(Object.assign({},e),{isAcceptingStreams:t.payload}),resolutionReported:(e,t)=>{const{streamId:r,width:i,height:n}=t.payload;return Object.assign(Object.assign({},e),{reportedStreamResolutions:Object.assign(Object.assign({},e.reportedStreamResolutions),{[r]:{width:i,height:n}})})},rtcDisconnected:()=>Object.assign({},s_),rtcDispatcherCreated:(e,t)=>Object.assign(Object.assign({},e),{dispatcherCreated:!0,rtcManagerDispatcher:t.payload}),rtcManagerCreated:(e,t)=>Object.assign(Object.assign({},e),{rtcManager:t.payload,status:"ready"}),rtcManagerDestroyed:e=>Object.assign(Object.assign({},e),{rtcManager:null}),rtcManagerInitialized:e=>Object.assign(Object.assign({},e),{rtcManagerInitialized:!0})},extraReducers:e=>{e.addCase(ob,(e=>Object.assign(Object.assign({},e),{status:"reconnecting"}))),e.addCase(Nv.roomJoined,(e=>Object.assign(Object.assign({},e),{status:"reconnecting"===e.status?"ready":e.status})))}}),{resolutionReported:a_,rtcDispatcherCreated:c_,rtcDisconnected:d_,rtcManagerCreated:l_,rtcManagerDestroyed:p_,rtcManagerInitialized:u_,isAcceptingStreams:h_}=o_.actions,m_=()=>(e,t)=>{const r=t(),i=lb(r).socket,n=__(r).rtcManagerDispatcher,s=Wb(r),o=Kb(r),a=Lv(r);if(n||!i)return;const c={getMediaConstraints:()=>({audio:o,video:s}),deferrable:e=>!e},d=new Sf({emitter:n_(e),serverSocket:i,webrtcProvider:c,features:{lowDataModeEnabled:!1,sfuServerOverrideHost:void 0,turnServerOverrideHost:void 0,useOnlyTURN:void 0,vp9On:!1,h264On:!1,simulcastScreenshareOn:!1,deviceHandlerFactory:a?ds.createFactory():void 0}});e(c_(d))},f_=()=>(e,t)=>{const{rtcManager:r}=__(t());r&&r.disconnectAll(),e(d_())},g_=e=>(t,r)=>{var i;t(h_(!0));const n=r(),s=__(n).rtcManager,o=Ay(n);if(!s)throw new Error("No rtc manager");const a=null===(i=s.shouldAcceptStreamsFromBothSides)||void 0===i?void 0:i.call(s),c=[];for(const{clientId:t,streamId:r,state:i}of e){if(o.find((e=>e.id===t))){if("to_accept"===i||"new_accept"===i&&a||"old_accept"===i&&!a)s.acceptNewStream({streamId:"0"===r?t:r,clientId:t,shouldAddLocalVideo:"0"===r,activeBreakout:false});else if("new_accept"===i||"old_accept"===i);else if("to_unaccept"===i)null==s||s.disconnect("0"===r?t:r,false);else if("done_accept"!==i)continue;c.push({clientId:t,streamId:r,state:i.replace(/to_|new_|old_/,"done_")})}}t(jy(c)),t(h_(!1))},v_=({streamId:e,width:t,height:r})=>(i,n)=>{const{reportedStreamResolutions:s,rtcManager:o}=__(n()),a=ey(n());if(!o||(null==a?void 0:a.id)===e)return;const c=s[e];c&&c.width===t&&c.height===r||o.updateStreamResolution(e,null,{width:t||1,height:r||1}),i(a_({streamId:e,width:t,height:r}))},b_=e=>t=>{const{rtcManager:r}=e;t(l_(r))},y_=()=>(e,t)=>{const r=ey(t()),i=__(t()).rtcManager,n=Wb(t()),s=Kb(t());r&&i&&i.addNewStream("0",r,!s,!n),e(u_())},__=e=>e.rtcConnection,w_=e=>e.rtcConnection.rtcManagerInitialized,S_=e=>e.rtcConnection.status;Tv({actionCreator:Bb.fulfilled,effect:({payload:e},{getState:t})=>{const{replacedTracks:r}=e,{rtcManager:i}=__(t()),n=ey(t());null==r||r.forEach((e=>{((e,t)=>{const r=null==n?void 0:n.getTracks().find((t=>t.kind===e));r&&(null==i||i.replaceTrack(t,r))})(e.kind,e)}))}}),Tv({actionCreator:_y.fulfilled,effect:({payload:e},{getState:t})=>{const{stream:r}=e,{rtcManager:i}=__(t());null==i||i.addNewStream(r.id,r,!1,!0)}}),Tv({actionCreator:yy,effect:({payload:e},{getState:t})=>{const{stream:r}=e,{rtcManager:i}=__(t());null==i||i.removeStream(r.id,r,null)}}),Tv({actionCreator:zb.fulfilled,effect:({payload:e},{getState:t})=>{var r;const i=ey(t()),{rtcManager:n}=__(t());if(i&&n){const t=(e,t)=>{const r=i.getTracks().find((t=>t.kind===e));return r&&n.replaceTrack(t,r)};null===(r=null==e?void 0:e.replacedTracks)||void 0===r||r.forEach((e=>{t(e.kind,e)}))}}});Pv([We((e=>e.rtcConnection.dispatcherCreated),(e=>e.rtcConnection.isCreatingDispatcher),hb,((e,t,r)=>!(e||t||!r)))],(({dispatch:e},t)=>{t&&e(m_())}));const C_=We((e=>e.rtcConnection.rtcManager),w_,Xb,((e,t,r)=>!("started"!==r||!e||t)));Pv([C_],(({dispatch:e},t)=>{t&&e(y_())}));Pv([We(S_,Dv,((e,t)=>!t&&!["inactive","disconnected"].includes(e)))],(({dispatch:e},t)=>{t&&e(f_())}));const R_=We(S_,Ay,((e,t)=>{if("ready"!==e)return[];const r=[];for(const e of t){const{streams:t,id:i,newJoiner:n}=e;for(let e=0;e<t.length;e++){let s=t[e].id,o=t[e].state;(null==t?void 0:t.length)>1&&"0"===t[1].id&&(0===e?(s=t[1].id,o=t[1].state):1===e&&(s=t[0].id,o=t[0].state)),"done_accept"!==o&&r.push({clientId:i,streamId:s,state:(n&&"0"===s?"new":"to")+"_accept"})}}return r}));Pv([R_,e=>e.rtcConnection.isAcceptingStreams],(({dispatch:e},t,r)=>{0<t.length&&!r&&e(g_(t))}));const T_={audioEnabled:{actions:[dy.fulfilled],rtcEventName:"audioEnabled",getValue:e=>Kb(e),getOutput:e=>({enabled:e})},videoEnabled:{actions:[ly.fulfilled],rtcEventName:"videoEnabled",getValue:e=>Wb(e),getOutput:e=>({enabled:e})},localStream:{actions:[Bb.fulfilled],rtcEventName:"localStream",getValue:e=>{var t;return null===(t=ey(e))||void 0===t?void 0:t.getTracks().map((e=>({id:e.id,kind:e.kind,label:e.label})))},getOutput:e=>({stream:e})},localScreenshareStream:{actions:[_y.fulfilled],rtcEventName:"localScreenshareStream",getValue:e=>{var t;return null===(t=Sy(e))||void 0===t?void 0:t.getTracks().map((e=>({id:e.id,kind:e.kind,label:e.label})))},getOutput:e=>({tracks:e})},localScreenshareStreamStopped:{actions:[yy],rtcEventName:"localScreenshareStream",getValue:()=>()=>null,getOutput:()=>({})},displayName:{actions:[cy],rtcEventName:"displayName",getValue:e=>xv(e),getOutput:e=>({displayName:e})},clientId:{actions:null,rtcEventName:"clientId",getValue:e=>my(e),getOutput:e=>({clientId:e})},deviceId:{actions:null,rtcEventName:"deviceId",getValue:e=>(e=>{var t,r;return null===(r=null===(t=e.deviceCredentials.data)||void 0===t?void 0:t.credentials)||void 0===r?void 0:r.uuid})(e),getOutput:e=>({deviceId:e})},externalId:{actions:null,rtcEventName:"externalId",getValue:e=>jv(e),getOutput:e=>({externalId:e})},organizationId:{actions:null,rtcEventName:"organizationId",getValue:e=>zy(e),getOutput:e=>({organizationId:e})},signalConnectionStatus:{actions:null,rtcEventName:"signalConnectionStatus",getValue:e=>ub(e),getOutput:e=>({status:e})},roomSessionId:{actions:[Nv.newClient,Nv.roomJoined,Nv.roomSessionEnded,Nv.clientLeft],rtcEventName:"roomSessionId",getValue:e=>(e=>{var t;return null===(t=e.roomConnection.session)||void 0===t?void 0:t.id})(e),getOutput:e=>({roomSessionId:e})},rtcConnectionStatus:{actions:null,rtcEventName:"rtcConnectionStatus",getValue:e=>S_(e),getOutput:e=>({status:e})},userRole:{actions:null,rtcEventName:"userRole",getValue:e=>$v(e),getOutput:e=>({userRole:e})}},P_=Object.values(T_).flatMap((({actions:e})=>{var t;return null!==(t=null==e?void 0:e.map((e=>e)))&&void 0!==t?t:null})).filter((e=>null!==e)),k_=e=>"object"==typeof e?JSON.stringify(e):e,O_=Mt({initialState:{reportedValues:{}},name:"rtcAnalytics",reducers:{updateReportedValues:(e,t)=>Object.assign(Object.assign({},e),{reportedValues:Object.assign(Object.assign({},e.reportedValues),{[t.payload.rtcEventName]:t.payload.value})})}}),E_=()=>(e,t)=>{const r=t(),i=__(r).rtcManager;i&&(i.sendStatsCustomEvent("insightsStats",{_time:Date.now(),ls:0,lr:0,bs:0,br:0,cpu:0}),Object.values(T_).forEach((({rtcEventName:t,getValue:n,getOutput:s})=>{var o;const a=n(r),c=Object.assign(Object.assign({},s(a)),{_time:Date.now()}),d=k_(a);(null===(o=r.rtcAnalytics.reportedValues)||void 0===o?void 0:o[t])!==d&&(i.sendStatsCustomEvent(t,c),e(D_({rtcEventName:t,value:a})))})))},{updateReportedValues:D_}=O_.actions;function I_({isPresentation:e,stream:t}){var r,i;return e?null!==(i=null!==(r=null==t?void 0:t.outboundId)&&void 0!==r?r:null==t?void 0:t.inboundId)&&void 0!==i?i:null==t?void 0:t.id:"0"}Tv({matcher:St(...P_),effect:({type:e},{getState:t,dispatch:r})=>{var i;const n=t(),s=__(n).rtcManager;if(!s)return;const o=Object.values(T_).find((({actions:t})=>null==t?void 0:t.map((e=>e.type)).includes(e)));if(!o)return;const{getValue:a,getOutput:c,rtcEventName:d}=o,l=a(n),p=k_(l),u=Object.assign(Object.assign({},c(l)),{_time:Date.now()});(null===(i=n.rtcAnalytics.reportedValues)||void 0===i?void 0:i[d])!==p&&(s.sendStatsCustomEvent(d,u),r(D_({rtcEventName:d,value:l})))}}),Pv([w_],(({dispatch:e},t)=>{t&&e(E_())}));const x_=Mt({name:"spotlights",initialState:{sorted:[]},reducers:{},extraReducers:e=>{e.addCase(Nv.roomJoined,((e,t)=>{if(!t.payload.room)return e;const{spotlights:r}=t.payload.room;return Object.assign(Object.assign({},e),{sorted:r})})),e.addCase(Nv.spotlightAdded,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return Object.assign(Object.assign({},e),{sorted:(n=e.sorted,s={clientId:r,streamId:i},n.find((e=>e.clientId===s.clientId&&e.streamId===s.streamId))?n:n.concat(s))});var n,s})),e.addCase(Nv.spotlightRemoved,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return Object.assign(Object.assign({},e),{sorted:e.sorted.filter((e=>!(e.clientId===r&&e.streamId===i)))})})),e.addMatcher(St(Nv.clientKicked,Nv.clientLeft),((e,t)=>{const{clientId:r}=t.payload;return Object.assign(Object.assign({},e),{sorted:e.sorted.filter((e=>e.clientId!==r))})}))}}),M_=Cv((e=>Kv(e)),(({id:e})=>(t,r)=>{const i=r(),n=i_(i).find((t=>t.clientId===e));if(!n)return;const{socket:s}=lb(i),o=I_(n),a={clientId:n.id,streamId:null!=o?o:"0"};null==s||s.emit("add_spotlight",a)})),j_=Cv((e=>Kv(e)),(({id:e})=>(t,r)=>{const i=r(),n=i_(i).find((t=>t.clientId===e));if(!n)return;const{socket:s}=lb(i),o=I_(n),a={clientId:n.id,streamId:null!=o?o:"0"};null==s||s.emit("remove_spotlight",a)})),L_=e=>e.spotlights.sorted;We(hy,L_,((e,t)=>function({spotlights:e,isPresentation:t,clientId:r,stream:i}){return!!e.find((e=>{const n=I_({isPresentation:t,stream:i});return e.clientId===r&&e.streamId===n}))}({clientId:e.id,stream:e.stream,spotlights:t})));const A_=We(i_,L_,((e,t)=>function(e,t){return e.reduce(((e,r)=>{const i=t.find((e=>r.clientId===e.clientId&&r.streamId===I_(e)));return i&&!e.includes(i)&&e.push(i),e}),[])}(t,e))),N_=Mt({name:"streaming",initialState:{isStreaming:!1,error:null,startedAt:void 0},reducers:{doHandleStreamingStarted:e=>Object.assign(Object.assign({},e),{isStreaming:!0,error:null,startedAt:(new Date).getTime()}),doHandleStreamingStopped:e=>Object.assign(Object.assign({},e),{isStreaming:!1})}});N_.actions;const B_=Mt({name:"waitingParticipants",initialState:{waitingParticipants:[]},reducers:{},extraReducers:e=>{e.addCase(Nv.roomJoined,((e,{payload:t})=>{var r;return(null===(r=t.room)||void 0===r?void 0:r.knockers.length)?Object.assign(Object.assign({},e),{waitingParticipants:t.room.knockers.map((e=>({id:e.clientId,displayName:e.displayName})))}):e})),e.addCase(Nv.roomKnocked,((e,t)=>{const{clientId:r,displayName:i}=t.payload;return Object.assign(Object.assign({},e),{waitingParticipants:[...e.waitingParticipants,{id:r,displayName:i}]})})),e.addCase(Nv.knockerLeft,((e,t)=>{const{clientId:r}=t.payload;return Object.assign(Object.assign({},e),{waitingParticipants:e.waitingParticipants.filter((e=>e.id!==r))})}))}}),F_=e=>(t,r)=>{const{participantId:i}=e,n=r(),s=hb(n);null==s||s.emit("handle_knock",{action:"accept",clientId:i,response:{}})},z_=e=>(t,r)=>{const{participantId:i}=e,n=r(),s=hb(n);null==s||s.emit("handle_knock",{action:"reject",clientId:i,response:{}})};const U_=null===!1&&!1,$_=U({app:kv.reducer,authorization:Fv.reducer,chat:fb.reducer,cloudRecording:vb.reducer,deviceCredentials:Zv.reducer,localMedia:Cb.reducer,localParticipant:ay.reducer,localScreenshare:by.reducer,notifications:Wy.reducer,organization:By.reducer,remoteParticipants:Iy.reducer,room:Zy.reducer,roomConnection:Uy.reducer,rtcAnalytics:O_.reducer,rtcConnection:o_.reducer,signalConnection:eb.reducer,spotlights:x_.reducer,streaming:N_.reducer,waitingParticipants:B_.reducer}),V_=(e,t)=>{var r;if(Ev.match(t)){const i={app:Object.assign(Object.assign({},kv.getInitialState()),{initialConfig:null===(r=null==e?void 0:e.app)||void 0===r?void 0:r.initialConfig}),localMedia:Object.assign(Object.assign({},Cb.getInitialState()),null==e?void 0:e.localMedia)};return $_(i,t)}return $_(e,t)};class G_{constructor(e={}){this.data=void 0===e.data?{}:e.data,this.headers=e.headers||{},this.status=e.status||200,this.statusText=e.statusText||"OK",this.url=e.url||null}}function q_(e,t){return kf.ok(e,`${t} is required`),e}function H_(e,t){return kf.ok("boolean"==typeof e,`${t}<boolean> is required`),e}function W_(e,t){return kf.ok("number"==typeof e,`${t}<number> is required`),e}function K_(e,t){return kf.ok("string"==typeof e,`${t}<string> is required`),e}function J_(e,t,r){const i=r||t.name[0].toLowerCase()+t.name.substring(1);return kf.ok(e instanceof t,`${i}<${t.name}> is required`),e}function Q_(e,t){return kf.ok(Array.isArray(e),`${t}<array> is required`),e}function Z_(e,t){if(null==e||"object"!=typeof e||Array.isArray(e))throw new Error(`${t} must be a record. ${JSON.stringify(e)}`);return e}function Y_(e,t,r){K_(t,"name"),function(e,t,r,i){K_(r,"name");const n=i||`${r} must be null or of type ${t}`;kf.ok(null===e||typeof e===t,n)}(e,"string",t,r)}function X_({baseUrl:e,url:t}){return e?e+t:t}class ew{constructor({baseUrl:e}){K_(e,"baseUrl"),this._baseUrl=e}_requestAxios(e,t){const r=Object.assign({},t,{url:e,baseURL:this._baseUrl});return wv.request(r)}request(e,t){return K_(e,"url"),kf.ok("/"===e[0],'url<String> only accepts relative URLs beginning with "/".'),kf.ok(t,"options are required"),this._requestAxios(e,t).then((e=>{const{data:t,headers:r,status:i,statusText:n,config:s}=e,o=s&&s.url?X_({baseUrl:s.baseURL,url:s.url}):null;return new G_({data:t,headers:r,status:i,statusText:n,url:o})})).catch((e=>{const t=e.response;if(!t)throw new Error("Could not make the request.");const{data:r,headers:i,status:n,statusText:s,config:o}=t,a=o&&o.url?X_({baseUrl:o.baseURL,url:o.url}):null;return Promise.reject(new G_({data:r,headers:i,status:n,statusText:s,url:a}))}))}}class tw{constructor({httpClient:e}){kf.ok(e,"httpClient is required"),this._httpClient=e}static dataToFormData(e){kf.ok(e,"data is required");const t=new FormData;return Object.keys(e).forEach((r=>{const i=e[r];t.append(r,i)})),t}request(e,t={}){const r=Object.assign(t.headers||{},{"Content-Type":void 0});return this._httpClient.request(e,Object.assign(t,{headers:r,transformRequest:tw.dataToFormData}))}}let rw;rw="object"==typeof window?window.btoa||Af:"object"==typeof global&&global.btoa||Af;const iw=()=>Promise.resolve(null);class nw{constructor({httpClient:e,fetchDeviceCredentials:t}){this._httpClient=e,this._fetchDeviceCredentials=t}request(e,t){return this._fetchDeviceCredentials().then((r=>{const i=Object.assign({},t.headers,function(e){if(e&&e.credentials){const t=`${e.credentials.uuid}:${e.hmac}`;return{Authorization:`Basic ${rw(t)}`}}return{}}(r),{"X-Appearin-Device-Platform":"web"}),n=Object.assign({},t,{headers:i});return this._httpClient.request(e,n)}))}}class sw{constructor({baseUrl:e="https://api.appearin.net",fetchDeviceCredentials:t=iw}={}){this.authenticatedHttpClient=new nw({httpClient:new ew({baseUrl:e}),fetchDeviceCredentials:t}),this.authenticatedFormDataHttpClient=new tw({httpClient:this.authenticatedHttpClient})}request(e,t){return K_(e,"url"),kf.ok("/"===e[0],'url<String> only accepts relative URLs beginning with "/".'),kf.ok(t,"options are required"),this.authenticatedHttpClient.request(e,t)}requestMultipart(e,t){return K_(e,"url"),kf.ok("/"===e[0],'url<String> only accepts relative URLs beginning with "/".'),kf.ok(t,"options are required"),this.authenticatedFormDataHttpClient.request(e,t)}}function ow(e,t){return K_(Z_(e,"data")[t],t)}const aw=(cw=ow,(e,t)=>{const r=Z_(e,"data")[t];return null==r?null:cw(e,t)});var cw;function dw(e,t,r){return function(e,t){return Q_(Z_(e,"data")[t],t)}(e,t).map((e=>r(e)))}class lw{constructor(e,t,r=void 0){this.credentials={uuid:e},this.hmac=t,this.userId=r}toJson(){return Object.assign({credentials:this.credentials,hmac:this.hmac},this.userId&&{userId:this.userId})}static fromJson(e){return new lw(ow(function(e,t){const r=Z_(e,"data")[t];return void 0===r?null:r}(e,"credentials"),"uuid"),ow(e,"hmac"),aw(e,"userId")||void 0)}}class pw{constructor({apiClient:e}){this._apiClient=e}getCredentials(){return this._apiClient.request("/devices",{method:"post"}).then((({data:e})=>lw.fromJson(e))).catch((e=>{if(e.response&&404===e.response.status)return null;throw e}))}}class uw{constructor(e,t){this._key=e,this._chromeStorage=t}loadOrDefault(e){return new Promise((t=>{this._chromeStorage.get(this._key,(r=>{t(r[this._key]||e)}))}))}save(e){return new Promise((t=>{this._chromeStorage.set({[this._key]:e},(()=>{t()}))}))}}class hw{constructor(e,t){q_(t,"localStorage"),this._key=K_(e,"key"),this._localStorage=t}loadOrDefault(e){try{const t=this._localStorage.getItem(this._key);if(t)try{return Promise.resolve(JSON.parse(t))}catch(e){}return Promise.resolve(e)}catch(t){return console.warn("Error getting access to storage. Are cookies blocked?",t),Promise.resolve(e)}}save(e){try{return this._localStorage.setItem(this._key,JSON.stringify(e)),Promise.resolve()}catch(e){return console.warn("Error getting access to storage. Are cookies blocked?",e),Promise.reject(e)}}}let mw;try{mw=self.localStorage}catch(tC){mw={getItem:()=>{},key:()=>{},setItem:()=>{},removeItem:()=>{},hasOwnProperty:()=>{},length:0}}var fw=mw;const gw="credentials_saved";class vw extends ur{constructor({deviceService:e,credentialsStore:t}){super(),this._deviceService=e,this._credentialsStore=t}static create({baseUrl:e,storeName:t="CredentialsStorage",storeType:r="localStorage"}){const i=new pw({apiClient:new sw({baseUrl:e})});let n=null;if("localStorage"===r)n=new hw(t,fw);else{if("chromeStorage"!==r)throw new Error(`Unknown store type: ${r}`);n=new uw(t,window.chrome.storage.local)}return new vw({deviceService:i,credentialsStore:n})}_fetchNewCredentialsFromApi(){const e=this._credentialsStore;return new Promise((t=>{const r=()=>{this._deviceService.getCredentials().then((r=>e.save(r?r.toJson():null).then((()=>t(r))))).catch((()=>{setTimeout(r,2e3)}))};r()}))}getCurrentCredentials(){return this._credentialsStore.loadOrDefault(null).then((e=>e?lw.fromJson(e):null))}getCredentials(){return this.credentialsPromise||(this.credentialsPromise=this.getCurrentCredentials().then((e=>e||this._fetchNewCredentialsFromApi()))),this.credentialsPromise}saveCredentials(e){return this.credentialsPromise=void 0,this._credentialsStore.save(e.toJson()).then((()=>(this.emit(gw,e),e)))}setUserId(e){return this.getCurrentCredentials().then((t=>{t||console.error("Illegal state: no credentials to set user id for.");if(null===t||t.userId!==e)return this._credentialsStore.save(Object.assign({},null==t?void 0:t.toJson(),{userId:e}))})).then((()=>{}))}}class bw{constructor({isExhausted:e,renewsAt:t,totalMinutesLimit:r,totalMinutesUsed:i}){this.isExhausted=e,this.renewsAt=t,this.totalMinutesLimit=r,this.totalMinutesUsed=i}static fromJson(e){return new bw({isExhausted:H_(e.isExhausted,"isExhausted"),renewsAt:new Date(K_(e.renewsAt,"renewsAt")),totalMinutesLimit:W_(e.totalMinutesLimit,"totalMinutesLimit"),totalMinutesUsed:W_(e.totalMinutesUsed,"totalMinutesUsed")})}}class yw{constructor({basePlanId:e,embeddedFreeTierStatus:t,isDeactivated:r,isOnTrial:i,onTrialUntil:n,trialStatus:s}){this.basePlanId=e,this.isDeactivated=r,this.isOnTrial=i,this.onTrialUntil=n||null,this.trialStatus=s||null,this.embeddedFreeTierStatus=t||null}static fromJson(e){return new yw({basePlanId:"string"==typeof e.basePlanId?e.basePlanId:null,isDeactivated:H_(e.isDeactivated,"isDeactivated"),isOnTrial:H_(e.isOnTrial,"isOnTrial"),onTrialUntil:"string"==typeof e.onTrialUntil?new Date(e.onTrialUntil):null,trialStatus:"string"==typeof e.trialStatus?e.trialStatus:null,embeddedFreeTierStatus:e.embeddedFreeTierStatus?bw.fromJson(e.embeddedFreeTierStatus):null})}}function _w(e){return null!=e}function ww(e={}){return{maxNumberOfInvitationsAndUsers:_w(null==e?void 0:e.maxNumberOfInvitationsAndUsers)?Number(null==e?void 0:e.maxNumberOfInvitationsAndUsers):null,maxNumberOfClaimedRooms:_w(null==e?void 0:e.maxNumberOfClaimedRooms)?Number(null==e?void 0:e.maxNumberOfClaimedRooms):null,maxRoomLimitPerOrganization:_w(null==e?void 0:e.maxRoomLimitPerOrganization)?Number(null==e?void 0:e.maxRoomLimitPerOrganization):null,trialMinutesLimit:_w(null==e?void 0:e.trialMinutesLimit)?Number(null==e?void 0:e.trialMinutesLimit):null,includedUnits:_w(null==e?void 0:e.includedUnits)?Number(null==e?void 0:e.includedUnits):null}}class Sw{constructor(e){this.logoImageUrl=null,this.roomBackgroundImageUrl=null,this.roomBackgroundThumbnailUrl=null,this.roomKnockPageBackgroundImageUrl=null,this.roomKnockPageBackgroundThumbnailUrl=null,this.preferences=null,this.onboardingSurvey=null,this.type=null,J_(e,Object,"properties"),K_(e.organizationId,"organizationId"),K_(e.organizationName,"organizationName"),K_(e.subdomain,"subdomain"),J_(e.permissions,Object,"permissions"),J_(e.limits,Object,"limits"),this.organizationId=e.organizationId,this.organizationName=e.organizationName,this.subdomain=e.subdomain,this.permissions=e.permissions,this.limits=e.limits,this.account=e.account?new yw(e.account):null,this.logoImageUrl=e.logoImageUrl,this.roomBackgroundImageUrl=e.roomBackgroundImageUrl,this.roomBackgroundThumbnailUrl=e.roomBackgroundThumbnailUrl,this.roomKnockPageBackgroundImageUrl=e.roomKnockPageBackgroundImageUrl,this.roomKnockPageBackgroundThumbnailUrl=e.roomKnockPageBackgroundThumbnailUrl,this.preferences=e.preferences,this.onboardingSurvey=e.onboardingSurvey,this.type=e.type}static fromJson(e){const t=J_(e,Object,"data"),r=(null==t?void 0:t.preferences)||{},i=(null==t?void 0:t.onboardingSurvey)||null,n=J_(t.permissions,Object,"permissions");return new Sw({organizationId:K_(t.organizationId,"organizationId"),organizationName:K_(t.organizationName,"organizationName"),subdomain:K_(t.subdomain,"subdomain"),permissions:n,limits:ww(J_(t.limits,Object,"limits")),account:t.account?yw.fromJson(t.account):null,logoImageUrl:"string"==typeof t.logoImageUrl?t.logoImageUrl:null,roomBackgroundImageUrl:"string"==typeof t.roomBackgroundImageUrl?t.roomBackgroundImageUrl:null,roomBackgroundThumbnailUrl:"string"==typeof t.roomBackgroundThumbnailUrl?t.roomBackgroundThumbnailUrl:null,roomKnockPageBackgroundImageUrl:"string"==typeof t.roomKnockPageBackgroundImageUrl?t.roomKnockPageBackgroundImageUrl:null,roomKnockPageBackgroundThumbnailUrl:"string"==typeof t.roomKnockPageBackgroundThumbnailUrl?t.roomKnockPageBackgroundThumbnailUrl:null,preferences:r,onboardingSurvey:i,type:"string"==typeof t.type?t.type:null})}}Sw.GLOBAL_ORGANIZATION_ID="1";class Cw{constructor({apiClient:e}){this._apiClient=e}createOrganization({organizationName:e,subdomain:t,owner:r}){const{displayName:i,consents:n}=r||{},s="email"in r?{value:r.email,verificationCode:K_(r.verificationCode,"owner.verificationCode")}:null,o="idToken"in r?r.idToken:null;if(K_(t,"subdomain"),K_(e,"organizationName"),K_(i,"owner.displayName"),kf.ok(s||o,"owner.email or owner.idToken is required"),n){Q_(n,"consents");for(const{consentRevisionId:e,action:t}of n)K_(e,"consentRevisionId"),Y_(t,"action")}return this._apiClient.request("/organizations",{method:"POST",data:{organizationName:e,type:"private",subdomain:t,owner:Object.assign(Object.assign(Object.assign(Object.assign({},s&&{email:s}),o&&{idToken:o}),n&&{consents:n}),{displayName:i})}}).then((({data:e})=>ow(e,"organizationId")))}getOrganizationBySubdomain(e){return K_(e,"subdomain"),this._apiClient.request(`/organization-subdomains/${encodeURIComponent(e)}/?fields=permissions,account,onboardingSurvey`,{method:"GET"}).then((({data:e})=>Sw.fromJson(e))).catch((e=>{if(e instanceof G_){if(404===e.status)return null;throw new Error(e.statusText)}throw e}))}getOrganizationByOrganizationId(e){return K_(e,"organizationId"),this._apiClient.request(`/organizations/${encodeURIComponent(e)}?fields=permissions,account`,{method:"GET"}).then((({data:e})=>Sw.fromJson(e))).catch((e=>{if(e instanceof G_){if(404===e.status)return null;throw new Error(e.statusText)}throw e}))}getOrganizationsByContactPoint(e){const{code:t}=e,r="email"in e?e.email:null,i="phoneNumber"in e?e.phoneNumber:null;kf.ok((r||i)&&!(r&&i),"either email or phoneNumber is required"),K_(t,"code");const n=r?{type:"email",value:r}:{type:"phoneNumber",value:i};return this._apiClient.request("/organization-queries",{method:"POST",data:{contactPoint:n,code:t}}).then((({data:e})=>dw(e,"organizations",(e=>Sw.fromJson(e)))))}getOrganizationsByIdToken({idToken:e}){return K_(e,"idToken"),this._apiClient.request("/organization-queries",{method:"POST",data:{idToken:e}}).then((({data:e})=>dw(e,"organizations",(e=>Sw.fromJson(Object.assign({permissions:{},limits:{}},Z_(e,"organization")))))))}getOrganizationsByLoggedInUser(){return this._apiClient.request("/user/organizations",{method:"GET"}).then((({data:e})=>dw(e,"organizations",(e=>Sw.fromJson(Object.assign({permissions:{},limits:{}},Z_(e,"organization")))))))}getSubdomainAvailability(e){return K_(e,"subdomain"),this._apiClient.request(`/organization-subdomains/${encodeURIComponent(e)}/availability`,{method:"GET"}).then((({data:e})=>(J_(e,Object,"data"),{status:ow(e,"status")})))}updatePreferences({organizationId:e,preferences:t}){return q_(e,"organizationId"),q_(t,"preferences"),this._apiClient.request(`/organizations/${encodeURIComponent(e)}/preferences`,{method:"PATCH",data:t}).then((()=>{}))}deleteOrganization({organizationId:e}){return q_(e,"organizationId"),this._apiClient.request(`/organizations/${encodeURIComponent(e)}`,{method:"DELETE"}).then((()=>{}))}}class Rw{constructor({organizationService:e,subdomain:t}){this._organizationService=e,this._subdomain=t,this._organizationPromise=null}initOrganization(){return this.fetchOrganization().then((()=>{}))}fetchOrganization(){return this._organizationPromise||(this._organizationPromise=this._organizationService.getOrganizationBySubdomain(this._subdomain)),this._organizationPromise}}const Tw="https://api.whereby.dev";function Pw(e,t){var r={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(r[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(i=Object.getOwnPropertySymbols(e);n<i.length;n++)t.indexOf(i[n])<0&&Object.prototype.propertyIsEnumerable.call(e,i[n])&&(r[i[n]]=e[i[n]])}return r}"function"==typeof SuppressedError&&SuppressedError;const kw=x.withTypes(),Ow=S.withTypes(),Ew=n.forwardRef(((e,t)=>{var{muted:r,mirror:i=!1,stream:s,onVideoResize:o}=e,a=Pw(e,["muted","mirror","stream","onVideoResize"]);const c=kw(),d=Ow(Hb),l=n.useRef(null),p=n.useRef(null);return n.useImperativeHandle(t,(()=>Object.assign(l.current,{captureAspectRatio:()=>{if(!l.current)return null;const e=l.current.clientHeight,t=l.current.clientWidth;return t&&e&&t+e>20?t/e:null}}))),n.useEffect((()=>{if(!l.current)return;const e=new ResizeObserver(Sb((()=>{if(l.current&&(null==s?void 0:s.id)){const e=l.current.clientWidth,t=l.current.clientHeight;c(v_({streamId:s.id,width:e,height:t})),o&&o({width:e,height:t,stream:s})}}),{delay:1e3,edges:!0}));return e.observe(l.current),()=>{e.disconnect()}}),[s]),n.useEffect((()=>{l.current&&(l.current.srcObject!==s&&(l.current.srcObject=s),l.current.muted!==r&&(l.current.muted=Boolean(r)))}),[r,s,l]),n.useEffect((()=>{p.current&&!r&&s&&d&&(p.current.srcObject!==s&&(p.current.srcObject=s),p.current.setSinkId&&p.current.setSinkId(d))}),[s,p,d,r]),n.createElement(n.Fragment,null,n.createElement("video",Object.assign({ref:l,autoPlay:!0,playsInline:!0},a,{style:Object.assign({transform:i?"scaleX(-1)":"none",width:"100%",height:"100%"},a.style)})),n.createElement("audio",{ref:p,autoPlay:!0,playsInline:!0}))}));Ew.displayName="VideoView";const Dw=We((e=>e.chat.chatMessages),(e=>e.cloudRecording),hy,ey,Ay,t_,qy,(e=>e.streaming),(e=>e.waitingParticipants.waitingParticipants),Jy,A_,((e,t,r,i,n,s,o,a,c,d,l)=>({chatMessages:e,cloudRecording:t.isRecording?{status:"recording"}:void 0,connectionStatus:o,events:d,liveStream:a.isStreaming?{status:"streaming",startedAt:a.startedAt}:void 0,localScreenshareStatus:r.isScreenSharing?"active":void 0,localParticipant:Object.assign(Object.assign({},r),{stream:i}),remoteParticipants:n,screenshares:s,waitingParticipants:c,spotlightedParticipants:l}))),Iw={localMediaOptions:{audio:!0,video:!0}};const xw=We((e=>e.localMedia.cameraDeviceError),ny,Gb,qb,Hb,(e=>e.localMedia.isSettingCameraDevice),(e=>e.localMedia.isSettingMicrophoneDevice),iy,ey,(e=>e.localMedia.microphoneDeviceError),sy,oy,(e=>e.localMedia.startError),((e,t,r,i,n,s,o,a,c,d,l,p,u)=>({cameraDeviceError:e,cameraDevices:t,currentCameraDeviceId:r,currentMicrophoneDeviceId:i,currentSpeakerDeviceId:n,isSettingCameraDevice:s,isSettingMicrophoneDevice:o,isStarting:a,localStream:c,microphoneDeviceError:d,microphoneDevices:l,speakerDevices:p,startError:u})));var Mw={MIN_WINDOW_HEIGHT:320,MIN_WINDOW_WIDTH:320,DESKTOP_BREAKPOINT:1025,TABLET_BREAKPOINT:750,PHONE_BREAKPOINT:500,TOP_TOOLBAR_HEIGHT:56,BOTTOM_TOOLBAR_HEIGHT:82,SIDEBAR_WIDTH:375,VIDEO_CONTROLS_MIN_WIDTH:420,ROOM_FOOTER_MIN_WIDTH:600,FLOATING_VIDEO_CONTROLS_BOTTOM_MARGIN:20,WATERMARK_BAR_HEIGHT:32,BREAKOUT_STAGE_BACKDROP_HEADER_HEIGHT:28,BREAKOUT_STAGE_BACKDROP_FOOTER_HEIGHT:56,SUBGRID_EMPTY_STAGE_MAX_WIDTH:800,GROUPS_CELL_MARGIN:8,GROUPS_CELL_PADDING:12,GROUPS_CELL_NAV_HEIGHT:56,GROUPS_CELL_AVATAR_WRAPPER_BOTTOM_MARGIN:8,GROUPS_CELL_AVATAR_GRID_GAP:8,GROUPS_CELL_MIN_WIDTH:360,GROUPS_CELL_MAX_WIDTH:600,GROUPS_ROW_HEIGHT:72,GROUPS_ROW_GAP:1,FOLDABLE_SCREEN_STAGE_PADDING:8};function jw({top:e=0,left:t=0}={}){return{top:e,left:t}}function Lw({width:e=0,height:t=0}={}){return{width:Math.max(e,0),height:Math.max(t,0)}}function Aw({top:e=0,left:t=0,width:r=0,height:i=0}={}){return{bounds:Lw({width:r,height:i}),origin:jw({top:e,left:t})}}function Nw({top:e=0,left:t=0,bottom:r=0,right:i=0}={}){return{top:e,left:t,bottom:r,right:i}}function Bw(e){return!!e&&!(e.width<=0||e.height<=0)}function Fw(e,t){const{width:r,height:i}=t,n=i,s=n*e,o=Math.min(r/s,i/n);return{width:s*o,height:n*o}}const zw=({vertical:e,width:t,height:r,count:i,aspectRatio:n})=>{const s=[1,2,3].map((s=>(({width:e,height:t,rows:r,cols:i,aspectRatio:n})=>{const s=Fw(n,{width:e/i,height:t/r});return Math.round(s.width*s.height)})({width:t,height:r,rows:e?Math.ceil(i/s):s,cols:e?s:Math.ceil(i/s),aspectRatio:n}))),o=Math.max(...s);return{splits:s.indexOf(o)+1,weight:o}},Uw=({width:e,height:t,count:r,aspectRatio:i})=>{const n=zw({vertical:!0,width:e,height:t,count:r,aspectRatio:i}),s=zw({vertical:!1,width:e,height:t,count:r,aspectRatio:i});return n.weight>s.weight?{splits:n.splits,vertical:!0}:{splits:s.splits,vertical:!1}};function $w(e){var{aspectRatio:t,children:r,className:i,height:s,style:o,width:a,withRoundedCorners:c=!1,withShadow:d=!0}=e,l=Pw(e,["aspectRatio","children","className","height","style","width","withRoundedCorners","withShadow"]);let p=a,u=s,h=0,m=0;t&&(({width:p,height:u}=Fw(t,{width:a,height:s})),h=(a-p)/2,m=(s-u)/2);const f=Object.assign({width:`${Math.round(p)}px`,height:`${Math.round(u)}px`},h||m?{transform:`translate3d(${Math.round(h)}px, ${Math.round(m)}px, 0)`}:{});return n.createElement("div",{className:i,style:Object.assign({position:"absolute",top:0,left:0},o)},n.createElement("div",Object.assign({style:f},l),n.cloneElement(r,{contentWidth:p,contentHeight:u,withRoundedCorners:c,withShadow:d})))}function Vw({origin:e,bounds:t}){return{top:Math.round(e.top),left:Math.round(e.left),height:Math.round(t.height),width:Math.round(t.width)}}function Gw({cell:e,child:t,clientId:r,style:i={},withRoundedCorners:s=!1,withShadow:o=!1}){const a=!Bw(e.bounds);return n.createElement($w,{width:e.bounds.width,height:e.bounds.height,aspectRatio:e.aspectRatio,style:a?{width:0,height:0}:i,withRoundedCorners:s,withShadow:o,key:r},t)}function qw({debug:e=!1,featureRoundedCornersOff:t=!1,gridContent:r=[],isConstrained:i=!1,layoutOverflowBackdropFrame:s=Aw(),layoutVideoStage:o,presentationGridContent:a=[],subgridContent:c=[]}){const d=!t&&!i,l=[];return r.length&&l.push(...function({content:e,isConstrained:t,stageLayout:r,withRoundedCorners:i,withShadow:s}){var o;const a=(null===(o=r.videoGrid)||void 0===o?void 0:o.cells)||[],c=e.map(((e,o)=>{var c,d;if(!r.videoGrid)return null;const l=a[o],p={top:r.videoGrid.origin.top+r.videoGrid.paddings.top+l.origin.top,left:r.videoGrid.origin.left+r.videoGrid.paddings.left+l.origin.left},u={width:Math.round(l.bounds.width),height:Math.round(l.bounds.height),transform:`translate3d(${Math.round(p.left)}px, ${Math.round(p.top)}px, 0)`},h=null===(d=null===(c=null==e?void 0:e.props)||void 0===c?void 0:c.participant)||void 0===d?void 0:d.id;return Gw({cell:l,child:n.cloneElement(e,{isSmallCell:l.isSmallCell,isZoomedByDefault:!!t&&!(null==e?void 0:e.props.participant.isPresentation),canZoom:!!t,key:h||`video-${o}`}),clientId:h||`video-${o}`,withRoundedCorners:i,style:u,withShadow:s})}));return c}({content:r,isConstrained:i,stageLayout:o,withRoundedCorners:d,withShadow:!i})),a.length&&l.push(...function({content:e,isConstrained:t,stageLayout:r,withRoundedCorners:i,withShadow:s}){var o;const a=(null===(o=r.presentationGrid)||void 0===o?void 0:o.cells)||[];return e.map(((e,o)=>{var c,d;if(!r.presentationGrid)return null;const l=a[o],p={top:r.presentationGrid.origin.top+r.presentationGrid.paddings.top+l.origin.top,left:r.presentationGrid.origin.left+r.presentationGrid.paddings.left+l.origin.left},u={width:Math.round(l.bounds.width),height:Math.round(l.bounds.height),transform:`translate3d(${Math.round(p.left)}px, ${Math.round(p.top)}px, 0)`},h=null===(d=null===(c=null==e?void 0:e.props)||void 0===c?void 0:c.participant)||void 0===d?void 0:d.id;return Gw({cell:l,child:n.cloneElement(e,{isSmallCell:l.isSmallCell,isZoomedByDefault:!!t&&!(null==e?void 0:e.props.participant.isPresentation),canZoom:!!t,key:h||`presentation-${o}`}),clientId:h||`presentation-${o}`,style:u,withRoundedCorners:i,withShadow:s})}))}({content:a,isConstrained:i,stageLayout:o,withRoundedCorners:d,withShadow:!i})),c.length&&l.push(...function({content:e,stageLayout:t,withRoundedCorners:r,withShadow:i}){const s=t.subgrid.cells;return e.map(((e,o)=>{var a,c,d,l;const p=s[o],u={height:Math.round(p.bounds.height),width:Math.round(p.bounds.width),transform:""},h={top:t.subgrid.origin.top+p.origin.top,left:t.subgrid.origin.left+p.origin.left};u.transform=`translate3d(${Math.round(h.left)}px, ${Math.round(h.top)}px, 0)`;const m=null===(c=null===(a=null==e?void 0:e.props)||void 0===a?void 0:a.participant)||void 0===c?void 0:c.id,f=(null===(d=p.paddings)||void 0===d?void 0:d.left)||0,g=(null===(l=p.paddings)||void 0===l?void 0:l.right)||0;return Gw({cell:p,child:n.cloneElement(e,{avatarSize:p.bounds.width-f-g,canZoom:!1,cellPaddings:p.paddings,isSmallCell:p.isSmallCell,isZoomedByDefault:!1,key:m||`subgrid-${o}`,style:u}),clientId:m||`subgrid-${o}`,style:u,withRoundedCorners:r,withShadow:i})}))}({content:c,stageLayout:o,withRoundedCorners:!t,withShadow:!0})),n.createElement("div",{key:"video-stage-layout",style:{width:"100%",height:"100%",position:"relative"}},Bw(s.bounds)&&n.createElement("div",{style:Vw(s)}),l,e&&n.createElement(n.Fragment,null))}const Hw=16/9,Ww=4/3,Kw=({value:e,min:t,max:r})=>Math.min(Math.max(e,t),r);function Jw({choices:e=[]}){const t=Math.min(...e),r=Math.max(...e);let i=null;if(t===r)i=t;else{const t=function(...e){return new Set(e).size!==e.length}(e)?(n=e).sort(((e,t)=>n.filter((t=>t===e)).length-n.filter((e=>e===t)).length)).pop():r;i=Kw({value:t||r,min:Ww,max:Hw})}var n;return{minAr:t,maxAr:r,chosenAr:i}}function Qw({width:e,height:t,cellCount:r,gridGap:i,cellAspectRatios:n=[Ww],paddings:s=Nw()}){if(!r)return{cellCount:r,cellHeight:0,cellWidth:0,cols:0,rows:0,extraHorizontalPadding:0,extraVerticalPadding:0,gridGap:i,paddings:s};const o=e-(s.left+s.right),a=t-(s.top+s.bottom),c=Jw({choices:n});let d=c.chosenAr;const{rows:l,cols:p}=function({count:e,width:t,height:r,aspectRatio:i}){if(e<=1)return{rows:1,cols:1};const{splits:n,vertical:s}=Uw({width:t,height:r,count:e,aspectRatio:i});return s?{rows:Math.ceil(e/n),cols:n}:{rows:n,cols:Math.ceil(e/n)}}({count:r,width:o,height:a,aspectRatio:d});1===l?d=Kw({value:o/p/a,min:Math.min(c.chosenAr,c.maxAr),max:Math.max(c.chosenAr,c.maxAr)}):1===p&&(d=Kw({value:o/(a/l),min:Math.min(c.chosenAr,c.maxAr),max:Math.max(c.chosenAr,c.maxAr)}));const{cellWidth:u,cellHeight:h,extraHorizontalPadding:m,extraVerticalPadding:f}=function({width:e,height:t,rows:r,cols:i,gridGap:n,aspectRatio:s}){const o=(e-(i-1)*n)/i,a=(t-(r-1)*n)/r,c=o/a;let d=0,l=0;return s<c?d=o-a*s:s>c&&(l=a-o/s),{cellWidth:o-d,cellHeight:a-l,extraHorizontalPadding:d*i/2,extraVerticalPadding:l*r/2}}({width:o,height:a,rows:l,cols:p,gridGap:i,aspectRatio:d});return{cellCount:r,cellHeight:h,cellWidth:u,cols:p,rows:l,extraHorizontalPadding:m,extraVerticalPadding:f,gridGap:i,paddings:s}}function Zw({containerBounds:e,isPortrait:t,cellCount:r,cellBounds:i,paddings:n=Nw()}){let s=0,o=0,a=0,c=0,d=0,l=0;const p=e.width-n.left-n.right,u=e.height-n.top-n.bottom;return r&&(t?(c=Math.floor(p/i.width),a=Math.ceil(r/c),s=p,o=a*i.height,d=(p-c*i.width)/2):(a=Math.floor(u/i.height),c=Math.ceil(r/a),s=c*i.width,o=u,l=(u-a*i.height)/2)),{isPortrait:t,width:s+n.left+n.right,height:o+n.top+n.bottom,cellBounds:i,cellCount:r,rows:a,cols:c,extraHorizontalPadding:d,extraVerticalPadding:l,paddings:n}}const{BOTTOM_TOOLBAR_HEIGHT:Yw,VIDEO_CONTROLS_MIN_WIDTH:Xw,TABLET_BREAKPOINT:eS,SUBGRID_EMPTY_STAGE_MAX_WIDTH:tS}=Mw,rS=200,iS=300,nS=200,sS=20,oS=12,aS=Nw({top:4,bottom:28,left:8,right:8});function cS({hasOverflow:e,hasStage:t}){return e&&t?[80]:[80,60]}function dS({cellCount:e}){const t=e<=6;return Lw({width:t?iS-50:iS,height:t?rS-50:rS})}function lS({containerBounds:e,isPortrait:t,cellCount:r,cellSizeOptions:i,cellPaddings:n,paddings:s}){const o=function({containerBounds:e,isPortrait:t,cellCount:r,cellSizeOptions:i,cellPaddings:n,paddings:s}){let o;for(let a=0;a<i.length;a++){const c=i[a];if(o=Zw({containerBounds:e,isPortrait:t,cellCount:r,cellBounds:Lw({width:c+n.left+n.right,height:c+n.top+n.bottom}),paddings:s}),o.width<=e.width&&o.height<=e.height)return o}return o}({containerBounds:e,isPortrait:t,cellCount:r,cellSizeOptions:i,cellPaddings:n,paddings:s}),a=o.cellBounds.width-n.left-n.right===i[i.length-1],c=Lw({width:Math.min(o.width,e.width),height:Math.min(o.height,e.height)}),d=Lw({width:o.width,height:o.height});return 0===r?{bounds:c,contentBounds:d,videoCells:[]}:{bounds:c,contentBounds:d,videoCells:[...Array(r)].map(((e,t)=>{const{top:r,left:i,width:s,height:c}=function({index:e,layout:t}){const{isPortrait:r,rows:i,cols:n,cellCount:s,cellBounds:o,extraHorizontalPadding:a,extraVerticalPadding:c,paddings:d}=t,l=r?Math.floor(e/n):Math.floor(e%i),p=r?Math.floor(e%n):Math.floor(e/i),u=function({index:e,isPortrait:t,rows:r,cols:i,cellBounds:n,cellCount:s}){const o=r*i,a=o-s;if(!a)return 0;const c=o-a-1;return e<c-((t?i:r)-a)+1||e>c?0:a*(t?n.width:n.height)/2}({index:e,isPortrait:r,rows:i,cols:n,cellBounds:o,cellCount:s});return{top:d.top+c+l*o.height+(r?0:u),left:d.left+a+p*o.width+(r?u:0),width:o.width,height:o.height}}({index:t,layout:o});return{origin:jw({top:r,left:i}),bounds:Lw({width:s,height:c}),paddings:n,isSmallCell:a}}))}}function pS({cellPaddings:e,cellSizeOptions:t,containerBounds:r,containerOrigin:i,gridGap:n,hasConstrainedOverflow:s,hasPresentationContent:o,hasVideoContent:a,isConstrained:c,isMaximizeMode:d,isPortrait:l,isSmallScreen:p,maxGridWidth:u,shouldOverflowSubgrid:h,subgridVideos:m}){const{width:f,height:g}=r,v=o||a,b=m.length>0;if(!b&&!v)return{isPortrait:l,videosContainer:Aw(),subgrid:Object.assign(Object.assign({},Aw()),{contentBounds:Lw(),cells:[]}),hasOverflow:!1};if(!b)return{isPortrait:l,videosContainer:Aw(Object.assign(Object.assign({},r),i)),subgrid:Object.assign(Object.assign({},Aw()),{contentBounds:Lw(),cells:[]}),hasOverflow:s};const y=h?sS:0;let _=null;if(v)if(h){const i=t[0];let n=d?Yw:Yw+e.top+(c||p?i/2:i)+e.bottom;r.height-n<rS&&(n=0),_=Lw({width:r.width,height:n})}else _=Lw(d?{width:r.width,height:t[0]+e.top+e.bottom}:l?{width:r.width,height:r.height/2}:{width:r.width/2,height:r.height});else _=Lw({width:Math.min(tS,r.width),height:r.height});let w=0;_.width>u&&(w=(_.width-u)/2);const S=lS({containerBounds:_,isPortrait:l,cellCount:m.length,cellSizeOptions:t,cellPaddings:e,paddings:Nw({top:y,left:w,right:w})}),C=Lw({width:S.contentBounds.width-_.width,height:S.contentBounds.height-_.height}),R=C.width>0||C.height>0;let T,P=null;P=!v||h||R?S.contentBounds:S.bounds;let k=P;v?(k=Lw(h?{width:0,height:_.height+y+n}:l?{width:0,height:S.bounds.height+n}:{width:S.bounds.width+n,height:0}),T=function({bounds:e,fromBounds:t}){return{width:Math.max(t.width-e.width,0),height:Math.max(t.height-e.height,0)}}({bounds:k,fromBounds:r})):T=Lw();const O=Object.assign({},i);let E;return E=jw(v?{top:l?Math.max(i.top+g-k.height+n,0):i.top,left:l?i.left:Math.max(i.left+f-P.width,0)}:{top:i.top+Math.max(0,(g-P.height)/2),left:i.left+Math.max(0,(f-P.width)/2)}),{isPortrait:l,videosContainer:Aw(Object.assign(Object.assign({},T),O)),subgrid:Object.assign(Object.assign({},Aw(Object.assign(Object.assign({},P),E))),{cells:S.videoCells.map(((e,t)=>{var r,i;return Object.assign({aspectRatio:(null===(r=m[t])||void 0===r?void 0:r.aspectRatio)||1,type:"video",clientId:null===(i=m[t])||void 0===i?void 0:i.clientId},e)})),contentBounds:S.contentBounds}),hasOverflow:R||h||s,overflowNeedBounds:h?Lw():C}}function uS({containerBounds:e,containerOrigin:t,gridGap:r,supersizedContentAspectRatio:i,hasPresentationContent:n,hasPresentationGrid:s,hasVideoContent:o,minGridBounds:a}){const{width:c,height:d}=e;let l=c<=d,p=Lw(),u=jw(),h=o?Object.assign({},e):Lw(),m=o?Object.assign({},t):jw();if(n){const n=function({bounds:e,aspectRatio:t,minGridContainerBounds:r,hasPresentationGrid:i}){const{width:n,height:s}=e;if(!(r.width>0))return{isPortrait:n<=s,supersizedContentBounds:e};const o=Math.round(n/2),a=Math.round(s/2),c=Math.max(n-r.width,0),d=Math.max(s-r.height,0);let l=c<=d,p=0,u=0;if(t){const e=Fw(t,{width:c,height:s}),r=Fw(t,{width:n,height:d});if(l=t<=1?r.height>e.height:r.width>e.width,l){const e=d-Math.max(r.height,a);u=Math.max(e,0)}else{const t=c-Math.max(e.width,o);p=Math.max(t,0)}}else i&&(l=c/d>=5);return{isPortrait:l,supersizedContentBounds:{width:l?n:c-p,height:l?d-u:s}}}({bounds:e,aspectRatio:i||1,minGridContainerBounds:Lw({width:o?a.width+r:0,height:o?a.height+r:0}),hasPresentationGrid:s});l=n.isPortrait,p=n.supersizedContentBounds,u=Object.assign({},t),o&&(h=Lw({width:l?e.width:e.width-p.width-r,height:l?e.height-p.height-r:e.height}),m=jw({top:l?t.top+p.height+r:t.top,left:l?t.left:t.left+p.width+r}))}return{isPortrait:l,presentationGrid:Object.assign({},Aw(Object.assign(Object.assign({},p),u))),videoGrid:Aw(Object.assign(Object.assign({},h),m))}}function hS({containerBounds:e,paddings:t=Nw(),videos:r,isConstrained:i,maxGridWidth:n,gridGap:s}){const{width:o,height:a}=e,c=n?Math.min(o,n):o,d=r.length;let l=null;const p=r.map((e=>e.aspectRatio||1)),u=dS({cellCount:d}),h=Qw({width:c,height:a,cellCount:d,gridGap:s,cellAspectRatios:p,paddings:t});return l=r.map(((e,t)=>{const r=function({index:e,layout:t}){const{cellWidth:r,cellHeight:i,rows:n,cols:s,cellCount:o,gridGap:a}=t,c=Math.floor(e/s),d=Math.floor(e%s),l=function({rows:e,cols:t,cellWidth:r,index:i,cellCount:n,gridGap:s}){const o=e*t,a=o-n;if(!a)return 0;const c=o-a-1;return i>=c-(t-a)+1&&i<=c?a*r/2+s:0}({rows:n,cols:s,cellWidth:r,index:e,cellCount:o,gridGap:a});return{top:c*i+c*a,left:d*r+d*a+l,width:r,height:i}}({index:t,layout:h}),n=h.cellWidth<u.width,s=i||n?h.cellWidth/h.cellHeight:e.aspectRatio||1;return{clientId:e.clientId,isDraggable:e.isDraggable,origin:jw({top:r.top,left:r.left}),bounds:Lw({width:r.width,height:r.height}),aspectRatio:s,isSmallCell:n,type:"video"}})),{videoCells:l,extraHorizontalPadding:o!==c?h.extraHorizontalPadding+(o-c)/2:h.extraHorizontalPadding,extraVerticalPadding:h.extraVerticalPadding,paddings:h.paddings,gridGap:s}}function mS({a:e,b:t,gridGap:r,isPortrait:i}){const n=i?e.vertical:e.horizontal,s=i?t.vertical:t.horizontal;if(n===s)return{a:0,b:0};const o=n<s?e:t,a=i?o.vertical:o.horizontal,c=(r+(n+s)+a)/2-a;return{a:o===e?c:0,b:o===t?c:0}}function fS({gridGap:e,isConstrained:t,presentationVideos:r,videos:i,videosContainerLayout:n,gridLayoutPaddings:s=Nw(),presentationGridLayoutPaddings:o=Nw(),maxGridWidth:a}){return{gridLayout:hS({containerBounds:n.videoGrid.bounds,gridGap:e,isConstrained:t,maxGridWidth:a,paddings:s,videos:i}),presentationGridLayout:hS({containerBounds:n.presentationGrid.bounds,gridGap:e,isConstrained:t,maxGridWidth:a,paddings:o,videos:r})}}function gS({floatingVideo:e,frame:t,gridGap:r,isConstrained:i,isMaximizeMode:n=!1,isXLMeetingSize:s=!1,paddings:o=Nw(),presentationVideos:a=[],rebalanceLayout:c=!1,roomBounds:d,roomLayoutHasOverlow:l=!1,subgridCellPaddings:p=aS,subgridVideos:u=[],videoControlsHeight:h=0,videos:m=[],videoGridGap:f}){let g=s&&(!screen||screen.width<=2048);const v=!!a.length,b=a.length>1,y=v&&!b?a[0].aspectRatio:null,_=!!m.length,w=t.bounds.width-o.left-o.right;let S=t.bounds.height-o.top-o.bottom;const C=Math.max(2200,.8*w),R=i&&m.length>oS,T=S/4,P=Math.ceil((m.length-oS)/3);S=R?S+T*P:S;const k=Lw({width:w,height:S}),O=jw({top:o.top,left:o.left}),E=dS({cellCount:m.length}),D=d.width<eS||d.height<eS,I=n||g||!(v||_)||k.width<=k.height,x={cellPaddings:p,containerBounds:k,containerOrigin:O,gridGap:r,hasPresentationContent:v,hasVideoContent:_,isConstrained:i,isMaximizeMode:n,isSmallScreen:D,subgridVideos:u,maxGridWidth:C};let M=pS(Object.assign(Object.assign({},x),{cellSizeOptions:cS({hasOverflow:g,hasStage:v||_}),isPortrait:I,shouldOverflowSubgrid:g,hasConstrainedOverflow:R})),j=!1;if(!g&&l&&!M.hasOverflow){pS(Object.assign(Object.assign({},x),{containerBounds:Lw({width:k.width,height:k.height-Yw}),cellSizeOptions:cS({hasOverflow:g,hasStage:v||_}),isPortrait:I,shouldOverflowSubgrid:g,hasConstrainedOverflow:R})).hasOverflow&&(j=!0)}(j||M.hasOverflow&&!g)&&(g=!0,M=pS(Object.assign(Object.assign({},x),{cellSizeOptions:cS({hasOverflow:!0,hasStage:v||_}),isPortrait:!0,shouldOverflowSubgrid:g,hasConstrainedOverflow:R})));const L=uS({containerBounds:M.videosContainer.bounds,containerOrigin:M.videosContainer.origin,gridGap:r,supersizedContentAspectRatio:y||1,hasPresentationContent:v,hasPresentationGrid:b,hasVideoContent:_,minGridBounds:E});let{gridLayout:A,presentationGridLayout:N}=fS({gridGap:f||r,isConstrained:i,presentationVideos:a,videos:m,videosContainerLayout:L,maxGridWidth:C});if(M.hasOverflow&&!g){const{vPaddings:e,hPaddings:t}=function({need:e,stageLayout:t,gridLayout:r,presentationGridLayout:i,videosContainerLayout:n}){let s={presentationGrid:0,grid:0},o={presentationGrid:0,grid:0};if(t.isPortrait){const t=Math.min(r.extraVerticalPadding,i.extraVerticalPadding);s={presentationGrid:Math.min(n.isPortrait?i.extraVerticalPadding:t,e.height),grid:Math.min(n.isPortrait?r.extraVerticalPadding:t,e.height)}}else{const t=Math.min(r.extraHorizontalPadding,i.extraHorizontalPadding);o={presentationGrid:Math.min(n.isPortrait?t:i.extraHorizontalPadding,e.width),grid:Math.min(n.isPortrait?t:r.extraHorizontalPadding,e.width)}}return{vPaddings:s,hPaddings:o}}({need:M.overflowNeedBounds||Lw(),stageLayout:M,gridLayout:A,presentationGridLayout:N,videosContainerLayout:L});(e.presentationGrid||e.grid||t.presentationGrid||t.grid)&&(!function({vPaddings:e,hPaddings:t,stageLayout:r,videosContainerLayout:i}){if(r.isPortrait&&(e.presentationGrid||e.grid)){const t=i.isPortrait?2*e.presentationGrid+2*e.grid:e.presentationGrid+e.grid;r.videosContainer.bounds.height-=t,r.subgrid.origin.top-=t,r.subgrid.bounds.height+=t,i.presentationGrid.bounds.height-=2*e.presentationGrid,i.videoGrid.bounds.height-=2*e.grid,i.isPortrait&&(i.videoGrid.origin.top-=e.presentationGrid)}if(!r.isPortrait&&(t.presentationGrid||t.grid)){const e=i.isPortrait?t.presentationGrid+t.grid:2*t.presentationGrid+2*t.grid;r.videosContainer.bounds.width-=e,r.subgrid.origin.left-=e,r.subgrid.bounds.width+=e,i.presentationGrid.bounds.width-=2*t.presentationGrid,i.videoGrid.bounds.width-=2*t.grid,i.isPortrait||(i.videoGrid.origin.left-=t.grid)}}({vPaddings:e,hPaddings:t,stageLayout:M,videosContainerLayout:L}),({gridLayout:A,presentationGridLayout:N}=fS({gridGap:f||r,isConstrained:i,presentationVideos:a,videos:m,videosContainerLayout:L,maxGridWidth:C})))}const B=function({roomBounds:e,containerFrame:t,floatingVideo:r,videoControlsHeight:i,margin:n=8}){if(!r)return null;const s=Fw(r.aspectRatio||0,{width:nS,height:nS}),o=!(e.height-t.bounds.height-t.origin.top),a=t.bounds.width-2*(s.width+n)<Xw;let c=0;o&&a?c=-1*i:o||a||(c=i);const d=jw({top:t.origin.top+(t.bounds.height-s.height-n)+c,left:t.origin.left+(t.bounds.width-s.width-n)});return{clientId:r.clientId,isDraggable:r.isDraggable,origin:d,bounds:s,aspectRatio:r.aspectRatio,isSmallCell:!0}}({roomBounds:d,containerFrame:t,floatingVideo:e||null,videoControlsHeight:h});c&&function({videosContainerLayout:e,gridLayout:t,presentationGridLayout:r,stageLayout:i,gridGap:n,shouldOverflowSubgrid:s}){const o=e.presentationGrid.bounds.width>0,a=e.videoGrid.bounds.width>0,c=i.subgrid.bounds.width>0,d={vertical:0,horizontal:0};if(o&&a){const i=mS({a:{horizontal:r.extraHorizontalPadding,vertical:r.extraVerticalPadding},b:{horizontal:t.extraHorizontalPadding,vertical:t.extraVerticalPadding},gridGap:n,isPortrait:e.isPortrait});e.isPortrait?(e.presentationGrid.origin.top+=i.a,e.videoGrid.origin.top-=i.b,d.vertical=i.b):(e.presentationGrid.origin.left+=i.a,e.videoGrid.origin.left-=i.b,d.horizontal=i.b)}if(c&&(o||a)&&!s){const s={horizontal:r.extraHorizontalPadding,vertical:r.extraVerticalPadding},c={horizontal:t.extraHorizontalPadding+d.horizontal,vertical:t.extraVerticalPadding+d.vertical};let l;const p=o&&a;l=p&&e.isPortrait&&!i.isPortrait?s.horizontal<c.horizontal?s:c:p&&!e.isPortrait&&i.isPortrait?s.vertical<c.vertical?s:c:a?c:s;const u=mS({a:l,b:{horizontal:0,vertical:0},gridGap:n,isPortrait:i.isPortrait});i.isPortrait?i.subgrid.origin.top-=u.b:i.subgrid.origin.left-=u.b}}({videosContainerLayout:L,gridLayout:A,presentationGridLayout:N,stageLayout:M,gridGap:r,shouldOverflowSubgrid:g});let F=o.top+M.videosContainer.bounds.height+M.subgrid.bounds.height+o.bottom;return(v||_)&&(F+=r),{isPortrait:M.isPortrait,hasOverflow:M.hasOverflow,videosContainer:Object.assign(Object.assign({},L),{bounds:Lw({width:M.videosContainer.bounds.width,height:M.videosContainer.bounds.height}),origin:jw({top:M.videosContainer.origin.top,left:M.videosContainer.origin.left})}),bounds:Lw({height:g?F:t.bounds.height,width:t.bounds.width}),gridGap:r,presentationGrid:Object.assign(Object.assign({},L.presentationGrid),{cells:N.videoCells,paddings:Nw({top:N.paddings.top+N.extraVerticalPadding,bottom:N.paddings.bottom+N.extraVerticalPadding,left:N.paddings.left+N.extraHorizontalPadding,right:N.paddings.right+N.extraHorizontalPadding})}),videoGrid:Object.assign(Object.assign({},L.videoGrid),{cells:A.videoCells,paddings:Nw({top:A.paddings.top+A.extraVerticalPadding,bottom:A.paddings.bottom+A.extraVerticalPadding,left:A.paddings.left+A.extraHorizontalPadding,right:A.paddings.right+A.extraHorizontalPadding})}),subgrid:M.subgrid,floatingContent:Object.assign(Object.assign({},B),e)}}function vS({aspectRatio:e,avatarSize:t,cellPaddings:r,client:i,isDraggable:n=!0,isPlaceholder:s=!1,isSubgrid:o=!1}){return{aspectRatio:e||16/9,avatarSize:t,cellPaddings:r,client:i,clientId:(null==i?void 0:i.id)||"",isDraggable:n,isPlaceholder:s,isSubgrid:o,type:"video"}}const bS=12,yS=12;function _S({activeVideosSubgridTrigger:e,forceSubgrid:t,stageParticipantLimit:r=bS,videoGridGap:i=8}={}){const[s,o]=n.useState({width:0,height:0}),[a,c]=n.useState({}),{clientViewsInGrid:d,clientViewsInPresentationGrid:l,clientViewsInSubgrid:p}=function({activeVideosSubgridTrigger:e=yS,stageParticipantLimit:t=bS,forceSubgrid:r=!0}={}){const i=Ow(i_),s=Ow(A_),o=Ow(Ny),a=n.useMemo((()=>!!r||o>t),[r,o,t]),c=n.useMemo((()=>function({clientViews:e,activeVideosSubgridTrigger:t,shouldShowSubgrid:r,spotlightedParticipants:i}){if(!r)return[];const n=i.length>0,s=e.filter((e=>!e.isPresentation&&!i.includes(e))),o=s.filter((e=>!e.isVideoEnabled)),a=s.filter((e=>e.isVideoEnabled)).length>t,c=s.filter((e=>!o.includes(e)&&e.isAudioEnabled)),d=s.filter((e=>!o.includes(e)&&!e.isAudioEnabled));if(o.length&&n)return[...d,...o];if(a&&d.length){const e=[...c,...d].slice(0,t);return e.length<=t?[...d.filter((t=>!e.includes(t))),...o]:[...d,...o]}return o}({clientViews:i,activeVideosSubgridTrigger:e,shouldShowSubgrid:a,spotlightedParticipants:s})),[i,a,e,s]),d=n.useMemo((()=>i.filter((e=>!c.includes(e)))),[i,c]),l=n.useMemo((()=>s),[s]);return{clientViewsInGrid:n.useMemo((()=>d.filter((e=>!l.includes(e)))),[d,l]),clientViewsInPresentationGrid:l,clientViewsInSubgrid:c}}({activeVideosSubgridTrigger:e,forceSubgrid:t,stageParticipantLimit:r}),u=n.useMemo((()=>d.map((e=>vS({client:e,aspectRatio:a[e.id],avatarSize:0,cellPaddings:{top:0,right:0}})))),[d,a]),h=n.useMemo((()=>l.map((e=>vS({client:e,aspectRatio:a[e.id],avatarSize:0,cellPaddings:{top:0,right:0}})))),[l,a]),m=n.useMemo((()=>p.map((e=>vS({client:e,aspectRatio:a[e.id],avatarSize:0,cellPaddings:{top:0,right:0},isSubgrid:!0})))),[p,a]),f=n.useMemo((()=>Aw(s)),[s]),g=n.useMemo((()=>gS({frame:f,gridGap:8,isConstrained:!1,roomBounds:f.bounds,videos:u,videoGridGap:i,presentationVideos:h,subgridVideos:m})),[f,u,h,m]);return{cellViewsVideoGrid:u,cellViewsInPresentationGrid:h,cellViewsInSubgrid:m,videoStage:g,setContainerBounds:o,setClientAspectRatios:c}}var wS={exports:{}};const SS=55296,CS=56319,RS=56320,TS=127462,PS=127487,kS=127995,OS=127999,ES=65024,DS=65039,IS=8400,xS=8447,MS=8205,jS=[776,2359,2359,2367,2367,2984,3007,3021,3633,3635,3648,3657,4352,4449,4520];function LS(e){if("string"!=typeof e)throw new Error("string cannot be undefined or null");const t=[];let r=0,i=0;for(;r<e.length;)i+=AS(r+i,e),zS(e[r+i])&&i++,BS(e[r+i])&&i++,FS(e[r+i])&&i++,US(e[r+i])?i++:(t.push(e.substring(r,r+i)),r+=i,i=0);return t}function AS(e,t){const r=t[e];if(!function(e){return e&&VS(e[0].charCodeAt(0),SS,CS)}(r)||e===t.length-1)return 1;const i=r+t[e+1];let n=t.substring(e+2,e+5);return NS(i)&&NS(n)||function(e){return VS($S(e),kS,OS)}(n)?4:2}function NS(e){return VS($S(e),TS,PS)}function BS(e){return"string"==typeof e&&VS(e.charCodeAt(0),ES,DS)}function FS(e){return"string"==typeof e&&VS(e.charCodeAt(0),IS,xS)}function zS(e){return"string"==typeof e&&-1!==jS.indexOf(e.charCodeAt(0))}function US(e){return"string"==typeof e&&e.charCodeAt(0)===MS}function $S(e){return(e.charCodeAt(0)-SS<<10)+(e.charCodeAt(1)-RS)+65536}function VS(e,t,r){return e>=t&&e<=r}wS.exports=LS,wS.exports.substr=function(e,t,r){const i=LS(e);if(void 0===t)return e;if(t>=i.length)return"";const n=i.length-t;let s=t+(void 0===r?n:r);return s>t+n&&(s=void 0),i.slice(t,s).join("")};var GS=o(wS.exports);const qS=({name:e})=>{const t=((e="")=>{if(e=e.trim())return e.split(/-| /).map((e=>GS(e)[0])).slice(0,3);return[]})(e),r=[0,56,48,40][t.length]||32,i=t.join("").toUpperCase();return n.createElement("svg",{viewBox:"-60 -60 120 120","aria-hidden":"true",style:{height:"100%",pointerEvents:"none",width:"100%"}},n.createElement("text",{x:0,y:0,textAnchor:"middle",dominantBaseline:"central",fontSize:r},i))};function HS(e){var{avatarUrl:t,className:r,size:i=40,name:s,variant:o="round"}=e,a=Pw(e,["avatarUrl","className","size","name","variant"]);return n.createElement("div",Object.assign({style:{height:`${i}px`,width:`${i}px`,userSelect:"none",overflow:"hidden",borderRadius:"round"===o?"50%":"4px",backgroundColor:"#f8e3c8"},className:r,title:s},a),!t&&s?n.createElement(qS,{name:s}):n.createElement("img",{src:t||"",alt:"",style:{height:"100%",width:"100%",objectFit:"cover",maxWidth:"initial"}}))}function WS({avatarUrl:e,displayName:t,isSmallCell:r,withRoundedCorners:i}){return n.createElement("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",position:"absolute",top:0,left:0,height:"100%",width:"100%",borderRadius:i?"8px":"0"}},n.createElement("div",{style:{height:r?60:80,width:r?60:80,pointerEvents:"none",position:"relative"}},n.createElement(HS,{variant:"square",avatarUrl:e,name:t,size:r?60:80})))}function KS({cellView:e,onSetClientAspectRatio:t}){if("video"===e.type)return n.createElement(JS,{aspectRatio:e.aspectRatio,participant:e.client,isPlaceholder:e.isPlaceholder,isSubgrid:e.isSubgrid,key:e.clientId,onSetClientAspectRatio:t})}function JS({aspectRatio:e,participant:t,render:r}){const i=n.useRef(null),s=n.useCallback((()=>{const r=i.current&&i.current.captureAspectRatio();r&&r!==e&&(null==t||t.id)}),[]);return n.createElement("div",null,r?r():(null==t?void 0:t.stream)&&t.isVideoEnabled?n.createElement(Ew,{ref:i,stream:t.stream,onVideoResize:s,style:{borderRadius:"8px"}}):n.createElement(WS,{isSmallCell:!1,displayName:(null==t?void 0:t.displayName)||"Guest",withRoundedCorners:!0}))}return e.VideoGrid=function({renderParticipant:e,stageParticipantLimit:t,videoGridGap:r}){const i=n.useRef(null),{cellViewsVideoGrid:s,cellViewsInPresentationGrid:o,cellViewsInSubgrid:a,videoStage:c,setContainerBounds:d,setClientAspectRatios:l}=_S({activeVideosSubgridTrigger:12,stageParticipantLimit:t,videoGridGap:r}),p=n.useMemo((()=>o.map((e=>KS({cellView:e,onSetClientAspectRatio:({aspectRatio:e,clientId:t})=>l((r=>Object.assign(Object.assign({},r),{[t]:e})))})))),[o]),u=n.useMemo((()=>s.map((e=>KS({cellView:e,onSetClientAspectRatio:({aspectRatio:e,clientId:t})=>l((r=>Object.assign(Object.assign({},r),{[t]:e})))})))),[s]),h=n.useMemo((()=>a.map((e=>KS({cellView:e,onSetClientAspectRatio:({aspectRatio:e,clientId:t})=>l((r=>Object.assign(Object.assign({},r),{[t]:e})))})))),[a]);return n.useEffect((()=>{if(!i.current)return;const e=new ResizeObserver(Sb((()=>{var e,t,r,n;d({width:null!==(t=null===(e=i.current)||void 0===e?void 0:e.clientWidth)&&void 0!==t?t:640,height:null!==(n=null===(r=i.current)||void 0===r?void 0:r.clientHeight)&&void 0!==n?n:480})}),{delay:60,edges:!1}));return e.observe(i.current),()=>{e.disconnect()}}),[]),n.createElement("div",{ref:i,style:{width:"100%",height:"100%",position:"relative"}},n.createElement(qw,{layoutVideoStage:c,presentationGridContent:p,gridContent:u,subgridContent:h}))},e.VideoView=Ew,e.WherebyProvider=function({children:e}){const t=(({preloadedState:e,injectServices:t})=>yt({devTools:U_,reducer:V_,middleware:e=>e({thunk:{extraArgument:{services:t}},serializableCheck:!1}).prepend(Rv.middleware),preloadedState:e}))({injectServices:function(){const e=vw.create({baseUrl:Tw}),t=new sw({fetchDeviceCredentials:e.getCredentials.bind(e),baseUrl:Tw}),r=new Cw({apiClient:t});return{credentialsService:e,apiClient:t,organizationService:r,fetchOrganizationFromRoomUrl:e=>{const t=jf({host:new URL(e).host});return new Rw({organizationService:r,subdomain:t.subdomain}).fetchOrganization()}}}()});return n.createElement(k,{store:t},e)},e.useLocalMedia=function(e={audio:!0,video:!0}){const t=kw(),r=Ow(xw);return n.useEffect((()=>(t(Ub(e)),()=>{t($b())})),[]),{state:r,actions:{setCameraDevice:n.useCallback((e=>t(Tb({deviceId:e}))),[t]),setMicrophoneDevice:n.useCallback((e=>t(Pb({deviceId:e}))),[t]),setSpeakerDevice:n.useCallback((e=>t(kb({deviceId:e}))),[t]),toggleCameraEnabled:n.useCallback((e=>t(Ob({enabled:e}))),[t]),toggleMicrophoneEnabled:n.useCallback((e=>t(Eb({enabled:e}))),[t]),toggleLowDataModeEnabled:n.useCallback((e=>t(Db({enabled:e}))),[t])}}},e.useRoomConnection=function(e,t=Iw){const r=kw(),i=Ow(Dw),s=n.useMemo((()=>{const r=new URL(e),i=new URLSearchParams(r.search),n=t.roomKey||i.get("roomKey");return{displayName:t.displayName||"Guest",localMediaOptions:t.localMedia?void 0:t.localMediaOptions,roomKey:n,roomUrl:e,userAgent:"browser-sdk:3.0.3",externalId:t.externalId||null}}),[e,t]);n.useEffect((()=>()=>{r(Ov())}),[]);const o=n.useCallback((e=>r(gb({text:e}))),[r]),a=n.useCallback((()=>r(Vy())),[r]),c=n.useCallback((e=>r(cy({displayName:e}))),[r]),d=n.useCallback((e=>r(Ob({enabled:e}))),[r]),l=n.useCallback((e=>r(Eb({enabled:e}))),[r]),p=n.useCallback((e=>r(Db({enabled:e}))),[r]),u=n.useCallback((e=>r(py({enabled:e}))),[r]),h=n.useCallback((e=>r(Ly({clientIds:[e],enable:!0}))),[r]),m=n.useCallback((e=>r(F_({participantId:e}))),[r]),f=n.useCallback((e=>r(z_({participantId:e}))),[r]),g=n.useCallback((()=>r(yb())),[r]),v=n.useCallback((()=>r(_y())),[r]),b=n.useCallback((()=>r(_b())),[r]),y=n.useCallback((()=>r(wy())),[r]),_=n.useCallback((()=>r(Ev(s))),[r]),w=n.useCallback((()=>r(Ov())),[r]),S=n.useCallback((e=>r(Yy({locked:e}))),[r]),C=n.useCallback((e=>{r(Ly({clientIds:e,enable:!1}))}),[r]),R=n.useCallback((e=>r(M_({id:e}))),[r]),T=n.useCallback((e=>r(j_({id:e}))),[r]),P=n.useCallback((e=>r(Xy({clientId:e}))),[r]),k=n.useCallback((e=>r(e_({stayBehind:e}))),[r]),{events:O}=i;return{state:Pw(i,["events"]),events:O,actions:{toggleLowDataMode:p,toggleRaiseHand:u,askToSpeak:h,acceptWaitingParticipant:m,knock:a,joinRoom:_,leaveRoom:w,lockRoom:S,muteParticipants:C,kickParticipant:P,endMeeting:k,rejectWaitingParticipant:f,sendChatMessage:o,setDisplayName:c,startCloudRecording:g,startScreenshare:v,stopCloudRecording:b,stopScreenshare:y,toggleCamera:d,toggleMicrophone:l,spotlightParticipant:R,removeSpotlight:T}}},e}({},React);