@opentok/client 2.29.2-alpha.2 → 2.29.2-alpha.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,11 +1,11 @@
1
1
  /**
2
- * @license OpenTok.js 2.29.2 a5982cc
2
+ * @license OpenTok.js 2.29.2 e5c16d9
3
3
  *
4
4
  * Copyright (c) 2010-2025 TokBox, Inc.
5
5
  * Subject to the applicable Software Development Kit (SDK) License Agreement:
6
6
  * https://www.vonage.com/legal/communications-apis/terms-of-use/
7
7
  *
8
- * Date: Fri, 21 Feb 2025 21:03:53 GMT
8
+ * Date: Tue, 25 Feb 2025 23:42:39 GMT
9
9
  */
10
10
  !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.OT=t():e.OT=t()}(window,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=363)}([function(e,t){e.exports=function(e){return e&&e.__esModule?e:{default:e}}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(418)),o=r(n(129)),a=r(n(130));const l=(0,o.default)(e=>{const t={};return Object.keys(a.default).forEach(n=>{const r=a.default[n].method,o=(0,i.default)(`OpenTok:${e}:${n.toLowerCase()}`);o.log=console[r].bind(console),t[n.toLowerCase()]=o}),t});l.setLogLevel=e=>{let t;try{t=(void 0!==typeof window?window:global).localStorage.debug}catch(e){t=""}const n=[...Object.keys(a.default).map(t=>`${e>=a.default[t].priority?"":"-"}(autogen)?OpenTok:*:${t.toLowerCase()}`),...(t||"").split(/[\s,]/).filter(e=>-1===e.indexOf("(autogen)?"))].filter(e=>e).join(",");i.default.enable(n)};var c=l;t.default=c},function(e,t,n){(function(t){
11
11
  /*!
@@ -14,7 +14,7 @@
14
14
  * @license Licensed under MIT license
15
15
  * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE
16
16
  * @version v4.2.8+1e68dce6
17
- */var n;n=function(){"use strict";function e(e){return"function"==typeof e}var n=Array.isArray?Array.isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)},r=0,i=void 0,o=void 0,a=function(e,t){h[r]=e,h[r+1]=t,2===(r+=2)&&(o?o(g):U())},l="undefined"!=typeof window?window:void 0,c=l||{},s=c.MutationObserver||c.WebKitMutationObserver,d="undefined"==typeof self&&void 0!==t&&"[object process]"==={}.toString.call(t),u="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel;function A(){var e=setTimeout;return function(){return e(g,1)}}var h=new Array(1e3);function g(){for(var e=0;e<r;e+=2)(0,h[e])(h[e+1]),h[e]=void 0,h[e+1]=void 0;r=0}var F,Q,p,m,U=void 0;function b(e,t){var n=this,r=new this.constructor(f);void 0===r[B]&&J(r);var i=n._state;if(i){var o=arguments[i-1];a((function(){return v(i,r,o,n._result)}))}else W(n,r,e,t);return r}function Z(e){if(e&&"object"==typeof e&&e.constructor===this)return e;var t=new this(f);return I(t,e),t}d?U=function(){return t.nextTick(g)}:s?(Q=0,p=new s(g),m=document.createTextNode(""),p.observe(m,{characterData:!0}),U=function(){m.data=Q=++Q%2}):u?((F=new MessageChannel).port1.onmessage=g,U=function(){return F.port2.postMessage(0)}):U=void 0===l?function(){try{var e=Function("return this")().require("vertx");return void 0!==(i=e.runOnLoop||e.runOnContext)?function(){i(g)}:A()}catch(e){return A()}}():A();var B=Math.random().toString(36).substring(2);function f(){}function R(t,n,r){n.constructor===t.constructor&&r===b&&n.constructor.resolve===Z?function(e,t){1===t._state?V(e,t._result):2===t._state?C(e,t._result):W(t,void 0,(function(t){return I(e,t)}),(function(t){return C(e,t)}))}(t,n):void 0===r?V(t,n):e(r)?function(e,t,n){a((function(e){var r=!1,i=function(e,t,n,r){try{e.call(t,n,r)}catch(e){return e}}(n,t,(function(n){r||(r=!0,t!==n?I(e,n):V(e,n))}),(function(t){r||(r=!0,C(e,t))}),e._label);!r&&i&&(r=!0,C(e,i))}),e)}(t,n,r):V(t,n)}function I(e,t){if(e===t)C(e,new TypeError("You cannot resolve a promise with itself"));else if(i=typeof(r=t),null===r||"object"!==i&&"function"!==i)V(e,t);else{var n=void 0;try{n=t.then}catch(t){return void C(e,t)}R(e,t,n)}var r,i}function y(e){e._onerror&&e._onerror(e._result),E(e)}function V(e,t){void 0===e._state&&(e._result=t,e._state=1,0!==e._subscribers.length&&a(E,e))}function C(e,t){void 0===e._state&&(e._state=2,e._result=t,a(y,e))}function W(e,t,n,r){var i=e._subscribers,o=i.length;e._onerror=null,i[o]=t,i[o+1]=n,i[o+2]=r,0===o&&e._state&&a(E,e)}function E(e){var t=e._subscribers,n=e._state;if(0!==t.length){for(var r=void 0,i=void 0,o=e._result,a=0;a<t.length;a+=3)r=t[a],i=t[a+n],r?v(n,r,i,o):i(o);e._subscribers.length=0}}function v(t,n,r,i){var o=e(r),a=void 0,l=void 0,c=!0;if(o){try{a=r(i)}catch(e){c=!1,l=e}if(n===a)return void C(n,new TypeError("A promises callback cannot return that same promise."))}else a=i;void 0!==n._state||(o&&c?I(n,a):!1===c?C(n,l):1===t?V(n,a):2===t&&C(n,a))}var S=0;function J(e){e[B]=S++,e._state=void 0,e._result=void 0,e._subscribers=[]}var G=function(){function e(e,t){this._instanceConstructor=e,this.promise=new e(f),this.promise[B]||J(this.promise),n(t)?(this.length=t.length,this._remaining=t.length,this._result=new Array(this.length),0===this.length?V(this.promise,this._result):(this.length=this.length||0,this._enumerate(t),0===this._remaining&&V(this.promise,this._result))):C(this.promise,new Error("Array Methods must be provided an Array"))}return e.prototype._enumerate=function(e){for(var t=0;void 0===this._state&&t<e.length;t++)this._eachEntry(e[t],t)},e.prototype._eachEntry=function(e,t){var n=this._instanceConstructor,r=n.resolve;if(r===Z){var i=void 0,o=void 0,a=!1;try{i=e.then}catch(e){a=!0,o=e}if(i===b&&void 0!==e._state)this._settledAt(e._state,t,e._result);else if("function"!=typeof i)this._remaining--,this._result[t]=e;else if(n===N){var l=new n(f);a?C(l,o):R(l,e,i),this._willSettleAt(l,t)}else this._willSettleAt(new n((function(t){return t(e)})),t)}else this._willSettleAt(r(e),t)},e.prototype._settledAt=function(e,t,n){var r=this.promise;void 0===r._state&&(this._remaining--,2===e?C(r,n):this._result[t]=n),0===this._remaining&&V(r,this._result)},e.prototype._willSettleAt=function(e,t){var n=this;W(e,void 0,(function(e){return n._settledAt(1,t,e)}),(function(e){return n._settledAt(2,t,e)}))},e}(),N=function(){function t(e){this[B]=S++,this._result=this._state=void 0,this._subscribers=[],f!==e&&("function"!=typeof e&&function(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}(),this instanceof t?function(e,t){try{t((function(t){I(e,t)}),(function(t){C(e,t)}))}catch(t){C(e,t)}}(this,e):function(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}())}return t.prototype.catch=function(e){return this.then(null,e)},t.prototype.finally=function(t){var n=this.constructor;return e(t)?this.then((function(e){return n.resolve(t()).then((function(){return e}))}),(function(e){return n.resolve(t()).then((function(){throw e}))})):this.then(t,t)},t}();return N.prototype.then=b,N.all=function(e){return new G(this,e).promise},N.race=function(e){var t=this;return n(e)?new t((function(n,r){for(var i=e.length,o=0;o<i;o++)t.resolve(e[o]).then(n,r)})):new t((function(e,t){return t(new TypeError("You must pass an array to race."))}))},N.resolve=Z,N.reject=function(e){var t=new this(f);return C(t,e),t},N._setScheduler=function(e){o=e},N._setAsap=function(e){a=e},N._asap=a,N.polyfill=function(){var e=void 0;if(void 0!==(void 0!==typeof window?window:global))e=void 0!==typeof window?window:global;else if("undefined"!=typeof self)e=self;else try{e=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}var t=e.Promise;if(t){var n=null;try{n=Object.prototype.toString.call(t.resolve())}catch(e){}if("[object Promise]"===n&&!t.cast)return}e.Promise=N},N.Promise=N,N},e.exports=n()}).call(this,n(29))},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(474)).default.parse();t.default=i},function(e,t,n){e.exports=n(414)},function(e,t,n){(function(t){function n(e,n,r,i,o,a,l){try{var c=e[a](l),s=c.value}catch(e){return void r(e)}c.done?n(s):t.resolve(s).then(i,o)}e.exports=function(e){return function(){var r=this,i=arguments;return new t((function(t,o){var a=e.apply(r,i);function l(e){n(a,t,o,l,c,"next",e)}function c(e){n(a,t,o,l,c,"throw",e)}l(void 0)}))}}}).call(this,n(2))},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e){const t=new a.default;t.on("newListener",e=>{t.emit(e+":added")}),t.on("removeListener",e=>{t.emit(e+":removed")});const n={eventsDispatched:{},on(e,n,r){return"string"==typeof e&&n?e.split(" ").forEach(e=>{t.on(e,(0,c.default)(n,r))}):Object.keys(e).forEach(r=>{t.on(r,(0,c.default)(e[r],n))}),this},off(e,n,r){return"string"==typeof e?this.off(e.split(" "),n,r):Array.isArray(e)?e.forEach(e=>{n&&(0,o.default)(n)?t.removeListener(e,(0,c.default)(n,r)):t.removeAllListeners(e)}):e?Object.keys(e).forEach(r=>{t.removeListener(r,(0,c.default)(e[r],n))}):t.removeAllListeners(),this},once(e,n,r){return"string"==typeof e&&n?e.split(" ").forEach(e=>{t.once(e,(0,c.default)(n,r))}):Object.keys(e).forEach(r=>{t.once(r,(0,c.default)(e[r],n))}),this},dispatchEvent(e){if(!e.type)throw new Error("dispatchEvent: Event has no type");return e.target||(e.target=this),this.trigger(e.type,e),this},dispatchEventOnce(e,t){this.isEventDispatched(e.type,t)||(this.dispatchEvent(e),this.eventsDispatched[e.type]?this.eventsDispatched[e.type].push(t):this.eventsDispatched[e.type]=[t])},isEventDispatched(e,t){var n;return null==(n=this.eventsDispatched[e])?void 0:n.includes(t)},trigger(e){try{for(var n=arguments.length,r=new Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];t.emit(e,...r)}catch(e){s.error("An error occurred in an event handler",e)}return this},emit(){return e.trigger(...arguments)},addEventListener:(t,n,r)=>(s.warn("The addEventListener() method is deprecated. Use on() or once() instead."),e.on(t,n,r)),removeEventListener:(t,n,r)=>(s.warn("The removeEventListener() method is deprecated. Use off() instead."),e.off(t,n,r)),listenerCount:e=>t.listenerCount(e)};return(0,i.default)(e,n)};var i=r(n(9)),o=r(n(20)),a=r(n(12)),l=r(n(1)),c=r(n(421));const s=(0,l.default)("Events")},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(147)),o=r(n(261)),a=r(n(6)),l=r(n(1)),c=r(n(3)),s=r(n(263)),d=r(n(262)),u=r(n(264)),A=r(n(572)),h=r(n(266)),g=r(n(269)),F=r(n(585)),Q=r(n(271));o.default.logging=(0,l.default)("OT.$"),o.default.env=c.default,o.default.ElementCollection=d.default,o.default.ajax=u.default,o.default.statable=A.default,o.default.Analytics=h.default,o.default.Collection=g.default,o.default.domExtras=F.default,o.default.Error=Q.default,(0,s.default)(o.default,"useLogHelpers",{value(e){const t=(0,l.default)("useLogHelpersDeprecatedMixin");return Object.keys(t).forEach(n=>{e[n]=t[n]}),e},name:"OT.useLogHelpers",getWarning:"Please use an external library for your debugging needs"}),o.default.defaults=i.default,(0,s.default)(o.default,"eventing",{value:a.default,name:"OT.$.eventing",getWarning:"Please use an external library to create an event emitter."}),Object.keys(o.default).forEach(e=>{const t=o.default[e]._attachToOTHelpers||{};Object.keys(t).forEach(n=>{!Object.hasOwnProperty.call(o.default,n)||"util"===e&&"bind"===n||console.warn(`More than one module is trying to define ${n} on OTHelpers.`),o.default[n]=t[n]})});var p=o.default;t.default=p},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;t.default={AUTHENTICATION_ERROR:"OT_AUTHENTICATION_ERROR",BADLY_FORMED_RESPONSE:"OT_BADLY_FORMED_RESPONSE",CHROME_MICROPHONE_ACQUISITION_ERROR:"OT_CHROME_MICROPHONE_ACQUISITION_ERROR",CONNECT_FAILED:"OT_CONNECT_FAILED",CONNECTION_LIMIT_EXCEEDED:"OT_CONNECTION_LIMIT_EXCEEDED",CONSTRAINTS_NOT_SATISFIED:"OT_CONSTRAINTS_NOT_SATISFIED",CREATE_PEER_CONNECTION_FAILED:"OT_CREATE_PEER_CONNECTION_FAILED",DISCONNECTED:"OT_DISCONNECTED",EMPTY_RESPONSE_BODY:"OT_EMPTY_RESPONSE_BODY",GET_RTC_STATS_REPORT_NOT_SUPPORTED:"OT_GET_RTC_STATS_REPORT_NOT_SUPPORTED",HARDWARE_UNAVAILABLE:"OT_HARDWARE_UNAVAILABLE",ICE_WORKFLOW_FAILED:"OT_ICE_WORKFLOW_FAILED",INVALID_HTTP_STATUS:"OT_INVALID_HTTP_STATUS",INVALID_PARAMETER:"OT_INVALID_PARAMETER",INVALID_SESSION_ID:"OT_INVALID_SESSION_ID",MEDIA_ERR_ABORTED:"OT_MEDIA_ERR_ABORTED",MEDIA_ERR_DECODE:"OT_MEDIA_ERR_DECODE",MEDIA_ERR_NETWORK:"OT_MEDIA_ERR_NETWORK",MEDIA_ERR_SRC_NOT_SUPPORTED:"OT_MEDIA_ERR_SRC_NOT_SUPPORTED",MEDIA_ENDED:"OT_MEDIA_ENDED",NO_DEVICES_FOUND:"OT_NO_DEVICES_FOUND",NO_VALID_CONSTRAINTS:"OT_NO_VALID_CONSTRAINTS",NOT_CONNECTED:"OT_NOT_CONNECTED",NOT_FOUND:"OT_NOT_FOUND",NOT_SUPPORTED:"OT_NOT_SUPPORTED",PEER_CONNECTION_NOT_CONNECTED:"OT_PEER_CONNECTION_NOT_CONNECTED",PERMISSION_DENIED:"OT_PERMISSION_DENIED",RATE_LIMIT_EXCEEDED:"OT_RATE_LIMIT_EXCEEDED",REPORT_ISSUE_FAILED:"OT_REPORT_ISSUE_FAILED",SCREEN_SHARING_EXTENSION_NOT_INSTALLED:"OT_SCREEN_SHARING_EXTENSION_NOT_INSTALLED",SCREEN_SHARING_EXTENSION_NOT_REGISTERED:"OT_SCREEN_SHARING_EXTENSION_NOT_REGISTERED",SCREEN_SHARING_NOT_SUPPORTED:"OT_SCREEN_SHARING_NOT_SUPPORTED",SET_REMOTE_DESCRIPTION_FAILED:"OT_SET_REMOTE_DESCRIPTION_FAILED",FAILED_SET_CONFIGURATION:"OT_FAILED_SET_CONFIGURATION",SOCKET_ALREADY_CONNECTED_CONNECTING:"OT_SOCKET_ALREADY_CONNECTED_CONNECTING",SOCKET_CLOSE_ABNORMAL:"OT_SOCKET_CLOSE_ABNORMAL",SOCKET_CLOSE_CONNECT_EXCEPTION:"OT_SOCKET_CLOSE_CONNECT_EXCEPTION",SOCKET_CLOSE_CONNECTIVITY_LOSS:"OT_SOCKET_CLOSE_CONNECTIVITY_LOSS",SOCKET_CLOSE_FALLBACK_CODE:"OT_SOCKET_CLOSE_FALLBACK_CODE",SOCKET_CLOSE_INCONSISTENT_DATA:"OT_SOCKET_CLOSE_INCONSISTENT_DATA",SOCKET_CLOSE_NO_STATUS:"OT_SOCKET_CLOSE_NO_STATUS",SOCKET_CLOSE_POLICY_VIOLATION:"OT_SOCKET_CLOSE_POLICY_VIOLATION",SOCKET_CLOSE_GOING_AWAY:"OT_SOCKET_CLOSE_GOING_AWAY",SOCKET_CLOSE_PROTOCOL_ERROR:"OT_SOCKET_CLOSE_PROTOCOL_ERROR",SOCKET_CLOSE_TIMEOUT:"OT_SOCKET_CLOSE_TIMEOUT",SOCKET_CLOSE_TOO_LARGE:"OT_SOCKET_CLOSE_TOO_LARGE",SOCKET_CLOSE_UNEXPECTED_CONDITION:"OT_SOCKET_CLOSE_UNEXPECTED_CONDITION",SOCKET_CLOSE_UNSUPPORTED:"OT_SOCKET_CLOSE_UNSUPPORTED",STREAM_CREATE_FAILED:"OT_STREAM_CREATE_FAILED",STREAM_DESTROYED:"OT_STREAM_DESTROYED",STREAM_LIMIT_EXCEEDED:"OT_STREAM_LIMIT_EXCEEDED",STREAM_NOT_FOUND:"OT_STREAM_NOT_FOUND",UNABLE_TO_SUBSCRIBE:"OT_UNABLE_TO_SUBSCRIBE",TERMS_OF_SERVICE_FAILURE:"OT_TERMS_OF_SERVICE_FAILURE",TIMEOUT:"OT_TIMEOUT",CANCEL:"OT_CANCEL",UNABLE_TO_CAPTURE_MEDIA:"OT_UNABLE_TO_CAPTURE_MEDIA",UNABLE_TO_CAPTURE_SCREEN:"OT_UNABLE_TO_CAPTURE_SCREEN",UNEXPECTED_ERROR_CODE:"OT_UNEXPECTED_ERROR_CODE",UNEXPECTED_HTTP_STATUS:"OT_UNEXPECTED_HTTP_STATUS",UNEXPECTED_SERVER_RESPONSE:"OT_UNEXPECTED_SERVER_RESPONSE",UNKNOWN_HTTP_ERROR:"OT_UNKNOWN_HTTP_ERROR",UNSUPPORTED_BROWSER:"OT_UNSUPPORTED_BROWSER",USER_MEDIA_ACCESS_DENIED:"OT_USER_MEDIA_ACCESS_DENIED",XDOMAIN_OR_PARSING_ERROR:"OT_XDOMAIN_OR_PARSING_ERROR",API_KEY_DISABLED:"OT_API_KEY_DISABLED",UNABLE_TO_ACCESS_MEDIA_ENGINE:"OT_UNABLE_TO_ACCESS_MEDIA_ENGINE",SET_PROXY_URL_TIMING_ERROR:"OT_SET_PROXY_URL_TIMING_ERROR",PROXY_URL_ALREADY_SET_ERROR:"OT_PROXY_URL_ALREADY_SET_ERROR",SET_VIDEO_SOURCE_FAILURE:"OT_SET_VIDEO_SOURCE_FAILURE",INVALID_VIDEO_SOURCE:"OT_INVALID_VIDEO_SOURCE",REQUESTED_DEVICE_PERMISSION_DENIED:"OT_REQUESTED_DEVICE_PERMISSION_DENIED",INVALID_AUDIO_OUTPUT_SOURCE:"OT_INVALID_AUDIO_OUTPUT_SOURCE",INVALID_ENCRYPTION_SECRET:"OT_INVALID_ENCRYPTION_SECRET"}},function(e,t,n){var r=n(86),i=n(45),o=n(206),a=n(28),l=n(69),c=n(34),s=Object.prototype.hasOwnProperty,d=o((function(e,t){if(l(t)||a(t))i(t,c(t),e);else for(var n in t)s.call(t,n)&&r(e,n,t[n])}));e.exports=d},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r={JS_EXCEPTION:2e3,AUTHENTICATION_ERROR:1004,INVALID_SESSION_ID:1005,CONNECT_FAILED:1006,CONNECT_REJECTED:1007,CONNECTION_TIMEOUT:1008,NOT_CONNECTED:1010,INVALID_PARAMETER:1011,P2P_CONNECTION_FAILED:1013,API_RESPONSE_FAILURE:1014,PEER_CONNECTION_NOT_CONNECTED:1015,TERMS_OF_SERVICE_FAILURE:1026,CONNECTION_LIMIT_EXCEEDED:1027,UNABLE_TO_PUBLISH:1500,UNABLE_TO_SUBSCRIBE:1501,UNSUPPORTED_VIDEO_CODEC:1502,UNABLE_TO_FORCE_DISCONNECT:1520,UNABLE_TO_FORCE_UNPUBLISH:1530,UNABLE_TO_FORCE_MUTE:1540,PUBLISHER_ICE_WORKFLOW_FAILED:1553,SUBSCRIBER_ICE_WORKFLOW_FAILED:1554,STREAM_LIMIT_EXCEEDED:1605,UNEXPECTED_SERVER_RESPONSE:2001,REPORT_ISSUE_ERROR:2011,SET_PROXY_URL_TIMING_ERROR:2021,PROXY_URL_ALREADY_SET_ERROR:2022,GET_RTC_STATS_REPORT_NOT_SUPPORTED:2031,ANVIL_BADLY_FORMED_RESPONSE:3001,ANVIL_INVALID_HTTP_STATUS:3002,ANVIL_XDOMAIN_OR_PARSING_ERROR:3003,ANVIL_UNKNOWN_HTTP_ERROR:3004,ANVIL_UNEXPECTED_ERROR_CODE:3005,ANVIL_EMPTY_RESPONSE_BODY:3006,ANVIL_CONNECT_FAILED:3007,UNABLE_TO_ACCESS_MEDIA_ENGINE:5001};t.default=r},function(e,t){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},function(e,t,n){"use strict";(function(t){var n,r="object"==typeof Reflect?Reflect:null,i=r&&"function"==typeof r.apply?r.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)};n=r&&"function"==typeof r.ownKeys?r.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var o=Number.isNaN||function(e){return e!=e};function a(){a.init.call(this)}e.exports=a,e.exports.once=function(e,n){return new t((function(t,r){function i(t){e.removeListener(n,o),r(t)}function o(){"function"==typeof e.removeListener&&e.removeListener("error",i),t([].slice.call(arguments))}Q(e,n,o,{once:!0}),"error"!==n&&function(e,t,n){"function"==typeof e.on&&Q(e,"error",t,n)}(e,i,{once:!0})}))},a.EventEmitter=a,a.prototype._events=void 0,a.prototype._eventsCount=0,a.prototype._maxListeners=void 0;var l=10;function c(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function s(e){return void 0===e._maxListeners?a.defaultMaxListeners:e._maxListeners}function d(e,t,n,r){var i,o,a,l;if(c(n),void 0===(o=e._events)?(o=e._events=Object.create(null),e._eventsCount=0):(void 0!==o.newListener&&(e.emit("newListener",t,n.listener?n.listener:n),o=e._events),a=o[t]),void 0===a)a=o[t]=n,++e._eventsCount;else if("function"==typeof a?a=o[t]=r?[n,a]:[a,n]:r?a.unshift(n):a.push(n),(i=s(e))>0&&a.length>i&&!a.warned){a.warned=!0;var d=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");d.name="MaxListenersExceededWarning",d.emitter=e,d.type=t,d.count=a.length,l=d,console&&console.warn&&console.warn(l)}return e}function u(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function A(e,t,n){var r={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},i=u.bind(r);return i.listener=n,r.wrapFn=i,i}function h(e,t,n){var r=e._events;if(void 0===r)return[];var i=r[t];return void 0===i?[]:"function"==typeof i?n?[i.listener||i]:[i]:n?function(e){for(var t=new Array(e.length),n=0;n<t.length;++n)t[n]=e[n].listener||e[n];return t}(i):F(i,i.length)}function g(e){var t=this._events;if(void 0!==t){var n=t[e];if("function"==typeof n)return 1;if(void 0!==n)return n.length}return 0}function F(e,t){for(var n=new Array(t),r=0;r<t;++r)n[r]=e[r];return n}function Q(e,t,n,r){if("function"==typeof e.on)r.once?e.once(t,n):e.on(t,n);else{if("function"!=typeof e.addEventListener)throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof e);e.addEventListener(t,(function i(o){r.once&&e.removeEventListener(t,i),n(o)}))}}Object.defineProperty(a,"defaultMaxListeners",{enumerable:!0,get:function(){return l},set:function(e){if("number"!=typeof e||e<0||o(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");l=e}}),a.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},a.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||o(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},a.prototype.getMaxListeners=function(){return s(this)},a.prototype.emit=function(e){for(var t=[],n=1;n<arguments.length;n++)t.push(arguments[n]);var r="error"===e,o=this._events;if(void 0!==o)r=r&&void 0===o.error;else if(!r)return!1;if(r){var a;if(t.length>0&&(a=t[0]),a instanceof Error)throw a;var l=new Error("Unhandled error."+(a?" ("+a.message+")":""));throw l.context=a,l}var c=o[e];if(void 0===c)return!1;if("function"==typeof c)i(c,this,t);else{var s=c.length,d=F(c,s);for(n=0;n<s;++n)i(d[n],this,t)}return!0},a.prototype.addListener=function(e,t){return d(this,e,t,!1)},a.prototype.on=a.prototype.addListener,a.prototype.prependListener=function(e,t){return d(this,e,t,!0)},a.prototype.once=function(e,t){return c(t),this.on(e,A(this,e,t)),this},a.prototype.prependOnceListener=function(e,t){return c(t),this.prependListener(e,A(this,e,t)),this},a.prototype.removeListener=function(e,t){var n,r,i,o,a;if(c(t),void 0===(r=this._events))return this;if(void 0===(n=r[e]))return this;if(n===t||n.listener===t)0==--this._eventsCount?this._events=Object.create(null):(delete r[e],r.removeListener&&this.emit("removeListener",e,n.listener||t));else if("function"!=typeof n){for(i=-1,o=n.length-1;o>=0;o--)if(n[o]===t||n[o].listener===t){a=n[o].listener,i=o;break}if(i<0)return this;0===i?n.shift():function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(n,i),1===n.length&&(r[e]=n[0]),void 0!==r.removeListener&&this.emit("removeListener",e,a||t)}return this},a.prototype.off=a.prototype.removeListener,a.prototype.removeAllListeners=function(e){var t,n,r;if(void 0===(n=this._events))return this;if(void 0===n.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==n[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete n[e]),this;if(0===arguments.length){var i,o=Object.keys(n);for(r=0;r<o.length;++r)"removeListener"!==(i=o[r])&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(t=n[e]))this.removeListener(e,t);else if(void 0!==t)for(r=t.length-1;r>=0;r--)this.removeListener(e,t[r]);return this},a.prototype.listeners=function(e){return h(this,e,!0)},a.prototype.rawListeners=function(e){return h(this,e,!1)},a.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):g.call(e,t)},a.prototype.listenerCount=g,a.prototype.eventNames=function(){return this._eventsCount>0?n(this._events):[]}}).call(this,n(2))},function(e,t,n){"use strict";var r,i=n(221),o=Object.prototype.toString,a=(r=Object.create(null),function(e){var t=o.call(e);return r[t]||(r[t]=t.slice(8,-1).toLowerCase())});function l(e){return e=e.toLowerCase(),function(t){return a(t)===e}}function c(e){return Array.isArray(e)}function s(e){return void 0===e}var d=l("ArrayBuffer");function u(e){return"number"==typeof e}function A(e){return null!==e&&"object"==typeof e}function h(e){if("object"!==a(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}var g=l("Date"),F=l("File"),Q=l("Blob"),p=l("FileList");function m(e){return"[object Function]"===o.call(e)}var U=l("URLSearchParams");function b(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),c(e))for(var n=0,r=e.length;n<r;n++)t.call(null,e[n],n,e);else for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.call(null,e[i],i,e)}var Z,B=(Z="undefined"!=typeof Uint8Array&&Object.getPrototypeOf(Uint8Array),function(e){return Z&&e instanceof Z});var f,R=l("HTMLFormElement"),I=(f=Object.prototype.hasOwnProperty,function(e,t){return f.call(e,t)});e.exports={isArray:c,isArrayBuffer:d,isBuffer:function(e){return null!==e&&!s(e)&&null!==e.constructor&&!s(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){return e&&("function"==typeof FormData&&e instanceof FormData||"[object FormData]"===o.call(e)||m(e.toString)&&"[object FormData]"===e.toString())},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&d(e.buffer)},isString:function(e){return"string"==typeof e},isNumber:u,isObject:A,isPlainObject:h,isEmptyObject:function(e){return e&&0===Object.keys(e).length&&Object.getPrototypeOf(e)===Object.prototype},isUndefined:s,isDate:g,isFile:F,isBlob:Q,isFunction:m,isStream:function(e){return A(e)&&m(e.pipe)},isURLSearchParams:U,isStandardBrowserEnv:function(){var e;return("undefined"==typeof navigator||"ReactNative"!==(e=navigator.product)&&"NativeScript"!==e&&"NS"!==e)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:b,merge:function e(){var t={};function n(n,r){h(t[r])&&h(n)?t[r]=e(t[r],n):h(n)?t[r]=e({},n):c(n)?t[r]=n.slice():t[r]=n}for(var r=0,i=arguments.length;r<i;r++)b(arguments[r],n);return t},extend:function(e,t,n){return b(t,(function(t,r){e[r]=n&&"function"==typeof t?i(t,n):t})),e},trim:function(e){return e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e},inherits:function(e,t,n,r){e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,n&&Object.assign(e.prototype,n)},toFlatObject:function(e,t,n,r){var i,o,a,l={};if(t=t||{},null==e)return t;do{for(o=(i=Object.getOwnPropertyNames(e)).length;o-- >0;)a=i[o],r&&!r(a,e,t)||l[a]||(t[a]=e[a],l[a]=!0);e=!1!==n&&Object.getPrototypeOf(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kindOf:a,kindOfTest:l,endsWith:function(e,t,n){e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;var r=e.indexOf(t,n);return-1!==r&&r===n},toArray:function(e){if(!e)return null;if(c(e))return e;var t=e.length;if(!u(t))return null;for(var n=new Array(t);t-- >0;)n[t]=e[t];return n},isTypedArray:B,isFileList:p,forEachEntry:function(e,t){for(var n,r=(e&&e[Symbol.iterator]).call(e);(n=r.next())&&!n.done;){var i=n.value;t.call(e,i[0],i[1])}},matchAll:function(e,t){for(var n,r=[];null!==(n=e.exec(t));)r.push(n);return r},isHTMLForm:R,hasOwnProperty:I}},function(e,t){var n=Array.isArray;e.exports=n},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e){void 0===e&&(e={});const t=e.Errors||o.default,n=e.OTErrorClass||i.default,r=Object.keys(t).map(e=>t[e]);return function(e,t,i){if(-1===r.indexOf(e))return new Error(`Attempt to use invalid error name (${e}). Original message: ${t.message}`);if(!(t instanceof Error||/^\[object .*Error\]$/.test(Object.prototype.toString.call(t))))return new Error("Did not pass Error as second argument: "+t);const o=new n(void 0,t.message);if(o.name=e,!t.stack)try{throw t}catch(e){}return o.stack=t.stack,i&&(o.code=i),o}};var i=r(n(25)),o=r(n(8))},function(e,t,n){var r=n(188),i="object"==typeof self&&self&&self.Object===Object&&self,o=r||i||Function("return this")();e.exports=o},function(e,t,n){var r=n(573),i=n(574),o=i;o.v1=r,o.v4=i,e.exports=o},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e){void 0===e&&(e={});const t=e.logging||(0,a.default)("Events"),n={ExceptionEvent:function(e,t,n,r,i,o,a){return new l.default(e,!1,{error:a,message:t,title:n,code:r,component:i,target:o})},IssueReportedEvent:function(e,t){return new l.default(e,!1,{issueId:t})},EnvLoadedEvent:function(e){return new l.default(e,!1)}};let r=!1;n.ConnectionEvent=function(e){function n(t,n,r){return e.call(this,t,!1,{connection:n,reason:r})||this}return(0,o.default)(n,e),(0,i.default)(n,[{key:"connections",get:function(){return r||(t.warn("OT.ConnectionEvent connections property is deprecated, use connection instead."),r=!0),[this.connection]}}]),n}(l.default);let s=!1;n.StreamEvent=function(e){function n(t,n,r,i){return e.call(this,t,i,{stream:n,reason:r})||this}return(0,o.default)(n,e),(0,i.default)(n,[{key:"streams",get:function(){return s||(t.warn("OT.StreamEvent streams property is deprecated, use stream instead."),s=!0),[this.stream]}}]),n}(l.default);let d=!1,u=!1,A=!1;return n.SessionConnectEvent=function(e){function n(t){return e.call(this,t,!1)||this}return(0,o.default)(n,e),(0,i.default)(n,[{key:"connections",get:function(){return d||(t.warn("OT.SessionConnectedEvent no longer includes connections. Listen for connectionCreated events instead."),d=!0),[]}},{key:"streams",get:function(){return u||(t.warn("OT.SessionConnectedEvent no longer includes streams. Listen for streamCreated events instead."),u=!0),[]}},{key:"archives",get:function(){return A||(t.warn("OT.SessionConnectedEvent no longer includes archives. Listen for archiveStarted events instead."),A=!0),[]}}]),n}(l.default),n.SessionReconnectingEvent=function(){return new l.default(c.default.SESSION_RECONNECTING,!1)},n.SessionReconnectedEvent=function(){return new l.default(c.default.SESSION_RECONNECTED)},n.SessionDisconnectEvent=function(e,t,n){return new l.default(e,n,{reason:t})},n.StreamPropertyChangedEvent=function(e,t,n,r,i){return new l.default(e,!1,{stream:t,changedProperty:n,oldValue:r,newValue:i})},n.VideoDimensionsChangedEvent=function(e,t,n){return new l.default("videoDimensionsChanged",!1,{target:e,oldValue:t,newValue:n})},n.ArchiveEvent=function(e,t){return new l.default(e,!1,{id:t.id,name:t.name,status:t.status,archive:t})},n.ArchiveUpdatedEvent=function(e,t,n,r){return new l.default("updated",!1,{target:e,changedProperty:t,oldValue:n,newValue:r})},n.SignalEvent=function(e,t,n){return new l.default(e?"signal:"+e:c.default.SIGNAL,!1,{data:t,from:n})},n.CpuPerformanceChangedEvent=function(e){return new l.default("cpuPerformanceChanged",!1,{cpuPerformanceState:e})},n.QualityScoreChangedEvent=function(e){return new l.default("qualityScoreChanged",!1,{qualityScore:e})},n.CaptionReceivedEvent=function(e,t,n){return new l.default("caption",!1,{caption:e,streamId:t,isFinal:n})},n.PublisherCaptionsEnabled=function(e){return new l.default("publisherCaptionsEnabled",!1,{captionsEnabled:e})},n.MediaStreamAvailableEvent=function(e){return new l.default("mediaStreamAvailable",!1,{mediaStream:e})},n.StreamUpdatedEvent=function(e,t,n,r){return new l.default("updated",!1,{target:e,changedProperty:t,oldValue:n,newValue:r})},n.DestroyedEvent=function(e,t,n){return new l.default(e,!1,{target:t,reason:n})},n.ConnectionStateChangedEvent=function(e,t,n){return new l.default(e,!1,{target:t,mediaMode:n})},n.VideoEnabledChangedEvent=function(e,t){return new l.default(e,!1,{reason:t.reason})},n.VideoDisableWarningEvent=function(e){return new l.default(e,!1)},n.AudioLevelUpdatedEvent=function(e){return new l.default(c.default.AUDIO_LEVEL_UPDATED,!1,{audioLevel:e})},n.AudioInputDeviceChangedEvent=function(e){return new l.default(c.default.AUDIO_INPUT_DEVICE_CHANGED,!1,{device:e})},n.MediaStoppedEvent=function(e,t){return new l.default(c.default.MEDIA_STOPPED,!0,{target:e,track:t})},n.MuteForcedEvent=function(e){return new l.default(c.default.MUTE_FORCED,!1,e)},n.VideoElementCreatedEvent=function(e){return new l.default(c.default.VIDEO_ELEMENT_CREATED,!1,{element:e})},n};var i=r(n(24)),o=r(n(23)),a=r(n(1)),l=r(n(148)),c=r(n(30))},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(9)),o=r(n(63)),a=r(n(297)),l=r(n(149)),c=r(n(298)),s=r(n(1)),d=r(n(299));function u(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return A(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return A(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function A(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}const h=(0,s.default)("SDPHelpers"),g={getSections:e=>e.split(/\r\n|\r|\n/).reduce((e,t)=>{const n=t.match(/^m=(\w+) \d+/);return n&&(e.sections[e.section=n[1]]=[]),e.sections[e.section].push(t),e},{sections:{header:[]},section:"header"}).sections,getCodecsFromSection:e=>({codecs:e[0].match(/m=\w+ \d+ [A-Z/]+ ([\d ]+)$/)[1].split(" "),codecMap:(0,i.default)(...e.filter(e=>e.match(/^a=rtpmap:\d+/)).map(e=>e.match(/^a=rtpmap:(\d+) ([\w-]+)/).splice(1)).map(e=>({[e[0]]:e[1]})))}),getCodecsAndCodecMap(e,t){const n=g.getSections(e)[t];if(!n)throw new Error("no mediaType "+t);return g.getCodecsFromSection(n)},getCodecs(e,t){const n=g.getCodecsAndCodecMap(e,t);return n.codecs.map(e=>n.codecMap[e]||"Unknown codec")},MediaDirection:d.default,iceCredentials:{ufrag:"a=ice-ufrag:",pwd:"a=ice-pwd:"},getMLineIndex:function(e,t){const n="m="+t;return(0,a.default)(e,e=>-1!==e.indexOf(n))},getMLine:function(e,t){const n=g.getMLineIndex(e,t);return n>-1?e[n]:void 0},hasMediaType:(e,t)=>{const n=new RegExp("^m="+t),r=e.split("\r\n");return(0,a.default)(r,e=>n.test(e))>=0},hasMLinePayloadType:function(e,t,n){const r=g.getMLine(e,t);return g.getMLinePayloadTypes(r,t).indexOf(n)>-1},getMLinePayloadTypes:function(e,t){const n=new RegExp(`^m=${t} \\d+(/\\d+)? [a-zA-Z0-9/]+(( [a-zA-Z0-9/]+)+)$`,"i"),r=e.match(n);return!r||r.length<2?[]:r[2].trim().split(" ")},splitSections:function(e){return e.split("\nm=").map((e,t)=>(t>0?"m="+e:e).trim()+"\r\n")},getLinesPerSection:e=>g.splitSections(e).map(e=>g.getSDPLines(e)),replaceDirectionInSdpLines:(e,t,n)=>{const r=e.join("\r\n");return g.replaceDirection(r,t,n).split("\r\n")},replaceDirection:(e,t,n)=>{const r=new RegExp("a="+t,"g");return e.replace(r,"a="+n)},setSubscriberMediaSectionToInactive:e=>{const t=d.default.SENDONLY,n=d.default.INACTIVE;return g.replaceDirectionInSdpLines(e,t,n)},changeMediaDirection:function(e,t){const n=g.splitSections(e);let r=n.shift();const i=d.default.RECVONLY,o=d.default.INACTIVE,a=t===i?o:i;return n.forEach(e=>{const n=e.includes("m=video")?g.replaceDirection(e,a,t):e;r+=n}),r},removeTypesFromMLine:function(e,t){const n=/[0-9 ]*$/.exec(e)[0],r=n.split(" ").filter(e=>""!==e&&-1===t.indexOf(e));return e.replace(n," "+r.join(" "))},removeMediaEncoding:function(e,t,n){let r,i,o,a,l=e.split("\r\n");const c=g.getMLineIndex(l,t),s=c>-1?l[c]:void 0,d=[];if(-1===c)return l.join("\r\n");if(r=g.getMLinePayloadTypes(s,t),0===r.length)return l.join("\r\n");for(i=c;i<l.length;i++){const e=new RegExp(n,"i");0===l[i].indexOf("a=rtpmap:")&&(a=l[i].split(" "),2===a.length&&e.test(a[1])&&d.push(a[0].substr(9)))}if(!d.length)return l.join("\r\n");for(i=c;i<l.length;i++)if(0===l[i].indexOf("a=fmtp:"))for(a=l[i].split(" "),o=0;o<d.length;o++)2===a.length&&a[1]==="apt="+d[o]&&d.push(a[0].substr(7));return l=l.filter(e=>{for(let t=0;t<d.length;t++)if(0===e.indexOf(`a=rtpmap:${d[t]} `)||0===e.indexOf(`a=fmtp:${d[t]} `)||0===e.indexOf(`a=rtcp-fb:${d[t]} `))return!1;return!0}),d.length>0&&c>-1&&(l[c]=g.removeTypesFromMLine(s,d)),l.join("\r\n")},disableMediaType:function(e,t){const n=e.split("\r\n"),r=[];let i;n.forEach(e=>{let t=e;/^m=/.test(t)&&(i=void 0),i||(i=[],r.push(i)),i.push(t)});const o=new RegExp(`^m=${t} \\d+ ([^ ]+) [0-9 ]+$`),a=r.map(e=>{const n=e[0].match(o);return n?[`m=${t} 0 ${n[1]} 0`,"a=inactive",...e.filter(e=>/^c=/.test(e)||/^a=mid:/.test(e)||""===e)]:e});return[].concat(...a).join("\r\n")},removeVideoCodec:function(e,t){return g.removeMediaEncoding(e,"video",t)}},F=function(e,t){let n=t.filterByName("ssrc-group:FID");switch(n=0===n.length?[]:n[0].value.split(" "),n.length){case 0:case 1:var r=t.find(e=>0===e.name.indexOf("rtpmap:")&&e.value.indexOf("rtx/90000")>-1);if(!r)return!1;var i=r.name.split(":")[1];return i.indexOf("/")>-1&&(i=i.split("/")[0]),g.hasMLinePayloadType(e,"video",i);default:return h.debug("SDP Helpers: There are more than two FIDs, RTX is definitely enabled"),!0}};g.getAttributesForMediaType=function(e,t){let n,r,i,a,l,c,s,d,u,A;const h=g.getMLineIndex(e,t),Q=new RegExp(`m=(?!${t}).+ `,"i"),p=new RegExp("a=ssrc:\\d+ .*","i"),m=new RegExp("a=ssrc-group:(SIM|FID) (\\d+).*?","i"),U=new RegExp("a=([a-z0-9:/-]+) (.*)","i"),b=[];for(let t=h+1;t<e.length;t++){if(Q.test(e[t])){void 0!==n&&(r=t-1);break}l=e[t].match(m),c=e[t].match(p),void 0===n&&(l||c)&&(n=t,l&&(a=/^(FID|SIM)$/.test(l[1])?l[2]:l[1])),s=e[t].match(`a=ssrc:${a} msid:(.+)`),s&&(d=s[1]);const o=p.test(e[t]),h=m.test(e[t]);void 0!==n&&(void 0!==r||o||h?t===e.length-1&&(r=t):r=t-1);const g=e[t].match(/a=mid:(.+)/);g&&(u=g[1],A=t),i=U.exec(e[t]),i&&3===i.length&&b.push({lineIndex:t,name:i[1],value:i[2]})}return b.ssrcStartIndex=n,b.ssrcEndIndex=r,b.msid=d,b.mid=u,b.midIndex=A,b.isUsingRTX=F.bind(null,e,b),b.filterByName=function(e){return this.filter(t=>t.name===e)},b.getRtpNumber=e=>{const t=new RegExp("rtpmap:(.+)");return(0,o.default)(b.map(n=>{const r=n.name.match(t);return r&&n.value.indexOf(e)>=0?r[1]:null}),e=>null!==e)},b},g.modifyDtx=(e,t)=>{const n=e.split("\r\n");if(!g.getMLine(n,"audio"))return h.debug("No audio m-line, not enabling dtx."),e;const r=g.getAttributesForMediaType(n,"audio"),i=r.getRtpNumber("opus");if(!i)return h.debug("Could not find rtp number for opus, not enabling dtx."),e;const o=r.find(e=>e.name==="fmtp:"+i);if(!o)return h.debug("Could not find a=fmtp line for opus, not enabling dtx."),e;let a=n[o.lineIndex];const l=/usedtx=\d+([\s;]*)/;return l.test(o.value)?a=a.replace(l,t?"usedtx=1$1":""):t&&(a+="; usedtx=1"),a=a.replace(/[;\s]*$/,""),n[o.lineIndex]=a,n.join("\r\n")};const Q=(e,t,n)=>{const r=t.split("\r\n");if(!g.getMLine(r,"audio"))return h.debug("No audio m-line, not enabling stereo."),t;const i=g.getAttributesForMediaType(r,"audio"),o=i.getRtpNumber("opus");if(!o)return h.debug("Could not find rtp number for opus, not enabling stereo."),t;const a=i.find(e=>e.name==="fmtp:"+o);if(!a)return h.debug("Could not find a=fmtp line for opus, not enabling stereo."),t;let l,c=r[a.lineIndex];switch(e){case"send":l=/sprop-stereo=\d+([\s;]*)/,l.test(a.value)?c=c.replace(l,n?"sprop-stereo=1$1":""):n&&(c+="; sprop-stereo=1");break;case"receive":l=/([^-])stereo=\d+([\s;]*)/,l.test(a.value)?c=c.replace(l,n?"$1stereo=1$2":"$1"):n&&(c+="; stereo=1");break;default:throw new Error(`Invalid type ${e} passed into enableStereo`)}return c=c.replace(/[;\s]*$/,""),r[a.lineIndex]=c,r.join("\r\n")};g.modifySendStereo=Q.bind(null,"send"),g.modifyReceiveStereo=Q.bind(null,"receive"),g.setAudioBitrate=(e,t)=>{const n=g.getAudioBitrate(e);if(void 0!==n)return h.debug(`Audio bitrate already set to ${n}, not setting audio bitrate`),e;const r=e.split("\r\n");if(!g.getMLine(r,"audio"))return h.debug("No audio m-line, not setting audio bitrate"),e;const i=g.getAttributesForMediaType(r,"audio"),o=i.getRtpNumber("opus");if(!o)return h.debug("Could not find rtp number for opus, not setting audio bitrate."),e;const a=i.find(e=>e.name==="fmtp:"+o);if(!a)return h.debug("Could not find a=fmtp line for opus, not setting audio bitrate."),e;let l=r[a.lineIndex];return l+="; maxaveragebitrate="+t,l=l.replace(/[;\s]*$/,""),r[a.lineIndex]=l,r.join("\r\n")},g.removeVideoOrientation=e=>{let t=e.split("\r\n");return t=t.filter(e=>!e.includes("urn:3gpp:video-orientation")),t.join("\r\n")},g.hasSendStereo=e=>/[\s;]sprop-stereo=1/.test(e),g.hasSendDtx=e=>/[\s;]usedtx=1/.test(e),g.hasOpusFec=e=>/[\s;]useinbandfec=1/.test(e),g.getAudioBitrate=e=>{const t=e.match(/[\s;]maxaveragebitrate=(\d+)/);if(t)return Number(t[1])},g.MAX_SSRCS=10,g.getSSRCGroupType=e=>["SIM","FID"].find(t=>e.filterByName("ssrc-group:"+t)[0]),g.getSSRCGroup=e=>{const t=g.getSSRCGroupType(e);return e.filterByName("ssrc-group:"+t)[0]},g.getSSRCGroupSSRCs=e=>{const t=g.getSSRCGroup(e);return t?t.value.split(" ").slice(0,g.MAX_SSRCS):[]},g.getAllowedSSRCs=(e,t)=>{const n=t.slice();return e.filterByName("ssrc-group:FID").forEach(e=>{const t=e.value.split(" ");(0,l.default)(n,t).length&&Array.prototype.push.apply(n,t)}),(0,c.default)(n)},g.filterExcessSSRCs=e=>{const t=e.split("\r\n"),n=g.getAttributesForMediaType(t,"video"),r=g.getSSRCGroupType(n),i=n.ssrcStartIndex;if(void 0===i)return e;let o;const a=e=>{let t=null;return e.match(/^a=ssrc:(\d+)/)&&(t=RegExp.$1),t};if(r){const e=g.getSSRCGroupSSRCs(n),i=["a=ssrc-group:"+r,...e].join(" ");t[n.find(e=>e.name.startsWith("ssrc-group:")).lineIndex]=i,o=g.getAllowedSSRCs(n,e)}else{o=[];n.ssrcStartIndex&&o.push(a(t[n.ssrcStartIndex]))}return t.filter((e,t)=>{if(t<i||t>n.ssrcEndIndex)return!0;if(t===i){if(!r){const t=a(e);return t?o.includes(t):!/^a=ssrc:(\d+)/.test(e)}return!0}const l=a(e);if(l)return o.includes(l);if(e.match(/^a=ssrc-group:FID (\d+)/)){const e=RegExp.$1;return o.includes(e)}return!e.match(/^a=ssrc-group:SIM /)}).join("\r\n")},g.enableSimulcast=function(e,t){let n,r;const i=e.split("\r\n");if(!g.getMLine(i,"video"))return h.debug("No video m-line, not enabling simulcast."),e;const o=g.getAttributesForMediaType(i,"video");if(o.filterByName("ssrc-group:SIM").length>0)return h.debug("Simulcast is already enabled in this SDP, not attempting to enable again."),g.filterExcessSSRCs(e);if(!o.msid)return h.debug("No local stream attached, not enabling simulcast."),e;const a=o.isUsingRTX(),l=[],c=[];for(r=0;r<t;++r)l.push(1e4+r),a&&c.push(2e4+r);if(n=["a=ssrc-group:SIM "+l.join(" ")],a)for(r=0;r<t;++r)n.push(`a=ssrc-group:FID ${l[r]} ${c[r]}`);for(r=0;r<t;++r)n.push(`a=ssrc:${l[r]} cname:localCname`,`a=ssrc:${l[r]} msid:${o.msid}`);if(a)for(r=0;r<t;++r)n.push(`a=ssrc:${c[r]} cname:localCname`,`a=ssrc:${c[r]} msid:${o.msid}`);return n.unshift(o.ssrcStartIndex,o.ssrcEndIndex-o.ssrcStartIndex+1),i.splice(...n),i.join("\r\n")},g.reprioritizeVideoCodec=function(e,t,n){const r=e.split("\r\n"),i=g.getMLineIndex(r,"video");if(-1===i)return e;const o=g.getMLinePayloadTypes(r[i],"video"),a=new RegExp("^a=rtpmap:(\\d+).* "+t,"i"),l=r.map(e=>e.match(a)).filter(e=>null!==e);if(0===l.length)return e;const c=l.map(e=>e[1]);let s=o.filter(e=>-1===c.indexOf(e));"top"===n?s.unshift(...c):"bottom"===n?s.push(...c):(h.error(`Unexpected location param: ${n}; not changing ${t} priority`),s=o);const d=r[i].replace(o.join(" "),s.join(" "));return r[i]=d,r.join("\r\n")},g.getSetupRole=e=>{for(var t,n=u(e.split(/\r\n|\r|\n/));!(t=n()).done;){const e=t.value.match(/^a=setup:(\w+)/);if(e)return e[1]}return""},g.setSetupRole=(e,t)=>e.split(/\r\n|\r|\n/).map(e=>e.match(/^a=setup:(\w+)/)?"a=setup:"+t:e).join("\r\n"),g.changeSetupRole=(e,t,n)=>e.split(/\r\n|\r|\n/).map(e=>e.includes("a=setup:"+t)?"a=setup:"+n:e).join("\r\n"),g.patterns={bundle:"a=group:BUNDLE",address:"c=IN IP4",rtcp:"a=rtcp:",direction:["a=inactive","a=sendonly","a=recvonly","a=sendrecv"],rsize:"a=rtcp-rsize",ssrc:"a=ssrc:",msid:"a=msid:"},g.getIndexStartingWith=(e,t,n)=>{const r=e.slice(n),i=t.map(e=>r.findIndex(t=>t.includes(e))).filter(e=>e>-1);return i.length?n+Math.min(...i):e.length},g.getLastIndexPriorTo=(e,t,n)=>e.slice(0,n).map(e=>e.includes(t)).lastIndexOf(!0),g.includesAny=(e,t)=>{for(let n=0;n<t.length;n++)if(e.includes(t[n]))return!0;return!1},g.isVersionLine=e=>/^o=/.test(e),g.getVersionLine=e=>e.find(g.isVersionLine),g.getVersion=e=>{const t=g.getVersionLine(e);if(void 0===t)return;const n=Number(t.match(/ (\d+) IN /)[1]);return Number.isInteger(n)?n:void 0},g.updateVersion=(e,t,n)=>{const r=[...e],i=r.findIndex(e=>g.isVersionLine(e));return i>=0&&(r[i]=r[i].replace(` ${t} `,` ${n} `)),r},g.isBundleLine=e=>e.includes(g.patterns.bundle),g.getBundleLine=e=>e.find(g.isBundleLine),g.createBundleLine=e=>`${g.patterns.bundle} ${e.join(" ")}`,g.updateBundleLine=(e,t)=>{const n=[...e],r=g.createBundleLine(t),i=n.findIndex(e=>g.isBundleLine(e));return i>=0&&(n[i]=r),n},g.parseMLine=e=>{const t=e.match(/^(m=(?:audio|video)) (\d+) (.+)/),n=t[1];return{port:t[2],transport:t[3],mediaType:n}},g.disableTrack=e=>{const t=g.parseMLine(e);return`${t.mediaType} 0 ${t.transport}`},g.setMediaDirection=(e,t)=>{if(!Object.values(d.default).includes(t))return e;const n=e.slice(),r=n.findIndex(e=>g.includesAny(e,g.patterns.direction));return-1===r||(n[r]="a="+t),n},g.disableTrackSection=e=>{const t=e.mid,n=e.sdp;let r=n.filter(e=>{const t=g.patterns,n=t.address,r=t.rtcp,i=t.rsize,o=t.ssrc,a=t.msid;return!g.includesAny(e,[n,r,i,o,a])});return r[0]=g.disableTrack(n[0]),r=g.setMediaDirection(r,d.default.INACTIVE),{mid:t,sdp:r}},g.isDisabledMediaSection=e=>{let t=e[0];return/^m=(?:video|audio) 0 RTP\/SAVPF 0/.test(t)},g.getDisabledSectionForMid=e=>[`m=${e.includes("a")?"audio":"video"} 0 RTP/SAVPF 0`],g.disableTrackSections=(e,t)=>t.map(t=>{const n=g.getTrackMids(t)[0];return!n||e.includes(n)?t:g.getDisabledSectionForMid(n)}),g.getEnabledTracks=e=>g.getBundleLine(e).match(new RegExp(`^${g.patterns.bundle} (.+)$`))[1].split(" "),g.getDisabledTracks=(e,t)=>e.filter(e=>!t.includes(e)),g.getTrackSection=(e,t)=>{const n=e.findIndex(e=>e.includes("a=mid:"+t)),r=t.includes("a")?"audio":"video",i=g.getLastIndexPriorTo(e,"m="+r,n),o=g.getIndexStartingWith(e,["m=audio","m=video"],n),a=e.slice(i,o);return{mid:t,sdp:a}},g.getHeaders=e=>{const t=e.findIndex(e=>e.includes("m=audio")||e.includes("m=video"));return e.slice(0,t)},g.getSDPLines=e=>e.split("\r\n").filter(e=>e),g.getTrackMids=e=>e.filter(e=>e.match(new RegExp("^a=mid:\\d+"))).map(e=>e.substring("a=mid:".length)),g.getTrackSections=e=>g.getTrackMids(e).map(t=>g.getTrackSection(e,t)),g.parseMantisSDP=e=>{const t=g.changeSetupRole(e,"actpass","passive");return g.parseSDP(t)},g.isMediaSectionDisabled=e=>{const t=g.parseMLine(e[0]).port;return 0===parseInt(t,10)},g.getSectionMid=e=>g.isMediaSectionDisabled(e)?null:g.getTrackMids(e)[0],g.parseSDP=e=>{const t=g.getLinesPerSection(e),n=t[0],r=t.slice(1);return{bundle:g.getBundleLine(n),version:g.getVersion(n),iceCredentials:g.getIceCredentials(n),tracks:g.getEnabledTracks(n),mediaSections:r,mids:r.map(g.getSectionMid),headers:n}},g.createSDP=(e,t)=>{const n=[...e];return t.forEach(e=>n.push(...e)),n.push(""),n.join("\r\n")},g.removePayloadTypeFromSection=(e,t)=>e.filter(e=>!e.includes(`a=rtpmap:${t} `)&&!e.includes(`a=fmtp:${t} `)&&!e.includes(`a=rtcp-fb:${t} `)),g.getRtxPayloadType=(e,t)=>{const n=e.filter(e=>e.includes("apt="+t))[0];return null==n?void 0:n.match(/^a=fmtp:(\d+) /)[1]},g.removeRtxPayloadTypeFromSection=(e,t)=>{let n=[...e];const r=g.getRtxPayloadType(n,t);return r&&(n=g.removePayloadTypeFromSection(n,r)),n},g.trimUnusedCodecs=(e,t)=>{const n=e[0].split(" "),r=n.slice(3),i=n.slice(0,3),o=g.getCodecsFromSection(e);let a=[...e],l=[];r.forEach(e=>{const n=o.codecMap[e];if(t.includes(n)){l.push(e);const t=g.getRtxPayloadType(a,e);t&&l.push(t)}else a=g.removePayloadTypeFromSection(a,e),a=g.removeRtxPayloadTypeFromSection(a,e)});const c=l.length?l:[0];return a[0]=[...i,...c].join(" "),a},g.removeUnusedCodecs=(e,t)=>{if(!t)return e;const n=g.parseSDP(e),r=n.headers,i=n.mediaSections,o=g.parseSDP(t),a=o.mids,l=o.mediaSections,c=i.map(e=>{const t=a.findIndex(t=>t===g.getTrackMids(e)[0]);if(t<0)return e;const n=Object.values(g.getCodecsFromSection(l[t]).codecMap);return g.trimUnusedCodecs(e,n)}),s=[...r];return c.forEach(e=>s.push(...e)),s.push(""),s.join("\r\n")},g.updateSDPWithNewOffer=(e,t)=>{const n=e.headers,r=e.version,i=e.mediaSections,o=g.getSDPLines(t),a=g.getVersion(o),l=g.getEnabledTracks(o),c={version:a,tracks:l,headers:g.updateBundleLine(g.updateVersion(n,r,a),l),mediaSections:g.disableTrackSections(l,i)};return c.mids=c.mediaSections.map(g.getSectionMid),c},g.isUfragLine=e=>e.includes(g.iceCredentials.ufrag),g.isPwdLine=e=>e.includes(g.iceCredentials.pwd),g.getIceCredentials=e=>{const t={};return e.forEach(e=>{g.isUfragLine(e)?t.ufrag=e:g.isPwdLine(e)&&(t.pwd=e)}),t},g.updateIceCredentials=(e,t)=>e.map(e=>g.isUfragLine(e)?t.ufrag:g.isPwdLine(e)?t.pwd:e),g.addIceCredentialsToSection=(e,t)=>{let n=t.ufrag,r=t.pwd;const i=[...e],o=i.findIndex(e=>e.startsWith("a=mid:"));return o>=0&&i.splice(o,0,n,r),i},g.addIceCandidatesToSection=(e,t)=>{const n=[...e],r=t.filter(e=>e.startsWith("a=candidate:")||"a=end-of-candidates"===e),i=n.findIndex(e=>e.startsWith("a=mid:"));return i>=0&&r.length&&n.splice(i,0,...r),n},g.addIceConfig=(e,t,n)=>{const r=[...e],i=e[0];if(!g.getIceCredentials(i).ufrag){const e=g.addIceCredentialsToSection(i,n);r[0]=g.addIceCandidatesToSection(e,t)}return r},g.updateHeadersInPartialSdp=(e,t,n)=>{if(!e.headers.length)return g.updateBundleLine(t.headers,n);let r=g.updateBundleLine(e.headers,n);return r=g.updateVersion(r,e.version,t.version),e.iceCredentials.ufrag!==t.iceCredentials.ufrag&&(r=g.updateIceCredentials(r,t.iceCredentials)),r},g.updateFirstEnabledMediaSection=(e,t)=>{const n=[...e.mediaSections],r=e.mids.findIndex(e=>null!==e);return r>=0&&(n[r]=g.updateIceCredentials(n[r],t)),n};var p=g;t.default=p},function(e,t,n){var r=n(33),i=n(11);e.exports=function(e){if(!i(e))return!1;var t=r(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},function(e,t){e.exports=function(e){return null!=e&&"object"==typeof e}},function(e,t,n){"use strict";(function(e){var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(4)),o=r(n(5)),a=r(n(3)),l=r(n(107)),c=r(n(259)),s=r(n(564)),d=r(n(260));var u=function(t){void 0===t&&(t={});const n=t.getNativeEnumerateDevices||(0,c.default)(),r=t.getNativeMediaDevices||(0,s.default)(),u=(t.currentAudioOutputDevice||l.default).getCurrentAudioOutputDeviceId,A=(t.currentAudioInputDevice||d.default).getCurrentAudioInputDevice,h=t.env||a.default,g=t.global||(void 0!==typeof window?window:global),F={},Q={audio:"audioInput",video:"videoInput",audioinput:"audioInput",videoinput:"videoInput",audiooutput:"audioOutput",audioInput:"audioInput",videoInput:"videoInput",audioOutput:"audioOutput"};return F.getNativeMediaDevices=()=>r(),F.hasEnumerateDevicesCapability=()=>"function"==typeof n(),F.hasDeviceChangeCapability=()=>{const e=r();return!(!e||!("ondevicechange"in e))},F.hasSetSinkIdCapability=()=>"setSinkId"in(null==g?void 0:g.HTMLMediaElement.prototype),F.hasAudioOutputApiSupport=()=>{const e=t.hasSetSinkIdCapability,n=void 0===e?F.hasSetSinkIdCapability:e,r=t.hasDeviceChangeCapability,i=void 0===r?F.hasDeviceChangeCapability:r;return!(null!=h&&h.isFirefox)&&n()&&i()},F.hasEnumerateDevicesBug=()=>h.isSafari&&13.1===h.version,F.getMediaDevices=()=>F.hasEnumerateDevicesCapability()?n()().then(e=>e.map(e=>({deviceId:e.deviceId||e.id,label:e.label,kind:Q[e.kind]}))):e.reject(new Error("This browser does not support enumerateDevices APIs")),F.getInputMediaDevices=()=>F.getMediaDevices().then(e=>e.filter(e=>/^(audio|video)Input$/.test(e.kind))),F.getAudioOutputMediaDevices=()=>F.getMediaDevices().then(e=>e.filter(e=>"audioOutput"===e.kind).map(e=>({deviceId:e.deviceId,label:e.label}))),F.getAudioInputMediaDevices=()=>F.getMediaDevices().then(e=>e.filter(e=>"audioInput"===e.kind).map(e=>({deviceId:e.deviceId,label:e.label}))),F.shouldAskForDevices=()=>F.hasEnumerateDevicesCapability()?F.getInputMediaDevices().then(e=>{if(0===e.length)return{video:!0,audio:!0};const t=e.filter(e=>"audioInput"===e.kind),n=e.filter(e=>"videoInput"===e.kind);return F.hasEnumerateDevicesBug()&&0===n.length?{audio:!0,video:!0}:{video:n.length>0,audio:t.length>0,videoDevices:n,audioDevices:t}}).catch(()=>({video:!0,audio:!0})):e.resolve({video:!0,audio:!0}),F.getDefaultAudioOutputDeviceId=e=>{if(!Array.isArray(e)||0===e.length)return"";return(e.find(e=>"default"===e.deviceId)||e[0]).deviceId},F.getDefaultAudioInputDevice=e=>Array.isArray(e)&&0!==e.length?e.find(e=>"default"===e.deviceId)||e[0]:"",F.hasDevice=(e,t)=>{let n=e;return Array.isArray(n)||(n=[]),n.some(e=>e.deviceId===t)},F.getActiveAudioInputDevice=(0,o.default)(i.default.mark((function e(){var t,n,r;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,F.getAudioInputMediaDevices();case 2:if(0!==(t=e.sent).length){e.next=5;break}return e.abrupt("return",{deviceId:null,label:null});case 5:return(n=A())||(r=F.getDefaultAudioInputDevice(t),n=t.find(e=>e===r)),e.abrupt("return",n);case 8:case"end":return e.stop()}}),e)}))),F.getActiveAudioOutputDevice=(0,o.default)(i.default.mark((function e(){var t,n,r;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,F.getAudioOutputMediaDevices();case 3:t=e.sent,e.next=9;break;case 6:throw e.prev=6,e.t0=e.catch(0),e.t0;case 9:if(0!==t.length){e.next=11;break}return e.abrupt("return",{deviceId:null,label:null});case 11:return(n=t.find(e=>e.deviceId===u()))||(r=F.getDefaultAudioOutputDeviceId(t),n=t.find(e=>e.deviceId===r)),e.abrupt("return",n);case 14:case"end":return e.stop()}}),e,null,[[0,6]])}))),F};t.default=u}).call(this,n(2))},function(e,t){e.exports=function(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}},function(e,t){function n(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}e.exports=function(e,t,r){return t&&n(e.prototype,t),r&&n(e,r),e}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(6)),o=r(n(1)),a=r(n(18)),l=r(n(30)),c=r(n(578));const s=(0,o.default)("GlobalExceptionHandler"),d=(0,a.default)(),u=function(e,t){Error.call(this),this.code=e,this.message=t};(u.prototype=Object.create(Error.prototype)).constructor=u,(0,i.default)(u),u.getTitleByCode=function(e){return c.default[+e]},u.handleJsException=e=>{let t=e.error,n=e.errorMsg,r=e.code,i=e.target,o=e.analytics;if(!i)throw new Error("handleJsException requires target");const a=()=>void 0!==r?r:t&&t.code,c=()=>void 0!==n?n:t&&t.message,A=u.getTitleByCode(a());s.error(`OT.exception :: title: ${A} (${a()}) msg: ${c()}`);try{const e={partnerId:i.session?i.session.apiKey:i.apiKey,sessionId:i.session?i.session.sessionId:i.sessionId};o.logError(a(),"tb.exception",A,{details:c()},e);const n=new d.ExceptionEvent(l.default.EXCEPTION,c(),A,a(),i,i,t);if(t)n.stack=t.stack;else try{throw new Error}catch(e){n.stack=e.stack}u.dispatchEvent(n)}catch(e){s.error("OT.exception :: Failed to dispatch exception - "+e.toString())}};var A=u;t.default=A},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(269));var o={publishers:new i.default("guid"),subscribers:new i.default("widgetId"),sessions:new i.default};t.default=o},function(e,t,n){"use strict";t.__esModule=!0,t.MEDIUM=t.LOW=t.CongestionLevels=t.CRITICAL=void 0;t.CRITICAL=2;t.MEDIUM=1;t.LOW=0;const r={CRITICAL:2,MEDIUM:1,LOW:0};t.CongestionLevels=r},function(e,t,n){var r=n(20),i=n(119);e.exports=function(e){return null!=e&&i(e.length)&&!r(e)}},function(e,t){var n,r,i=e.exports={};function o(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function l(e){if(n===setTimeout)return setTimeout(e,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:o}catch(e){n=o}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(e){r=a}}();var c,s=[],d=!1,u=-1;function A(){d&&c&&(d=!1,c.length?s=c.concat(s):u=-1,s.length&&h())}function h(){if(!d){var e=l(A);d=!0;for(var t=s.length;t;){for(c=s,s=[];++u<t;)c&&c[u].run();u=-1,t=s.length}c=null,d=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===a||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function g(e,t){this.fun=e,this.array=t}function F(){}i.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];s.push(new g(e,t)),1!==s.length||d||l(h)},g.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=F,i.addListener=F,i.once=F,i.off=F,i.removeListener=F,i.removeAllListeners=F,i.emit=F,i.prependListener=F,i.prependOnceListener=F,i.listeners=function(e){return[]},i.binding=function(e){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(e){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;t.default={ACTIVE:"active",INACTIVE:"inactive",UNKNOWN:"unknown",PER_SESSION:"perSession",PER_STREAM:"perStream",EXCEPTION:"exception",ISSUE_REPORTED:"issueReported",SESSION_CONNECTED:"sessionConnected",SESSION_RECONNECTING:"sessionReconnecting",SESSION_RECONNECTED:"sessionReconnected",SESSION_DISCONNECTED:"sessionDisconnected",STREAM_CREATED:"streamCreated",STREAM_DESTROYED:"streamDestroyed",CONNECTION_CREATED:"connectionCreated",CONNECTION_DESTROYED:"connectionDestroyed",SIGNAL:"signal",STREAM_PROPERTY_CHANGED:"streamPropertyChanged",MICROPHONE_LEVEL_CHANGED:"microphoneLevelChanged",RESIZE:"resize",SETTINGS_BUTTON_CLICK:"settingsButtonClick",DEVICE_INACTIVE:"deviceInactive",INVALID_DEVICE_NAME:"invalidDeviceName",ACCESS_ALLOWED:"accessAllowed",ACCESS_DENIED:"accessDenied",ACCESS_DIALOG_OPENED:"accessDialogOpened",ACCESS_DIALOG_CLOSED:"accessDialogClosed",AUDIO_INPUT_DEVICE_CHANGED:"audioInputDeviceChanged",ECHO_CANCELLATION_MODE_CHANGED:"echoCancellationModeChanged",MEDIA_STOPPED:"mediaStopped",PUBLISHER_DESTROYED:"destroyed",MUTE_FORCED:"muteForced",SUBSCRIBER_DESTROYED:"destroyed",SUBSCRIBER_CONNECTED:"connected",SUBSCRIBER_DISCONNECTED:"disconnected",SUBSCRIBER_CAPTION_RECEIVED:"captionReceived",DEVICES_DETECTED:"devicesDetected",DEVICES_SELECTED:"devicesSelected",CLOSE_BUTTON_CLICK:"closeButtonClick",MICLEVEL:"microphoneActivityLevel",MICGAINCHANGED:"microphoneGainChanged",ENV_LOADED:"envLoaded",ENV_UNLOADED:"envUnloaded",AUDIO_LEVEL_UPDATED:"audioLevelUpdated",VIDEO_ELEMENT_CREATED:"videoElementCreated"}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(4)),o=r(n(5)),a=r(n(24)),l=r(n(6)),c=r(n(270)),s=r(n(266)),d=r(n(152)),u=r(n(37)),A=r(n(579)),h=r(n(581)),g=r(n(584));const F=(0,u.default)();let Q=function(){function e(e){let t=void 0===e?{}:e,n=t.staticConfig,r=void 0===n?F.onlyLocal():n,i=t.sessionInfo,o=void 0===i?new d.default:i,a=t.ajax,l=t.queue,c=t.getUserAgentClientHintData,s=void 0===c?g.default:c,u=t.userAgentData,A=void 0===u?"undefined"!=typeof navigator&&navigator.userAgentData:u;this.getTurnServerName=e=>{let t,n;if(!e||"object"!=typeof e)return t;return(Array.isArray(e)?e:[e]).forEach(e=>{const r=e.urls||e.url;(Array.isArray(r)?r:[r]).forEach(e=>{const r=e.indexOf(":")+1,i=e.lastIndexOf(":");e.includes("turns")?n=e.substring(r,i):t=e.substring(r,i)})}),n||t},this.ajax=a,this.queue=l,this.sessionInfo=o,this.getUserAgentClientHintData=s,this.userAgentData=A,this.staticConfig=r}var t=e.prototype;return t._getCachedUserAgentData=function(){var e=(0,o.default)(i.default.mark((function e(){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.cachedUserAgentData){e.next=4;break}return e.next=3,this.getUserAgentClientHintData(this.userAgentData);case 3:this.cachedUserAgentData=e.sent;case 4:return e.abrupt("return",this.cachedUserAgentData);case 5:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),t.commonQoSFields=function(){const e=this._analytics.proxyUrl,t=this.sessionInfo.messagingURL;return{clientVersion:this.staticConfig.clientVersion,buildHash:this.staticConfig.buildHash,source:(void 0!==typeof window?window:global).location&&(void 0!==typeof window?window:global).location.href,logVersion:"2",apiServer:this.staticConfig.apiUrl,clientSystemTime:(new Date).getTime(),sessionId:this.sessionInfo.sessionId,mediaServerName:this.sessionInfo.mediaServerName,relayServer:this.getTurnServerName(this.sessionInfo.iceServers),p2p:this.sessionInfo.p2pEnabled,messagingServer:this.sessionInfo.messagingServer,messagingUrl:(0,A.default)(e,t),version:this.staticConfig.version,partnerId:this.sessionInfo.partnerId}},t._getCommonDataFields=function(){var e=(0,o.default)(i.default.mark((function e(){var t,n;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c.default.getAsync();case 2:return t=e.sent,e.next=5,this._getCachedUserAgentData();case 5:return n=e.sent,e.abrupt("return",Object.assign({guid:t},this.commonQoSFields(),n));case 7:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),t.logError=function(t,n,r,i,o){void 0===o&&(o={}),this._getCommonDataFields().then(a=>{const l=[t,n,r,i,Object.assign({},a,o)];e.emit("logError",...l),this._analytics.logError(...l)})},t.logEvent=function(t,n,r){void 0===t&&(t={}),this._getCommonDataFields().then(i=>{const o=Object.assign({},i,t);e.emit("logEvent",o),this._analytics.logEvent(o,!1,n,r)})},t.logQOS=function(t){void 0===t&&(t={}),this._getCommonDataFields().then(n=>{const r=Object.assign({duration:0},n,t);(0,h.default)(r),e.emit("logQOS",r),this._analytics.logQOS(r)})},(0,a.default)(e,[{key:"staticConfig",get:function(){return this._staticConfig},set:function(e){this._staticConfig=e,this._analytics=new s.default({loggingUrl:this.staticConfig.loggingUrl,ajax:this.ajax,queue:this.queue})}}]),e}();t.default=Q,(0,l.default)(Q),e.exports=Q},function(e,t,n){"use strict";var r=!0,i=!0;function o(e,t,n){var r=e.match(t);return r&&r.length>=n&&parseInt(r[n],10)}e.exports={extractVersion:o,wrapPeerConnectionEvent:function(e,t,n){if(e.RTCPeerConnection){var r=e.RTCPeerConnection.prototype,i=r.addEventListener;r.addEventListener=function(e,r){if(e!==t)return i.apply(this,arguments);var o=function(e){var t=n(e);t&&r(t)};return this._eventMap=this._eventMap||{},this._eventMap[r]=o,i.apply(this,[e,o])};var o=r.removeEventListener;r.removeEventListener=function(e,n){if(e!==t||!this._eventMap||!this._eventMap[n])return o.apply(this,arguments);var r=this._eventMap[n];return delete this._eventMap[n],o.apply(this,[e,r])},Object.defineProperty(r,"on"+t,{get:function(){return this["_on"+t]},set:function(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})}},disableLog:function(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(r=e,e?"adapter.js logging disabled":"adapter.js logging enabled")},disableWarnings:function(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(i=!e,"adapter.js deprecation warnings "+(e?"disabled":"enabled"))},log:function(){if("object"==typeof window){if(r)return;"undefined"!=typeof console&&"function"==typeof console.log&&console.log.apply(console,arguments)}},deprecated:function(e,t){i&&console.warn(e+" is deprecated, please use "+t+" instead.")},detectBrowser:function(e){var t=e&&e.navigator,n={browser:null,version:null};if(void 0===e||!e.navigator)return n.browser="Not a browser.",n;if(t.mozGetUserMedia)n.browser="firefox",n.version=o(t.userAgent,/Firefox\/(\d+)\./,1);else if(t.webkitGetUserMedia)n.browser="chrome",n.version=o(t.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else if(t.mediaDevices&&t.userAgent.match(/Edge\/(\d+).(\d+)$/))n.browser="edge",n.version=o(t.userAgent,/Edge\/(\d+).(\d+)$/,2);else{if(!e.RTCPeerConnection||!t.userAgent.match(/AppleWebKit\/(\d+)\./))return n.browser="Not a supported browser.",n;n.browser="safari",n.version=o(t.userAgent,/AppleWebKit\/(\d+)\./,1)}return n}}},function(e,t,n){var r=n(44),i=n(375),o=n(376),a=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":a&&a in Object(e)?i(e):o(e)}},function(e,t,n){var r=n(192),i=n(121),o=n(28);e.exports=function(e){return o(e)?r(e):i(e)}},function(e,t,n){"use strict";var r=n(47);e.exports=function(e){if(!r(e))throw new TypeError("Cannot use null or undefined");return e}},function(e,t,n){"use strict";var r=n(57),i=n(213),o=n(133),a=n(214),l=n(215);(e.exports=function(e,t){var n,i,c,s,d;return arguments.length<2||"string"!=typeof e?(s=t,t=e,e=null):s=arguments[2],r(e)?(n=l.call(e,"c"),i=l.call(e,"e"),c=l.call(e,"w")):(n=c=!0,i=!1),d={value:t,configurable:n,enumerable:i,writable:c},s?o(a(s),d):d}).gs=function(e,t,n){var c,s,d,u;return"string"!=typeof e?(d=n,n=t,t=e,e=null):d=arguments[3],r(t)?i(t)?r(n)?i(n)||(d=n,n=void 0):n=void 0:(d=t,t=n=void 0):t=void 0,r(e)?(c=l.call(e,"c"),s=l.call(e,"e")):(c=!0,s=!1),u={get:t,set:n,configurable:c,enumerable:s},d?o(a(d),u):u}},function(e,t,n){"use strict";(function(e){var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(24)),o=r(n(220)),a=r(n(502)),l=r(n(553)),c=r(n(62)),s=r(n(1)),d=r(n(106));const u=(0,s.default)("StaticConfig"),A=(0,c.default)({version:"v2.29.2",buildHash:"a5982cc",minimumVersion:{firefox:52,chrome:49},debug:!1,websiteURL:"http://www.tokbox.com",configURL:"https://config.opentok.com",ipWhitelistConfigURL:"",cdnURL:"",loggingURL:"https://hlg.tokbox.com/prod",apiURL:"https://anvil.opentok.com"}),h=(0,l.default)(["apiURL","assetURL","cdnURL","sessionInfoOverrides","loggingURL"]),g={apiUrl:"apiURL",loggingUrl:"loggingURL"},F=(0,a.default)(e=>g[e]);var Q=function(t){let n=(void 0===t?{}:t).axios,r=void 0===n?o.default:n;return function(){function t(e){Object.defineProperty(this,"config",{value:Object.freeze((0,c.default)(e))})}return t.onlyLocal=function(){const e=(0,c.default)((void 0!==typeof window?window:global).OTProperties);return new t(Object.assign({},A,h(e)))},t.get=function(n){let i=n.partnerId,o=n.token,a=n.useIpWhitelistConfigUrl,l=n.proxyUrl;return(()=>{const t=this.onlyLocal();if(!t.configUrl)return e.resolve({});if(!0===a&&!t.ipWhitelistConfigUrl)return e.resolve({});let n=!0===a?t.ipWhitelistConfigUrl:t.configUrl;return n=(0,d.default)(n,l),r.get(`${n}/project/${i}/config.json`,{headers:{"X-TB-TOKEN-AUTH":o}}).then(e=>e.data)})().then(e=>{const n=(0,c.default)((void 0!==typeof window?window:global).OTProperties);return new t(Object.assign({},A,h(n),F(e)))}).catch(t=>(u.error("could not reach Config Service",t),e.reject(new Error("could not reach Config Service"))))},(0,i.default)(t,[{key:"configUrl",get:function(){return this.config.configURL}},{key:"ipWhitelistConfigUrl",get:function(){return this.config.ipWhitelistConfigURL}},{key:"apiUrl",get:function(){return this.config.apiURL}},{key:"loggingUrl",get:function(){return this.config.loggingURL}},{key:"apiEnabled",get:function(){return void 0===this.config.apiEnabled||this.config.apiEnabled}},{key:"version",get:function(){return this.config.version}},{key:"clientVersion",get:function(){return"js-"+(this.version||"unknown").replace("v","")}},{key:"buildHash",get:function(){return this.config.buildHash}},{key:"minimumVersion",get:function(){return this.config.minimumVersion}},{key:"websiteUrl",get:function(){return this.config.websiteURL}},{key:"debug",get:function(){return"true"===this.config.debug||!0===this.config.debug}},{key:"sessionInfoOverrides",get:function(){return this.config.sessionInfoOverrides}},{key:"cdnUrl",get:function(){return this.config.cdnURL||`${(void 0!==typeof window?window:global).location.protocol}//${(void 0!==typeof window?window:global).location.host}`}},{key:"assetUrl",get:function(){return this.config.assetURL||`${this.cdnUrl}/webrtc/${this.version}`}}]),t}()};t.default=Q}).call(this,n(2))},function(e,t,n){var r=n(531),i=n(539),o=n(91),a=n(14),l=n(544);e.exports=function(e){return"function"==typeof e?e:null==e?o:"object"==typeof e?a(e)?i(e[0],e[1]):r(e):l(e)}},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,i=Array(r);++n<r;)i[n]=t(e[n],n,e);return i}},function(e,t,n){var r=n(554),i=n(144)((function(e,t){return null==e?{}:r(e,t)}));e.exports=i},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e,t){let n;const r=t||{};e.setDisplayMode=function(e){const t=e||"auto";n!==t&&(i.default.removeClass(this.domElement,"OT_mode-"+n),i.default.addClass(this.domElement,"OT_mode-"+t),n=t)},e.getDisplayMode=function(){return n},e.showAfterLoading=function(){i.default.removeClass(this.domElement,"OT_hide-forced")},e.hideWhileLoading=function(){i.default.addClass(this.domElement,"OT_hide-forced")},e.destroy=function(){return r.onDestroy&&r.onDestroy(this.domElement),this.domElement&&i.default.removeElement(this.domElement),e},e.appendTo=function(t){return this.domElement=i.default.createElement(r.nodeName||"div",r.htmlAttributes,r.htmlContent),r.onCreate&&r.onCreate(this.domElement),e.setDisplayMode(r.mode),"auto"===r.mode&&(i.default.addClass(e.domElement,"OT_mode-on-hold"),setTimeout(()=>{i.default.removeClass(e.domElement,"OT_mode-on-hold")},2e3)),t.appendChild(this.domElement),e}};var i=r(n(7))},function(e,t,n){var r=n(80);e.exports=function(e){return r(e,4)}},function(e,t,n){var r=n(374),i=n(379);e.exports=function(e,t){var n=i(e,t);return r(n)?n:void 0}},function(e,t,n){var r=n(16).Symbol;e.exports=r},function(e,t,n){var r=n(86),i=n(64);e.exports=function(e,t,n,o){var a=!n;n||(n={});for(var l=-1,c=t.length;++l<c;){var s=t[l],d=o?o(n[s],e[s],s,n,e):void 0;void 0===d&&(d=e[s]),a?i(n,s,d):r(n,s,d)}return n}},function(e,t,n){var r=n(403),i=n(116),o=n(404),a=n(200),l=n(201),c=n(33),s=n(189),d=s(r),u=s(i),A=s(o),h=s(a),g=s(l),F=c;(r&&"[object DataView]"!=F(new r(new ArrayBuffer(1)))||i&&"[object Map]"!=F(new i)||o&&"[object Promise]"!=F(o.resolve())||a&&"[object Set]"!=F(new a)||l&&"[object WeakMap]"!=F(new l))&&(F=function(e){var t=c(e),n="[object Object]"==t?e.constructor:void 0,r=n?s(n):"";if(r)switch(r){case d:return"[object DataView]";case u:return"[object Map]";case A:return"[object Promise]";case h:return"[object Set]";case g:return"[object WeakMap]"}return t}),e.exports=F},function(e,t,n){"use strict";var r=n(424)();e.exports=function(e){return e!==r&&null!==e}},function(e,t,n){"use strict";e.exports=n(438)()?n(94).Symbol:n(441)},function(e,t,n){"use strict";var r=n(13);function i(e,t,n,r,i){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),n&&(this.config=n),r&&(this.request=r),i&&(this.response=i)}r.inherits(i,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:this.config,code:this.code,status:this.response&&this.response.status?this.response.status:null}}});var o=i.prototype,a={};["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((function(e){a[e]={value:e}})),Object.defineProperties(i,a),Object.defineProperty(o,"isAxiosError",{value:!0}),i.from=function(e,t,n,a,l,c){var s=Object.create(o);return r.toFlatObject(e,s,(function(e){return e!==Error.prototype})),i.call(s,e.message,t,n,a,l),s.cause=e,s.name=e.name,c&&Object.assign(s,c),s},e.exports=i},function(e,t,n){var r=n(71);e.exports=function(e){if("string"==typeof e||r(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(){if(r.now)return r.timing.navigationStart+r.now();return Date.now()};const r=(void 0!==typeof window?window:global).performance||{}},function(e,t,n){var r=n(621);e.exports=function(e){return r(2,e)}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(52)),o=r(n(1)),a=r(n(629)),l=r(n(37)),c=r(n(3)),s=r(n(630));const d=(0,l.default)(),u=function(e){void 0===e&&(e={});const t=e.env||c.default,n=e.hasGetUserMediaCapability||a.default,r=e.hasPeerConnectionCapability||s.default,i=e.logging||(0,o.default)("hasOpenTokSupport"),l=((e.staticConfig||d.onlyLocal()).minimumVersion||{})[t.name.toLowerCase()];return l&&l>t.version?(i.debug("Support for",t.name,"is disabled because we require",l,"but this is",t.version),!1):"Node"===t.name||n()&&r()},A=(0,i.default)(()=>u());var h={check:u,once:A};t.default=h},function(e,t){e.exports=function(e,t){return e===t||e!=e&&t!=t}},function(e,t,n){var r=n(192),i=n(398),o=n(28);e.exports=function(e){return o(e)?r(e,!0):i(e)}},function(e,t){e.exports=function(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n<r;)t[n]=e[n];return t}},function(e,t,n){"use strict";e.exports=function(e){return null!=e}},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){const t=[];return{on(n,r){for(var i=arguments.length,o=new Array(i>2?i-2:0),a=2;a<i;a++)o[a-2]=arguments[a];if(t.push({eventName:n,handler:r,args:o}),e.on)e.on(n,r);else{if(!e.addEventListener)throw new Error("Object does not support events",e);e.addEventListener(n,r,...o)}},off(t,n){if(e.off)e.off(t,n);else{if(!e.removeEventListener)throw new Error("Object does not support events",e);for(var r=arguments.length,i=new Array(r>2?r-2:0),o=2;o<r;o++)i[o-2]=arguments[o];e.removeEventListener(t,n,...i)}},once(n,r){for(var i=arguments.length,o=new Array(i>2?i-2:0),a=2;a<i;a++)o[a-2]=arguments[a];t.push({eventName:n,handler:r,args:o}),e.once(n,r)},removeAll(){t.forEach(e=>{let t=e.eventName,n=e.handler,r=e.args;this.off(t,n,...r)}),t.splice(0,t.length)}}}},function(e,t,n){var r=n(104);e.exports=function(e,t,n){var i=null==e?void 0:r(e,t);return void 0===i?n:i}},function(e,t,n){var r=n(14),i=n(143),o=n(253),a=n(61);e.exports=function(e,t){return r(e)?e:i(e,t)?[e]:o(a(e))}},function(e,t,n){var r=n(541);e.exports=function(e){return null==e?"":r(e)}},function(e,t,n){var r=n(80);e.exports=function(e){return r(e,5)}},function(e,t,n){var r=n(644)(n(297));e.exports=r},function(e,t,n){var r=n(190);e.exports=function(e,t,n){"__proto__"==t&&r?r(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}},function(e,t,n){var r=n(393),i=n(21),o=Object.prototype,a=o.hasOwnProperty,l=o.propertyIsEnumerable,c=r(function(){return arguments}())?r:function(e){return i(e)&&a.call(e,"callee")&&!l.call(e,"callee")};e.exports=c},function(e,t,n){(function(e){var r=n(16),i=n(394),o=t&&!t.nodeType&&t,a=o&&"object"==typeof e&&e&&!e.nodeType&&e,l=a&&a.exports===o?r.Buffer:void 0,c=(l?l.isBuffer:void 0)||i;e.exports=c}).call(this,n(87)(e))},function(e,t){var n=/^(?:0|[1-9]\d*)$/;e.exports=function(e,t){var r=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==r||"symbol"!=r&&n.test(e))&&e>-1&&e%1==0&&e<t}},function(e,t){e.exports=function(e){return function(t){return e(t)}}},function(e,t){var n=Object.prototype;e.exports=function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||n)}},function(e,t,n){"use strict";e.exports=function(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return e}},function(e,t,n){var r=n(33),i=n(21);e.exports=function(e){return"symbol"==typeof e||i(e)&&"[object Symbol]"==r(e)}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.getProxyUrl=t.errorMessages=t.clearProxyUrl=void 0,t.setProxyUrl=function(e){const t=n(31),r=s.default,A=new t,h=a.default.sessions.length()>0,g=a.default.publishers.length()>0;let F;if(h){const e=a.default.sessions.find(e=>"connected"===e.currentState);F=e?e.sessionId:a.default.sessions.find().sessionId}else F="";const Q={sessionId:F,apiKey:r.value};if(g||h){const e=(0,l.default)()(c.default.SET_PROXY_URL_TIMING_ERROR,new Error(u.SET_PROXY_URL_TIMING_ERROR),i.default.SET_PROXY_URL_TIMING_ERROR);o.default.handleJsException({error:e,target:Q,analytics:A})}else if(d){const e=(0,l.default)()(c.default.PROXY_URL_ALREADY_SET_ERROR,new Error(u.PROXY_URL_ALREADY_SET_ERROR),i.default.PROXY_URL_ALREADY_SET_ERROR);o.default.handleJsException({error:e,target:Q,analytics:A})}else d=e};var i=r(n(10)),o=r(n(25)),a=r(n(26)),l=r(n(15)),c=r(n(8)),s=r(n(73));let d;const u={SET_PROXY_URL_TIMING_ERROR:"The proxyUrl was set after a session or publisher was created.",PROXY_URL_ALREADY_SET_ERROR:"The proxyUrl has already been set. Setting it again will not have any effect."};t.errorMessages=u;t.getProxyUrl=()=>d;t.clearProxyUrl=()=>{d=null}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i,o=r(n(7));let a;if("Node"===(null==o.default||null==(i=o.default.env)?void 0:i.name))a="";else{var l,c;const e=null==(l=Array.prototype.slice.call(document.getElementsByTagName("script")))||null==(c=l.pop())?void 0:c.getAttribute("src");a=(e&&e.match(/[?&]apikey=([^&]+)/i)||[])[1]||""}var s={value:a};t.default=s},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t,n){void 0===n&&(n=1/0);let r=null,i=!1,o=1;const a=1e3/t,l=()=>{!i||o>n||(o+=1,e(),r=setTimeout(l,a))};this.start=()=>{i||(i=!0,setTimeout(l,a))},this.stop=()=>{(void 0!==typeof window?window:global).clearTimeout(r),i=!1}}},function(e,t,n){"use strict";(function(e){var r=n(0);t.__esModule=!0,t.default=function(t){void 0===t&&(t={});const n=t.hasValidPeerConnection||f.default,r=t.applySdpTransform||R.default,x=t.createPeerConnection||I.default,M=t.env||F.default,H=t.sdpTransformDefaults||y.default,K=t.getStatsAdapter||V.default,L=t.getRtcStatsReportAdapter||C.default,z=t.getSynchronizationSources||W.default,O=t.IceCandidateProcessor||E.default,j=t.logging||g.default,P=t.offerProcessor||v.default,_=t.PeerConnectionChannels||S.default,q=t.subscribeProcessor||J.default,$=G.default,ee=t.changeMediaDirection||N.default,te=ee.changeMediaDirectionToInactive,ne=ee.changeMediaDirectionToRecvOnly,re=t.Qos||X.default,ie=t.global||(void 0!==typeof window?window:global),oe=t.debounce||d.default,ae=t.needsToSwapH264Profiles||k.default.once,le=(0,B.default)(),ce=t.NativeRTCIceCandidate||ie.RTCIceCandidate,se=t.NativeRTCSessionDescription||ie.RTCSessionDescription,de=t.Errors||T.default,ue=t.OTErrorClass||p.default,Ae=t.ExceptionCodes||Q.default,he=t.hasPictureInPictureBug||Y.default,ge=()=>{};return function(t){void 0===t&&(t={});let d=!1;const g=t,F=g.iceConfig,Q=void 0===F?{servers:[]}:F,p=g.sendMessage,B=g.isPublisher,f=g.offerOverrides,R=g.answerOverrides,I=g.p2p,y=g.codecFlags,V=g.sourceStreamId,C=g.keyStore,W=g.sFrameClientStore,E=g.isE2ee,v=g.removeUnusedCodecs,S=g.sessionId;let J,G=t.logAnalyticsEvent,N=void 0===G?ge:G,X=!1;const k=ae();let T,Y,ee=0,Fe=!1,Qe={};const pe=new $(N),me=(0,U.default)();function Ue(e,t){if(!d){if(["candidate","offer","answer","pranswer"].indexOf(e)>-1){const n="candidate"===e?t.candidate:t.sdp;d=-1!==n.indexOf("typ relay")}}p(e,t)}const be=(0,w.default)();N("createPeerConnection","Attempt");const Ze={};Ze.id=(0,A.default)();const Be=j("PeerConnection:"+Ze.id);Be.debug("construct",{id:Ze.id,options:t});const fe=H,Re=(0,u.default)(t,["isPublisher","logAnalyticsEvent","offerOverrides","answerOverrides","sendMessage"]);let Ie,ye,Ve,Ce,We,Ee=[];const ve=(()=>{let e=Re.overrideSimulcastEnabled||!1;return{get:()=>e,set(t){const n=Boolean(t)&&Re.capableSimulcastStreams>1;n!==e&&void 0===Re.overrideSimulcastEnabled&&(e=n,Ze.generateOfferAndSend())}}})(),Se=(()=>{let e=!1;return{get:()=>e,set(t){const n=Boolean(t);n!==e&&(e=n,e&&(Ze.iceConnectionStateIsConnected()?Be.debug("iceRestart is going to wait until we disconnect or negotiationNeeded and then restart ice"):Ze.generateOfferAndSend()))}}})(),Je={clean(){delete this.promise,delete this.resolve,delete this.reject}};Je.promise=new e((e,t)=>{Je.resolve=e,Je.reject=t});let Ge=new O,Ne="new";Object.defineProperty(Ze,"signalingState",{get:()=>Ie.signalingState,set:e=>(Ie.signalingState=e,e)}),(0,h.default)(Ze),Ze.addOptions=e=>{N=e.logAnalyticsEvent},Ze.startEncryption=function(){var e=(0,o.default)(i.default.mark((function e(t){var n,r;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(E){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,le({sessionId:S,connectionId:t});case 4:return n=e.sent,e.next=7,W.createSender(n);case 7:return T=e.sent,e.next=10,C.get();case 10:return r=e.sent,e.next=13,T.setSenderEncryptionKey(r);case 13:Y=e=>{T.setSenderEncryptionKey(e)},C.on("keyChanged",Y),Ie.getTransceivers().forEach(function(){var e=(0,o.default)(i.default.mark((function e(t){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,T.encrypt(n,t.sender);case 2:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}());case 16:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),Ze.once("iceConnected",(0,o.default)(i.default.mark((function e(){var t;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:"",t={pcc:parseInt((0,w.default)()-be,10),hasRelayCandidates:d,proxyInfo:""},Ie&&Ie.proxyInfo&&(t.proxyInfo=Ie.proxyInfo),N("createPeerConnection","Success",t);case 4:case"end":return e.stop()}}),e)})))),Ze.startDecryption=function(){var e=(0,o.default)(i.default.mark((function e(t,n){var r,o,a;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(Ze.iceConnectionStateIsConnected()){e.next=3;break}return Ze.once("iceConnected",()=>Ze.startDecryption(t,n)),e.abrupt("return");case 3:return e.next=5,le({sessionId:S,connectionId:t});case 5:return r=e.sent,o=n.receiver,e.next=9,Xe(r);case 9:return a=e.sent,e.prev=10,e.next=13,null==a?void 0:a.decrypt(r,o);case 13:e.next=18;break;case 15:e.prev=15,e.t0=e.catch(10),Be.error(e.t0);case 18:case"end":return e.stop()}}),e,null,[[10,15]])})));return function(t,n){return e.apply(this,arguments)}}(),Je.resolve();const Xe=function(){var t=(0,o.default)(i.default.mark((function t(n){return i.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!Qe[n]){t.next=2;break}return t.abrupt("return",Qe[n]);case 2:return Qe[n]=new e(function(){var e=(0,o.default)(i.default.mark((function e(t){var r,o;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,C.get();case 2:if(r=e.sent,o=W.getReceiver(n)){e.next=9;break}return e.next=7,W.createReceiver(n);case 7:(o=e.sent).addReceiver(n);case 9:o.setReceiverEncryptionKey(n,r),C.on("keyChanged",e=>{o.setReceiverEncryptionKey(n,e)}),o.addEventListener("decryptFailed",()=>{Ze.trigger("decryptFailed")}),o.addEventListener("decryptionRestored",()=>{Ze.trigger("decryptRestored")}),t(o);case 14:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),t.abrupt("return",Qe[n]);case 4:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),ke=e=>{if(Be.debug("internalCreatePeerConnection: called"),Ie)return Be.debug("internalCreatePeerConnection: resolving synchronously"),void e.call(null,null,Ie);if(Ee.push(e),!(Ee.length>1)){if(Be.debug(`Creating peer connection config "${JSON.stringify(Re)}".`),0===Q.servers.length&&(Be.error("No ice servers present"),N("Error","noIceServers")),"relay"===Q.transportPolicy){const e=e=>e&&0===e.indexOf("turn");Q.servers=Q.servers.map(t=>{const n=(0,c.default)(t);return Array.isArray(n.urls)||(n.urls=[n.urls]),n.urls=n.urls.filter(e),0===n.urls.length?void 0:n}).filter(e=>void 0!==e)}Re.iceTransportPolicy=Q.transportPolicy,Re.iceServers=Q.servers,E&&(Re.forceEncodedVideoInsertableStreams=!0,Re.forceEncodedAudioInsertableStreams=!0,Re.encodedInsertableStreams=!0),n(ie.RTCPeerConnection).then(e=>{if(!e)throw Be.error("createPeerConnection: Invalid RTCPeerConnection object"),new Error("Failed to create valid RTCPeerConnection object");return x({window:ie,config:Re})}).then(function(){var e=(0,o.default)(i.default.mark((function e(t){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:Te(null,t);case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),e=>Te(e))}},Te=(e,t)=>{if(e)return Le({reason:"Failed to create PeerConnection, exception: "+e,prefix:"NewPeerConnection"}),void(Ee=[]);Be.debug("OT attachEventsToPeerConnection"),Ie=t,Ge&&Ge.setPeerConnection(t),ye=new _(Ie),Re.channels&&ye.addMany(Re.channels);const n=(e=>{let t=e.sendMessage,n=e.logging;const r={};return e=>{e.candidate?(r[e.candidate.sdpMid]=e.candidate.sdpMLineIndex,t("candidate",{candidate:e.candidate.candidate,sdpMid:e.candidate.sdpMid||"",sdpMLineIndex:e.candidate.sdpMLineIndex||0})):n.debug("IceCandidateForwarder: No more ICE candidates.")}})({sendMessage:Ue,logging:Be}),r=e=>{var t;(Je.resolve(),t=e.candidate,"relay"!==Q.transportPolicy||null==t||-1!==t.candidate.indexOf("typ relay"))?n(e):Be.debug("Ignore candidate",e.candidate.candidate)},a=function(){var e=(0,o.default)(i.default.mark((function e(t){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:Me(t);case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();let l=Ie.iceConnectionState;const c=e=>{Ie?(Be.debug("iceconnectionstatechange",Ie.iceConnectionState),"connected"===Ie.iceConnectionState?("disconnected"===l&&Ze.clearFailedTimeout(),Ze.emit("iceConnected"),Se.set(!1)):"completed"===Ie.iceConnectionState&&M.isLegacyEdge&&setTimeout(()=>Pe.startCollecting(Ie),1e3)):Be.debug("iceconnectionstatechange on peerConnection that no longer exists",Ze);const t=e.target.iceConnectionState;Ze.trigger("iceConnectionStateChange",t),N("attachEventsToPeerConnection","iceconnectionstatechange",t),"disconnected"===t&&(Se.get()?(Be.debug("Restarting ice!"),Ze.generateOfferAndSend()):(0,Z.default)()||(We=setTimeout(()=>{N("attachEventsToPeerConnection","iceconnectionstatechange","failed"),l="failed",Ze.trigger("iceConnectionStateChange","failed")},1e4))),"disconnected"!==l&&"failed"===t&&Le({reason:"The stream was unable to connect due to a network error. Make sure your connection isn't blocked by a firewall.",prefix:"ICEWorkflow"}),l=t},s=()=>{N("peerConnection:negotiationNeeded","Event"),B&&Ze.generateOfferAndSend(),Ze.trigger("negotiationNeeded")};Ie.addEventListener("track",a),Ie.addEventListener("icecandidate",r),Ie.addEventListener("signalingstatechange",De),Ie.addEventListener("negotiationneeded",s),Ie.addEventListener("iceconnectionstatechange",c),me.add(()=>{Ie&&(Ie.removeEventListener("track",a),Ie.removeEventListener("icecandidate",r),Ie.removeEventListener("signalingstatechange",De),Ie.removeEventListener("negotiationneeded",s),Ie.removeEventListener("iceconnectionstatechange",c))}),Ye(null)},Ye=()=>{for(;Ee.length;)Ee.shift().call(null)},we=()=>{Ge&&(Ge.destroy(),Ge=null),Ee=[],Pe.stopCollecting(),me.releaseAll(),Je.clean(),null!==Ie&&(Ie.destroy&&Ie.destroy(),Ie=null,Ze.trigger("close")),Ze.off()},De=e=>{const t=e.target.signalingState;if(Ze.emit("signalingStateChange",t),"stable"===t&&Ze.emit("signalingStateStable"),t&&t!==Ne)switch(Ne=t,Be.debug("stateChange: "+Ne),Ne){case"closed":we()}},xe=()=>{let e;if(Ie.getRemoteStreams)e=Ie.getRemoteStreams();else{if(!Ie.remoteStreams)throw new Error("Invalid Peer Connection object implements no method for retrieving remote streams");e=Ie.remoteStreams}return Array.prototype.slice.call(e)},Me=e=>{var t;const n=e.track,r=e.transceiver,i=e.stream||(null==(t=e.streams)?void 0:t[0]);N("createPeerConnection","TrackAdded"),Ze.trigger("trackAdded",{stream:i,track:n,transceiver:r})},He=(e,t,n)=>{X=!1,Le({reason:`PeerConnection.offerProcessor ${e}: ${t}`,prefix:n})},Ke=e=>{if(X)return void(J=e);X=!0,N("peerConnection:processOffer","Event");const t=new se({type:"offer",sdp:e.content.sdp}),n=e=>{X=!1,Ge&&Ge.process(),Ue("answer",e),M.isLegacyEdge||Pe.startCollecting(Ie,B),J&&(Ke(J),J=null)},r=e=>Ze.trigger("remoteVideoSupported",e);ke(()=>{P(Ie,ie.RTCPeerConnection,ie.RTCSessionDescription,se,fe,t,y,I,n,He,r,k,V)})};Ze.generateOfferAndSend=()=>{Ze.generateOffer(e=>{Be.debug("processSubscribe: sending offer"),Ue("offer",e)})},Ze.generateOffer=oe((function(e){void 0===e&&(e=()=>{}),pe.enqueueOfferAnswer(()=>(e=>{var t,n;if("closed"===(null==(t=Ie)||null==(n=t.signalingState)?void 0:n.toLowerCase()))return;N("peerConnection:processSubscribe","Event"),Be.debug("processSubscribe: Sending offer to subscriber.");let r=ve.get()?Re.capableSimulcastStreams:1;"P2P"===V&&!I&&(r=1),ke(()=>{q({peerConnection:Ie,NativeRTCSessionDescription:se,sdpTransforms:fe,numSimulcastStreams:r,removeVideoOrientation:he(),offerOverrides:f,offerConstraints:{iceRestart:Se.get()},replaceBaselineProfile:k,removeUnusedCodecs:v}).then(t=>{Be.debug("processSubscribe: got offer, waiting for _readyToCompleteOffer"),Ve=t,Je.promise.then(()=>e(Ve))},e=>{Le({reason:`subscribeProcessor ${e.message}: ${e.reason}`,prefix:e.prefix})}),Se.set(!1)})})(e))}),100);const Le=e=>{let t=e.reason,n=e.prefix;Be.error(t,"in state",Ie?{connectionState:Ie.connectionState,iceConnectionState:Ie.iceConnectionState,iceGatheringState:Ie.iceGatheringState,signalingState:Ie.signalingState}:"(none)"),Ze.trigger("error",{reason:t,prefix:n})};function ze(e){this.track=e}Ze.addTrack=(t,n)=>{const r=new e((e,t)=>{ke(n=>{if(n)return t(n);e()})}).then(()=>{if(Ie.addTrack)return Ie.addTrack(t,n);const e=Ie.getLocalStreams()[0];if(void 0===e)throw new Error("PeerConnection has no existing streams, cannot addTrack");e.addTrack(t),Ze.generateOfferAndSend()}).then(()=>new e(e=>{Ze.once("signalingStateStable",()=>{e()})}));return(0,a.default)(r,15e3,"Renegotiation timed out")},Ze.setIceConfig=e=>{try{M.isFirefox&&(e.certificates=Ie.getConfiguration().certificates),Ie.setConfiguration(e)}catch(e){throw new m.default("A peer connection failed to set configuration with "+e.message,de.FAILED_SET_CONFIGURATION)}return Se.set(!0),Ie},Ze.removeTrack=t=>{const n=e.resolve().then(()=>t instanceof ze?(Ie.getLocalStreams()[0].removeTrack(t.track),void Ze.generateOfferAndSend()):Ie.removeTrack(t)).then(()=>new e(e=>{Ze.once("signalingStateStable",()=>{e()})}));return(0,a.default)(n,15e3,"Renegotiation timed out")},Ze.addLocalStream=t=>new e((e,n)=>{ke(r=>{if(r)n(r);else{try{t.getTracks&&t.getTracks().forEach(e=>Ie.addTrack(e,t))}catch(e){return void n(e)}e()}})}),Ze.getLocalStreams=()=>Ie.getLocalStreams(),Ze.getSenders=()=>Ie.getSenders?Ie.getSenders():Ie.getLocalStreams()[0].getTracks().map(e=>new ze(e)),Ze.disconnect=()=>{var e;Ge&&(Ge.destroy(),Ge=null),null!=(e=Ie)&&e.signalingState&&"closed"!==Ie.signalingState.toLowerCase()&&(Ie.close(),"function"==typeof Y&&C.off("keyChanged",Y),T=null,Qe=null,setTimeout(we))},Ze.iceRestart=()=>Se.set(!0),Ze.clearFailedTimeout=()=>clearTimeout(We);const Oe=t=>{const n=t?te:ne;return new e(e=>{pe.enqueueOfferAnswer((0,o.default)(i.default.mark((function t(){return i.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,n(Ie);case 2:pe.setResolved(),e();case 4:case"end":return t.stop()}}),t)}))))})};Ze.changeMediaDirectionToRecvOnly=()=>Oe(!1),Ze.changeMediaDirectionToInactive=()=>Oe(!0),Ze.processMessage=(e,t)=>{switch(Be.debug(`processMessage: Received ${e} from ${t.fromAddress}`,t),Be.debug(t),e){case"generateoffer":t.content&&void 0!==t.content.simulcastEnabled&&ve.set(t.content.simulcastEnabled),Ze.generateOfferAndSend(),i();break;case"offer":Ke(t),i();break;case"answer":case"pranswer":(e=>{N("peerConnection:processAnswer","Event");const t=e=>{"function"==typeof e.includes&&e.includes("Failed to parse SessionDescription. a=extmap-allow-mixed Expects at least 2 fields.")&&(e="SessionDescription issue has been fixed in Chrome 71 and above. Please update your browser."),Le({reason:"Error while setting RemoteDescription "+e,prefix:"SetRemoteDescription"})};e.content.sdp?(Ce=new se({type:"answer",sdp:r(fe,"remote","answer",(0,l.default)({replaceBaselineProfile:k},R),e.content.sdp).local}),Ie.setRemoteDescription(Ce).then(()=>{Be.debug("processAnswer: setRemoteDescription Success"),Ge&&Ge.process()}).catch(t),pe.setResolved(),M.isLegacyEdge||Pe.startCollecting(Ie,B)):t("Weird answer message, no SDP.")})(t);break;case"candidate":var n=new ce(t.content);Ge&&Ge.addIceCandidate(n).catch(e=>{Be.warn(`Error while adding ICE candidate: ${JSON.stringify(n)}: ${e.toString()}`)});break;default:Be.debug(`processMessage: Received an unexpected message of type ${e} from ${t.fromAddress}: ${JSON.stringify(t)}`)}function i(){ee+=1,Pe.handleOfferMessageReceived(),ee>1&&(N("Renegotiation","Attempt"),Fe=!0)}return Ze};const je=e=>Ie.getTransceivers().filter(t=>e.includes(t.mid));Ze.stopTransceivers=e=>{const t=je(e);var n;(n=t,n.sort((e,t)=>e.mid<t.mid?1:e.mid>t.mid?-1:0)).forEach(e=>e.stop())},Ze.setTransceiversToInactive=e=>{je(e).forEach(e=>{e.direction=D.default.INACTIVE})},Ze.remoteStreams=()=>Ie?xe():[],Ze.remoteTracks=()=>Ie?Ie.getReceivers?Array.prototype.slice.apply(Ie.getReceivers()).map(e=>e.track):Array.prototype.concat.apply([],xe().map(e=>e.getTracks())):[],Ze.remoteDescription=()=>Ie.remoteDescription,Ze.getStats=(e,t)=>{if(Ie)K(Ie,e,t);else{const e=Ae.PEER_CONNECTION_NOT_CONNECTED;t(new m.default(ue.getTitleByCode(e),de.PEER_CONNECTION_NOT_CONNECTED,{code:e}))}},Ze.getRtcStatsReport=(e,t)=>{if(Ie)L(Ie,e,t);else{const e=Ae.PEER_CONNECTION_NOT_CONNECTED;t(new m.default(ue.getTitleByCode(e),de.PEER_CONNECTION_NOT_CONNECTED,{code:e}))}},Ze.getSynchronizationSources=e=>{if(!B){if(!Ie){const t=Ae.PEER_CONNECTION_NOT_CONNECTED;return void e(new m.default(ue.getTitleByCode(t),de.PEER_CONNECTION_NOT_CONNECTED,{code:t}))}z(Ie,e)}};Ze.getDataChannel=(e,t,n)=>{Ie?function e(t,n,r,i){let o;const a=ye.get(n,r);if(!a){if(t>0)return void setTimeout(e.bind(null,t-1,n,r,i),200);o=new m.default(`A channel with that label and options could not be found. Label:${n}. Options: ${JSON.stringify(r)}`)}i(o,a)}(100,e,t,n):n(new m.default("Cannot create a DataChannel before there is a connection."))},Ze.getSourceStreamId=()=>V,Ze.iceConnectionStateIsConnected=()=>Ie&&["connected","completed"].indexOf(Ie.iceConnectionState)>-1,Ze.hasTrack=e=>Ie.getSenders().some(t=>t.track===e),Ze.findAndReplaceTrack=(t,n)=>e.resolve().then(()=>{const r=Ie.getSenders().filter(e=>e.track===t)[0];if(!r)return e.resolve();if("function"!=typeof r.replaceTrack)throw new Error("Sender does not support replaceTrack");return r.replaceTrack(n)}),Ze.hasRelayCandidates=()=>d,Ze.getNegotiatedCodecs=()=>{if(!Ie.localDescription||!Ie.remoteDescription)return null;const e=e=>(0,s.default)(b.default.getCodecs(Ie.localDescription.sdp,e),b.default.getCodecs(Ie.remoteDescription.sdp,e));return{audio:e("audio"),video:e("video")}},Ze.on("signalingStateStable",()=>{Fe&&(Fe=!1,N("Renegotiation","Success",Ze.getNegotiatedCodecs()))}),Ze.on("error",e=>{let t=e.prefix;Fe&&-1!==["CreateOffer","SetRemoteDescription"].indexOf(t)&&(Fe=!1,N("Renegotiation","Failure"))}),Ze.on("close",()=>{Fe&&(Fe=!1,N("Renegotiation","Cancel"))});const Pe=new re;return Pe.on("stats",e=>{e.dataChannels=ye.sampleQos(),Ze.trigger("qos",{parsedStats:e,simulcastEnabled:ve.get()})}),Ze}};var i=r(n(4)),o=r(n(5)),a=r(n(164)),l=r(n(9)),c=r(n(62)),s=r(n(149)),d=r(n(295)),u=r(n(296)),A=r(n(17)),h=r(n(6)),g=r(n(1)),F=r(n(3)),Q=r(n(10)),p=r(n(25)),m=r(n(271)),U=r(n(166)),b=r(n(19)),Z=r(n(76)),B=r(n(647)),f=r(n(649)),R=r(n(167)),I=r(n(650)),y=r(n(652)),V=r(n(301)),C=r(n(304)),W=r(n(656)),E=r(n(657)),v=r(n(659)),S=r(n(661)),J=r(n(663)),G=r(n(664)),N=r(n(666)),X=r(n(305)),k=r(n(670)),T=r(n(8)),Y=r(n(671)),w=r(n(51)),D=r(n(299))}).call(this,n(2))},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(3));t.default=()=>!((i.default.isChrome||i.default.isElectron)&&i.default.version>=90||i.default.isOpera&&i.default.version>=76)&&(i.default.isChrome&&i.default.version>71||i.default.isChromiumEdge&&i.default.version<90||i.default.isOpera&&i.default.version>58)},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r={ACTIVE_VIDEO:0,ACTIVE_VIDEO_WITH_WARNING:1,SUSPENDED_VIDEO:2};t.default=r},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(40)),o=r(n(696)),a=r(n(11)),l=r(n(168));const c={};function s(e){return Number(e.framerateMean||e.googFrameRateSent||e.googFrameRateReceived||e.googFrameRateInput||e.googFrameRateOutput||0)}function d(e){return Number(e.framesEncoded||e.framesDecoded)}function u(e,t){if(s(e))return s(e);if(!d(e))return;let n=0;const r=c[e.id]?c[e.id].frames:0,i=c[e.id]?c[e.id].timestamp:t;return n=(0,l.default)({currentStatFrames:d(e),currentTimestamp:e.timestamp,prevStatFrames:r,prevTimestamp:i}),c[e.id]={frames:d(e),timestamp:e.timestamp},n}function A(e,t){if(!t)return{};const n=t.filter(t=>t.id===e.mediaTrackId);return n.length?n[0]:{}}function h(e,t){return"packetsLost"in t?e+t.packetsLost:e}const g={isVideoStat(e,t){const n=A(e,t);return"video"===e.kind&&["outbound-rtp","inbound-rtp"].includes(e.type)||"video"===e.mediaType||"googFrameWidthReceived"in e||"googFrameWidthInput"in e||"inbound-rtp"===e.type&&-1!==e.id.indexOf("Video")||"inboundrtp"===e.type&&0!==n.frameWidth},isAudioStat(e,t){const n=A(e,t);return"audio"===e.kind&&["outbound-rtp","inbound-rtp"].includes(e.type)||"audio"===e.mediaType||"audioInputLevel"in e||"audioOutputLevel"in e||"inbound-rtp"===e.type&&-1!==e.id.indexOf("Audio")||"inboundrtp"===e.type&&0===n.frameWidth},isInboundStat:e=>"bytesReceived"in e||"packetsReceived"in e,isOutboundStat:e=>"bytesSent"in e||"packetsSent"in e,isVideoTrackStat:e=>"track"===e.type&&(e.frameHeight>0||e.frameWidth>0||e.framesCorrupted>0||e.framesDecoded>0||e.framesPerSecond>0||e.framesSent>0||e.framesReceived>0),isVideoRemoteInboundRtpStat:e=>"remote-inbound-rtp"===e.type&&"video"===e.kind,isAudioRemoteInboundRtpStat:e=>"remote-inbound-rtp"===e.type&&"audio"===e.kind,isVideoInboundRtpStat:e=>"inbound-rtp"===e.type&&"video"===e.kind,parseStatCategory(e){const t={packetsLost:0,packetsReceived:0,bytesReceived:0};return"packetsReceived"in e&&(t.packetsReceived=parseInt(e.packetsReceived,10)),"packetsLost"in e&&(t.packetsLost=parseInt(e.packetsLost,10)),"bytesReceived"in e&&(t.bytesReceived=parseInt(e.bytesReceived,10)),this.isVideoStat(e)&&("framerateMean"in e?t.frameRate=Number(e.framerateMean):"googFrameRateOutput"in e?t.frameRate=Number(e.googFrameRateOutput):"googFrameRateInput"in e&&(t.frameRate=Number(e.googFrameRateInput))),t},getVideoPacketsLost(e){return e.filter(t=>this.isVideoRemoteInboundRtpStat(t,e)).reduce(h,0)},getAudioPacketsLost(e){return e.filter(t=>this.isAudioRemoteInboundRtpStat(t,e)).reduce(h,0)},normalizeTimestamp:(e,t)=>(void 0===t&&(t=Date.now()),(0,a.default)(e)&&"getTime"in e?e.getTime():Math.abs(e/(1e3*t)-1)<.05?e/1e3:e),normalizeStats(e,t,n){void 0===t&&(t=!0);const r=e.filter(t=>g.isVideoStat(t,e)).filter(e=>g.isInboundStat(e)===t),a=e.filter(t=>this.isAudioStat(t,e)).filter(e=>this.isInboundStat(e)===t)[0],l=r[0];if(!a&&!l)throw new Error("could not find stats for either audio or video");const c=g.normalizeTimestamp(l?l.timestamp:a.timestamp),s={timestamp:c};l&&!t&&void 0===l.packetsLost&&(l.packetsLost=this.getVideoPacketsLost(e)),a&&!t&&void 0===a.packetsLost&&(a.packetsLost=this.getAudioPacketsLost(e));const d=["packetsSent","packetsLost","bytesSent"],A=t?e=>(0,i.default)(e,["packetsReceived","packetsLost","bytesReceived"]):e=>(0,i.default)(e,d);if(r&&r.length>0){const e=(e=>{const t=d.concat(["framerateMean","googFrameRateSent","googFrameRateReceived","googFrameRateInput","googFrameRateOutput","framesEncoded","framesDecoded"]),n={timestamp:c,id:l.id};return t.forEach(t=>{n[t]=e.map(e=>Number(e[t]||0)).reduce((e,t)=>e+t,0)}),n})(r);s.video=Object.assign({frameRate:u(e,n)},(0,o.default)(A(e),Number))}return a&&(s.audio=(0,o.default)(A(a),Number)),s}};var F=g;t.default=F},function(e,t,n){"use strict";t.__esModule=!0,t.messages=t.default=t.codes=void 0;const r={1e3:"The connection successfully completed the purpose for which it was created.",1001:"The endpoint is going away, either because of a server failure or because the browser is navigating away from the page that opened the connection.",1002:"The endpoint is terminating the connection due to a protocol error. (CLOSE_PROTOCOL_ERROR)",1003:"The connection is being terminated because the endpoint has indicated that reconnections are not available. (CLOSE_UNSUPPORTED)",1005:"Indicates that no status code was provided even though one was expected. (CLOSE_NO_STATUS)",1006:"Used to indicate that a connection was closed abnormally (that is, with no close frame being sent) when a status code is expected. (CLOSE_ABNORMAL)",1007:"Indicates that an endpoint is terminating the connection because it has received data within a message that was not consistent with the type of the message (e.g., non-UTF-8 [RFC3629] data within a text message)",1008:"Indicates that an endpoint is terminating the connection because it has received a message that violates its policy. This is a generic status code that can be returned when there is no other more suitable status code (e.g., 1003 or 1009) or if there is a need to hide specific details about the policy",1009:"Indicates that an endpoint is terminating the connection because it has received a message that is too big for it to process (CLOSE_TOO_LARGE)",1011:"Indicates that a server is terminating the connection because it encountered an unexpected condition that prevented it from fulfilling the request",4001:"Connectivity loss was detected as it was too long since the socket received the last PONG message",4010:"Timed out while waiting for the Rumor socket to connect.",4020:"Error code unavailable.",4030:"Exception was thrown during Rumor connection, possibly because of a blocked port."};t.messages=r;const i={CLOSE_NORMAL:1e3,CLOSE_GOING_AWAY:1001,CLOSE_PROTOCOL_ERROR:1002,CLOSE_UNSUPPORTED:1003,CLOSE_NO_STATUS:1005,CLOSE_ABNORMAL:1006,CLOSE_INCONSISTENT_DATA:1007,CLOSE_POLICY_VIOLATION:1008,CLOSE_TOO_LARGE:1009,CLOSE_UNEXPECTED_CONDITION:1011,CLOSE_CONNECTIVITY_LOSS:4001,CLOSE_TIMEOUT:4010,CLOSE_FALLBACK_CODE:4020,CLOSE_CONNECT_EXCEPTION:4030,ALREADY_CONNECTED_CONNECTING:null};t.codes=i;var o={messages:r,codes:i};t.default=o},function(e,t,n){var r=n(81),i=n(118),o=n(86),a=n(191),l=n(397),c=n(194),s=n(56),d=n(400),u=n(402),A=n(197),h=n(199),g=n(46),F=n(405),Q=n(406),p=n(204),m=n(14),U=n(66),b=n(410),Z=n(11),B=n(412),f=n(34),R=n(55),I={};I["[object Arguments]"]=I["[object Array]"]=I["[object ArrayBuffer]"]=I["[object DataView]"]=I["[object Boolean]"]=I["[object Date]"]=I["[object Float32Array]"]=I["[object Float64Array]"]=I["[object Int8Array]"]=I["[object Int16Array]"]=I["[object Int32Array]"]=I["[object Map]"]=I["[object Number]"]=I["[object Object]"]=I["[object RegExp]"]=I["[object Set]"]=I["[object String]"]=I["[object Symbol]"]=I["[object Uint8Array]"]=I["[object Uint8ClampedArray]"]=I["[object Uint16Array]"]=I["[object Uint32Array]"]=!0,I["[object Error]"]=I["[object Function]"]=I["[object WeakMap]"]=!1,e.exports=function e(t,n,y,V,C,W){var E,v=1&n,S=2&n,J=4&n;if(y&&(E=C?y(t,V,C,W):y(t)),void 0!==E)return E;if(!Z(t))return t;var G=m(t);if(G){if(E=F(t),!v)return s(t,E)}else{var N=g(t),X="[object Function]"==N||"[object GeneratorFunction]"==N;if(U(t))return c(t,v);if("[object Object]"==N||"[object Arguments]"==N||X&&!C){if(E=S||X?{}:p(t),!v)return S?u(t,l(E,t)):d(t,a(E,t))}else{if(!I[N])return C?t:{};E=Q(t,N,v)}}W||(W=new r);var k=W.get(t);if(k)return k;W.set(t,E),B(t)?t.forEach((function(r){E.add(e(r,n,y,r,t,W))})):b(t)&&t.forEach((function(r,i){E.set(i,e(r,n,y,i,t,W))}));var T=G?void 0:(J?S?h:A:S?R:f)(t);return i(T||t,(function(r,i){T&&(r=t[i=r]),o(E,i,e(r,n,y,i,t,W))})),E}},function(e,t,n){var r=n(82),i=n(369),o=n(370),a=n(371),l=n(372),c=n(373);function s(e){var t=this.__data__=new r(e);this.size=t.size}s.prototype.clear=i,s.prototype.delete=o,s.prototype.get=a,s.prototype.has=l,s.prototype.set=c,e.exports=s},function(e,t,n){var r=n(364),i=n(365),o=n(366),a=n(367),l=n(368);function c(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}c.prototype.clear=r,c.prototype.delete=i,c.prototype.get=o,c.prototype.has=a,c.prototype.set=l,e.exports=c},function(e,t,n){var r=n(54);e.exports=function(e,t){for(var n=e.length;n--;)if(r(e[n][0],t))return n;return-1}},function(e,t,n){var r=n(43)(Object,"create");e.exports=r},function(e,t,n){var r=n(388);e.exports=function(e,t){var n=e.__data__;return r(t)?n["string"==typeof t?"string":"hash"]:n.map}},function(e,t,n){var r=n(64),i=n(54),o=Object.prototype.hasOwnProperty;e.exports=function(e,t,n){var a=e[t];o.call(e,t)&&i(a,n)&&(void 0!==n||t in e)||r(e,t,n)}},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,n){var r=n(395),i=n(68),o=n(120),a=o&&o.isTypedArray,l=a?i(a):r;e.exports=l},function(e,t,n){var r=n(11),i=Object.create,o=function(){function e(){}return function(t){if(!r(t))return{};if(i)return i(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();e.exports=o},function(e,t,n){var r=n(91),i=n(207),o=n(127);e.exports=function(e,t){return o(i(e,t,r),e+"")}},function(e,t){e.exports=function(e){return e}},function(e,t,n){"use strict";var r=Object.prototype.toString,i=r.call(function(){return arguments}());e.exports=function(e){return r.call(e)===i}},function(e,t,n){"use strict";var r=Object.prototype.toString,i=r.call("");e.exports=function(e){return"string"==typeof e||e&&"object"==typeof e&&(e instanceof String||r.call(e)===i)||!1}},function(e,t,n){"use strict";e.exports=n(439)()?globalThis:n(440)},function(e,t,n){"use strict";(function(e){t.__esModule=!0,t.default=function(t){return new e(e=>setTimeout(e,t))}}).call(this,n(2))},function(e,t,n){"use strict";(function(t){var r=n(13),i=n(49),o=n(482);function a(e){return r.isPlainObject(e)||r.isArray(e)}function l(e){return r.endsWith(e,"[]")?e.slice(0,-2):e}function c(e,t,n){return e?e.concat(t).map((function(e,t){return e=l(e),!n&&t?"["+e+"]":e})).join(n?".":""):t}var s=r.toFlatObject(r,{},null,(function(e){return/^is[A-Z]/.test(e)}));e.exports=function(e,n,d){if(!r.isObject(e))throw new TypeError("target must be an object");n=n||new(o||FormData);var u,A=(d=r.toFlatObject(d,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!r.isUndefined(t[e])}))).metaTokens,h=d.visitor||m,g=d.dots,F=d.indexes,Q=(d.Blob||"undefined"!=typeof Blob&&Blob)&&((u=n)&&r.isFunction(u.append)&&"FormData"===u[Symbol.toStringTag]&&u[Symbol.iterator]);if(!r.isFunction(h))throw new TypeError("visitor must be a function");function p(e){if(null===e)return"";if(r.isDate(e))return e.toISOString();if(!Q&&r.isBlob(e))throw new i("Blob is not supported. Use a Buffer instead.");return r.isArrayBuffer(e)||r.isTypedArray(e)?Q&&"function"==typeof Blob?new Blob([e]):t.from(e):e}function m(e,t,i){var o=e;if(e&&!i&&"object"==typeof e)if(r.endsWith(t,"{}"))t=A?t:t.slice(0,-2),e=JSON.stringify(e);else if(r.isArray(e)&&function(e){return r.isArray(e)&&!e.some(a)}(e)||r.isFileList(e)||r.endsWith(t,"[]")&&(o=r.toArray(e)))return t=l(t),o.forEach((function(e,i){!r.isUndefined(e)&&null!==e&&n.append(!0===F?c([t],i,g):null===F?t:t+"[]",p(e))})),!1;return!!a(e)||(n.append(c(i,t,g),p(e)),!1)}var U=[],b=Object.assign(s,{defaultVisitor:m,convertValue:p,isVisitable:a});if(!r.isObject(e))throw new TypeError("data must be an object");return function e(t,i){if(!r.isUndefined(t)){if(-1!==U.indexOf(t))throw Error("Circular reference detected in "+i.join("."));U.push(t),r.forEach(t,(function(t,o){!0===(!(r.isUndefined(t)||null===t)&&h.call(n,t,r.isString(o)?o.trim():o,i,b))&&e(t,i?i.concat(o):[o])})),U.pop()}}(e),n}}).call(this,n(224).Buffer)},function(e,t,n){"use strict";var r=n(49);function i(e,t,n){r.call(this,null==e?"canceled":e,r.ERR_CANCELED,t,n),this.name="CanceledError"}n(13).inherits(i,r,{__CANCEL__:!0}),e.exports=i},function(e,t,n){var r=n(89),i=n(11);e.exports=function(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var n=r(e.prototype),o=e.apply(n,t);return i(o)?o:n}}},function(e,t,n){var r=n(518);e.exports=function(e,t){return!!(null==e?0:e.length)&&r(e,t,0)>-1}},function(e,t,n){var r=n(524);e.exports=function(e){var t=r(e),n=t%1;return t==t?n?t-n:t:0}},function(e,t,n){var r=n(117),i=n(534),o=n(535);function a(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new r;++t<n;)this.add(e[t])}a.prototype.add=a.prototype.push=i,a.prototype.has=o,e.exports=a},function(e,t){e.exports=function(e,t){return e.has(t)}},function(e,t){e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}},function(e,t,n){var r=n(60),i=n(50);e.exports=function(e,t){for(var n=0,o=(t=r(t,e)).length;null!=e&&n<o;)e=e[i(t[n++])];return n&&n==o?e:void 0}},function(e,t,n){var r=n(256),i=n(34);e.exports=function(e,t){return e&&r(e,t,i)}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(257));const o=e=>e.replace(/\/$/,"");var a=(e,t)=>{if(!t)return e;const n=i.default.parse(t),r=i.default.parse(e);if(!n.protocol||!r.protocol)return e;const a=n.protocol.match(/^https/),l=r.protocol.match(/^ws/i);return`${o(`${(l?"ws":"http")+(a?"s":"")}://${n.host}${n.pathname}`)}/${o(`${r.host}${r.pathname}${r.search||""}`)}`};t.default=a},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;let r="";var i={getCurrentAudioOutputDeviceId:()=>r,setCurrentAudioOutputDeviceId:e=>{r=e}};t.default=i},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e,t){const n={};Object.keys(t).forEach(r=>{n[r]=((e,t,n)=>{if(t&&!n)return()=>t.call(e);if(t&&n)return r=>(void 0!==r&&n.call(e,r),t.call(e));return t=>{void 0!==t&&n.call(e,t)}})(e,t[r].get,t[r].set)}),(0,i.default)(e,n)};var i=r(n(9))},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(205));var o=function(e){let t=(void 0===e?{}:e).NativeVideoElementWrapper;const n=void 0===t?(0,i.default)():t;return function(e){let t=void 0===e?{}:e,r=t.fallbackText,i=void 0===r?"Sorry, Web RTC is not available in your browser":r,o=t.fitMode,a=t.muted,l=t._inject,c=t.widgetType;return new n({fallbackText:i,fitMode:o,muted:a,defaultAudioVolume:50,_inject:l,widgetType:c})}};t.default=o},function(e,t,n){"use strict";function r(e){return e.map(e=>({url:e.url,urls:e.urls||[e.url],username:e.username,credential:e.credential}))}t.__esModule=!0,t.adaptIceServers=r,t.parseIceServers=function(e){let t;try{t=JSON.parse(e.data).content.iceServers}catch(e){return[]}return r(t)}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(3));t.default=()=>"Chrome"===i.default.name&&i.default.version>=58||-1!==["Firefox","Edge","Safari","Opera"].indexOf(i.default.name)},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){let t=null,n=!1;const r=()=>{n&&(e(),t=window.requestAnimationFrame(r))};this.start=()=>{n||(n=!0,window.requestAnimationFrame(r))},this.stop=()=>{window.cancelAnimationFrame(t),n=!1}}},function(e,t,n){"use strict";t.__esModule=!0,t.ONE_SECOND_IN_MS=t.ONE_MINUTE_IN_MS=void 0;t.ONE_SECOND_IN_MS=1e3;t.ONE_MINUTE_IN_MS=6e4},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CancellationError=t.default=void 0;var r=o(n(703)),i=o(n(327));function o(e){return e&&e.__esModule?e:{default:e}}t.default=r.default,t.CancellationError=i.default},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i,o,a=r(n(53));const l=!!window.crypto,c=!(null==(i=window.RTCRtpSender)||!i.prototype.createEncodedStreams)||!(null==(o=window.RTCRtpSender)||!o.prototype.createdEncodedVideoStreams),s=!!window.Worker,d=()=>l&&c&&s;t.default=function(e){void 0===e&&(e={});const t=e.hasOpenTokSupport||a.default.once,n=e.isE2eeSupported||d;return t()&&n()}},function(e,t,n){var r=n(43)(n(16),"Map");e.exports=r},function(e,t,n){var r=n(380),i=n(387),o=n(389),a=n(390),l=n(391);function c(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}c.prototype.clear=r,c.prototype.delete=i,c.prototype.get=o,c.prototype.has=a,c.prototype.set=l,e.exports=c},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r&&!1!==t(e[n],n,e););return e}},function(e,t){e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},function(e,t,n){(function(e){var r=n(188),i=t&&!t.nodeType&&t,o=i&&"object"==typeof e&&e&&!e.nodeType&&e,a=o&&o.exports===i&&r.process,l=function(){try{var e=o&&o.require&&o.require("util").types;return e||a&&a.binding&&a.binding("util")}catch(e){}}();e.exports=l}).call(this,n(87)(e))},function(e,t,n){var r=n(69),i=n(396),o=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return i(e);var t=[];for(var n in Object(e))o.call(e,n)&&"constructor"!=n&&t.push(n);return t}},function(e,t,n){var r=n(401),i=n(195),o=Object.prototype.propertyIsEnumerable,a=Object.getOwnPropertySymbols,l=a?function(e){return null==e?[]:(e=Object(e),r(a(e),(function(t){return o.call(e,t)})))}:i;e.exports=l},function(e,t){e.exports=function(e,t){for(var n=-1,r=t.length,i=e.length;++n<r;)e[i+n]=t[n];return e}},function(e,t,n){var r=n(193)(Object.getPrototypeOf,Object);e.exports=r},function(e,t,n){var r=n(202);e.exports=function(e){var t=new e.constructor(e.byteLength);return new r(t).set(new r(e)),t}},function(e,t){e.exports=function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}},function(e,t,n){var r=n(416),i=n(208)(r);e.exports=i},function(e,t,n){var r=n(54),i=n(28),o=n(67),a=n(11);e.exports=function(e,t,n){if(!a(n))return!1;var l=typeof t;return!!("number"==l?i(n)&&o(t,n.length):"string"==l&&t in n)&&r(n[t],e)}},function(e,t,n){var r=n(117);function i(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var a=e.apply(this,r);return n.cache=o.set(i,a)||o,a};return n.cache=new(i.Cache||r),n}i.Cache=r,e.exports=i},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r={error:{priority:1,method:"error"},warn:{priority:2,method:"warn"},info:{priority:3,method:"info"},log:{priority:4,method:"log"},debug:{priority:5,method:"debug"},spam:{priority:6,method:"log"}};t.default=r},function(e,t,n){"use strict";e.exports=n(210)()?Object.setPrototypeOf:n(211)},function(e,t,n){"use strict";var r=n(57),i={object:!0,function:!0,undefined:!0};e.exports=function(e){return!!r(e)&&hasOwnProperty.call(i,typeof e)}},function(e,t,n){"use strict";e.exports=n(430)()?Object.assign:n(431)},function(e,t,n){"use strict";(function(t){var r=n(13),i=n(225),o=n(49),a=n(226),l=n(96),c=n(487),s=n(135),d=n(227),u={"Content-Type":"application/x-www-form-urlencoded"};function A(e,t){!r.isUndefined(e)&&r.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var h,g={transitional:a,adapter:(("undefined"!=typeof XMLHttpRequest||void 0!==t&&"[object process]"===Object.prototype.toString.call(t))&&(h=n(228)),h),transformRequest:[function(e,t){i(t,"Accept"),i(t,"Content-Type");var n,o=t&&t["Content-Type"]||"",a=o.indexOf("application/json")>-1,s=r.isObject(e);if(s&&r.isHTMLForm(e)&&(e=new FormData(e)),r.isFormData(e))return a?JSON.stringify(d(e)):e;if(r.isArrayBuffer(e)||r.isBuffer(e)||r.isStream(e)||r.isFile(e)||r.isBlob(e))return e;if(r.isArrayBufferView(e))return e.buffer;if(r.isURLSearchParams(e))return A(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString();if(s){if(-1!==o.indexOf("application/x-www-form-urlencoded"))return c(e,this.formSerializer).toString();if((n=r.isFileList(e))||o.indexOf("multipart/form-data")>-1){var u=this.env&&this.env.FormData;return l(n?{"files[]":e}:e,u&&new u,this.formSerializer)}}return s||a?(A(t,"application/json"),function(e,t,n){if(r.isString(e))try{return(t||JSON.parse)(e),r.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||g.transitional,n=t&&t.forcedJSONParsing,i="json"===this.responseType;if(e&&r.isString(e)&&(n&&!this.responseType||i)){var a=!(t&&t.silentJSONParsing)&&i;try{return JSON.parse(e)}catch(e){if(a){if("SyntaxError"===e.name)throw o.from(e,o.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:s.classes.FormData,Blob:s.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};r.forEach(["delete","get","head"],(function(e){g.headers[e]={}})),r.forEach(["post","put","patch"],(function(e){g.headers[e]=r.merge(u)})),e.exports=g}).call(this,n(29))},function(e,t,n){"use strict";e.exports=n(488)},function(e,t){e.exports={}},function(e,t,n){var r=n(234),i=n(507),o=n(508),a=n(236),l=n(522),c=n(240),s=n(523),d=n(243),u=n(244),A=n(100),h=Math.max;e.exports=function(e,t,n,g,F,Q,p,m){var U=2&t;if(!U&&"function"!=typeof e)throw new TypeError("Expected a function");var b=g?g.length:0;if(b||(t&=-97,g=F=void 0),p=void 0===p?p:h(A(p),0),m=void 0===m?m:A(m),b-=F?F.length:0,64&t){var Z=g,B=F;g=F=void 0}var f=U?void 0:c(e),R=[e,t,n,g,F,Z,B,Q,p,m];if(f&&s(R,f),e=R[0],t=R[1],n=R[2],g=R[3],F=R[4],!(m=R[9]=void 0===R[9]?U?0:e.length:h(R[9]-b,0))&&24&t&&(t&=-25),t&&1!=t)I=8==t||16==t?o(e,t,m):32!=t&&33!=t||F.length?a.apply(void 0,R):l(e,t,n,g);else var I=i(e,t,n);return u((f?r:d)(I,R),e,t)}},function(e,t,n){var r=n(89),i=n(139);function o(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}o.prototype=r(i.prototype),o.prototype.constructor=o,e.exports=o},function(e,t){e.exports=function(){}},function(e,t){e.exports=function(e,t){for(var n=-1,r=e.length,i=0,o=[];++n<r;){var a=e[n];a!==t&&"__lodash_placeholder__"!==a||(e[n]="__lodash_placeholder__",o[i++]=n)}return o}},function(e,t,n){var r=n(33),i=n(124),o=n(21),a=Function.prototype,l=Object.prototype,c=a.toString,s=l.hasOwnProperty,d=c.call(Object);e.exports=function(e){if(!o(e)||"[object Object]"!=r(e))return!1;var t=i(e);if(null===t)return!0;var n=s.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&c.call(n)==d}},function(e,t,n){var r=n(533),i=n(21);e.exports=function e(t,n,o,a,l){return t===n||(null==t||null==n||!i(t)&&!i(n)?t!=t&&n!=n:r(t,n,o,a,e,l))}},function(e,t,n){var r=n(14),i=n(71),o=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;e.exports=function(e,t){if(r(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!i(e))||(a.test(e)||!o.test(e)||null!=t&&e in Object(t))}},function(e,t,n){var r=n(548),i=n(207),o=n(127);e.exports=function(e){return o(i(e,void 0,r),e+"")}},function(e,t,n){"use strict";let r;t.__esModule=!0,t.default=function(e){void 0===e&&(e={});const t=e.AudioContext||(void 0!==typeof window?window:global).AudioContext||(void 0!==typeof window?window:global).webkitAudioContext;return function(){if(r=r||t&&new t,null==r)throw new Error("AudioContext could not be created, hardware limit reached.");return r}}},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;let r=function(){function e(e){this._analyser=null,this._timeDomainData=null,this._sourceNode=null,this._audioContext=e}var t=e.prototype;return t._initAudioAnalyser=function(e){this._analyser=this._audioContext.createAnalyser(),this._sourceNode=this._audioContext.createMediaStreamSource(e),this._sourceNode.connect(this._analyser),this._timeDomainData=new Uint8Array(this._analyser.frequencyBinCount)},t.webRTCStream=function(e){this._sourceNode&&this._sourceNode.disconnect(this._analyser),"suspended"===this._audioContext.state&&this._audioContext.resume(),this._initAudioAnalyser(e)},t.destroy=function(){this._sourceNode&&this._sourceNode.disconnect(this._analyser),this._timeDomainData=null},t.sample=function(e){if("function"==typeof e)throw new Error("sample no longer takes a callback");if(this._analyser&&this._timeDomainData){this._analyser.getByteTimeDomainData(this._timeDomainData);let e=0;for(let t=this._timeDomainData.length-1;t>=0;t-=1)e=Math.max(e,Math.abs(this._timeDomainData[t]-128));return e/128}return null},e}();t.default=r},function(e,t,n){var r=n(90),i=n(54),o=n(128),a=n(55),l=Object.prototype,c=l.hasOwnProperty,s=r((function(e,t){e=Object(e);var n=-1,r=t.length,s=r>2?t[2]:void 0;for(s&&o(t[0],t[1],s)&&(r=1);++n<r;)for(var d=t[n],u=a(d),A=-1,h=u.length;++A<h;){var g=u[A],F=e[g];(void 0===F||i(F,l[g])&&!c.call(e,g))&&(e[g]=d[g])}return e}));e.exports=s},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(9)),o=r(n(149));const a=(0,r(n(1)).default)("Event");let l=function(){function e(e,t,n){void 0===t&&(t=!0),void 0===n&&(n={}),this.type=e,this.cancelable=t,this._defaultPrevented=!1;const r=(0,o.default)(Object.keys(this),Object.keys(n));if(r.length>0)throw new Error("Cannot used reserved property names: "+r.join(","));(0,i.default)(this,n)}var t=e.prototype;return t.preventDefault=function(){this.cancelable?this._defaultPrevented=!0:a.warn("Event.preventDefault :: Trying to preventDefault on an event that isn't cancelable")},t.isDefaultPrevented=function(){return this._defaultPrevented},e}();t.default=l},function(e,t,n){var r=n(39),i=n(576),o=n(90),a=n(577),l=o((function(e){var t=r(e,a);return t.length&&t[0]===e[0]?i(t):[]}));e.exports=l},function(e,t){e.exports=function(e,t,n){for(var r=-1,i=null==e?0:e.length;++r<i;)if(n(t,e[r]))return!0;return!1}},function(e,t,n){var r=n(28),i=n(21);e.exports=function(e){return i(e)&&r(e)}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(24)),o=r(n(62)),a=r(n(59));var l=function(){function e(e){void 0===e&&(e={}),Object.defineProperty(this,"_rawSessionInfo",{value:(0,o.default)(e)})}return(0,i.default)(e,[{key:"sessionId",get:function(){return this._rawSessionInfo.session_id}},{key:"partnerId",get:function(){return this._rawSessionInfo.partner_id}},{key:"messagingServer",get:function(){return this._rawSessionInfo.messaging_server_url}},{key:"mediaServerName",get:function(){return this._rawSessionInfo.media_server_hostname}},{key:"messagingURL",get:function(){return this._rawSessionInfo.messaging_url}},{key:"symphonyAddress",get:function(){return this._rawSessionInfo.symphony_address}},{key:"iceServers",get:function(){return this._rawSessionInfo.ice_servers}},{key:"simulcast",get:function(){return(0,a.default)(this._rawSessionInfo,"properties.simulcast")}},{key:"e2ee",get:function(){return(0,a.default)(this._rawSessionInfo,"properties.e2ee",!1)}},{key:"reconnection",get:function(){return(0,a.default)(this._rawSessionInfo,"properties.reconnection",!1)}},{key:"renegotiation",get:function(){return(0,a.default)(this._rawSessionInfo,"properties.renegotiation",!1)}},{key:"p2pEnabled",get:function(){return"enabled"===(0,a.default)(this._rawSessionInfo,"properties.p2p.preference.value")}},{key:"hybridSession",get:function(){return(0,a.default)(this._rawSessionInfo,"properties.hybridSession",!1)}},{key:"isAdaptiveEnabled",get:function(){return"adaptive"===(0,a.default)(this._rawSessionInfo,"properties.p2p.preference.value")}},{key:"priorityVideoCodec",get:function(){return(0,a.default)(this._rawSessionInfo,"properties.priorityVideoCodec","")}},{key:"h264",get:function(){return(0,a.default)(this._rawSessionInfo,"properties.h264",!0)}},{key:"vp8",get:function(){return(0,a.default)(this._rawSessionInfo,"properties.vp8",!0)}},{key:"vp9",get:function(){return(0,a.default)(this._rawSessionInfo,"properties.vp9",!0)}},{key:"singlePeerConnection",get:function(){return(0,a.default)(this._rawSessionInfo,"properties.singlePeerConnection",!1)}},{key:"clientCandidates",get:function(){const e=(0,a.default)(this._rawSessionInfo,"properties.clientCandidates");return"relayed"===e?"relay":e}}]),e}();t.default=l},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;t.default=()=>document.createElement("video")},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(){return{ROTATED_NORMAL:0,ROTATED_LEFT:270,ROTATED_RIGHT:90,ROTATED_UPSIDE_DOWN:180}}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e){if(void 0!==e.adapter||l.default.isLegacyEdge)return e;const t=(e=>{const t={},n=(e,t,n)=>{n.forEach(n=>{let r=n.key,i=n.type,o=t[r];if(void 0!==o){switch(i){case"function":o=((e,t)=>{if("function"!=typeof t)return c.warn("Non-function passed into bindWithStaticProperties()"),t;const n=t.bind(e);return Object.keys(t).forEach(e=>{n[e]=t[e]}),n})(t,o);break;case"class":o="function"!=typeof(l=o)?(c.warn("Non-function passed into extendClass()"),l):(0,a.default)(l);break;case"string":case"object":break;default:throw new Error("Invalid type of window key: "+i)}e[r]=o}var l})};n(t,e,s),void 0!==e.navigator&&(t.navigator={},n(t.navigator,e.navigator,d),void 0!==e.navigator.mediaDevices&&(t.navigator.mediaDevices={},n(t.navigator.mediaDevices,e.navigator.mediaDevices,u)));return t})(e);return(0,i.default)({window:t}),t};var i=r(n(593)),o=r(n(1)),a=r(n(604)),l=r(n(3));const c=(0,o.default)("createWindowMock"),s=[{key:"location",type:"object"},{key:"setTimeout",type:"function"},{key:"requestAnimationFrame",type:"function"},{key:"URL",type:"function"},{key:"MediaStream",type:"class"},{key:"webkitMediaStream",type:"class"},{key:"RTCIceCandidate",type:"class"},{key:"mozRTCIceCandidate",type:"class"},{key:"RTCSessionDescription",type:"class"},{key:"mozRTCSessionDescription",type:"class"},{key:"RTCIceGatherer",type:"class"},{key:"RTCIceTransport",type:"class"},{key:"RTCDtlsTransport",type:"class"},{key:"RTCSctpTransport",type:"class"},{key:"RTCRtpReceiver",type:"class"},{key:"HTMLMediaElement",type:"class"},{key:"RTCPeerConnection",type:"class"},{key:"webkitRTCPeerConnection",type:"class"},{key:"mozRTCPeerConnection",type:"class"},{key:"MediaStreamTrack",type:"class"},{key:"RTCRtpSender",type:"class"},{key:"RTCTrackEvent",type:"class"},{key:"RTCTransceiver",type:"class"},{key:"RTCDtmfSender",type:"class"},{key:"RTCDTMFSender",type:"class"},{key:"MediaStreamTrackEvent",type:"class"}],d=[{key:"userAgent",type:"string"},{key:"getUserMedia",type:"function"},{key:"getDisplayMedia",type:"function"},{key:"webkitGetUserMedia",type:"function"},{key:"mozGetUserMedia",type:"function"}],u=[{key:"getUserMedia",type:"function"},{key:"getDisplayMedia",type:"function"},{key:"enumerateDevices",type:"function"},{key:"getSupportedConstraints",type:"function"},{key:"addEventListener",type:"function"},{key:"removeEventListener",type:"function"}]},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(){let e=null;this.transform=t=>{e=null===e||t>=e?t:.3*t+.7*e;const n=Math.log(e)/Math.LN10/1.5+1;return Math.min(Math.max(n,0),1)}}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e){const t={},n=(n,r)=>{(0,i.default)(r,{parent:this}),r.appendTo(e.parent),t[n]=r,this[n]=r};if(!e.parent)return;(0,o.default)(this),this.destroy=()=>{this.off(),this.hideWhileLoading(),a(t).forEach(e=>e.destroy())},this.showAfterLoading=()=>{a(t).forEach(e=>e.showAfterLoading())},this.hideWhileLoading=()=>{a(t).forEach(e=>e.hideWhileLoading())},this.set=(e,t)=>("string"==typeof e&&t?n(e,t):Object.keys(e).forEach(t=>{n(t,e[t])}),this)};var i=r(n(9)),o=r(n(6));const a=e=>Object.keys(e).map(t=>e[t])},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(6)),o=r(n(30)),a=r(n(605));const l=(0,r(n(18)).default)(),c=(0,a.default)();var s=new function(){const e=this;function t(){return c.isDomLoaded()&&!c.isDomUnloaded()}function n(){e.dispatchEvent(new l.EnvLoadedEvent(o.default.ENV_UNLOADED))}(0,i.default)(e),c.whenLoaded.then((function(){c.whenUnloaded.then(n),t()&&e.dispatchEvent(new l.EnvLoadedEvent(o.default.ENV_LOADED))})),this.onLoad=function(n,r){t()?n.call(r):e.on(o.default.ENV_LOADED,n,r)},this.onUnload=function(t,n){this.isUnloaded()?t.call(n):e.on(o.default.ENV_UNLOADED,t,n)},this.isUnloaded=function(){return c.isDomUnloaded()}};t.default=s},function(e,t,n){"use strict";var r=n(611);
17
+ */var n;n=function(){"use strict";function e(e){return"function"==typeof e}var n=Array.isArray?Array.isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)},r=0,i=void 0,o=void 0,a=function(e,t){h[r]=e,h[r+1]=t,2===(r+=2)&&(o?o(g):U())},l="undefined"!=typeof window?window:void 0,c=l||{},s=c.MutationObserver||c.WebKitMutationObserver,d="undefined"==typeof self&&void 0!==t&&"[object process]"==={}.toString.call(t),u="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel;function A(){var e=setTimeout;return function(){return e(g,1)}}var h=new Array(1e3);function g(){for(var e=0;e<r;e+=2)(0,h[e])(h[e+1]),h[e]=void 0,h[e+1]=void 0;r=0}var F,Q,p,m,U=void 0;function b(e,t){var n=this,r=new this.constructor(f);void 0===r[B]&&J(r);var i=n._state;if(i){var o=arguments[i-1];a((function(){return v(i,r,o,n._result)}))}else W(n,r,e,t);return r}function Z(e){if(e&&"object"==typeof e&&e.constructor===this)return e;var t=new this(f);return I(t,e),t}d?U=function(){return t.nextTick(g)}:s?(Q=0,p=new s(g),m=document.createTextNode(""),p.observe(m,{characterData:!0}),U=function(){m.data=Q=++Q%2}):u?((F=new MessageChannel).port1.onmessage=g,U=function(){return F.port2.postMessage(0)}):U=void 0===l?function(){try{var e=Function("return this")().require("vertx");return void 0!==(i=e.runOnLoop||e.runOnContext)?function(){i(g)}:A()}catch(e){return A()}}():A();var B=Math.random().toString(36).substring(2);function f(){}function R(t,n,r){n.constructor===t.constructor&&r===b&&n.constructor.resolve===Z?function(e,t){1===t._state?V(e,t._result):2===t._state?C(e,t._result):W(t,void 0,(function(t){return I(e,t)}),(function(t){return C(e,t)}))}(t,n):void 0===r?V(t,n):e(r)?function(e,t,n){a((function(e){var r=!1,i=function(e,t,n,r){try{e.call(t,n,r)}catch(e){return e}}(n,t,(function(n){r||(r=!0,t!==n?I(e,n):V(e,n))}),(function(t){r||(r=!0,C(e,t))}),e._label);!r&&i&&(r=!0,C(e,i))}),e)}(t,n,r):V(t,n)}function I(e,t){if(e===t)C(e,new TypeError("You cannot resolve a promise with itself"));else if(i=typeof(r=t),null===r||"object"!==i&&"function"!==i)V(e,t);else{var n=void 0;try{n=t.then}catch(t){return void C(e,t)}R(e,t,n)}var r,i}function y(e){e._onerror&&e._onerror(e._result),E(e)}function V(e,t){void 0===e._state&&(e._result=t,e._state=1,0!==e._subscribers.length&&a(E,e))}function C(e,t){void 0===e._state&&(e._state=2,e._result=t,a(y,e))}function W(e,t,n,r){var i=e._subscribers,o=i.length;e._onerror=null,i[o]=t,i[o+1]=n,i[o+2]=r,0===o&&e._state&&a(E,e)}function E(e){var t=e._subscribers,n=e._state;if(0!==t.length){for(var r=void 0,i=void 0,o=e._result,a=0;a<t.length;a+=3)r=t[a],i=t[a+n],r?v(n,r,i,o):i(o);e._subscribers.length=0}}function v(t,n,r,i){var o=e(r),a=void 0,l=void 0,c=!0;if(o){try{a=r(i)}catch(e){c=!1,l=e}if(n===a)return void C(n,new TypeError("A promises callback cannot return that same promise."))}else a=i;void 0!==n._state||(o&&c?I(n,a):!1===c?C(n,l):1===t?V(n,a):2===t&&C(n,a))}var S=0;function J(e){e[B]=S++,e._state=void 0,e._result=void 0,e._subscribers=[]}var G=function(){function e(e,t){this._instanceConstructor=e,this.promise=new e(f),this.promise[B]||J(this.promise),n(t)?(this.length=t.length,this._remaining=t.length,this._result=new Array(this.length),0===this.length?V(this.promise,this._result):(this.length=this.length||0,this._enumerate(t),0===this._remaining&&V(this.promise,this._result))):C(this.promise,new Error("Array Methods must be provided an Array"))}return e.prototype._enumerate=function(e){for(var t=0;void 0===this._state&&t<e.length;t++)this._eachEntry(e[t],t)},e.prototype._eachEntry=function(e,t){var n=this._instanceConstructor,r=n.resolve;if(r===Z){var i=void 0,o=void 0,a=!1;try{i=e.then}catch(e){a=!0,o=e}if(i===b&&void 0!==e._state)this._settledAt(e._state,t,e._result);else if("function"!=typeof i)this._remaining--,this._result[t]=e;else if(n===N){var l=new n(f);a?C(l,o):R(l,e,i),this._willSettleAt(l,t)}else this._willSettleAt(new n((function(t){return t(e)})),t)}else this._willSettleAt(r(e),t)},e.prototype._settledAt=function(e,t,n){var r=this.promise;void 0===r._state&&(this._remaining--,2===e?C(r,n):this._result[t]=n),0===this._remaining&&V(r,this._result)},e.prototype._willSettleAt=function(e,t){var n=this;W(e,void 0,(function(e){return n._settledAt(1,t,e)}),(function(e){return n._settledAt(2,t,e)}))},e}(),N=function(){function t(e){this[B]=S++,this._result=this._state=void 0,this._subscribers=[],f!==e&&("function"!=typeof e&&function(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}(),this instanceof t?function(e,t){try{t((function(t){I(e,t)}),(function(t){C(e,t)}))}catch(t){C(e,t)}}(this,e):function(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}())}return t.prototype.catch=function(e){return this.then(null,e)},t.prototype.finally=function(t){var n=this.constructor;return e(t)?this.then((function(e){return n.resolve(t()).then((function(){return e}))}),(function(e){return n.resolve(t()).then((function(){throw e}))})):this.then(t,t)},t}();return N.prototype.then=b,N.all=function(e){return new G(this,e).promise},N.race=function(e){var t=this;return n(e)?new t((function(n,r){for(var i=e.length,o=0;o<i;o++)t.resolve(e[o]).then(n,r)})):new t((function(e,t){return t(new TypeError("You must pass an array to race."))}))},N.resolve=Z,N.reject=function(e){var t=new this(f);return C(t,e),t},N._setScheduler=function(e){o=e},N._setAsap=function(e){a=e},N._asap=a,N.polyfill=function(){var e=void 0;if(void 0!==(void 0!==typeof window?window:global))e=void 0!==typeof window?window:global;else if("undefined"!=typeof self)e=self;else try{e=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}var t=e.Promise;if(t){var n=null;try{n=Object.prototype.toString.call(t.resolve())}catch(e){}if("[object Promise]"===n&&!t.cast)return}e.Promise=N},N.Promise=N,N},e.exports=n()}).call(this,n(29))},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(474)).default.parse();t.default=i},function(e,t,n){e.exports=n(414)},function(e,t,n){(function(t){function n(e,n,r,i,o,a,l){try{var c=e[a](l),s=c.value}catch(e){return void r(e)}c.done?n(s):t.resolve(s).then(i,o)}e.exports=function(e){return function(){var r=this,i=arguments;return new t((function(t,o){var a=e.apply(r,i);function l(e){n(a,t,o,l,c,"next",e)}function c(e){n(a,t,o,l,c,"throw",e)}l(void 0)}))}}}).call(this,n(2))},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e){const t=new a.default;t.on("newListener",e=>{t.emit(e+":added")}),t.on("removeListener",e=>{t.emit(e+":removed")});const n={eventsDispatched:{},on(e,n,r){return"string"==typeof e&&n?e.split(" ").forEach(e=>{t.on(e,(0,c.default)(n,r))}):Object.keys(e).forEach(r=>{t.on(r,(0,c.default)(e[r],n))}),this},off(e,n,r){return"string"==typeof e?this.off(e.split(" "),n,r):Array.isArray(e)?e.forEach(e=>{n&&(0,o.default)(n)?t.removeListener(e,(0,c.default)(n,r)):t.removeAllListeners(e)}):e?Object.keys(e).forEach(r=>{t.removeListener(r,(0,c.default)(e[r],n))}):t.removeAllListeners(),this},once(e,n,r){return"string"==typeof e&&n?e.split(" ").forEach(e=>{t.once(e,(0,c.default)(n,r))}):Object.keys(e).forEach(r=>{t.once(r,(0,c.default)(e[r],n))}),this},dispatchEvent(e){if(!e.type)throw new Error("dispatchEvent: Event has no type");return e.target||(e.target=this),this.trigger(e.type,e),this},dispatchEventOnce(e,t){this.isEventDispatched(e.type,t)||(this.dispatchEvent(e),this.eventsDispatched[e.type]?this.eventsDispatched[e.type].push(t):this.eventsDispatched[e.type]=[t])},isEventDispatched(e,t){var n;return null==(n=this.eventsDispatched[e])?void 0:n.includes(t)},trigger(e){try{for(var n=arguments.length,r=new Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];t.emit(e,...r)}catch(e){s.error("An error occurred in an event handler",e)}return this},emit(){return e.trigger(...arguments)},addEventListener:(t,n,r)=>(s.warn("The addEventListener() method is deprecated. Use on() or once() instead."),e.on(t,n,r)),removeEventListener:(t,n,r)=>(s.warn("The removeEventListener() method is deprecated. Use off() instead."),e.off(t,n,r)),listenerCount:e=>t.listenerCount(e)};return(0,i.default)(e,n)};var i=r(n(9)),o=r(n(20)),a=r(n(12)),l=r(n(1)),c=r(n(421));const s=(0,l.default)("Events")},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(147)),o=r(n(261)),a=r(n(6)),l=r(n(1)),c=r(n(3)),s=r(n(263)),d=r(n(262)),u=r(n(264)),A=r(n(572)),h=r(n(266)),g=r(n(269)),F=r(n(585)),Q=r(n(271));o.default.logging=(0,l.default)("OT.$"),o.default.env=c.default,o.default.ElementCollection=d.default,o.default.ajax=u.default,o.default.statable=A.default,o.default.Analytics=h.default,o.default.Collection=g.default,o.default.domExtras=F.default,o.default.Error=Q.default,(0,s.default)(o.default,"useLogHelpers",{value(e){const t=(0,l.default)("useLogHelpersDeprecatedMixin");return Object.keys(t).forEach(n=>{e[n]=t[n]}),e},name:"OT.useLogHelpers",getWarning:"Please use an external library for your debugging needs"}),o.default.defaults=i.default,(0,s.default)(o.default,"eventing",{value:a.default,name:"OT.$.eventing",getWarning:"Please use an external library to create an event emitter."}),Object.keys(o.default).forEach(e=>{const t=o.default[e]._attachToOTHelpers||{};Object.keys(t).forEach(n=>{!Object.hasOwnProperty.call(o.default,n)||"util"===e&&"bind"===n||console.warn(`More than one module is trying to define ${n} on OTHelpers.`),o.default[n]=t[n]})});var p=o.default;t.default=p},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;t.default={AUTHENTICATION_ERROR:"OT_AUTHENTICATION_ERROR",BADLY_FORMED_RESPONSE:"OT_BADLY_FORMED_RESPONSE",CHROME_MICROPHONE_ACQUISITION_ERROR:"OT_CHROME_MICROPHONE_ACQUISITION_ERROR",CONNECT_FAILED:"OT_CONNECT_FAILED",CONNECTION_LIMIT_EXCEEDED:"OT_CONNECTION_LIMIT_EXCEEDED",CONSTRAINTS_NOT_SATISFIED:"OT_CONSTRAINTS_NOT_SATISFIED",CREATE_PEER_CONNECTION_FAILED:"OT_CREATE_PEER_CONNECTION_FAILED",DISCONNECTED:"OT_DISCONNECTED",EMPTY_RESPONSE_BODY:"OT_EMPTY_RESPONSE_BODY",GET_RTC_STATS_REPORT_NOT_SUPPORTED:"OT_GET_RTC_STATS_REPORT_NOT_SUPPORTED",HARDWARE_UNAVAILABLE:"OT_HARDWARE_UNAVAILABLE",ICE_WORKFLOW_FAILED:"OT_ICE_WORKFLOW_FAILED",INVALID_HTTP_STATUS:"OT_INVALID_HTTP_STATUS",INVALID_PARAMETER:"OT_INVALID_PARAMETER",INVALID_SESSION_ID:"OT_INVALID_SESSION_ID",MEDIA_ERR_ABORTED:"OT_MEDIA_ERR_ABORTED",MEDIA_ERR_DECODE:"OT_MEDIA_ERR_DECODE",MEDIA_ERR_NETWORK:"OT_MEDIA_ERR_NETWORK",MEDIA_ERR_SRC_NOT_SUPPORTED:"OT_MEDIA_ERR_SRC_NOT_SUPPORTED",MEDIA_ENDED:"OT_MEDIA_ENDED",NO_DEVICES_FOUND:"OT_NO_DEVICES_FOUND",NO_VALID_CONSTRAINTS:"OT_NO_VALID_CONSTRAINTS",NOT_CONNECTED:"OT_NOT_CONNECTED",NOT_FOUND:"OT_NOT_FOUND",NOT_SUPPORTED:"OT_NOT_SUPPORTED",PEER_CONNECTION_NOT_CONNECTED:"OT_PEER_CONNECTION_NOT_CONNECTED",PERMISSION_DENIED:"OT_PERMISSION_DENIED",RATE_LIMIT_EXCEEDED:"OT_RATE_LIMIT_EXCEEDED",REPORT_ISSUE_FAILED:"OT_REPORT_ISSUE_FAILED",SCREEN_SHARING_EXTENSION_NOT_INSTALLED:"OT_SCREEN_SHARING_EXTENSION_NOT_INSTALLED",SCREEN_SHARING_EXTENSION_NOT_REGISTERED:"OT_SCREEN_SHARING_EXTENSION_NOT_REGISTERED",SCREEN_SHARING_NOT_SUPPORTED:"OT_SCREEN_SHARING_NOT_SUPPORTED",SET_REMOTE_DESCRIPTION_FAILED:"OT_SET_REMOTE_DESCRIPTION_FAILED",FAILED_SET_CONFIGURATION:"OT_FAILED_SET_CONFIGURATION",SOCKET_ALREADY_CONNECTED_CONNECTING:"OT_SOCKET_ALREADY_CONNECTED_CONNECTING",SOCKET_CLOSE_ABNORMAL:"OT_SOCKET_CLOSE_ABNORMAL",SOCKET_CLOSE_CONNECT_EXCEPTION:"OT_SOCKET_CLOSE_CONNECT_EXCEPTION",SOCKET_CLOSE_CONNECTIVITY_LOSS:"OT_SOCKET_CLOSE_CONNECTIVITY_LOSS",SOCKET_CLOSE_FALLBACK_CODE:"OT_SOCKET_CLOSE_FALLBACK_CODE",SOCKET_CLOSE_INCONSISTENT_DATA:"OT_SOCKET_CLOSE_INCONSISTENT_DATA",SOCKET_CLOSE_NO_STATUS:"OT_SOCKET_CLOSE_NO_STATUS",SOCKET_CLOSE_POLICY_VIOLATION:"OT_SOCKET_CLOSE_POLICY_VIOLATION",SOCKET_CLOSE_GOING_AWAY:"OT_SOCKET_CLOSE_GOING_AWAY",SOCKET_CLOSE_PROTOCOL_ERROR:"OT_SOCKET_CLOSE_PROTOCOL_ERROR",SOCKET_CLOSE_TIMEOUT:"OT_SOCKET_CLOSE_TIMEOUT",SOCKET_CLOSE_TOO_LARGE:"OT_SOCKET_CLOSE_TOO_LARGE",SOCKET_CLOSE_UNEXPECTED_CONDITION:"OT_SOCKET_CLOSE_UNEXPECTED_CONDITION",SOCKET_CLOSE_UNSUPPORTED:"OT_SOCKET_CLOSE_UNSUPPORTED",STREAM_CREATE_FAILED:"OT_STREAM_CREATE_FAILED",STREAM_DESTROYED:"OT_STREAM_DESTROYED",STREAM_LIMIT_EXCEEDED:"OT_STREAM_LIMIT_EXCEEDED",STREAM_NOT_FOUND:"OT_STREAM_NOT_FOUND",UNABLE_TO_SUBSCRIBE:"OT_UNABLE_TO_SUBSCRIBE",TERMS_OF_SERVICE_FAILURE:"OT_TERMS_OF_SERVICE_FAILURE",TIMEOUT:"OT_TIMEOUT",CANCEL:"OT_CANCEL",UNABLE_TO_CAPTURE_MEDIA:"OT_UNABLE_TO_CAPTURE_MEDIA",UNABLE_TO_CAPTURE_SCREEN:"OT_UNABLE_TO_CAPTURE_SCREEN",UNEXPECTED_ERROR_CODE:"OT_UNEXPECTED_ERROR_CODE",UNEXPECTED_HTTP_STATUS:"OT_UNEXPECTED_HTTP_STATUS",UNEXPECTED_SERVER_RESPONSE:"OT_UNEXPECTED_SERVER_RESPONSE",UNKNOWN_HTTP_ERROR:"OT_UNKNOWN_HTTP_ERROR",UNSUPPORTED_BROWSER:"OT_UNSUPPORTED_BROWSER",USER_MEDIA_ACCESS_DENIED:"OT_USER_MEDIA_ACCESS_DENIED",XDOMAIN_OR_PARSING_ERROR:"OT_XDOMAIN_OR_PARSING_ERROR",API_KEY_DISABLED:"OT_API_KEY_DISABLED",UNABLE_TO_ACCESS_MEDIA_ENGINE:"OT_UNABLE_TO_ACCESS_MEDIA_ENGINE",SET_PROXY_URL_TIMING_ERROR:"OT_SET_PROXY_URL_TIMING_ERROR",PROXY_URL_ALREADY_SET_ERROR:"OT_PROXY_URL_ALREADY_SET_ERROR",SET_VIDEO_SOURCE_FAILURE:"OT_SET_VIDEO_SOURCE_FAILURE",INVALID_VIDEO_SOURCE:"OT_INVALID_VIDEO_SOURCE",REQUESTED_DEVICE_PERMISSION_DENIED:"OT_REQUESTED_DEVICE_PERMISSION_DENIED",INVALID_AUDIO_OUTPUT_SOURCE:"OT_INVALID_AUDIO_OUTPUT_SOURCE",INVALID_ENCRYPTION_SECRET:"OT_INVALID_ENCRYPTION_SECRET"}},function(e,t,n){var r=n(86),i=n(45),o=n(206),a=n(28),l=n(69),c=n(34),s=Object.prototype.hasOwnProperty,d=o((function(e,t){if(l(t)||a(t))i(t,c(t),e);else for(var n in t)s.call(t,n)&&r(e,n,t[n])}));e.exports=d},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r={JS_EXCEPTION:2e3,AUTHENTICATION_ERROR:1004,INVALID_SESSION_ID:1005,CONNECT_FAILED:1006,CONNECT_REJECTED:1007,CONNECTION_TIMEOUT:1008,NOT_CONNECTED:1010,INVALID_PARAMETER:1011,P2P_CONNECTION_FAILED:1013,API_RESPONSE_FAILURE:1014,PEER_CONNECTION_NOT_CONNECTED:1015,TERMS_OF_SERVICE_FAILURE:1026,CONNECTION_LIMIT_EXCEEDED:1027,UNABLE_TO_PUBLISH:1500,UNABLE_TO_SUBSCRIBE:1501,UNSUPPORTED_VIDEO_CODEC:1502,UNABLE_TO_FORCE_DISCONNECT:1520,UNABLE_TO_FORCE_UNPUBLISH:1530,UNABLE_TO_FORCE_MUTE:1540,PUBLISHER_ICE_WORKFLOW_FAILED:1553,SUBSCRIBER_ICE_WORKFLOW_FAILED:1554,STREAM_LIMIT_EXCEEDED:1605,UNEXPECTED_SERVER_RESPONSE:2001,REPORT_ISSUE_ERROR:2011,SET_PROXY_URL_TIMING_ERROR:2021,PROXY_URL_ALREADY_SET_ERROR:2022,GET_RTC_STATS_REPORT_NOT_SUPPORTED:2031,ANVIL_BADLY_FORMED_RESPONSE:3001,ANVIL_INVALID_HTTP_STATUS:3002,ANVIL_XDOMAIN_OR_PARSING_ERROR:3003,ANVIL_UNKNOWN_HTTP_ERROR:3004,ANVIL_UNEXPECTED_ERROR_CODE:3005,ANVIL_EMPTY_RESPONSE_BODY:3006,ANVIL_CONNECT_FAILED:3007,UNABLE_TO_ACCESS_MEDIA_ENGINE:5001};t.default=r},function(e,t){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},function(e,t,n){"use strict";(function(t){var n,r="object"==typeof Reflect?Reflect:null,i=r&&"function"==typeof r.apply?r.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)};n=r&&"function"==typeof r.ownKeys?r.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var o=Number.isNaN||function(e){return e!=e};function a(){a.init.call(this)}e.exports=a,e.exports.once=function(e,n){return new t((function(t,r){function i(t){e.removeListener(n,o),r(t)}function o(){"function"==typeof e.removeListener&&e.removeListener("error",i),t([].slice.call(arguments))}Q(e,n,o,{once:!0}),"error"!==n&&function(e,t,n){"function"==typeof e.on&&Q(e,"error",t,n)}(e,i,{once:!0})}))},a.EventEmitter=a,a.prototype._events=void 0,a.prototype._eventsCount=0,a.prototype._maxListeners=void 0;var l=10;function c(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function s(e){return void 0===e._maxListeners?a.defaultMaxListeners:e._maxListeners}function d(e,t,n,r){var i,o,a,l;if(c(n),void 0===(o=e._events)?(o=e._events=Object.create(null),e._eventsCount=0):(void 0!==o.newListener&&(e.emit("newListener",t,n.listener?n.listener:n),o=e._events),a=o[t]),void 0===a)a=o[t]=n,++e._eventsCount;else if("function"==typeof a?a=o[t]=r?[n,a]:[a,n]:r?a.unshift(n):a.push(n),(i=s(e))>0&&a.length>i&&!a.warned){a.warned=!0;var d=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");d.name="MaxListenersExceededWarning",d.emitter=e,d.type=t,d.count=a.length,l=d,console&&console.warn&&console.warn(l)}return e}function u(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function A(e,t,n){var r={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},i=u.bind(r);return i.listener=n,r.wrapFn=i,i}function h(e,t,n){var r=e._events;if(void 0===r)return[];var i=r[t];return void 0===i?[]:"function"==typeof i?n?[i.listener||i]:[i]:n?function(e){for(var t=new Array(e.length),n=0;n<t.length;++n)t[n]=e[n].listener||e[n];return t}(i):F(i,i.length)}function g(e){var t=this._events;if(void 0!==t){var n=t[e];if("function"==typeof n)return 1;if(void 0!==n)return n.length}return 0}function F(e,t){for(var n=new Array(t),r=0;r<t;++r)n[r]=e[r];return n}function Q(e,t,n,r){if("function"==typeof e.on)r.once?e.once(t,n):e.on(t,n);else{if("function"!=typeof e.addEventListener)throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof e);e.addEventListener(t,(function i(o){r.once&&e.removeEventListener(t,i),n(o)}))}}Object.defineProperty(a,"defaultMaxListeners",{enumerable:!0,get:function(){return l},set:function(e){if("number"!=typeof e||e<0||o(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");l=e}}),a.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},a.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||o(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},a.prototype.getMaxListeners=function(){return s(this)},a.prototype.emit=function(e){for(var t=[],n=1;n<arguments.length;n++)t.push(arguments[n]);var r="error"===e,o=this._events;if(void 0!==o)r=r&&void 0===o.error;else if(!r)return!1;if(r){var a;if(t.length>0&&(a=t[0]),a instanceof Error)throw a;var l=new Error("Unhandled error."+(a?" ("+a.message+")":""));throw l.context=a,l}var c=o[e];if(void 0===c)return!1;if("function"==typeof c)i(c,this,t);else{var s=c.length,d=F(c,s);for(n=0;n<s;++n)i(d[n],this,t)}return!0},a.prototype.addListener=function(e,t){return d(this,e,t,!1)},a.prototype.on=a.prototype.addListener,a.prototype.prependListener=function(e,t){return d(this,e,t,!0)},a.prototype.once=function(e,t){return c(t),this.on(e,A(this,e,t)),this},a.prototype.prependOnceListener=function(e,t){return c(t),this.prependListener(e,A(this,e,t)),this},a.prototype.removeListener=function(e,t){var n,r,i,o,a;if(c(t),void 0===(r=this._events))return this;if(void 0===(n=r[e]))return this;if(n===t||n.listener===t)0==--this._eventsCount?this._events=Object.create(null):(delete r[e],r.removeListener&&this.emit("removeListener",e,n.listener||t));else if("function"!=typeof n){for(i=-1,o=n.length-1;o>=0;o--)if(n[o]===t||n[o].listener===t){a=n[o].listener,i=o;break}if(i<0)return this;0===i?n.shift():function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(n,i),1===n.length&&(r[e]=n[0]),void 0!==r.removeListener&&this.emit("removeListener",e,a||t)}return this},a.prototype.off=a.prototype.removeListener,a.prototype.removeAllListeners=function(e){var t,n,r;if(void 0===(n=this._events))return this;if(void 0===n.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==n[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete n[e]),this;if(0===arguments.length){var i,o=Object.keys(n);for(r=0;r<o.length;++r)"removeListener"!==(i=o[r])&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(t=n[e]))this.removeListener(e,t);else if(void 0!==t)for(r=t.length-1;r>=0;r--)this.removeListener(e,t[r]);return this},a.prototype.listeners=function(e){return h(this,e,!0)},a.prototype.rawListeners=function(e){return h(this,e,!1)},a.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):g.call(e,t)},a.prototype.listenerCount=g,a.prototype.eventNames=function(){return this._eventsCount>0?n(this._events):[]}}).call(this,n(2))},function(e,t,n){"use strict";var r,i=n(221),o=Object.prototype.toString,a=(r=Object.create(null),function(e){var t=o.call(e);return r[t]||(r[t]=t.slice(8,-1).toLowerCase())});function l(e){return e=e.toLowerCase(),function(t){return a(t)===e}}function c(e){return Array.isArray(e)}function s(e){return void 0===e}var d=l("ArrayBuffer");function u(e){return"number"==typeof e}function A(e){return null!==e&&"object"==typeof e}function h(e){if("object"!==a(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}var g=l("Date"),F=l("File"),Q=l("Blob"),p=l("FileList");function m(e){return"[object Function]"===o.call(e)}var U=l("URLSearchParams");function b(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),c(e))for(var n=0,r=e.length;n<r;n++)t.call(null,e[n],n,e);else for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.call(null,e[i],i,e)}var Z,B=(Z="undefined"!=typeof Uint8Array&&Object.getPrototypeOf(Uint8Array),function(e){return Z&&e instanceof Z});var f,R=l("HTMLFormElement"),I=(f=Object.prototype.hasOwnProperty,function(e,t){return f.call(e,t)});e.exports={isArray:c,isArrayBuffer:d,isBuffer:function(e){return null!==e&&!s(e)&&null!==e.constructor&&!s(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){return e&&("function"==typeof FormData&&e instanceof FormData||"[object FormData]"===o.call(e)||m(e.toString)&&"[object FormData]"===e.toString())},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&d(e.buffer)},isString:function(e){return"string"==typeof e},isNumber:u,isObject:A,isPlainObject:h,isEmptyObject:function(e){return e&&0===Object.keys(e).length&&Object.getPrototypeOf(e)===Object.prototype},isUndefined:s,isDate:g,isFile:F,isBlob:Q,isFunction:m,isStream:function(e){return A(e)&&m(e.pipe)},isURLSearchParams:U,isStandardBrowserEnv:function(){var e;return("undefined"==typeof navigator||"ReactNative"!==(e=navigator.product)&&"NativeScript"!==e&&"NS"!==e)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:b,merge:function e(){var t={};function n(n,r){h(t[r])&&h(n)?t[r]=e(t[r],n):h(n)?t[r]=e({},n):c(n)?t[r]=n.slice():t[r]=n}for(var r=0,i=arguments.length;r<i;r++)b(arguments[r],n);return t},extend:function(e,t,n){return b(t,(function(t,r){e[r]=n&&"function"==typeof t?i(t,n):t})),e},trim:function(e){return e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e},inherits:function(e,t,n,r){e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,n&&Object.assign(e.prototype,n)},toFlatObject:function(e,t,n,r){var i,o,a,l={};if(t=t||{},null==e)return t;do{for(o=(i=Object.getOwnPropertyNames(e)).length;o-- >0;)a=i[o],r&&!r(a,e,t)||l[a]||(t[a]=e[a],l[a]=!0);e=!1!==n&&Object.getPrototypeOf(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kindOf:a,kindOfTest:l,endsWith:function(e,t,n){e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;var r=e.indexOf(t,n);return-1!==r&&r===n},toArray:function(e){if(!e)return null;if(c(e))return e;var t=e.length;if(!u(t))return null;for(var n=new Array(t);t-- >0;)n[t]=e[t];return n},isTypedArray:B,isFileList:p,forEachEntry:function(e,t){for(var n,r=(e&&e[Symbol.iterator]).call(e);(n=r.next())&&!n.done;){var i=n.value;t.call(e,i[0],i[1])}},matchAll:function(e,t){for(var n,r=[];null!==(n=e.exec(t));)r.push(n);return r},isHTMLForm:R,hasOwnProperty:I}},function(e,t){var n=Array.isArray;e.exports=n},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e){void 0===e&&(e={});const t=e.Errors||o.default,n=e.OTErrorClass||i.default,r=Object.keys(t).map(e=>t[e]);return function(e,t,i){if(-1===r.indexOf(e))return new Error(`Attempt to use invalid error name (${e}). Original message: ${t.message}`);if(!(t instanceof Error||/^\[object .*Error\]$/.test(Object.prototype.toString.call(t))))return new Error("Did not pass Error as second argument: "+t);const o=new n(void 0,t.message);if(o.name=e,!t.stack)try{throw t}catch(e){}return o.stack=t.stack,i&&(o.code=i),o}};var i=r(n(25)),o=r(n(8))},function(e,t,n){var r=n(188),i="object"==typeof self&&self&&self.Object===Object&&self,o=r||i||Function("return this")();e.exports=o},function(e,t,n){var r=n(573),i=n(574),o=i;o.v1=r,o.v4=i,e.exports=o},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e){void 0===e&&(e={});const t=e.logging||(0,a.default)("Events"),n={ExceptionEvent:function(e,t,n,r,i,o,a){return new l.default(e,!1,{error:a,message:t,title:n,code:r,component:i,target:o})},IssueReportedEvent:function(e,t){return new l.default(e,!1,{issueId:t})},EnvLoadedEvent:function(e){return new l.default(e,!1)}};let r=!1;n.ConnectionEvent=function(e){function n(t,n,r){return e.call(this,t,!1,{connection:n,reason:r})||this}return(0,o.default)(n,e),(0,i.default)(n,[{key:"connections",get:function(){return r||(t.warn("OT.ConnectionEvent connections property is deprecated, use connection instead."),r=!0),[this.connection]}}]),n}(l.default);let s=!1;n.StreamEvent=function(e){function n(t,n,r,i){return e.call(this,t,i,{stream:n,reason:r})||this}return(0,o.default)(n,e),(0,i.default)(n,[{key:"streams",get:function(){return s||(t.warn("OT.StreamEvent streams property is deprecated, use stream instead."),s=!0),[this.stream]}}]),n}(l.default);let d=!1,u=!1,A=!1;return n.SessionConnectEvent=function(e){function n(t){return e.call(this,t,!1)||this}return(0,o.default)(n,e),(0,i.default)(n,[{key:"connections",get:function(){return d||(t.warn("OT.SessionConnectedEvent no longer includes connections. Listen for connectionCreated events instead."),d=!0),[]}},{key:"streams",get:function(){return u||(t.warn("OT.SessionConnectedEvent no longer includes streams. Listen for streamCreated events instead."),u=!0),[]}},{key:"archives",get:function(){return A||(t.warn("OT.SessionConnectedEvent no longer includes archives. Listen for archiveStarted events instead."),A=!0),[]}}]),n}(l.default),n.SessionReconnectingEvent=function(){return new l.default(c.default.SESSION_RECONNECTING,!1)},n.SessionReconnectedEvent=function(){return new l.default(c.default.SESSION_RECONNECTED)},n.SessionDisconnectEvent=function(e,t,n){return new l.default(e,n,{reason:t})},n.StreamPropertyChangedEvent=function(e,t,n,r,i){return new l.default(e,!1,{stream:t,changedProperty:n,oldValue:r,newValue:i})},n.VideoDimensionsChangedEvent=function(e,t,n){return new l.default("videoDimensionsChanged",!1,{target:e,oldValue:t,newValue:n})},n.ArchiveEvent=function(e,t){return new l.default(e,!1,{id:t.id,name:t.name,status:t.status,archive:t})},n.ArchiveUpdatedEvent=function(e,t,n,r){return new l.default("updated",!1,{target:e,changedProperty:t,oldValue:n,newValue:r})},n.SignalEvent=function(e,t,n){return new l.default(e?"signal:"+e:c.default.SIGNAL,!1,{data:t,from:n})},n.CpuPerformanceChangedEvent=function(e){return new l.default("cpuPerformanceChanged",!1,{cpuPerformanceState:e})},n.QualityScoreChangedEvent=function(e){return new l.default("qualityScoreChanged",!1,{qualityScore:e})},n.CaptionReceivedEvent=function(e,t,n){return new l.default("caption",!1,{caption:e,streamId:t,isFinal:n})},n.PublisherCaptionsEnabled=function(e){return new l.default("publisherCaptionsEnabled",!1,{captionsEnabled:e})},n.MediaStreamAvailableEvent=function(e){return new l.default("mediaStreamAvailable",!1,{mediaStream:e})},n.StreamUpdatedEvent=function(e,t,n,r){return new l.default("updated",!1,{target:e,changedProperty:t,oldValue:n,newValue:r})},n.DestroyedEvent=function(e,t,n){return new l.default(e,!1,{target:t,reason:n})},n.ConnectionStateChangedEvent=function(e,t,n){return new l.default(e,!1,{target:t,mediaMode:n})},n.VideoEnabledChangedEvent=function(e,t){return new l.default(e,!1,{reason:t.reason})},n.VideoDisableWarningEvent=function(e){return new l.default(e,!1)},n.AudioLevelUpdatedEvent=function(e){return new l.default(c.default.AUDIO_LEVEL_UPDATED,!1,{audioLevel:e})},n.AudioInputDeviceChangedEvent=function(e){return new l.default(c.default.AUDIO_INPUT_DEVICE_CHANGED,!1,{device:e})},n.MediaStoppedEvent=function(e,t){return new l.default(c.default.MEDIA_STOPPED,!0,{target:e,track:t})},n.MuteForcedEvent=function(e){return new l.default(c.default.MUTE_FORCED,!1,e)},n.VideoElementCreatedEvent=function(e){return new l.default(c.default.VIDEO_ELEMENT_CREATED,!1,{element:e})},n};var i=r(n(24)),o=r(n(23)),a=r(n(1)),l=r(n(148)),c=r(n(30))},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(9)),o=r(n(63)),a=r(n(297)),l=r(n(149)),c=r(n(298)),s=r(n(1)),d=r(n(299));function u(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return A(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return A(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function A(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}const h=(0,s.default)("SDPHelpers"),g={getSections:e=>e.split(/\r\n|\r|\n/).reduce((e,t)=>{const n=t.match(/^m=(\w+) \d+/);return n&&(e.sections[e.section=n[1]]=[]),e.sections[e.section].push(t),e},{sections:{header:[]},section:"header"}).sections,getCodecsFromSection:e=>({codecs:e[0].match(/m=\w+ \d+ [A-Z/]+ ([\d ]+)$/)[1].split(" "),codecMap:(0,i.default)(...e.filter(e=>e.match(/^a=rtpmap:\d+/)).map(e=>e.match(/^a=rtpmap:(\d+) ([\w-]+)/).splice(1)).map(e=>({[e[0]]:e[1]})))}),getCodecsAndCodecMap(e,t){const n=g.getSections(e)[t];if(!n)throw new Error("no mediaType "+t);return g.getCodecsFromSection(n)},getCodecs(e,t){const n=g.getCodecsAndCodecMap(e,t);return n.codecs.map(e=>n.codecMap[e]||"Unknown codec")},MediaDirection:d.default,iceCredentials:{ufrag:"a=ice-ufrag:",pwd:"a=ice-pwd:"},getMLineIndex:function(e,t){const n="m="+t;return(0,a.default)(e,e=>-1!==e.indexOf(n))},getMLine:function(e,t){const n=g.getMLineIndex(e,t);return n>-1?e[n]:void 0},hasMediaType:(e,t)=>{const n=new RegExp("^m="+t),r=e.split("\r\n");return(0,a.default)(r,e=>n.test(e))>=0},hasMLinePayloadType:function(e,t,n){const r=g.getMLine(e,t);return g.getMLinePayloadTypes(r,t).indexOf(n)>-1},getMLinePayloadTypes:function(e,t){const n=new RegExp(`^m=${t} \\d+(/\\d+)? [a-zA-Z0-9/]+(( [a-zA-Z0-9/]+)+)$`,"i"),r=e.match(n);return!r||r.length<2?[]:r[2].trim().split(" ")},splitSections:function(e){return e.split("\nm=").map((e,t)=>(t>0?"m="+e:e).trim()+"\r\n")},getLinesPerSection:e=>g.splitSections(e).map(e=>g.getSDPLines(e)),replaceDirectionInSdpLines:(e,t,n)=>{const r=e.join("\r\n");return g.replaceDirection(r,t,n).split("\r\n")},replaceDirection:(e,t,n)=>{const r=new RegExp("a="+t,"g");return e.replace(r,"a="+n)},setSubscriberMediaSectionToInactive:e=>{const t=d.default.SENDONLY,n=d.default.INACTIVE;return g.replaceDirectionInSdpLines(e,t,n)},changeMediaDirection:function(e,t){const n=g.splitSections(e);let r=n.shift();const i=d.default.RECVONLY,o=d.default.INACTIVE,a=t===i?o:i;return n.forEach(e=>{const n=e.includes("m=video")?g.replaceDirection(e,a,t):e;r+=n}),r},removeTypesFromMLine:function(e,t){const n=/[0-9 ]*$/.exec(e)[0],r=n.split(" ").filter(e=>""!==e&&-1===t.indexOf(e));return e.replace(n," "+r.join(" "))},removeMediaEncoding:function(e,t,n){let r,i,o,a,l=e.split("\r\n");const c=g.getMLineIndex(l,t),s=c>-1?l[c]:void 0,d=[];if(-1===c)return l.join("\r\n");if(r=g.getMLinePayloadTypes(s,t),0===r.length)return l.join("\r\n");for(i=c;i<l.length;i++){const e=new RegExp(n,"i");0===l[i].indexOf("a=rtpmap:")&&(a=l[i].split(" "),2===a.length&&e.test(a[1])&&d.push(a[0].substr(9)))}if(!d.length)return l.join("\r\n");for(i=c;i<l.length;i++)if(0===l[i].indexOf("a=fmtp:"))for(a=l[i].split(" "),o=0;o<d.length;o++)2===a.length&&a[1]==="apt="+d[o]&&d.push(a[0].substr(7));return l=l.filter(e=>{for(let t=0;t<d.length;t++)if(0===e.indexOf(`a=rtpmap:${d[t]} `)||0===e.indexOf(`a=fmtp:${d[t]} `)||0===e.indexOf(`a=rtcp-fb:${d[t]} `))return!1;return!0}),d.length>0&&c>-1&&(l[c]=g.removeTypesFromMLine(s,d)),l.join("\r\n")},disableMediaType:function(e,t){const n=e.split("\r\n"),r=[];let i;n.forEach(e=>{let t=e;/^m=/.test(t)&&(i=void 0),i||(i=[],r.push(i)),i.push(t)});const o=new RegExp(`^m=${t} \\d+ ([^ ]+) [0-9 ]+$`),a=r.map(e=>{const n=e[0].match(o);return n?[`m=${t} 0 ${n[1]} 0`,"a=inactive",...e.filter(e=>/^c=/.test(e)||/^a=mid:/.test(e)||""===e)]:e});return[].concat(...a).join("\r\n")},removeVideoCodec:function(e,t){return g.removeMediaEncoding(e,"video",t)}},F=function(e,t){let n=t.filterByName("ssrc-group:FID");switch(n=0===n.length?[]:n[0].value.split(" "),n.length){case 0:case 1:var r=t.find(e=>0===e.name.indexOf("rtpmap:")&&e.value.indexOf("rtx/90000")>-1);if(!r)return!1;var i=r.name.split(":")[1];return i.indexOf("/")>-1&&(i=i.split("/")[0]),g.hasMLinePayloadType(e,"video",i);default:return h.debug("SDP Helpers: There are more than two FIDs, RTX is definitely enabled"),!0}};g.getAttributesForMediaType=function(e,t){let n,r,i,a,l,c,s,d,u,A;const h=g.getMLineIndex(e,t),Q=new RegExp(`m=(?!${t}).+ `,"i"),p=new RegExp("a=ssrc:\\d+ .*","i"),m=new RegExp("a=ssrc-group:(SIM|FID) (\\d+).*?","i"),U=new RegExp("a=([a-z0-9:/-]+) (.*)","i"),b=[];for(let t=h+1;t<e.length;t++){if(Q.test(e[t])){void 0!==n&&(r=t-1);break}l=e[t].match(m),c=e[t].match(p),void 0===n&&(l||c)&&(n=t,l&&(a=/^(FID|SIM)$/.test(l[1])?l[2]:l[1])),s=e[t].match(`a=ssrc:${a} msid:(.+)`),s&&(d=s[1]);const o=p.test(e[t]),h=m.test(e[t]);void 0!==n&&(void 0!==r||o||h?t===e.length-1&&(r=t):r=t-1);const g=e[t].match(/a=mid:(.+)/);g&&(u=g[1],A=t),i=U.exec(e[t]),i&&3===i.length&&b.push({lineIndex:t,name:i[1],value:i[2]})}return b.ssrcStartIndex=n,b.ssrcEndIndex=r,b.msid=d,b.mid=u,b.midIndex=A,b.isUsingRTX=F.bind(null,e,b),b.filterByName=function(e){return this.filter(t=>t.name===e)},b.getRtpNumber=e=>{const t=new RegExp("rtpmap:(.+)");return(0,o.default)(b.map(n=>{const r=n.name.match(t);return r&&n.value.indexOf(e)>=0?r[1]:null}),e=>null!==e)},b},g.modifyDtx=(e,t)=>{const n=e.split("\r\n");if(!g.getMLine(n,"audio"))return h.debug("No audio m-line, not enabling dtx."),e;const r=g.getAttributesForMediaType(n,"audio"),i=r.getRtpNumber("opus");if(!i)return h.debug("Could not find rtp number for opus, not enabling dtx."),e;const o=r.find(e=>e.name==="fmtp:"+i);if(!o)return h.debug("Could not find a=fmtp line for opus, not enabling dtx."),e;let a=n[o.lineIndex];const l=/usedtx=\d+([\s;]*)/;return l.test(o.value)?a=a.replace(l,t?"usedtx=1$1":""):t&&(a+="; usedtx=1"),a=a.replace(/[;\s]*$/,""),n[o.lineIndex]=a,n.join("\r\n")};const Q=(e,t,n)=>{const r=t.split("\r\n");if(!g.getMLine(r,"audio"))return h.debug("No audio m-line, not enabling stereo."),t;const i=g.getAttributesForMediaType(r,"audio"),o=i.getRtpNumber("opus");if(!o)return h.debug("Could not find rtp number for opus, not enabling stereo."),t;const a=i.find(e=>e.name==="fmtp:"+o);if(!a)return h.debug("Could not find a=fmtp line for opus, not enabling stereo."),t;let l,c=r[a.lineIndex];switch(e){case"send":l=/sprop-stereo=\d+([\s;]*)/,l.test(a.value)?c=c.replace(l,n?"sprop-stereo=1$1":""):n&&(c+="; sprop-stereo=1");break;case"receive":l=/([^-])stereo=\d+([\s;]*)/,l.test(a.value)?c=c.replace(l,n?"$1stereo=1$2":"$1"):n&&(c+="; stereo=1");break;default:throw new Error(`Invalid type ${e} passed into enableStereo`)}return c=c.replace(/[;\s]*$/,""),r[a.lineIndex]=c,r.join("\r\n")};g.modifySendStereo=Q.bind(null,"send"),g.modifyReceiveStereo=Q.bind(null,"receive"),g.setAudioBitrate=(e,t)=>{const n=g.getAudioBitrate(e);if(void 0!==n)return h.debug(`Audio bitrate already set to ${n}, not setting audio bitrate`),e;const r=e.split("\r\n");if(!g.getMLine(r,"audio"))return h.debug("No audio m-line, not setting audio bitrate"),e;const i=g.getAttributesForMediaType(r,"audio"),o=i.getRtpNumber("opus");if(!o)return h.debug("Could not find rtp number for opus, not setting audio bitrate."),e;const a=i.find(e=>e.name==="fmtp:"+o);if(!a)return h.debug("Could not find a=fmtp line for opus, not setting audio bitrate."),e;let l=r[a.lineIndex];return l+="; maxaveragebitrate="+t,l=l.replace(/[;\s]*$/,""),r[a.lineIndex]=l,r.join("\r\n")},g.removeVideoOrientation=e=>{let t=e.split("\r\n");return t=t.filter(e=>!e.includes("urn:3gpp:video-orientation")),t.join("\r\n")},g.hasSendStereo=e=>/[\s;]sprop-stereo=1/.test(e),g.hasSendDtx=e=>/[\s;]usedtx=1/.test(e),g.hasOpusFec=e=>/[\s;]useinbandfec=1/.test(e),g.getAudioBitrate=e=>{const t=e.match(/[\s;]maxaveragebitrate=(\d+)/);if(t)return Number(t[1])},g.MAX_SSRCS=10,g.getSSRCGroupType=e=>["SIM","FID"].find(t=>e.filterByName("ssrc-group:"+t)[0]),g.getSSRCGroup=e=>{const t=g.getSSRCGroupType(e);return e.filterByName("ssrc-group:"+t)[0]},g.getSSRCGroupSSRCs=e=>{const t=g.getSSRCGroup(e);return t?t.value.split(" ").slice(0,g.MAX_SSRCS):[]},g.getAllowedSSRCs=(e,t)=>{const n=t.slice();return e.filterByName("ssrc-group:FID").forEach(e=>{const t=e.value.split(" ");(0,l.default)(n,t).length&&Array.prototype.push.apply(n,t)}),(0,c.default)(n)},g.filterExcessSSRCs=e=>{const t=e.split("\r\n"),n=g.getAttributesForMediaType(t,"video"),r=g.getSSRCGroupType(n),i=n.ssrcStartIndex;if(void 0===i)return e;let o;const a=e=>{let t=null;return e.match(/^a=ssrc:(\d+)/)&&(t=RegExp.$1),t};if(r){const e=g.getSSRCGroupSSRCs(n),i=["a=ssrc-group:"+r,...e].join(" ");t[n.find(e=>e.name.startsWith("ssrc-group:")).lineIndex]=i,o=g.getAllowedSSRCs(n,e)}else{o=[];n.ssrcStartIndex&&o.push(a(t[n.ssrcStartIndex]))}return t.filter((e,t)=>{if(t<i||t>n.ssrcEndIndex)return!0;if(t===i){if(!r){const t=a(e);return t?o.includes(t):!/^a=ssrc:(\d+)/.test(e)}return!0}const l=a(e);if(l)return o.includes(l);if(e.match(/^a=ssrc-group:FID (\d+)/)){const e=RegExp.$1;return o.includes(e)}return!e.match(/^a=ssrc-group:SIM /)}).join("\r\n")},g.enableSimulcast=function(e,t){let n,r;const i=e.split("\r\n");if(!g.getMLine(i,"video"))return h.debug("No video m-line, not enabling simulcast."),e;const o=g.getAttributesForMediaType(i,"video");if(o.filterByName("ssrc-group:SIM").length>0)return h.debug("Simulcast is already enabled in this SDP, not attempting to enable again."),g.filterExcessSSRCs(e);if(!o.msid)return h.debug("No local stream attached, not enabling simulcast."),e;const a=o.isUsingRTX(),l=[],c=[];for(r=0;r<t;++r)l.push(1e4+r),a&&c.push(2e4+r);if(n=["a=ssrc-group:SIM "+l.join(" ")],a)for(r=0;r<t;++r)n.push(`a=ssrc-group:FID ${l[r]} ${c[r]}`);for(r=0;r<t;++r)n.push(`a=ssrc:${l[r]} cname:localCname`,`a=ssrc:${l[r]} msid:${o.msid}`);if(a)for(r=0;r<t;++r)n.push(`a=ssrc:${c[r]} cname:localCname`,`a=ssrc:${c[r]} msid:${o.msid}`);return n.unshift(o.ssrcStartIndex,o.ssrcEndIndex-o.ssrcStartIndex+1),i.splice(...n),i.join("\r\n")},g.reprioritizeVideoCodec=function(e,t,n){const r=e.split("\r\n"),i=g.getMLineIndex(r,"video");if(-1===i)return e;const o=g.getMLinePayloadTypes(r[i],"video"),a=new RegExp("^a=rtpmap:(\\d+).* "+t,"i"),l=r.map(e=>e.match(a)).filter(e=>null!==e);if(0===l.length)return e;const c=l.map(e=>e[1]);let s=o.filter(e=>-1===c.indexOf(e));"top"===n?s.unshift(...c):"bottom"===n?s.push(...c):(h.error(`Unexpected location param: ${n}; not changing ${t} priority`),s=o);const d=r[i].replace(o.join(" "),s.join(" "));return r[i]=d,r.join("\r\n")},g.getSetupRole=e=>{for(var t,n=u(e.split(/\r\n|\r|\n/));!(t=n()).done;){const e=t.value.match(/^a=setup:(\w+)/);if(e)return e[1]}return""},g.setSetupRole=(e,t)=>e.split(/\r\n|\r|\n/).map(e=>e.match(/^a=setup:(\w+)/)?"a=setup:"+t:e).join("\r\n"),g.changeSetupRole=(e,t,n)=>e.split(/\r\n|\r|\n/).map(e=>e.includes("a=setup:"+t)?"a=setup:"+n:e).join("\r\n"),g.patterns={bundle:"a=group:BUNDLE",address:"c=IN IP4",rtcp:"a=rtcp:",direction:["a=inactive","a=sendonly","a=recvonly","a=sendrecv"],rsize:"a=rtcp-rsize",ssrc:"a=ssrc:",msid:"a=msid:"},g.getIndexStartingWith=(e,t,n)=>{const r=e.slice(n),i=t.map(e=>r.findIndex(t=>t.includes(e))).filter(e=>e>-1);return i.length?n+Math.min(...i):e.length},g.getLastIndexPriorTo=(e,t,n)=>e.slice(0,n).map(e=>e.includes(t)).lastIndexOf(!0),g.includesAny=(e,t)=>{for(let n=0;n<t.length;n++)if(e.includes(t[n]))return!0;return!1},g.isVersionLine=e=>/^o=/.test(e),g.getVersionLine=e=>e.find(g.isVersionLine),g.getVersion=e=>{const t=g.getVersionLine(e);if(void 0===t)return;const n=Number(t.match(/ (\d+) IN /)[1]);return Number.isInteger(n)?n:void 0},g.updateVersion=(e,t,n)=>{const r=[...e],i=r.findIndex(e=>g.isVersionLine(e));return i>=0&&(r[i]=r[i].replace(` ${t} `,` ${n} `)),r},g.isBundleLine=e=>e.includes(g.patterns.bundle),g.getBundleLine=e=>e.find(g.isBundleLine),g.createBundleLine=e=>`${g.patterns.bundle} ${e.join(" ")}`,g.updateBundleLine=(e,t)=>{const n=[...e],r=g.createBundleLine(t),i=n.findIndex(e=>g.isBundleLine(e));return i>=0&&(n[i]=r),n},g.parseMLine=e=>{const t=e.match(/^(m=(?:audio|video)) (\d+) (.+)/),n=t[1];return{port:t[2],transport:t[3],mediaType:n}},g.disableTrack=e=>{const t=g.parseMLine(e);return`${t.mediaType} 0 ${t.transport}`},g.setMediaDirection=(e,t)=>{if(!Object.values(d.default).includes(t))return e;const n=e.slice(),r=n.findIndex(e=>g.includesAny(e,g.patterns.direction));return-1===r||(n[r]="a="+t),n},g.disableTrackSection=e=>{const t=e.mid,n=e.sdp;let r=n.filter(e=>{const t=g.patterns,n=t.address,r=t.rtcp,i=t.rsize,o=t.ssrc,a=t.msid;return!g.includesAny(e,[n,r,i,o,a])});return r[0]=g.disableTrack(n[0]),r=g.setMediaDirection(r,d.default.INACTIVE),{mid:t,sdp:r}},g.isDisabledMediaSection=e=>{let t=e[0];return/^m=(?:video|audio) 0 RTP\/SAVPF 0/.test(t)},g.getDisabledSectionForMid=e=>[`m=${e.includes("a")?"audio":"video"} 0 RTP/SAVPF 0`],g.disableTrackSections=(e,t)=>t.map(t=>{const n=g.getTrackMids(t)[0];return!n||e.includes(n)?t:g.getDisabledSectionForMid(n)}),g.getEnabledTracks=e=>g.getBundleLine(e).match(new RegExp(`^${g.patterns.bundle} (.+)$`))[1].split(" "),g.getDisabledTracks=(e,t)=>e.filter(e=>!t.includes(e)),g.getTrackSection=(e,t)=>{const n=e.findIndex(e=>e.includes("a=mid:"+t)),r=t.includes("a")?"audio":"video",i=g.getLastIndexPriorTo(e,"m="+r,n),o=g.getIndexStartingWith(e,["m=audio","m=video"],n),a=e.slice(i,o);return{mid:t,sdp:a}},g.getHeaders=e=>{const t=e.findIndex(e=>e.includes("m=audio")||e.includes("m=video"));return e.slice(0,t)},g.getSDPLines=e=>e.split("\r\n").filter(e=>e),g.getTrackMids=e=>e.filter(e=>e.match(new RegExp("^a=mid:\\d+"))).map(e=>e.substring("a=mid:".length)),g.getTrackSections=e=>g.getTrackMids(e).map(t=>g.getTrackSection(e,t)),g.parseMantisSDP=e=>{const t=g.changeSetupRole(e,"actpass","passive");return g.parseSDP(t)},g.isMediaSectionDisabled=e=>{const t=g.parseMLine(e[0]).port;return 0===parseInt(t,10)},g.getSectionMid=e=>g.isMediaSectionDisabled(e)?null:g.getTrackMids(e)[0],g.parseSDP=e=>{const t=g.getLinesPerSection(e),n=t[0],r=t.slice(1);return{bundle:g.getBundleLine(n),version:g.getVersion(n),iceCredentials:g.getIceCredentials(n),tracks:g.getEnabledTracks(n),mediaSections:r,mids:r.map(g.getSectionMid),headers:n}},g.createSDP=(e,t)=>{const n=[...e];return t.forEach(e=>n.push(...e)),n.push(""),n.join("\r\n")},g.removePayloadTypeFromSection=(e,t)=>e.filter(e=>!e.includes(`a=rtpmap:${t} `)&&!e.includes(`a=fmtp:${t} `)&&!e.includes(`a=rtcp-fb:${t} `)),g.getRtxPayloadType=(e,t)=>{const n=e.filter(e=>e.includes("apt="+t))[0];return null==n?void 0:n.match(/^a=fmtp:(\d+) /)[1]},g.removeRtxPayloadTypeFromSection=(e,t)=>{let n=[...e];const r=g.getRtxPayloadType(n,t);return r&&(n=g.removePayloadTypeFromSection(n,r)),n},g.trimUnusedCodecs=(e,t)=>{const n=e[0].split(" "),r=n.slice(3),i=n.slice(0,3),o=g.getCodecsFromSection(e);let a=[...e],l=[];r.forEach(e=>{const n=o.codecMap[e];if(t.includes(n)){l.push(e);const t=g.getRtxPayloadType(a,e);t&&l.push(t)}else a=g.removePayloadTypeFromSection(a,e),a=g.removeRtxPayloadTypeFromSection(a,e)});const c=l.length?l:[0];return a[0]=[...i,...c].join(" "),a},g.removeUnusedCodecs=(e,t)=>{if(!t)return e;const n=g.parseSDP(e),r=n.headers,i=n.mediaSections,o=g.parseSDP(t),a=o.mids,l=o.mediaSections,c=i.map(e=>{const t=a.findIndex(t=>t===g.getTrackMids(e)[0]);if(t<0)return e;const n=Object.values(g.getCodecsFromSection(l[t]).codecMap);return g.trimUnusedCodecs(e,n)}),s=[...r];return c.forEach(e=>s.push(...e)),s.push(""),s.join("\r\n")},g.updateSDPWithNewOffer=(e,t)=>{const n=e.headers,r=e.version,i=e.mediaSections,o=g.getSDPLines(t),a=g.getVersion(o),l=g.getEnabledTracks(o),c={version:a,tracks:l,headers:g.updateBundleLine(g.updateVersion(n,r,a),l),mediaSections:g.disableTrackSections(l,i)};return c.mids=c.mediaSections.map(g.getSectionMid),c},g.isUfragLine=e=>e.includes(g.iceCredentials.ufrag),g.isPwdLine=e=>e.includes(g.iceCredentials.pwd),g.getIceCredentials=e=>{const t={};return e.forEach(e=>{g.isUfragLine(e)?t.ufrag=e:g.isPwdLine(e)&&(t.pwd=e)}),t},g.updateIceCredentials=(e,t)=>e.map(e=>g.isUfragLine(e)?t.ufrag:g.isPwdLine(e)?t.pwd:e),g.addIceCredentialsToSection=(e,t)=>{let n=t.ufrag,r=t.pwd;const i=[...e],o=i.findIndex(e=>e.startsWith("a=mid:"));return o>=0&&i.splice(o,0,n,r),i},g.addIceCandidatesToSection=(e,t)=>{const n=[...e],r=t.filter(e=>e.startsWith("a=candidate:")||"a=end-of-candidates"===e),i=n.findIndex(e=>e.startsWith("a=mid:"));return i>=0&&r.length&&n.splice(i,0,...r),n},g.addIceConfig=(e,t,n)=>{const r=[...e],i=e[0];if(!g.getIceCredentials(i).ufrag){const e=g.addIceCredentialsToSection(i,n);r[0]=g.addIceCandidatesToSection(e,t)}return r},g.updateHeadersInPartialSdp=(e,t,n)=>{if(!e.headers.length)return g.updateBundleLine(t.headers,n);let r=g.updateBundleLine(e.headers,n);return r=g.updateVersion(r,e.version,t.version),e.iceCredentials.ufrag!==t.iceCredentials.ufrag&&(r=g.updateIceCredentials(r,t.iceCredentials)),r},g.updateFirstEnabledMediaSection=(e,t)=>{const n=[...e.mediaSections],r=e.mids.findIndex(e=>null!==e);return r>=0&&(n[r]=g.updateIceCredentials(n[r],t)),n};var p=g;t.default=p},function(e,t,n){var r=n(33),i=n(11);e.exports=function(e){if(!i(e))return!1;var t=r(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},function(e,t){e.exports=function(e){return null!=e&&"object"==typeof e}},function(e,t,n){"use strict";(function(e){var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(4)),o=r(n(5)),a=r(n(3)),l=r(n(107)),c=r(n(259)),s=r(n(564)),d=r(n(260));var u=function(t){void 0===t&&(t={});const n=t.getNativeEnumerateDevices||(0,c.default)(),r=t.getNativeMediaDevices||(0,s.default)(),u=(t.currentAudioOutputDevice||l.default).getCurrentAudioOutputDeviceId,A=(t.currentAudioInputDevice||d.default).getCurrentAudioInputDevice,h=t.env||a.default,g=t.global||(void 0!==typeof window?window:global),F={},Q={audio:"audioInput",video:"videoInput",audioinput:"audioInput",videoinput:"videoInput",audiooutput:"audioOutput",audioInput:"audioInput",videoInput:"videoInput",audioOutput:"audioOutput"};return F.getNativeMediaDevices=()=>r(),F.hasEnumerateDevicesCapability=()=>"function"==typeof n(),F.hasDeviceChangeCapability=()=>{const e=r();return!(!e||!("ondevicechange"in e))},F.hasSetSinkIdCapability=()=>"setSinkId"in(null==g?void 0:g.HTMLMediaElement.prototype),F.hasAudioOutputApiSupport=()=>{const e=t.hasSetSinkIdCapability,n=void 0===e?F.hasSetSinkIdCapability:e,r=t.hasDeviceChangeCapability,i=void 0===r?F.hasDeviceChangeCapability:r;return!(null!=h&&h.isFirefox)&&n()&&i()},F.hasEnumerateDevicesBug=()=>h.isSafari&&13.1===h.version,F.getMediaDevices=()=>F.hasEnumerateDevicesCapability()?n()().then(e=>e.map(e=>({deviceId:e.deviceId||e.id,label:e.label,kind:Q[e.kind]}))):e.reject(new Error("This browser does not support enumerateDevices APIs")),F.getInputMediaDevices=()=>F.getMediaDevices().then(e=>e.filter(e=>/^(audio|video)Input$/.test(e.kind))),F.getAudioOutputMediaDevices=()=>F.getMediaDevices().then(e=>e.filter(e=>"audioOutput"===e.kind).map(e=>({deviceId:e.deviceId,label:e.label}))),F.getAudioInputMediaDevices=()=>F.getMediaDevices().then(e=>e.filter(e=>"audioInput"===e.kind).map(e=>({deviceId:e.deviceId,label:e.label}))),F.shouldAskForDevices=()=>F.hasEnumerateDevicesCapability()?F.getInputMediaDevices().then(e=>{if(0===e.length)return{video:!0,audio:!0};const t=e.filter(e=>"audioInput"===e.kind),n=e.filter(e=>"videoInput"===e.kind);return F.hasEnumerateDevicesBug()&&0===n.length?{audio:!0,video:!0}:{video:n.length>0,audio:t.length>0,videoDevices:n,audioDevices:t}}).catch(()=>({video:!0,audio:!0})):e.resolve({video:!0,audio:!0}),F.getDefaultAudioOutputDeviceId=e=>{if(!Array.isArray(e)||0===e.length)return"";return(e.find(e=>"default"===e.deviceId)||e[0]).deviceId},F.getDefaultAudioInputDevice=e=>Array.isArray(e)&&0!==e.length?e.find(e=>"default"===e.deviceId)||e[0]:"",F.hasDevice=(e,t)=>{let n=e;return Array.isArray(n)||(n=[]),n.some(e=>e.deviceId===t)},F.getActiveAudioInputDevice=(0,o.default)(i.default.mark((function e(){var t,n,r;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,F.getAudioInputMediaDevices();case 2:if(0!==(t=e.sent).length){e.next=5;break}return e.abrupt("return",{deviceId:null,label:null});case 5:return(n=A())||(r=F.getDefaultAudioInputDevice(t),n=t.find(e=>e===r)),e.abrupt("return",n);case 8:case"end":return e.stop()}}),e)}))),F.getActiveAudioOutputDevice=(0,o.default)(i.default.mark((function e(){var t,n,r;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,F.getAudioOutputMediaDevices();case 3:t=e.sent,e.next=9;break;case 6:throw e.prev=6,e.t0=e.catch(0),e.t0;case 9:if(0!==t.length){e.next=11;break}return e.abrupt("return",{deviceId:null,label:null});case 11:return(n=t.find(e=>e.deviceId===u()))||(r=F.getDefaultAudioOutputDeviceId(t),n=t.find(e=>e.deviceId===r)),e.abrupt("return",n);case 14:case"end":return e.stop()}}),e,null,[[0,6]])}))),F};t.default=u}).call(this,n(2))},function(e,t){e.exports=function(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}},function(e,t){function n(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}e.exports=function(e,t,r){return t&&n(e.prototype,t),r&&n(e,r),e}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(6)),o=r(n(1)),a=r(n(18)),l=r(n(30)),c=r(n(578));const s=(0,o.default)("GlobalExceptionHandler"),d=(0,a.default)(),u=function(e,t){Error.call(this),this.code=e,this.message=t};(u.prototype=Object.create(Error.prototype)).constructor=u,(0,i.default)(u),u.getTitleByCode=function(e){return c.default[+e]},u.handleJsException=e=>{let t=e.error,n=e.errorMsg,r=e.code,i=e.target,o=e.analytics;if(!i)throw new Error("handleJsException requires target");const a=()=>void 0!==r?r:t&&t.code,c=()=>void 0!==n?n:t&&t.message,A=u.getTitleByCode(a());s.error(`OT.exception :: title: ${A} (${a()}) msg: ${c()}`);try{const e={partnerId:i.session?i.session.apiKey:i.apiKey,sessionId:i.session?i.session.sessionId:i.sessionId};o.logError(a(),"tb.exception",A,{details:c()},e);const n=new d.ExceptionEvent(l.default.EXCEPTION,c(),A,a(),i,i,t);if(t)n.stack=t.stack;else try{throw new Error}catch(e){n.stack=e.stack}u.dispatchEvent(n)}catch(e){s.error("OT.exception :: Failed to dispatch exception - "+e.toString())}};var A=u;t.default=A},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(269));var o={publishers:new i.default("guid"),subscribers:new i.default("widgetId"),sessions:new i.default};t.default=o},function(e,t,n){"use strict";t.__esModule=!0,t.MEDIUM=t.LOW=t.CongestionLevels=t.CRITICAL=void 0;t.CRITICAL=2;t.MEDIUM=1;t.LOW=0;const r={CRITICAL:2,MEDIUM:1,LOW:0};t.CongestionLevels=r},function(e,t,n){var r=n(20),i=n(119);e.exports=function(e){return null!=e&&i(e.length)&&!r(e)}},function(e,t){var n,r,i=e.exports={};function o(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function l(e){if(n===setTimeout)return setTimeout(e,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:o}catch(e){n=o}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(e){r=a}}();var c,s=[],d=!1,u=-1;function A(){d&&c&&(d=!1,c.length?s=c.concat(s):u=-1,s.length&&h())}function h(){if(!d){var e=l(A);d=!0;for(var t=s.length;t;){for(c=s,s=[];++u<t;)c&&c[u].run();u=-1,t=s.length}c=null,d=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===a||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function g(e,t){this.fun=e,this.array=t}function F(){}i.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];s.push(new g(e,t)),1!==s.length||d||l(h)},g.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=F,i.addListener=F,i.once=F,i.off=F,i.removeListener=F,i.removeAllListeners=F,i.emit=F,i.prependListener=F,i.prependOnceListener=F,i.listeners=function(e){return[]},i.binding=function(e){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(e){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;t.default={ACTIVE:"active",INACTIVE:"inactive",UNKNOWN:"unknown",PER_SESSION:"perSession",PER_STREAM:"perStream",EXCEPTION:"exception",ISSUE_REPORTED:"issueReported",SESSION_CONNECTED:"sessionConnected",SESSION_RECONNECTING:"sessionReconnecting",SESSION_RECONNECTED:"sessionReconnected",SESSION_DISCONNECTED:"sessionDisconnected",STREAM_CREATED:"streamCreated",STREAM_DESTROYED:"streamDestroyed",CONNECTION_CREATED:"connectionCreated",CONNECTION_DESTROYED:"connectionDestroyed",SIGNAL:"signal",STREAM_PROPERTY_CHANGED:"streamPropertyChanged",MICROPHONE_LEVEL_CHANGED:"microphoneLevelChanged",RESIZE:"resize",SETTINGS_BUTTON_CLICK:"settingsButtonClick",DEVICE_INACTIVE:"deviceInactive",INVALID_DEVICE_NAME:"invalidDeviceName",ACCESS_ALLOWED:"accessAllowed",ACCESS_DENIED:"accessDenied",ACCESS_DIALOG_OPENED:"accessDialogOpened",ACCESS_DIALOG_CLOSED:"accessDialogClosed",AUDIO_INPUT_DEVICE_CHANGED:"audioInputDeviceChanged",ECHO_CANCELLATION_MODE_CHANGED:"echoCancellationModeChanged",MEDIA_STOPPED:"mediaStopped",PUBLISHER_DESTROYED:"destroyed",MUTE_FORCED:"muteForced",SUBSCRIBER_DESTROYED:"destroyed",SUBSCRIBER_CONNECTED:"connected",SUBSCRIBER_DISCONNECTED:"disconnected",SUBSCRIBER_CAPTION_RECEIVED:"captionReceived",DEVICES_DETECTED:"devicesDetected",DEVICES_SELECTED:"devicesSelected",CLOSE_BUTTON_CLICK:"closeButtonClick",MICLEVEL:"microphoneActivityLevel",MICGAINCHANGED:"microphoneGainChanged",ENV_LOADED:"envLoaded",ENV_UNLOADED:"envUnloaded",AUDIO_LEVEL_UPDATED:"audioLevelUpdated",VIDEO_ELEMENT_CREATED:"videoElementCreated"}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(4)),o=r(n(5)),a=r(n(24)),l=r(n(6)),c=r(n(270)),s=r(n(266)),d=r(n(152)),u=r(n(37)),A=r(n(579)),h=r(n(581)),g=r(n(584));const F=(0,u.default)();let Q=function(){function e(e){let t=void 0===e?{}:e,n=t.staticConfig,r=void 0===n?F.onlyLocal():n,i=t.sessionInfo,o=void 0===i?new d.default:i,a=t.ajax,l=t.queue,c=t.getUserAgentClientHintData,s=void 0===c?g.default:c,u=t.userAgentData,A=void 0===u?"undefined"!=typeof navigator&&navigator.userAgentData:u;this.getTurnServerName=e=>{let t,n;if(!e||"object"!=typeof e)return t;return(Array.isArray(e)?e:[e]).forEach(e=>{const r=e.urls||e.url;(Array.isArray(r)?r:[r]).forEach(e=>{const r=e.indexOf(":")+1,i=e.lastIndexOf(":");e.includes("turns")?n=e.substring(r,i):t=e.substring(r,i)})}),n||t},this.ajax=a,this.queue=l,this.sessionInfo=o,this.getUserAgentClientHintData=s,this.userAgentData=A,this.staticConfig=r}var t=e.prototype;return t._getCachedUserAgentData=function(){var e=(0,o.default)(i.default.mark((function e(){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.cachedUserAgentData){e.next=4;break}return e.next=3,this.getUserAgentClientHintData(this.userAgentData);case 3:this.cachedUserAgentData=e.sent;case 4:return e.abrupt("return",this.cachedUserAgentData);case 5:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),t.commonQoSFields=function(){const e=this._analytics.proxyUrl,t=this.sessionInfo.messagingURL;return{clientVersion:this.staticConfig.clientVersion,buildHash:this.staticConfig.buildHash,source:(void 0!==typeof window?window:global).location&&(void 0!==typeof window?window:global).location.href,logVersion:"2",apiServer:this.staticConfig.apiUrl,clientSystemTime:(new Date).getTime(),sessionId:this.sessionInfo.sessionId,mediaServerName:this.sessionInfo.mediaServerName,relayServer:this.getTurnServerName(this.sessionInfo.iceServers),p2p:this.sessionInfo.p2pEnabled,messagingServer:this.sessionInfo.messagingServer,messagingUrl:(0,A.default)(e,t),version:this.staticConfig.version,partnerId:this.sessionInfo.partnerId}},t._getCommonDataFields=function(){var e=(0,o.default)(i.default.mark((function e(){var t,n;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c.default.getAsync();case 2:return t=e.sent,e.next=5,this._getCachedUserAgentData();case 5:return n=e.sent,e.abrupt("return",Object.assign({guid:t},this.commonQoSFields(),n));case 7:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),t.logError=function(t,n,r,i,o){void 0===o&&(o={}),this._getCommonDataFields().then(a=>{const l=[t,n,r,i,Object.assign({},a,o)];e.emit("logError",...l),this._analytics.logError(...l)})},t.logEvent=function(t,n,r){void 0===t&&(t={}),this._getCommonDataFields().then(i=>{const o=Object.assign({},i,t);e.emit("logEvent",o),this._analytics.logEvent(o,!1,n,r)})},t.logQOS=function(t){void 0===t&&(t={}),this._getCommonDataFields().then(n=>{const r=Object.assign({duration:0},n,t);(0,h.default)(r),e.emit("logQOS",r),this._analytics.logQOS(r)})},(0,a.default)(e,[{key:"staticConfig",get:function(){return this._staticConfig},set:function(e){this._staticConfig=e,this._analytics=new s.default({loggingUrl:this.staticConfig.loggingUrl,ajax:this.ajax,queue:this.queue})}}]),e}();t.default=Q,(0,l.default)(Q),e.exports=Q},function(e,t,n){"use strict";var r=!0,i=!0;function o(e,t,n){var r=e.match(t);return r&&r.length>=n&&parseInt(r[n],10)}e.exports={extractVersion:o,wrapPeerConnectionEvent:function(e,t,n){if(e.RTCPeerConnection){var r=e.RTCPeerConnection.prototype,i=r.addEventListener;r.addEventListener=function(e,r){if(e!==t)return i.apply(this,arguments);var o=function(e){var t=n(e);t&&r(t)};return this._eventMap=this._eventMap||{},this._eventMap[r]=o,i.apply(this,[e,o])};var o=r.removeEventListener;r.removeEventListener=function(e,n){if(e!==t||!this._eventMap||!this._eventMap[n])return o.apply(this,arguments);var r=this._eventMap[n];return delete this._eventMap[n],o.apply(this,[e,r])},Object.defineProperty(r,"on"+t,{get:function(){return this["_on"+t]},set:function(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})}},disableLog:function(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(r=e,e?"adapter.js logging disabled":"adapter.js logging enabled")},disableWarnings:function(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(i=!e,"adapter.js deprecation warnings "+(e?"disabled":"enabled"))},log:function(){if("object"==typeof window){if(r)return;"undefined"!=typeof console&&"function"==typeof console.log&&console.log.apply(console,arguments)}},deprecated:function(e,t){i&&console.warn(e+" is deprecated, please use "+t+" instead.")},detectBrowser:function(e){var t=e&&e.navigator,n={browser:null,version:null};if(void 0===e||!e.navigator)return n.browser="Not a browser.",n;if(t.mozGetUserMedia)n.browser="firefox",n.version=o(t.userAgent,/Firefox\/(\d+)\./,1);else if(t.webkitGetUserMedia)n.browser="chrome",n.version=o(t.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else if(t.mediaDevices&&t.userAgent.match(/Edge\/(\d+).(\d+)$/))n.browser="edge",n.version=o(t.userAgent,/Edge\/(\d+).(\d+)$/,2);else{if(!e.RTCPeerConnection||!t.userAgent.match(/AppleWebKit\/(\d+)\./))return n.browser="Not a supported browser.",n;n.browser="safari",n.version=o(t.userAgent,/AppleWebKit\/(\d+)\./,1)}return n}}},function(e,t,n){var r=n(44),i=n(375),o=n(376),a=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":a&&a in Object(e)?i(e):o(e)}},function(e,t,n){var r=n(192),i=n(121),o=n(28);e.exports=function(e){return o(e)?r(e):i(e)}},function(e,t,n){"use strict";var r=n(47);e.exports=function(e){if(!r(e))throw new TypeError("Cannot use null or undefined");return e}},function(e,t,n){"use strict";var r=n(57),i=n(213),o=n(133),a=n(214),l=n(215);(e.exports=function(e,t){var n,i,c,s,d;return arguments.length<2||"string"!=typeof e?(s=t,t=e,e=null):s=arguments[2],r(e)?(n=l.call(e,"c"),i=l.call(e,"e"),c=l.call(e,"w")):(n=c=!0,i=!1),d={value:t,configurable:n,enumerable:i,writable:c},s?o(a(s),d):d}).gs=function(e,t,n){var c,s,d,u;return"string"!=typeof e?(d=n,n=t,t=e,e=null):d=arguments[3],r(t)?i(t)?r(n)?i(n)||(d=n,n=void 0):n=void 0:(d=t,t=n=void 0):t=void 0,r(e)?(c=l.call(e,"c"),s=l.call(e,"e")):(c=!0,s=!1),u={get:t,set:n,configurable:c,enumerable:s},d?o(a(d),u):u}},function(e,t,n){"use strict";(function(e){var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(24)),o=r(n(220)),a=r(n(502)),l=r(n(553)),c=r(n(62)),s=r(n(1)),d=r(n(106));const u=(0,s.default)("StaticConfig"),A=(0,c.default)({version:"v2.29.2",buildHash:"e5c16d9",minimumVersion:{firefox:52,chrome:49},debug:!1,websiteURL:"http://www.tokbox.com",configURL:"https://config.opentok.com",ipWhitelistConfigURL:"",cdnURL:"",loggingURL:"https://hlg.tokbox.com/prod",apiURL:"https://anvil.opentok.com"}),h=(0,l.default)(["apiURL","assetURL","cdnURL","sessionInfoOverrides","loggingURL"]),g={apiUrl:"apiURL",loggingUrl:"loggingURL"},F=(0,a.default)(e=>g[e]);var Q=function(t){let n=(void 0===t?{}:t).axios,r=void 0===n?o.default:n;return function(){function t(e){Object.defineProperty(this,"config",{value:Object.freeze((0,c.default)(e))})}return t.onlyLocal=function(){const e=(0,c.default)((void 0!==typeof window?window:global).OTProperties);return new t(Object.assign({},A,h(e)))},t.get=function(n){let i=n.partnerId,o=n.token,a=n.useIpWhitelistConfigUrl,l=n.proxyUrl;return(()=>{const t=this.onlyLocal();if(!t.configUrl)return e.resolve({});if(!0===a&&!t.ipWhitelistConfigUrl)return e.resolve({});let n=!0===a?t.ipWhitelistConfigUrl:t.configUrl;return n=(0,d.default)(n,l),r.get(`${n}/project/${i}/config.json`,{headers:{"X-TB-TOKEN-AUTH":o}}).then(e=>e.data)})().then(e=>{const n=(0,c.default)((void 0!==typeof window?window:global).OTProperties);return new t(Object.assign({},A,h(n),F(e)))}).catch(t=>(u.error("could not reach Config Service",t),e.reject(new Error("could not reach Config Service"))))},(0,i.default)(t,[{key:"configUrl",get:function(){return this.config.configURL}},{key:"ipWhitelistConfigUrl",get:function(){return this.config.ipWhitelistConfigURL}},{key:"apiUrl",get:function(){return this.config.apiURL}},{key:"loggingUrl",get:function(){return this.config.loggingURL}},{key:"apiEnabled",get:function(){return void 0===this.config.apiEnabled||this.config.apiEnabled}},{key:"version",get:function(){return this.config.version}},{key:"clientVersion",get:function(){return"js-"+(this.version||"unknown").replace("v","")}},{key:"buildHash",get:function(){return this.config.buildHash}},{key:"minimumVersion",get:function(){return this.config.minimumVersion}},{key:"websiteUrl",get:function(){return this.config.websiteURL}},{key:"debug",get:function(){return"true"===this.config.debug||!0===this.config.debug}},{key:"sessionInfoOverrides",get:function(){return this.config.sessionInfoOverrides}},{key:"cdnUrl",get:function(){return this.config.cdnURL||`${(void 0!==typeof window?window:global).location.protocol}//${(void 0!==typeof window?window:global).location.host}`}},{key:"assetUrl",get:function(){return this.config.assetURL||`${this.cdnUrl}/webrtc/${this.version}`}}]),t}()};t.default=Q}).call(this,n(2))},function(e,t,n){var r=n(531),i=n(539),o=n(91),a=n(14),l=n(544);e.exports=function(e){return"function"==typeof e?e:null==e?o:"object"==typeof e?a(e)?i(e[0],e[1]):r(e):l(e)}},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,i=Array(r);++n<r;)i[n]=t(e[n],n,e);return i}},function(e,t,n){var r=n(554),i=n(144)((function(e,t){return null==e?{}:r(e,t)}));e.exports=i},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e,t){let n;const r=t||{};e.setDisplayMode=function(e){const t=e||"auto";n!==t&&(i.default.removeClass(this.domElement,"OT_mode-"+n),i.default.addClass(this.domElement,"OT_mode-"+t),n=t)},e.getDisplayMode=function(){return n},e.showAfterLoading=function(){i.default.removeClass(this.domElement,"OT_hide-forced")},e.hideWhileLoading=function(){i.default.addClass(this.domElement,"OT_hide-forced")},e.destroy=function(){return r.onDestroy&&r.onDestroy(this.domElement),this.domElement&&i.default.removeElement(this.domElement),e},e.appendTo=function(t){return this.domElement=i.default.createElement(r.nodeName||"div",r.htmlAttributes,r.htmlContent),r.onCreate&&r.onCreate(this.domElement),e.setDisplayMode(r.mode),"auto"===r.mode&&(i.default.addClass(e.domElement,"OT_mode-on-hold"),setTimeout(()=>{i.default.removeClass(e.domElement,"OT_mode-on-hold")},2e3)),t.appendChild(this.domElement),e}};var i=r(n(7))},function(e,t,n){var r=n(80);e.exports=function(e){return r(e,4)}},function(e,t,n){var r=n(374),i=n(379);e.exports=function(e,t){var n=i(e,t);return r(n)?n:void 0}},function(e,t,n){var r=n(16).Symbol;e.exports=r},function(e,t,n){var r=n(86),i=n(64);e.exports=function(e,t,n,o){var a=!n;n||(n={});for(var l=-1,c=t.length;++l<c;){var s=t[l],d=o?o(n[s],e[s],s,n,e):void 0;void 0===d&&(d=e[s]),a?i(n,s,d):r(n,s,d)}return n}},function(e,t,n){var r=n(403),i=n(116),o=n(404),a=n(200),l=n(201),c=n(33),s=n(189),d=s(r),u=s(i),A=s(o),h=s(a),g=s(l),F=c;(r&&"[object DataView]"!=F(new r(new ArrayBuffer(1)))||i&&"[object Map]"!=F(new i)||o&&"[object Promise]"!=F(o.resolve())||a&&"[object Set]"!=F(new a)||l&&"[object WeakMap]"!=F(new l))&&(F=function(e){var t=c(e),n="[object Object]"==t?e.constructor:void 0,r=n?s(n):"";if(r)switch(r){case d:return"[object DataView]";case u:return"[object Map]";case A:return"[object Promise]";case h:return"[object Set]";case g:return"[object WeakMap]"}return t}),e.exports=F},function(e,t,n){"use strict";var r=n(424)();e.exports=function(e){return e!==r&&null!==e}},function(e,t,n){"use strict";e.exports=n(438)()?n(94).Symbol:n(441)},function(e,t,n){"use strict";var r=n(13);function i(e,t,n,r,i){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),n&&(this.config=n),r&&(this.request=r),i&&(this.response=i)}r.inherits(i,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:this.config,code:this.code,status:this.response&&this.response.status?this.response.status:null}}});var o=i.prototype,a={};["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((function(e){a[e]={value:e}})),Object.defineProperties(i,a),Object.defineProperty(o,"isAxiosError",{value:!0}),i.from=function(e,t,n,a,l,c){var s=Object.create(o);return r.toFlatObject(e,s,(function(e){return e!==Error.prototype})),i.call(s,e.message,t,n,a,l),s.cause=e,s.name=e.name,c&&Object.assign(s,c),s},e.exports=i},function(e,t,n){var r=n(71);e.exports=function(e){if("string"==typeof e||r(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(){if(r.now)return r.timing.navigationStart+r.now();return Date.now()};const r=(void 0!==typeof window?window:global).performance||{}},function(e,t,n){var r=n(621);e.exports=function(e){return r(2,e)}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(52)),o=r(n(1)),a=r(n(629)),l=r(n(37)),c=r(n(3)),s=r(n(630));const d=(0,l.default)(),u=function(e){void 0===e&&(e={});const t=e.env||c.default,n=e.hasGetUserMediaCapability||a.default,r=e.hasPeerConnectionCapability||s.default,i=e.logging||(0,o.default)("hasOpenTokSupport"),l=((e.staticConfig||d.onlyLocal()).minimumVersion||{})[t.name.toLowerCase()];return l&&l>t.version?(i.debug("Support for",t.name,"is disabled because we require",l,"but this is",t.version),!1):"Node"===t.name||n()&&r()},A=(0,i.default)(()=>u());var h={check:u,once:A};t.default=h},function(e,t){e.exports=function(e,t){return e===t||e!=e&&t!=t}},function(e,t,n){var r=n(192),i=n(398),o=n(28);e.exports=function(e){return o(e)?r(e,!0):i(e)}},function(e,t){e.exports=function(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n<r;)t[n]=e[n];return t}},function(e,t,n){"use strict";e.exports=function(e){return null!=e}},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){const t=[];return{on(n,r){for(var i=arguments.length,o=new Array(i>2?i-2:0),a=2;a<i;a++)o[a-2]=arguments[a];if(t.push({eventName:n,handler:r,args:o}),e.on)e.on(n,r);else{if(!e.addEventListener)throw new Error("Object does not support events",e);e.addEventListener(n,r,...o)}},off(t,n){if(e.off)e.off(t,n);else{if(!e.removeEventListener)throw new Error("Object does not support events",e);for(var r=arguments.length,i=new Array(r>2?r-2:0),o=2;o<r;o++)i[o-2]=arguments[o];e.removeEventListener(t,n,...i)}},once(n,r){for(var i=arguments.length,o=new Array(i>2?i-2:0),a=2;a<i;a++)o[a-2]=arguments[a];t.push({eventName:n,handler:r,args:o}),e.once(n,r)},removeAll(){t.forEach(e=>{let t=e.eventName,n=e.handler,r=e.args;this.off(t,n,...r)}),t.splice(0,t.length)}}}},function(e,t,n){var r=n(104);e.exports=function(e,t,n){var i=null==e?void 0:r(e,t);return void 0===i?n:i}},function(e,t,n){var r=n(14),i=n(143),o=n(253),a=n(61);e.exports=function(e,t){return r(e)?e:i(e,t)?[e]:o(a(e))}},function(e,t,n){var r=n(541);e.exports=function(e){return null==e?"":r(e)}},function(e,t,n){var r=n(80);e.exports=function(e){return r(e,5)}},function(e,t,n){var r=n(644)(n(297));e.exports=r},function(e,t,n){var r=n(190);e.exports=function(e,t,n){"__proto__"==t&&r?r(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}},function(e,t,n){var r=n(393),i=n(21),o=Object.prototype,a=o.hasOwnProperty,l=o.propertyIsEnumerable,c=r(function(){return arguments}())?r:function(e){return i(e)&&a.call(e,"callee")&&!l.call(e,"callee")};e.exports=c},function(e,t,n){(function(e){var r=n(16),i=n(394),o=t&&!t.nodeType&&t,a=o&&"object"==typeof e&&e&&!e.nodeType&&e,l=a&&a.exports===o?r.Buffer:void 0,c=(l?l.isBuffer:void 0)||i;e.exports=c}).call(this,n(87)(e))},function(e,t){var n=/^(?:0|[1-9]\d*)$/;e.exports=function(e,t){var r=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==r||"symbol"!=r&&n.test(e))&&e>-1&&e%1==0&&e<t}},function(e,t){e.exports=function(e){return function(t){return e(t)}}},function(e,t){var n=Object.prototype;e.exports=function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||n)}},function(e,t,n){"use strict";e.exports=function(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return e}},function(e,t,n){var r=n(33),i=n(21);e.exports=function(e){return"symbol"==typeof e||i(e)&&"[object Symbol]"==r(e)}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.getProxyUrl=t.errorMessages=t.clearProxyUrl=void 0,t.setProxyUrl=function(e){const t=n(31),r=s.default,A=new t,h=a.default.sessions.length()>0,g=a.default.publishers.length()>0;let F;if(h){const e=a.default.sessions.find(e=>"connected"===e.currentState);F=e?e.sessionId:a.default.sessions.find().sessionId}else F="";const Q={sessionId:F,apiKey:r.value};if(g||h){const e=(0,l.default)()(c.default.SET_PROXY_URL_TIMING_ERROR,new Error(u.SET_PROXY_URL_TIMING_ERROR),i.default.SET_PROXY_URL_TIMING_ERROR);o.default.handleJsException({error:e,target:Q,analytics:A})}else if(d){const e=(0,l.default)()(c.default.PROXY_URL_ALREADY_SET_ERROR,new Error(u.PROXY_URL_ALREADY_SET_ERROR),i.default.PROXY_URL_ALREADY_SET_ERROR);o.default.handleJsException({error:e,target:Q,analytics:A})}else d=e};var i=r(n(10)),o=r(n(25)),a=r(n(26)),l=r(n(15)),c=r(n(8)),s=r(n(73));let d;const u={SET_PROXY_URL_TIMING_ERROR:"The proxyUrl was set after a session or publisher was created.",PROXY_URL_ALREADY_SET_ERROR:"The proxyUrl has already been set. Setting it again will not have any effect."};t.errorMessages=u;t.getProxyUrl=()=>d;t.clearProxyUrl=()=>{d=null}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i,o=r(n(7));let a;if("Node"===(null==o.default||null==(i=o.default.env)?void 0:i.name))a="";else{var l,c;const e=null==(l=Array.prototype.slice.call(document.getElementsByTagName("script")))||null==(c=l.pop())?void 0:c.getAttribute("src");a=(e&&e.match(/[?&]apikey=([^&]+)/i)||[])[1]||""}var s={value:a};t.default=s},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t,n){void 0===n&&(n=1/0);let r=null,i=!1,o=1;const a=1e3/t,l=()=>{!i||o>n||(o+=1,e(),r=setTimeout(l,a))};this.start=()=>{i||(i=!0,setTimeout(l,a))},this.stop=()=>{(void 0!==typeof window?window:global).clearTimeout(r),i=!1}}},function(e,t,n){"use strict";(function(e){var r=n(0);t.__esModule=!0,t.default=function(t){void 0===t&&(t={});const n=t.hasValidPeerConnection||f.default,r=t.applySdpTransform||R.default,x=t.createPeerConnection||I.default,M=t.env||F.default,H=t.sdpTransformDefaults||y.default,K=t.getStatsAdapter||V.default,L=t.getRtcStatsReportAdapter||C.default,z=t.getSynchronizationSources||W.default,O=t.IceCandidateProcessor||E.default,j=t.logging||g.default,P=t.offerProcessor||v.default,_=t.PeerConnectionChannels||S.default,q=t.subscribeProcessor||J.default,$=G.default,ee=t.changeMediaDirection||N.default,te=ee.changeMediaDirectionToInactive,ne=ee.changeMediaDirectionToRecvOnly,re=t.Qos||X.default,ie=t.global||(void 0!==typeof window?window:global),oe=t.debounce||d.default,ae=t.needsToSwapH264Profiles||k.default.once,le=(0,B.default)(),ce=t.NativeRTCIceCandidate||ie.RTCIceCandidate,se=t.NativeRTCSessionDescription||ie.RTCSessionDescription,de=t.Errors||T.default,ue=t.OTErrorClass||p.default,Ae=t.ExceptionCodes||Q.default,he=t.hasPictureInPictureBug||Y.default,ge=()=>{};return function(t){void 0===t&&(t={});let d=!1;const g=t,F=g.iceConfig,Q=void 0===F?{servers:[]}:F,p=g.sendMessage,B=g.isPublisher,f=g.offerOverrides,R=g.answerOverrides,I=g.p2p,y=g.codecFlags,V=g.sourceStreamId,C=g.keyStore,W=g.sFrameClientStore,E=g.isE2ee,v=g.removeUnusedCodecs,S=g.sessionId;let J,G=t.logAnalyticsEvent,N=void 0===G?ge:G,X=!1;const k=ae();let T,Y,ee=0,Fe=!1,Qe={};const pe=new $(N),me=(0,U.default)();function Ue(e,t){if(!d){if(["candidate","offer","answer","pranswer"].indexOf(e)>-1){const n="candidate"===e?t.candidate:t.sdp;d=-1!==n.indexOf("typ relay")}}p(e,t)}const be=(0,w.default)();N("createPeerConnection","Attempt");const Ze={};Ze.id=(0,A.default)();const Be=j("PeerConnection:"+Ze.id);Be.debug("construct",{id:Ze.id,options:t});const fe=H,Re=(0,u.default)(t,["isPublisher","logAnalyticsEvent","offerOverrides","answerOverrides","sendMessage"]);let Ie,ye,Ve,Ce,We,Ee=[];const ve=(()=>{let e=Re.overrideSimulcastEnabled||!1;return{get:()=>e,set(t){const n=Boolean(t)&&Re.capableSimulcastStreams>1;n!==e&&void 0===Re.overrideSimulcastEnabled&&(e=n,Ze.generateOfferAndSend())}}})(),Se=(()=>{let e=!1;return{get:()=>e,set(t){const n=Boolean(t);n!==e&&(e=n,e&&(Ze.iceConnectionStateIsConnected()?Be.debug("iceRestart is going to wait until we disconnect or negotiationNeeded and then restart ice"):Ze.generateOfferAndSend()))}}})(),Je={clean(){delete this.promise,delete this.resolve,delete this.reject}};Je.promise=new e((e,t)=>{Je.resolve=e,Je.reject=t});let Ge=new O,Ne="new";Object.defineProperty(Ze,"signalingState",{get:()=>Ie.signalingState,set:e=>(Ie.signalingState=e,e)}),(0,h.default)(Ze),Ze.addOptions=e=>{N=e.logAnalyticsEvent},Ze.startEncryption=function(){var e=(0,o.default)(i.default.mark((function e(t){var n,r;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(E){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,le({sessionId:S,connectionId:t});case 4:return n=e.sent,e.next=7,W.createSender(n);case 7:return T=e.sent,e.next=10,C.get();case 10:return r=e.sent,e.next=13,T.setSenderEncryptionKey(r);case 13:Y=e=>{T.setSenderEncryptionKey(e)},C.on("keyChanged",Y),Ie.getTransceivers().forEach(function(){var e=(0,o.default)(i.default.mark((function e(t){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,T.encrypt(n,t.sender);case 2:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}());case 16:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),Ze.once("iceConnected",(0,o.default)(i.default.mark((function e(){var t;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:"",t={pcc:parseInt((0,w.default)()-be,10),hasRelayCandidates:d,proxyInfo:""},Ie&&Ie.proxyInfo&&(t.proxyInfo=Ie.proxyInfo),N("createPeerConnection","Success",t);case 4:case"end":return e.stop()}}),e)})))),Ze.startDecryption=function(){var e=(0,o.default)(i.default.mark((function e(t,n){var r,o,a;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(Ze.iceConnectionStateIsConnected()){e.next=3;break}return Ze.once("iceConnected",()=>Ze.startDecryption(t,n)),e.abrupt("return");case 3:return e.next=5,le({sessionId:S,connectionId:t});case 5:return r=e.sent,o=n.receiver,e.next=9,Xe(r);case 9:return a=e.sent,e.prev=10,e.next=13,null==a?void 0:a.decrypt(r,o);case 13:e.next=18;break;case 15:e.prev=15,e.t0=e.catch(10),Be.error(e.t0);case 18:case"end":return e.stop()}}),e,null,[[10,15]])})));return function(t,n){return e.apply(this,arguments)}}(),Je.resolve();const Xe=function(){var t=(0,o.default)(i.default.mark((function t(n){return i.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!Qe[n]){t.next=2;break}return t.abrupt("return",Qe[n]);case 2:return Qe[n]=new e(function(){var e=(0,o.default)(i.default.mark((function e(t){var r,o;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,C.get();case 2:if(r=e.sent,o=W.getReceiver(n)){e.next=9;break}return e.next=7,W.createReceiver(n);case 7:(o=e.sent).addReceiver(n);case 9:o.setReceiverEncryptionKey(n,r),C.on("keyChanged",e=>{o.setReceiverEncryptionKey(n,e)}),o.addEventListener("decryptFailed",()=>{Ze.trigger("decryptFailed")}),o.addEventListener("decryptionRestored",()=>{Ze.trigger("decryptRestored")}),t(o);case 14:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),t.abrupt("return",Qe[n]);case 4:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),ke=e=>{if(Be.debug("internalCreatePeerConnection: called"),Ie)return Be.debug("internalCreatePeerConnection: resolving synchronously"),void e.call(null,null,Ie);if(Ee.push(e),!(Ee.length>1)){if(Be.debug(`Creating peer connection config "${JSON.stringify(Re)}".`),0===Q.servers.length&&(Be.error("No ice servers present"),N("Error","noIceServers")),"relay"===Q.transportPolicy){const e=e=>e&&0===e.indexOf("turn");Q.servers=Q.servers.map(t=>{const n=(0,c.default)(t);return Array.isArray(n.urls)||(n.urls=[n.urls]),n.urls=n.urls.filter(e),0===n.urls.length?void 0:n}).filter(e=>void 0!==e)}Re.iceTransportPolicy=Q.transportPolicy,Re.iceServers=Q.servers,E&&(Re.forceEncodedVideoInsertableStreams=!0,Re.forceEncodedAudioInsertableStreams=!0,Re.encodedInsertableStreams=!0),n(ie.RTCPeerConnection).then(e=>{if(!e)throw Be.error("createPeerConnection: Invalid RTCPeerConnection object"),new Error("Failed to create valid RTCPeerConnection object");return x({window:ie,config:Re})}).then(function(){var e=(0,o.default)(i.default.mark((function e(t){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:Te(null,t);case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),e=>Te(e))}},Te=(e,t)=>{if(e)return Le({reason:"Failed to create PeerConnection, exception: "+e,prefix:"NewPeerConnection"}),void(Ee=[]);Be.debug("OT attachEventsToPeerConnection"),Ie=t,Ge&&Ge.setPeerConnection(t),ye=new _(Ie),Re.channels&&ye.addMany(Re.channels);const n=(e=>{let t=e.sendMessage,n=e.logging;const r={};return e=>{e.candidate?(r[e.candidate.sdpMid]=e.candidate.sdpMLineIndex,t("candidate",{candidate:e.candidate.candidate,sdpMid:e.candidate.sdpMid||"",sdpMLineIndex:e.candidate.sdpMLineIndex||0})):n.debug("IceCandidateForwarder: No more ICE candidates.")}})({sendMessage:Ue,logging:Be}),r=e=>{var t;(Je.resolve(),t=e.candidate,"relay"!==Q.transportPolicy||null==t||-1!==t.candidate.indexOf("typ relay"))?n(e):Be.debug("Ignore candidate",e.candidate.candidate)},a=function(){var e=(0,o.default)(i.default.mark((function e(t){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:Me(t);case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();let l=Ie.iceConnectionState;const c=e=>{Ie?(Be.debug("iceconnectionstatechange",Ie.iceConnectionState),"connected"===Ie.iceConnectionState?("disconnected"===l&&Ze.clearFailedTimeout(),Ze.emit("iceConnected"),Se.set(!1)):"completed"===Ie.iceConnectionState&&M.isLegacyEdge&&setTimeout(()=>Pe.startCollecting(Ie),1e3)):Be.debug("iceconnectionstatechange on peerConnection that no longer exists",Ze);const t=e.target.iceConnectionState;Ze.trigger("iceConnectionStateChange",t),N("attachEventsToPeerConnection","iceconnectionstatechange",t),"disconnected"===t&&(Se.get()?(Be.debug("Restarting ice!"),Ze.generateOfferAndSend()):(0,Z.default)()||(We=setTimeout(()=>{N("attachEventsToPeerConnection","iceconnectionstatechange","failed"),l="failed",Ze.trigger("iceConnectionStateChange","failed")},1e4))),"disconnected"!==l&&"failed"===t&&Le({reason:"The stream was unable to connect due to a network error. Make sure your connection isn't blocked by a firewall.",prefix:"ICEWorkflow"}),l=t},s=()=>{N("peerConnection:negotiationNeeded","Event"),B&&Ze.generateOfferAndSend(),Ze.trigger("negotiationNeeded")};Ie.addEventListener("track",a),Ie.addEventListener("icecandidate",r),Ie.addEventListener("signalingstatechange",De),Ie.addEventListener("negotiationneeded",s),Ie.addEventListener("iceconnectionstatechange",c),me.add(()=>{Ie&&(Ie.removeEventListener("track",a),Ie.removeEventListener("icecandidate",r),Ie.removeEventListener("signalingstatechange",De),Ie.removeEventListener("negotiationneeded",s),Ie.removeEventListener("iceconnectionstatechange",c))}),Ye(null)},Ye=()=>{for(;Ee.length;)Ee.shift().call(null)},we=()=>{Ge&&(Ge.destroy(),Ge=null),Ee=[],Pe.stopCollecting(),me.releaseAll(),Je.clean(),null!==Ie&&(Ie.destroy&&Ie.destroy(),Ie=null,Ze.trigger("close")),Ze.off()},De=e=>{const t=e.target.signalingState;if(Ze.emit("signalingStateChange",t),"stable"===t&&Ze.emit("signalingStateStable"),t&&t!==Ne)switch(Ne=t,Be.debug("stateChange: "+Ne),Ne){case"closed":we()}},xe=()=>{let e;if(Ie.getRemoteStreams)e=Ie.getRemoteStreams();else{if(!Ie.remoteStreams)throw new Error("Invalid Peer Connection object implements no method for retrieving remote streams");e=Ie.remoteStreams}return Array.prototype.slice.call(e)},Me=e=>{var t;const n=e.track,r=e.transceiver,i=e.stream||(null==(t=e.streams)?void 0:t[0]);N("createPeerConnection","TrackAdded"),Ze.trigger("trackAdded",{stream:i,track:n,transceiver:r})},He=(e,t,n)=>{X=!1,Le({reason:`PeerConnection.offerProcessor ${e}: ${t}`,prefix:n})},Ke=e=>{if(X)return void(J=e);X=!0,N("peerConnection:processOffer","Event");const t=new se({type:"offer",sdp:e.content.sdp}),n=e=>{X=!1,Ge&&Ge.process(),Ue("answer",e),M.isLegacyEdge||Pe.startCollecting(Ie,B),J&&(Ke(J),J=null)},r=e=>Ze.trigger("remoteVideoSupported",e);ke(()=>{P(Ie,ie.RTCPeerConnection,ie.RTCSessionDescription,se,fe,t,y,I,n,He,r,k,V)})};Ze.generateOfferAndSend=()=>{Ze.generateOffer(e=>{Be.debug("processSubscribe: sending offer"),Ue("offer",e)})},Ze.generateOffer=oe((function(e){void 0===e&&(e=()=>{}),pe.enqueueOfferAnswer(()=>(e=>{var t,n;if("closed"===(null==(t=Ie)||null==(n=t.signalingState)?void 0:n.toLowerCase()))return;N("peerConnection:processSubscribe","Event"),Be.debug("processSubscribe: Sending offer to subscriber.");let r=ve.get()?Re.capableSimulcastStreams:1;"P2P"===V&&!I&&(r=1),ke(()=>{q({peerConnection:Ie,NativeRTCSessionDescription:se,sdpTransforms:fe,numSimulcastStreams:r,removeVideoOrientation:he(),offerOverrides:f,offerConstraints:{iceRestart:Se.get()},replaceBaselineProfile:k,removeUnusedCodecs:v}).then(t=>{Be.debug("processSubscribe: got offer, waiting for _readyToCompleteOffer"),Ve=t,Je.promise.then(()=>e(Ve))},e=>{Le({reason:`subscribeProcessor ${e.message}: ${e.reason}`,prefix:e.prefix})}),Se.set(!1)})})(e))}),100);const Le=e=>{let t=e.reason,n=e.prefix;Be.error(t,"in state",Ie?{connectionState:Ie.connectionState,iceConnectionState:Ie.iceConnectionState,iceGatheringState:Ie.iceGatheringState,signalingState:Ie.signalingState}:"(none)"),Ze.trigger("error",{reason:t,prefix:n})};function ze(e){this.track=e}Ze.addTrack=(t,n)=>{const r=new e((e,t)=>{ke(n=>{if(n)return t(n);e()})}).then(()=>{if(Ie.addTrack)return Ie.addTrack(t,n);const e=Ie.getLocalStreams()[0];if(void 0===e)throw new Error("PeerConnection has no existing streams, cannot addTrack");e.addTrack(t),Ze.generateOfferAndSend()}).then(()=>new e(e=>{Ze.once("signalingStateStable",()=>{e()})}));return(0,a.default)(r,15e3,"Renegotiation timed out")},Ze.setIceConfig=e=>{try{M.isFirefox&&(e.certificates=Ie.getConfiguration().certificates),Ie.setConfiguration(e)}catch(e){throw new m.default("A peer connection failed to set configuration with "+e.message,de.FAILED_SET_CONFIGURATION)}return Se.set(!0),Ie},Ze.removeTrack=t=>{const n=e.resolve().then(()=>t instanceof ze?(Ie.getLocalStreams()[0].removeTrack(t.track),void Ze.generateOfferAndSend()):Ie.removeTrack(t)).then(()=>new e(e=>{Ze.once("signalingStateStable",()=>{e()})}));return(0,a.default)(n,15e3,"Renegotiation timed out")},Ze.addLocalStream=t=>new e((e,n)=>{ke(r=>{if(r)n(r);else{try{t.getTracks&&t.getTracks().forEach(e=>Ie.addTrack(e,t))}catch(e){return void n(e)}e()}})}),Ze.getLocalStreams=()=>Ie.getLocalStreams(),Ze.getSenders=()=>Ie.getSenders?Ie.getSenders():Ie.getLocalStreams()[0].getTracks().map(e=>new ze(e)),Ze.disconnect=()=>{var e;Ge&&(Ge.destroy(),Ge=null),null!=(e=Ie)&&e.signalingState&&"closed"!==Ie.signalingState.toLowerCase()&&(Ie.close(),"function"==typeof Y&&C.off("keyChanged",Y),T=null,Qe=null,setTimeout(we))},Ze.iceRestart=()=>Se.set(!0),Ze.clearFailedTimeout=()=>clearTimeout(We);const Oe=t=>{const n=t?te:ne;return new e(e=>{pe.enqueueOfferAnswer((0,o.default)(i.default.mark((function t(){return i.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,n(Ie);case 2:pe.setResolved(),e();case 4:case"end":return t.stop()}}),t)}))))})};Ze.changeMediaDirectionToRecvOnly=()=>Oe(!1),Ze.changeMediaDirectionToInactive=()=>Oe(!0),Ze.processMessage=(e,t)=>{switch(Be.debug(`processMessage: Received ${e} from ${t.fromAddress}`,t),Be.debug(t),e){case"generateoffer":t.content&&void 0!==t.content.simulcastEnabled&&ve.set(t.content.simulcastEnabled),Ze.generateOfferAndSend(),i();break;case"offer":Ke(t),i();break;case"answer":case"pranswer":(e=>{N("peerConnection:processAnswer","Event");const t=e=>{"function"==typeof e.includes&&e.includes("Failed to parse SessionDescription. a=extmap-allow-mixed Expects at least 2 fields.")&&(e="SessionDescription issue has been fixed in Chrome 71 and above. Please update your browser."),Le({reason:"Error while setting RemoteDescription "+e,prefix:"SetRemoteDescription"})};e.content.sdp?(Ce=new se({type:"answer",sdp:r(fe,"remote","answer",(0,l.default)({replaceBaselineProfile:k},R),e.content.sdp).local}),Ie.setRemoteDescription(Ce).then(()=>{Be.debug("processAnswer: setRemoteDescription Success"),Ge&&Ge.process()}).catch(t),pe.setResolved(),M.isLegacyEdge||Pe.startCollecting(Ie,B)):t("Weird answer message, no SDP.")})(t);break;case"candidate":var n=new ce(t.content);Ge&&Ge.addIceCandidate(n).catch(e=>{Be.warn(`Error while adding ICE candidate: ${JSON.stringify(n)}: ${e.toString()}`)});break;default:Be.debug(`processMessage: Received an unexpected message of type ${e} from ${t.fromAddress}: ${JSON.stringify(t)}`)}function i(){ee+=1,Pe.handleOfferMessageReceived(),ee>1&&(N("Renegotiation","Attempt"),Fe=!0)}return Ze};const je=e=>Ie.getTransceivers().filter(t=>e.includes(t.mid));Ze.stopTransceivers=e=>{const t=je(e);var n;(n=t,n.sort((e,t)=>e.mid<t.mid?1:e.mid>t.mid?-1:0)).forEach(e=>e.stop())},Ze.setTransceiversToInactive=e=>{je(e).forEach(e=>{e.direction=D.default.INACTIVE})},Ze.remoteStreams=()=>Ie?xe():[],Ze.remoteTracks=()=>Ie?Ie.getReceivers?Array.prototype.slice.apply(Ie.getReceivers()).map(e=>e.track):Array.prototype.concat.apply([],xe().map(e=>e.getTracks())):[],Ze.remoteDescription=()=>Ie.remoteDescription,Ze.getStats=(e,t)=>{if(Ie)K(Ie,e,t);else{const e=Ae.PEER_CONNECTION_NOT_CONNECTED;t(new m.default(ue.getTitleByCode(e),de.PEER_CONNECTION_NOT_CONNECTED,{code:e}))}},Ze.getRtcStatsReport=(e,t)=>{if(Ie)L(Ie,e,t);else{const e=Ae.PEER_CONNECTION_NOT_CONNECTED;t(new m.default(ue.getTitleByCode(e),de.PEER_CONNECTION_NOT_CONNECTED,{code:e}))}},Ze.getSynchronizationSources=e=>{if(!B){if(!Ie){const t=Ae.PEER_CONNECTION_NOT_CONNECTED;return void e(new m.default(ue.getTitleByCode(t),de.PEER_CONNECTION_NOT_CONNECTED,{code:t}))}z(Ie,e)}};Ze.getDataChannel=(e,t,n)=>{Ie?function e(t,n,r,i){let o;const a=ye.get(n,r);if(!a){if(t>0)return void setTimeout(e.bind(null,t-1,n,r,i),200);o=new m.default(`A channel with that label and options could not be found. Label:${n}. Options: ${JSON.stringify(r)}`)}i(o,a)}(100,e,t,n):n(new m.default("Cannot create a DataChannel before there is a connection."))},Ze.getSourceStreamId=()=>V,Ze.iceConnectionStateIsConnected=()=>Ie&&["connected","completed"].indexOf(Ie.iceConnectionState)>-1,Ze.hasTrack=e=>Ie.getSenders().some(t=>t.track===e),Ze.findAndReplaceTrack=(t,n)=>e.resolve().then(()=>{const r=Ie.getSenders().filter(e=>e.track===t)[0];if(!r)return e.resolve();if("function"!=typeof r.replaceTrack)throw new Error("Sender does not support replaceTrack");return r.replaceTrack(n)}),Ze.hasRelayCandidates=()=>d,Ze.getNegotiatedCodecs=()=>{if(!Ie.localDescription||!Ie.remoteDescription)return null;const e=e=>(0,s.default)(b.default.getCodecs(Ie.localDescription.sdp,e),b.default.getCodecs(Ie.remoteDescription.sdp,e));return{audio:e("audio"),video:e("video")}},Ze.on("signalingStateStable",()=>{Fe&&(Fe=!1,N("Renegotiation","Success",Ze.getNegotiatedCodecs()))}),Ze.on("error",e=>{let t=e.prefix;Fe&&-1!==["CreateOffer","SetRemoteDescription"].indexOf(t)&&(Fe=!1,N("Renegotiation","Failure"))}),Ze.on("close",()=>{Fe&&(Fe=!1,N("Renegotiation","Cancel"))});const Pe=new re;return Pe.on("stats",e=>{e.dataChannels=ye.sampleQos(),Ze.trigger("qos",{parsedStats:e,simulcastEnabled:ve.get()})}),Ze}};var i=r(n(4)),o=r(n(5)),a=r(n(164)),l=r(n(9)),c=r(n(62)),s=r(n(149)),d=r(n(295)),u=r(n(296)),A=r(n(17)),h=r(n(6)),g=r(n(1)),F=r(n(3)),Q=r(n(10)),p=r(n(25)),m=r(n(271)),U=r(n(166)),b=r(n(19)),Z=r(n(76)),B=r(n(647)),f=r(n(649)),R=r(n(167)),I=r(n(650)),y=r(n(652)),V=r(n(301)),C=r(n(304)),W=r(n(656)),E=r(n(657)),v=r(n(659)),S=r(n(661)),J=r(n(663)),G=r(n(664)),N=r(n(666)),X=r(n(305)),k=r(n(670)),T=r(n(8)),Y=r(n(671)),w=r(n(51)),D=r(n(299))}).call(this,n(2))},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(3));t.default=()=>!((i.default.isChrome||i.default.isElectron)&&i.default.version>=90||i.default.isOpera&&i.default.version>=76)&&(i.default.isChrome&&i.default.version>71||i.default.isChromiumEdge&&i.default.version<90||i.default.isOpera&&i.default.version>58)},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r={ACTIVE_VIDEO:0,ACTIVE_VIDEO_WITH_WARNING:1,SUSPENDED_VIDEO:2};t.default=r},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(40)),o=r(n(696)),a=r(n(11)),l=r(n(168));const c={};function s(e){return Number(e.framerateMean||e.googFrameRateSent||e.googFrameRateReceived||e.googFrameRateInput||e.googFrameRateOutput||0)}function d(e){return Number(e.framesEncoded||e.framesDecoded)}function u(e,t){if(s(e))return s(e);if(!d(e))return;let n=0;const r=c[e.id]?c[e.id].frames:0,i=c[e.id]?c[e.id].timestamp:t;return n=(0,l.default)({currentStatFrames:d(e),currentTimestamp:e.timestamp,prevStatFrames:r,prevTimestamp:i}),c[e.id]={frames:d(e),timestamp:e.timestamp},n}function A(e,t){if(!t)return{};const n=t.filter(t=>t.id===e.mediaTrackId);return n.length?n[0]:{}}function h(e,t){return"packetsLost"in t?e+t.packetsLost:e}const g={isVideoStat(e,t){const n=A(e,t);return"video"===e.kind&&["outbound-rtp","inbound-rtp"].includes(e.type)||"video"===e.mediaType||"googFrameWidthReceived"in e||"googFrameWidthInput"in e||"inbound-rtp"===e.type&&-1!==e.id.indexOf("Video")||"inboundrtp"===e.type&&0!==n.frameWidth},isAudioStat(e,t){const n=A(e,t);return"audio"===e.kind&&["outbound-rtp","inbound-rtp"].includes(e.type)||"audio"===e.mediaType||"audioInputLevel"in e||"audioOutputLevel"in e||"inbound-rtp"===e.type&&-1!==e.id.indexOf("Audio")||"inboundrtp"===e.type&&0===n.frameWidth},isInboundStat:e=>"bytesReceived"in e||"packetsReceived"in e,isOutboundStat:e=>"bytesSent"in e||"packetsSent"in e,isVideoTrackStat:e=>"track"===e.type&&(e.frameHeight>0||e.frameWidth>0||e.framesCorrupted>0||e.framesDecoded>0||e.framesPerSecond>0||e.framesSent>0||e.framesReceived>0),isVideoRemoteInboundRtpStat:e=>"remote-inbound-rtp"===e.type&&"video"===e.kind,isAudioRemoteInboundRtpStat:e=>"remote-inbound-rtp"===e.type&&"audio"===e.kind,isVideoInboundRtpStat:e=>"inbound-rtp"===e.type&&"video"===e.kind,parseStatCategory(e){const t={packetsLost:0,packetsReceived:0,bytesReceived:0};return"packetsReceived"in e&&(t.packetsReceived=parseInt(e.packetsReceived,10)),"packetsLost"in e&&(t.packetsLost=parseInt(e.packetsLost,10)),"bytesReceived"in e&&(t.bytesReceived=parseInt(e.bytesReceived,10)),this.isVideoStat(e)&&("framerateMean"in e?t.frameRate=Number(e.framerateMean):"googFrameRateOutput"in e?t.frameRate=Number(e.googFrameRateOutput):"googFrameRateInput"in e&&(t.frameRate=Number(e.googFrameRateInput))),t},getVideoPacketsLost(e){return e.filter(t=>this.isVideoRemoteInboundRtpStat(t,e)).reduce(h,0)},getAudioPacketsLost(e){return e.filter(t=>this.isAudioRemoteInboundRtpStat(t,e)).reduce(h,0)},normalizeTimestamp:(e,t)=>(void 0===t&&(t=Date.now()),(0,a.default)(e)&&"getTime"in e?e.getTime():Math.abs(e/(1e3*t)-1)<.05?e/1e3:e),normalizeStats(e,t,n){void 0===t&&(t=!0);const r=e.filter(t=>g.isVideoStat(t,e)).filter(e=>g.isInboundStat(e)===t),a=e.filter(t=>this.isAudioStat(t,e)).filter(e=>this.isInboundStat(e)===t)[0],l=r[0];if(!a&&!l)throw new Error("could not find stats for either audio or video");const c=g.normalizeTimestamp(l?l.timestamp:a.timestamp),s={timestamp:c};l&&!t&&void 0===l.packetsLost&&(l.packetsLost=this.getVideoPacketsLost(e)),a&&!t&&void 0===a.packetsLost&&(a.packetsLost=this.getAudioPacketsLost(e));const d=["packetsSent","packetsLost","bytesSent"],A=t?e=>(0,i.default)(e,["packetsReceived","packetsLost","bytesReceived"]):e=>(0,i.default)(e,d);if(r&&r.length>0){const e=(e=>{const t=d.concat(["framerateMean","googFrameRateSent","googFrameRateReceived","googFrameRateInput","googFrameRateOutput","framesEncoded","framesDecoded"]),n={timestamp:c,id:l.id};return t.forEach(t=>{n[t]=e.map(e=>Number(e[t]||0)).reduce((e,t)=>e+t,0)}),n})(r);s.video=Object.assign({frameRate:u(e,n)},(0,o.default)(A(e),Number))}return a&&(s.audio=(0,o.default)(A(a),Number)),s}};var F=g;t.default=F},function(e,t,n){"use strict";t.__esModule=!0,t.messages=t.default=t.codes=void 0;const r={1e3:"The connection successfully completed the purpose for which it was created.",1001:"The endpoint is going away, either because of a server failure or because the browser is navigating away from the page that opened the connection.",1002:"The endpoint is terminating the connection due to a protocol error. (CLOSE_PROTOCOL_ERROR)",1003:"The connection is being terminated because the endpoint has indicated that reconnections are not available. (CLOSE_UNSUPPORTED)",1005:"Indicates that no status code was provided even though one was expected. (CLOSE_NO_STATUS)",1006:"Used to indicate that a connection was closed abnormally (that is, with no close frame being sent) when a status code is expected. (CLOSE_ABNORMAL)",1007:"Indicates that an endpoint is terminating the connection because it has received data within a message that was not consistent with the type of the message (e.g., non-UTF-8 [RFC3629] data within a text message)",1008:"Indicates that an endpoint is terminating the connection because it has received a message that violates its policy. This is a generic status code that can be returned when there is no other more suitable status code (e.g., 1003 or 1009) or if there is a need to hide specific details about the policy",1009:"Indicates that an endpoint is terminating the connection because it has received a message that is too big for it to process (CLOSE_TOO_LARGE)",1011:"Indicates that a server is terminating the connection because it encountered an unexpected condition that prevented it from fulfilling the request",4001:"Connectivity loss was detected as it was too long since the socket received the last PONG message",4010:"Timed out while waiting for the Rumor socket to connect.",4020:"Error code unavailable.",4030:"Exception was thrown during Rumor connection, possibly because of a blocked port."};t.messages=r;const i={CLOSE_NORMAL:1e3,CLOSE_GOING_AWAY:1001,CLOSE_PROTOCOL_ERROR:1002,CLOSE_UNSUPPORTED:1003,CLOSE_NO_STATUS:1005,CLOSE_ABNORMAL:1006,CLOSE_INCONSISTENT_DATA:1007,CLOSE_POLICY_VIOLATION:1008,CLOSE_TOO_LARGE:1009,CLOSE_UNEXPECTED_CONDITION:1011,CLOSE_CONNECTIVITY_LOSS:4001,CLOSE_TIMEOUT:4010,CLOSE_FALLBACK_CODE:4020,CLOSE_CONNECT_EXCEPTION:4030,ALREADY_CONNECTED_CONNECTING:null};t.codes=i;var o={messages:r,codes:i};t.default=o},function(e,t,n){var r=n(81),i=n(118),o=n(86),a=n(191),l=n(397),c=n(194),s=n(56),d=n(400),u=n(402),A=n(197),h=n(199),g=n(46),F=n(405),Q=n(406),p=n(204),m=n(14),U=n(66),b=n(410),Z=n(11),B=n(412),f=n(34),R=n(55),I={};I["[object Arguments]"]=I["[object Array]"]=I["[object ArrayBuffer]"]=I["[object DataView]"]=I["[object Boolean]"]=I["[object Date]"]=I["[object Float32Array]"]=I["[object Float64Array]"]=I["[object Int8Array]"]=I["[object Int16Array]"]=I["[object Int32Array]"]=I["[object Map]"]=I["[object Number]"]=I["[object Object]"]=I["[object RegExp]"]=I["[object Set]"]=I["[object String]"]=I["[object Symbol]"]=I["[object Uint8Array]"]=I["[object Uint8ClampedArray]"]=I["[object Uint16Array]"]=I["[object Uint32Array]"]=!0,I["[object Error]"]=I["[object Function]"]=I["[object WeakMap]"]=!1,e.exports=function e(t,n,y,V,C,W){var E,v=1&n,S=2&n,J=4&n;if(y&&(E=C?y(t,V,C,W):y(t)),void 0!==E)return E;if(!Z(t))return t;var G=m(t);if(G){if(E=F(t),!v)return s(t,E)}else{var N=g(t),X="[object Function]"==N||"[object GeneratorFunction]"==N;if(U(t))return c(t,v);if("[object Object]"==N||"[object Arguments]"==N||X&&!C){if(E=S||X?{}:p(t),!v)return S?u(t,l(E,t)):d(t,a(E,t))}else{if(!I[N])return C?t:{};E=Q(t,N,v)}}W||(W=new r);var k=W.get(t);if(k)return k;W.set(t,E),B(t)?t.forEach((function(r){E.add(e(r,n,y,r,t,W))})):b(t)&&t.forEach((function(r,i){E.set(i,e(r,n,y,i,t,W))}));var T=G?void 0:(J?S?h:A:S?R:f)(t);return i(T||t,(function(r,i){T&&(r=t[i=r]),o(E,i,e(r,n,y,i,t,W))})),E}},function(e,t,n){var r=n(82),i=n(369),o=n(370),a=n(371),l=n(372),c=n(373);function s(e){var t=this.__data__=new r(e);this.size=t.size}s.prototype.clear=i,s.prototype.delete=o,s.prototype.get=a,s.prototype.has=l,s.prototype.set=c,e.exports=s},function(e,t,n){var r=n(364),i=n(365),o=n(366),a=n(367),l=n(368);function c(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}c.prototype.clear=r,c.prototype.delete=i,c.prototype.get=o,c.prototype.has=a,c.prototype.set=l,e.exports=c},function(e,t,n){var r=n(54);e.exports=function(e,t){for(var n=e.length;n--;)if(r(e[n][0],t))return n;return-1}},function(e,t,n){var r=n(43)(Object,"create");e.exports=r},function(e,t,n){var r=n(388);e.exports=function(e,t){var n=e.__data__;return r(t)?n["string"==typeof t?"string":"hash"]:n.map}},function(e,t,n){var r=n(64),i=n(54),o=Object.prototype.hasOwnProperty;e.exports=function(e,t,n){var a=e[t];o.call(e,t)&&i(a,n)&&(void 0!==n||t in e)||r(e,t,n)}},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,n){var r=n(395),i=n(68),o=n(120),a=o&&o.isTypedArray,l=a?i(a):r;e.exports=l},function(e,t,n){var r=n(11),i=Object.create,o=function(){function e(){}return function(t){if(!r(t))return{};if(i)return i(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();e.exports=o},function(e,t,n){var r=n(91),i=n(207),o=n(127);e.exports=function(e,t){return o(i(e,t,r),e+"")}},function(e,t){e.exports=function(e){return e}},function(e,t,n){"use strict";var r=Object.prototype.toString,i=r.call(function(){return arguments}());e.exports=function(e){return r.call(e)===i}},function(e,t,n){"use strict";var r=Object.prototype.toString,i=r.call("");e.exports=function(e){return"string"==typeof e||e&&"object"==typeof e&&(e instanceof String||r.call(e)===i)||!1}},function(e,t,n){"use strict";e.exports=n(439)()?globalThis:n(440)},function(e,t,n){"use strict";(function(e){t.__esModule=!0,t.default=function(t){return new e(e=>setTimeout(e,t))}}).call(this,n(2))},function(e,t,n){"use strict";(function(t){var r=n(13),i=n(49),o=n(482);function a(e){return r.isPlainObject(e)||r.isArray(e)}function l(e){return r.endsWith(e,"[]")?e.slice(0,-2):e}function c(e,t,n){return e?e.concat(t).map((function(e,t){return e=l(e),!n&&t?"["+e+"]":e})).join(n?".":""):t}var s=r.toFlatObject(r,{},null,(function(e){return/^is[A-Z]/.test(e)}));e.exports=function(e,n,d){if(!r.isObject(e))throw new TypeError("target must be an object");n=n||new(o||FormData);var u,A=(d=r.toFlatObject(d,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!r.isUndefined(t[e])}))).metaTokens,h=d.visitor||m,g=d.dots,F=d.indexes,Q=(d.Blob||"undefined"!=typeof Blob&&Blob)&&((u=n)&&r.isFunction(u.append)&&"FormData"===u[Symbol.toStringTag]&&u[Symbol.iterator]);if(!r.isFunction(h))throw new TypeError("visitor must be a function");function p(e){if(null===e)return"";if(r.isDate(e))return e.toISOString();if(!Q&&r.isBlob(e))throw new i("Blob is not supported. Use a Buffer instead.");return r.isArrayBuffer(e)||r.isTypedArray(e)?Q&&"function"==typeof Blob?new Blob([e]):t.from(e):e}function m(e,t,i){var o=e;if(e&&!i&&"object"==typeof e)if(r.endsWith(t,"{}"))t=A?t:t.slice(0,-2),e=JSON.stringify(e);else if(r.isArray(e)&&function(e){return r.isArray(e)&&!e.some(a)}(e)||r.isFileList(e)||r.endsWith(t,"[]")&&(o=r.toArray(e)))return t=l(t),o.forEach((function(e,i){!r.isUndefined(e)&&null!==e&&n.append(!0===F?c([t],i,g):null===F?t:t+"[]",p(e))})),!1;return!!a(e)||(n.append(c(i,t,g),p(e)),!1)}var U=[],b=Object.assign(s,{defaultVisitor:m,convertValue:p,isVisitable:a});if(!r.isObject(e))throw new TypeError("data must be an object");return function e(t,i){if(!r.isUndefined(t)){if(-1!==U.indexOf(t))throw Error("Circular reference detected in "+i.join("."));U.push(t),r.forEach(t,(function(t,o){!0===(!(r.isUndefined(t)||null===t)&&h.call(n,t,r.isString(o)?o.trim():o,i,b))&&e(t,i?i.concat(o):[o])})),U.pop()}}(e),n}}).call(this,n(224).Buffer)},function(e,t,n){"use strict";var r=n(49);function i(e,t,n){r.call(this,null==e?"canceled":e,r.ERR_CANCELED,t,n),this.name="CanceledError"}n(13).inherits(i,r,{__CANCEL__:!0}),e.exports=i},function(e,t,n){var r=n(89),i=n(11);e.exports=function(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var n=r(e.prototype),o=e.apply(n,t);return i(o)?o:n}}},function(e,t,n){var r=n(518);e.exports=function(e,t){return!!(null==e?0:e.length)&&r(e,t,0)>-1}},function(e,t,n){var r=n(524);e.exports=function(e){var t=r(e),n=t%1;return t==t?n?t-n:t:0}},function(e,t,n){var r=n(117),i=n(534),o=n(535);function a(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new r;++t<n;)this.add(e[t])}a.prototype.add=a.prototype.push=i,a.prototype.has=o,e.exports=a},function(e,t){e.exports=function(e,t){return e.has(t)}},function(e,t){e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}},function(e,t,n){var r=n(60),i=n(50);e.exports=function(e,t){for(var n=0,o=(t=r(t,e)).length;null!=e&&n<o;)e=e[i(t[n++])];return n&&n==o?e:void 0}},function(e,t,n){var r=n(256),i=n(34);e.exports=function(e,t){return e&&r(e,t,i)}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(257));const o=e=>e.replace(/\/$/,"");var a=(e,t)=>{if(!t)return e;const n=i.default.parse(t),r=i.default.parse(e);if(!n.protocol||!r.protocol)return e;const a=n.protocol.match(/^https/),l=r.protocol.match(/^ws/i);return`${o(`${(l?"ws":"http")+(a?"s":"")}://${n.host}${n.pathname}`)}/${o(`${r.host}${r.pathname}${r.search||""}`)}`};t.default=a},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;let r="";var i={getCurrentAudioOutputDeviceId:()=>r,setCurrentAudioOutputDeviceId:e=>{r=e}};t.default=i},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e,t){const n={};Object.keys(t).forEach(r=>{n[r]=((e,t,n)=>{if(t&&!n)return()=>t.call(e);if(t&&n)return r=>(void 0!==r&&n.call(e,r),t.call(e));return t=>{void 0!==t&&n.call(e,t)}})(e,t[r].get,t[r].set)}),(0,i.default)(e,n)};var i=r(n(9))},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(205));var o=function(e){let t=(void 0===e?{}:e).NativeVideoElementWrapper;const n=void 0===t?(0,i.default)():t;return function(e){let t=void 0===e?{}:e,r=t.fallbackText,i=void 0===r?"Sorry, Web RTC is not available in your browser":r,o=t.fitMode,a=t.muted,l=t._inject,c=t.widgetType;return new n({fallbackText:i,fitMode:o,muted:a,defaultAudioVolume:50,_inject:l,widgetType:c})}};t.default=o},function(e,t,n){"use strict";function r(e){return e.map(e=>({url:e.url,urls:e.urls||[e.url],username:e.username,credential:e.credential}))}t.__esModule=!0,t.adaptIceServers=r,t.parseIceServers=function(e){let t;try{t=JSON.parse(e.data).content.iceServers}catch(e){return[]}return r(t)}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(3));t.default=()=>"Chrome"===i.default.name&&i.default.version>=58||-1!==["Firefox","Edge","Safari","Opera"].indexOf(i.default.name)},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){let t=null,n=!1;const r=()=>{n&&(e(),t=window.requestAnimationFrame(r))};this.start=()=>{n||(n=!0,window.requestAnimationFrame(r))},this.stop=()=>{window.cancelAnimationFrame(t),n=!1}}},function(e,t,n){"use strict";t.__esModule=!0,t.ONE_SECOND_IN_MS=t.ONE_MINUTE_IN_MS=void 0;t.ONE_SECOND_IN_MS=1e3;t.ONE_MINUTE_IN_MS=6e4},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CancellationError=t.default=void 0;var r=o(n(703)),i=o(n(327));function o(e){return e&&e.__esModule?e:{default:e}}t.default=r.default,t.CancellationError=i.default},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i,o,a=r(n(53));const l=!!window.crypto,c=!(null==(i=window.RTCRtpSender)||!i.prototype.createEncodedStreams)||!(null==(o=window.RTCRtpSender)||!o.prototype.createdEncodedVideoStreams),s=!!window.Worker,d=()=>l&&c&&s;t.default=function(e){void 0===e&&(e={});const t=e.hasOpenTokSupport||a.default.once,n=e.isE2eeSupported||d;return t()&&n()}},function(e,t,n){var r=n(43)(n(16),"Map");e.exports=r},function(e,t,n){var r=n(380),i=n(387),o=n(389),a=n(390),l=n(391);function c(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}c.prototype.clear=r,c.prototype.delete=i,c.prototype.get=o,c.prototype.has=a,c.prototype.set=l,e.exports=c},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r&&!1!==t(e[n],n,e););return e}},function(e,t){e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},function(e,t,n){(function(e){var r=n(188),i=t&&!t.nodeType&&t,o=i&&"object"==typeof e&&e&&!e.nodeType&&e,a=o&&o.exports===i&&r.process,l=function(){try{var e=o&&o.require&&o.require("util").types;return e||a&&a.binding&&a.binding("util")}catch(e){}}();e.exports=l}).call(this,n(87)(e))},function(e,t,n){var r=n(69),i=n(396),o=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return i(e);var t=[];for(var n in Object(e))o.call(e,n)&&"constructor"!=n&&t.push(n);return t}},function(e,t,n){var r=n(401),i=n(195),o=Object.prototype.propertyIsEnumerable,a=Object.getOwnPropertySymbols,l=a?function(e){return null==e?[]:(e=Object(e),r(a(e),(function(t){return o.call(e,t)})))}:i;e.exports=l},function(e,t){e.exports=function(e,t){for(var n=-1,r=t.length,i=e.length;++n<r;)e[i+n]=t[n];return e}},function(e,t,n){var r=n(193)(Object.getPrototypeOf,Object);e.exports=r},function(e,t,n){var r=n(202);e.exports=function(e){var t=new e.constructor(e.byteLength);return new r(t).set(new r(e)),t}},function(e,t){e.exports=function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}},function(e,t,n){var r=n(416),i=n(208)(r);e.exports=i},function(e,t,n){var r=n(54),i=n(28),o=n(67),a=n(11);e.exports=function(e,t,n){if(!a(n))return!1;var l=typeof t;return!!("number"==l?i(n)&&o(t,n.length):"string"==l&&t in n)&&r(n[t],e)}},function(e,t,n){var r=n(117);function i(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var a=e.apply(this,r);return n.cache=o.set(i,a)||o,a};return n.cache=new(i.Cache||r),n}i.Cache=r,e.exports=i},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r={error:{priority:1,method:"error"},warn:{priority:2,method:"warn"},info:{priority:3,method:"info"},log:{priority:4,method:"log"},debug:{priority:5,method:"debug"},spam:{priority:6,method:"log"}};t.default=r},function(e,t,n){"use strict";e.exports=n(210)()?Object.setPrototypeOf:n(211)},function(e,t,n){"use strict";var r=n(57),i={object:!0,function:!0,undefined:!0};e.exports=function(e){return!!r(e)&&hasOwnProperty.call(i,typeof e)}},function(e,t,n){"use strict";e.exports=n(430)()?Object.assign:n(431)},function(e,t,n){"use strict";(function(t){var r=n(13),i=n(225),o=n(49),a=n(226),l=n(96),c=n(487),s=n(135),d=n(227),u={"Content-Type":"application/x-www-form-urlencoded"};function A(e,t){!r.isUndefined(e)&&r.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var h,g={transitional:a,adapter:(("undefined"!=typeof XMLHttpRequest||void 0!==t&&"[object process]"===Object.prototype.toString.call(t))&&(h=n(228)),h),transformRequest:[function(e,t){i(t,"Accept"),i(t,"Content-Type");var n,o=t&&t["Content-Type"]||"",a=o.indexOf("application/json")>-1,s=r.isObject(e);if(s&&r.isHTMLForm(e)&&(e=new FormData(e)),r.isFormData(e))return a?JSON.stringify(d(e)):e;if(r.isArrayBuffer(e)||r.isBuffer(e)||r.isStream(e)||r.isFile(e)||r.isBlob(e))return e;if(r.isArrayBufferView(e))return e.buffer;if(r.isURLSearchParams(e))return A(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString();if(s){if(-1!==o.indexOf("application/x-www-form-urlencoded"))return c(e,this.formSerializer).toString();if((n=r.isFileList(e))||o.indexOf("multipart/form-data")>-1){var u=this.env&&this.env.FormData;return l(n?{"files[]":e}:e,u&&new u,this.formSerializer)}}return s||a?(A(t,"application/json"),function(e,t,n){if(r.isString(e))try{return(t||JSON.parse)(e),r.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||g.transitional,n=t&&t.forcedJSONParsing,i="json"===this.responseType;if(e&&r.isString(e)&&(n&&!this.responseType||i)){var a=!(t&&t.silentJSONParsing)&&i;try{return JSON.parse(e)}catch(e){if(a){if("SyntaxError"===e.name)throw o.from(e,o.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:s.classes.FormData,Blob:s.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};r.forEach(["delete","get","head"],(function(e){g.headers[e]={}})),r.forEach(["post","put","patch"],(function(e){g.headers[e]=r.merge(u)})),e.exports=g}).call(this,n(29))},function(e,t,n){"use strict";e.exports=n(488)},function(e,t){e.exports={}},function(e,t,n){var r=n(234),i=n(507),o=n(508),a=n(236),l=n(522),c=n(240),s=n(523),d=n(243),u=n(244),A=n(100),h=Math.max;e.exports=function(e,t,n,g,F,Q,p,m){var U=2&t;if(!U&&"function"!=typeof e)throw new TypeError("Expected a function");var b=g?g.length:0;if(b||(t&=-97,g=F=void 0),p=void 0===p?p:h(A(p),0),m=void 0===m?m:A(m),b-=F?F.length:0,64&t){var Z=g,B=F;g=F=void 0}var f=U?void 0:c(e),R=[e,t,n,g,F,Z,B,Q,p,m];if(f&&s(R,f),e=R[0],t=R[1],n=R[2],g=R[3],F=R[4],!(m=R[9]=void 0===R[9]?U?0:e.length:h(R[9]-b,0))&&24&t&&(t&=-25),t&&1!=t)I=8==t||16==t?o(e,t,m):32!=t&&33!=t||F.length?a.apply(void 0,R):l(e,t,n,g);else var I=i(e,t,n);return u((f?r:d)(I,R),e,t)}},function(e,t,n){var r=n(89),i=n(139);function o(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}o.prototype=r(i.prototype),o.prototype.constructor=o,e.exports=o},function(e,t){e.exports=function(){}},function(e,t){e.exports=function(e,t){for(var n=-1,r=e.length,i=0,o=[];++n<r;){var a=e[n];a!==t&&"__lodash_placeholder__"!==a||(e[n]="__lodash_placeholder__",o[i++]=n)}return o}},function(e,t,n){var r=n(33),i=n(124),o=n(21),a=Function.prototype,l=Object.prototype,c=a.toString,s=l.hasOwnProperty,d=c.call(Object);e.exports=function(e){if(!o(e)||"[object Object]"!=r(e))return!1;var t=i(e);if(null===t)return!0;var n=s.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&c.call(n)==d}},function(e,t,n){var r=n(533),i=n(21);e.exports=function e(t,n,o,a,l){return t===n||(null==t||null==n||!i(t)&&!i(n)?t!=t&&n!=n:r(t,n,o,a,e,l))}},function(e,t,n){var r=n(14),i=n(71),o=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;e.exports=function(e,t){if(r(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!i(e))||(a.test(e)||!o.test(e)||null!=t&&e in Object(t))}},function(e,t,n){var r=n(548),i=n(207),o=n(127);e.exports=function(e){return o(i(e,void 0,r),e+"")}},function(e,t,n){"use strict";let r;t.__esModule=!0,t.default=function(e){void 0===e&&(e={});const t=e.AudioContext||(void 0!==typeof window?window:global).AudioContext||(void 0!==typeof window?window:global).webkitAudioContext;return function(){if(r=r||t&&new t,null==r)throw new Error("AudioContext could not be created, hardware limit reached.");return r}}},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;let r=function(){function e(e){this._analyser=null,this._timeDomainData=null,this._sourceNode=null,this._audioContext=e}var t=e.prototype;return t._initAudioAnalyser=function(e){this._analyser=this._audioContext.createAnalyser(),this._sourceNode=this._audioContext.createMediaStreamSource(e),this._sourceNode.connect(this._analyser),this._timeDomainData=new Uint8Array(this._analyser.frequencyBinCount)},t.webRTCStream=function(e){this._sourceNode&&this._sourceNode.disconnect(this._analyser),"suspended"===this._audioContext.state&&this._audioContext.resume(),this._initAudioAnalyser(e)},t.destroy=function(){this._sourceNode&&this._sourceNode.disconnect(this._analyser),this._timeDomainData=null},t.sample=function(e){if("function"==typeof e)throw new Error("sample no longer takes a callback");if(this._analyser&&this._timeDomainData){this._analyser.getByteTimeDomainData(this._timeDomainData);let e=0;for(let t=this._timeDomainData.length-1;t>=0;t-=1)e=Math.max(e,Math.abs(this._timeDomainData[t]-128));return e/128}return null},e}();t.default=r},function(e,t,n){var r=n(90),i=n(54),o=n(128),a=n(55),l=Object.prototype,c=l.hasOwnProperty,s=r((function(e,t){e=Object(e);var n=-1,r=t.length,s=r>2?t[2]:void 0;for(s&&o(t[0],t[1],s)&&(r=1);++n<r;)for(var d=t[n],u=a(d),A=-1,h=u.length;++A<h;){var g=u[A],F=e[g];(void 0===F||i(F,l[g])&&!c.call(e,g))&&(e[g]=d[g])}return e}));e.exports=s},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(9)),o=r(n(149));const a=(0,r(n(1)).default)("Event");let l=function(){function e(e,t,n){void 0===t&&(t=!0),void 0===n&&(n={}),this.type=e,this.cancelable=t,this._defaultPrevented=!1;const r=(0,o.default)(Object.keys(this),Object.keys(n));if(r.length>0)throw new Error("Cannot used reserved property names: "+r.join(","));(0,i.default)(this,n)}var t=e.prototype;return t.preventDefault=function(){this.cancelable?this._defaultPrevented=!0:a.warn("Event.preventDefault :: Trying to preventDefault on an event that isn't cancelable")},t.isDefaultPrevented=function(){return this._defaultPrevented},e}();t.default=l},function(e,t,n){var r=n(39),i=n(576),o=n(90),a=n(577),l=o((function(e){var t=r(e,a);return t.length&&t[0]===e[0]?i(t):[]}));e.exports=l},function(e,t){e.exports=function(e,t,n){for(var r=-1,i=null==e?0:e.length;++r<i;)if(n(t,e[r]))return!0;return!1}},function(e,t,n){var r=n(28),i=n(21);e.exports=function(e){return i(e)&&r(e)}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(24)),o=r(n(62)),a=r(n(59));var l=function(){function e(e){void 0===e&&(e={}),Object.defineProperty(this,"_rawSessionInfo",{value:(0,o.default)(e)})}return(0,i.default)(e,[{key:"sessionId",get:function(){return this._rawSessionInfo.session_id}},{key:"partnerId",get:function(){return this._rawSessionInfo.partner_id}},{key:"messagingServer",get:function(){return this._rawSessionInfo.messaging_server_url}},{key:"mediaServerName",get:function(){return this._rawSessionInfo.media_server_hostname}},{key:"messagingURL",get:function(){return this._rawSessionInfo.messaging_url}},{key:"symphonyAddress",get:function(){return this._rawSessionInfo.symphony_address}},{key:"iceServers",get:function(){return this._rawSessionInfo.ice_servers}},{key:"simulcast",get:function(){return(0,a.default)(this._rawSessionInfo,"properties.simulcast")}},{key:"e2ee",get:function(){return(0,a.default)(this._rawSessionInfo,"properties.e2ee",!1)}},{key:"reconnection",get:function(){return(0,a.default)(this._rawSessionInfo,"properties.reconnection",!1)}},{key:"renegotiation",get:function(){return(0,a.default)(this._rawSessionInfo,"properties.renegotiation",!1)}},{key:"p2pEnabled",get:function(){return"enabled"===(0,a.default)(this._rawSessionInfo,"properties.p2p.preference.value")}},{key:"hybridSession",get:function(){return(0,a.default)(this._rawSessionInfo,"properties.hybridSession",!1)}},{key:"isAdaptiveEnabled",get:function(){return"adaptive"===(0,a.default)(this._rawSessionInfo,"properties.p2p.preference.value")}},{key:"priorityVideoCodec",get:function(){return(0,a.default)(this._rawSessionInfo,"properties.priorityVideoCodec","")}},{key:"h264",get:function(){return(0,a.default)(this._rawSessionInfo,"properties.h264",!0)}},{key:"vp8",get:function(){return(0,a.default)(this._rawSessionInfo,"properties.vp8",!0)}},{key:"vp9",get:function(){return(0,a.default)(this._rawSessionInfo,"properties.vp9",!0)}},{key:"singlePeerConnection",get:function(){return(0,a.default)(this._rawSessionInfo,"properties.singlePeerConnection",!1)}},{key:"clientCandidates",get:function(){const e=(0,a.default)(this._rawSessionInfo,"properties.clientCandidates");return"relayed"===e?"relay":e}}]),e}();t.default=l},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;t.default=()=>document.createElement("video")},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(){return{ROTATED_NORMAL:0,ROTATED_LEFT:270,ROTATED_RIGHT:90,ROTATED_UPSIDE_DOWN:180}}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e){if(void 0!==e.adapter||l.default.isLegacyEdge)return e;const t=(e=>{const t={},n=(e,t,n)=>{n.forEach(n=>{let r=n.key,i=n.type,o=t[r];if(void 0!==o){switch(i){case"function":o=((e,t)=>{if("function"!=typeof t)return c.warn("Non-function passed into bindWithStaticProperties()"),t;const n=t.bind(e);return Object.keys(t).forEach(e=>{n[e]=t[e]}),n})(t,o);break;case"class":o="function"!=typeof(l=o)?(c.warn("Non-function passed into extendClass()"),l):(0,a.default)(l);break;case"string":case"object":break;default:throw new Error("Invalid type of window key: "+i)}e[r]=o}var l})};n(t,e,s),void 0!==e.navigator&&(t.navigator={},n(t.navigator,e.navigator,d),void 0!==e.navigator.mediaDevices&&(t.navigator.mediaDevices={},n(t.navigator.mediaDevices,e.navigator.mediaDevices,u)));return t})(e);return(0,i.default)({window:t}),t};var i=r(n(593)),o=r(n(1)),a=r(n(604)),l=r(n(3));const c=(0,o.default)("createWindowMock"),s=[{key:"location",type:"object"},{key:"setTimeout",type:"function"},{key:"requestAnimationFrame",type:"function"},{key:"URL",type:"function"},{key:"MediaStream",type:"class"},{key:"webkitMediaStream",type:"class"},{key:"RTCIceCandidate",type:"class"},{key:"mozRTCIceCandidate",type:"class"},{key:"RTCSessionDescription",type:"class"},{key:"mozRTCSessionDescription",type:"class"},{key:"RTCIceGatherer",type:"class"},{key:"RTCIceTransport",type:"class"},{key:"RTCDtlsTransport",type:"class"},{key:"RTCSctpTransport",type:"class"},{key:"RTCRtpReceiver",type:"class"},{key:"HTMLMediaElement",type:"class"},{key:"RTCPeerConnection",type:"class"},{key:"webkitRTCPeerConnection",type:"class"},{key:"mozRTCPeerConnection",type:"class"},{key:"MediaStreamTrack",type:"class"},{key:"RTCRtpSender",type:"class"},{key:"RTCTrackEvent",type:"class"},{key:"RTCTransceiver",type:"class"},{key:"RTCDtmfSender",type:"class"},{key:"RTCDTMFSender",type:"class"},{key:"MediaStreamTrackEvent",type:"class"}],d=[{key:"userAgent",type:"string"},{key:"getUserMedia",type:"function"},{key:"getDisplayMedia",type:"function"},{key:"webkitGetUserMedia",type:"function"},{key:"mozGetUserMedia",type:"function"}],u=[{key:"getUserMedia",type:"function"},{key:"getDisplayMedia",type:"function"},{key:"enumerateDevices",type:"function"},{key:"getSupportedConstraints",type:"function"},{key:"addEventListener",type:"function"},{key:"removeEventListener",type:"function"}]},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(){let e=null;this.transform=t=>{e=null===e||t>=e?t:.3*t+.7*e;const n=Math.log(e)/Math.LN10/1.5+1;return Math.min(Math.max(n,0),1)}}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e){const t={},n=(n,r)=>{(0,i.default)(r,{parent:this}),r.appendTo(e.parent),t[n]=r,this[n]=r};if(!e.parent)return;(0,o.default)(this),this.destroy=()=>{this.off(),this.hideWhileLoading(),a(t).forEach(e=>e.destroy())},this.showAfterLoading=()=>{a(t).forEach(e=>e.showAfterLoading())},this.hideWhileLoading=()=>{a(t).forEach(e=>e.hideWhileLoading())},this.set=(e,t)=>("string"==typeof e&&t?n(e,t):Object.keys(e).forEach(t=>{n(t,e[t])}),this)};var i=r(n(9)),o=r(n(6));const a=e=>Object.keys(e).map(t=>e[t])},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(6)),o=r(n(30)),a=r(n(605));const l=(0,r(n(18)).default)(),c=(0,a.default)();var s=new function(){const e=this;function t(){return c.isDomLoaded()&&!c.isDomUnloaded()}function n(){e.dispatchEvent(new l.EnvLoadedEvent(o.default.ENV_UNLOADED))}(0,i.default)(e),c.whenLoaded.then((function(){c.whenUnloaded.then(n),t()&&e.dispatchEvent(new l.EnvLoadedEvent(o.default.ENV_LOADED))})),this.onLoad=function(n,r){t()?n.call(r):e.on(o.default.ENV_LOADED,n,r)},this.onUnload=function(t,n){this.isUnloaded()?t.call(n):e.on(o.default.ENV_UNLOADED,t,n)},this.isUnloaded=function(){return c.isDomUnloaded()}};t.default=s},function(e,t,n){"use strict";var r=n(611);
18
18
  /*!
19
19
  * The buffer module from node.js, for the browser.
20
20
  *
@@ -24,7 +24,7 @@
24
24
  /* @license twgl.js 5.5.1 Copyright (c) 2015, Gregg Tavares All Rights Reserved.
25
25
  Available via the MIT license.
26
26
  see: http://github.com/greggman/twgl.js for details */
27
- const Dn={};{const e=Dn;e[5120]=Int8Array,e[5121]=Uint8Array,e[5122]=Int16Array,e[5123]=Uint16Array,e[5124]=Int32Array,e[5125]=Uint32Array,e[5126]=Float32Array,e[32819]=Uint16Array,e[32820]=Uint16Array,e[33635]=Uint16Array,e[5131]=Uint16Array,e[33640]=Uint32Array,e[35899]=Uint32Array,e[35902]=Uint32Array,e[36269]=Uint32Array,e[34042]=Uint32Array}function xn(e){if(e instanceof Int8Array)return 5120;if(e instanceof Uint8Array||e instanceof Uint8ClampedArray)return 5121;if(e instanceof Int16Array)return 5122;if(e instanceof Uint16Array)return 5123;if(e instanceof Int32Array)return 5124;if(e instanceof Uint32Array)return 5125;if(e instanceof Float32Array)return 5126;throw new Error("unsupported typed array type")}function Mn(e){if(e===Int8Array)return 5120;if(e===Uint8Array||e===Uint8ClampedArray)return 5121;if(e===Int16Array)return 5122;if(e===Uint16Array)return 5123;if(e===Int32Array)return 5124;if(e===Uint32Array)return 5125;if(e===Float32Array)return 5126;throw new Error("unsupported typed array type")}function Hn(e){const t=Dn[e];if(!t)throw new Error("unknown gl type");return t}const Kn=typeof SharedArrayBuffer<"u"?function(e){return e&&e.buffer&&(e.buffer instanceof ArrayBuffer||e.buffer instanceof SharedArrayBuffer)}:function(e){return e&&e.buffer&&e.buffer instanceof ArrayBuffer};function Ln(){console.error(...arguments)}const zn=new Map;function On(e,t){if(!e||"object"!=typeof e)return!1;let n=zn.get(t);n||(n=new WeakMap,zn.set(t,n));let r=n.get(e);if(void 0===r){const i=Object.prototype.toString.call(e);r=i.substring(8,i.length-1)===t,n.set(e,r)}return r}function jn(e,t){return typeof WebGLTexture<"u"&&On(t,"WebGLTexture")}const Pn=34962,_n="";function qn(e,t,n,r){if(function(e,t){return typeof WebGLBuffer<"u"&&On(t,"WebGLBuffer")}(0,t))return t;n=n||Pn;const i=e.createBuffer();return function(e,t,n,r,i){e.bindBuffer(t,n),e.bufferData(t,r,i||35044)}(e,n,i,t,r),i}function $n(e){return"indices"===e}const er=/coord|texture/i,tr=/color|colour/i;function nr(e,t,n){return e.numComponents||e.size||function(e,t){let n;if(n=er.test(e)?2:tr.test(e)?4:3,t%n>0)throw new Error(`Can not guess numComponents for attribute '${e}'. Tried ${n} but ${t} values is not evenly divisible by ${n}. You should specify it.`);return n}(t,n||function(e){return e.length?e:e.data}(e).length)}function rr(e,t){if(Kn(e))return e;if(Kn(e.data))return e.data;Array.isArray(e)&&(e={data:e});let n=e.type?or(e.type):void 0;return n||(n=$n(t)?Uint16Array:Float32Array),new n(e.data)}function ir(e){return"number"==typeof e?e:e?Mn(e):5126}function or(e){return"number"==typeof e?Hn(e):e||Float32Array}function ar(e,t){return{buffer:t.buffer,numValues:24,type:ir(t.type),arrayType:or(t.type)}}function lr(e,t){const n=t.data||t,r=or(t.type),i=n*r.BYTES_PER_ELEMENT,o=e.createBuffer();return e.bindBuffer(Pn,o),e.bufferData(Pn,i,t.drawType||35044),{buffer:o,numValues:n,type:Mn(r),arrayType:r}}function cr(e,t,n){const r=rr(t,n);return{arrayType:r.constructor,buffer:qn(e,r,void 0,t.drawType),type:xn(r),numValues:0}}function sr(e,t){const n={};return Object.keys(t).forEach((function(r){if(!$n(r)){const i=t[r],o=i.attrib||i.name||i.attribName||_n+r;if(i.value){if(!Array.isArray(i.value)&&!Kn(i.value))throw new Error("array.value is not array or typedarray");n[o]={value:i.value}}else{let t;t=i.buffer&&i.buffer instanceof WebGLBuffer?ar:"number"==typeof i||"number"==typeof i.data?lr:cr;const a=t(e,i,r),l=a.buffer,c=a.type,s=a.numValues,d=a.arrayType,u=void 0!==i.normalize?i.normalize:function(e){return e===Int8Array||e===Uint8Array}(d),A=nr(i,r,s);n[o]={buffer:l,numComponents:A,type:c,normalize:u,stride:i.stride||0,offset:i.offset||0,divisor:void 0===i.divisor?void 0:i.divisor,drawType:i.drawType}}}})),e.bindBuffer(Pn,null),n}const dr=["position","positions","a_position"];function ur(e,t,n){const r=sr(e,t),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);const o=t.indices;if(o){const t=rr(o,"indices");i.indices=qn(e,t,34963),i.numElements=t.length,i.elementType=xn(t)}else i.numElements||(i.numElements=function(e,t){let n,r;for(r=0;r<dr.length&&(n=dr[r],!(n in t)&&(n=_n+n,!(n in t)));++r);r===dr.length&&(n=Object.keys(t)[0]);const i=t[n];if(!i.buffer)return 1;e.bindBuffer(Pn,i.buffer);const o=e.getBufferParameter(Pn,34660);e.bindBuffer(Pn,null);const a=o/function(e,t){return 5120===t||5121===t?1:5122===t||5123===t?2:5124===t||5125===t||5126===t?4:0}(0,i.type),l=i.numComponents||i.size,c=a/l;if(c%1!=0)throw new Error(`numComponents ${l} not correct for length ${length}`);return c}(e,i.attribs));return i}function Ar(e){return!!e.texStorage2D}const hr=function(){const e={},t={};return function(n,r){return function(n){const r=n.constructor.name;if(!e[r]){for(const e in n)if("number"==typeof n[e]){const r=t[n[e]];t[n[e]]=r?`${r} | ${e}`:e}e[r]=!0}}(n),t[r]||("number"==typeof r?"0x"+r.toString(16):r)}}(),gr={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},Fr=Kn,Qr=function(){let e;return function(){return e=e||(typeof document<"u"&&document.createElement?document.createElement("canvas").getContext("2d"):null),e}}(),pr=6407,mr=6408,Ur=6402,br=33071,Zr=3553,Br=34067,fr=32879,Rr=35866,Ir=10242,yr=10243,Vr=5120,Cr=5121,Wr=5123,Er=5125,vr=5126,Sr=5131,Jr=36193,Gr=33319,Nr=33320,Xr=6403,kr=36244,Tr=36248,Yr=36249;{const e={};e[6406]={numColorComponents:1},e[6409]={numColorComponents:1},e[6410]={numColorComponents:2},e[pr]={numColorComponents:3},e[mr]={numColorComponents:4},e[Xr]={numColorComponents:1},e[kr]={numColorComponents:1},e[Gr]={numColorComponents:2},e[Nr]={numColorComponents:2},e[pr]={numColorComponents:3},e[Tr]={numColorComponents:3},e[mr]={numColorComponents:4},e[Yr]={numColorComponents:4},e[Ur]={numColorComponents:1},e[34041]={numColorComponents:2}}let wr;function Dr(e){if(!wr){const e={};e[6406]={textureFormat:6406,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[Cr,Sr,Jr,vr]},e[6409]={textureFormat:6409,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[Cr,Sr,Jr,vr]},e[6410]={textureFormat:6410,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[Cr,Sr,Jr,vr]},e[pr]={textureFormat:pr,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[Cr,Sr,Jr,vr,33635]},e[mr]={textureFormat:mr,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[Cr,Sr,Jr,vr,32819,32820]},e[Ur]={textureFormat:Ur,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Er,Wr]},e[33321]={textureFormat:Xr,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[Cr]},e[36756]={textureFormat:Xr,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[Vr]},e[33325]={textureFormat:Xr,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[vr,Sr]},e[33326]={textureFormat:Xr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[vr]},e[33330]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[Cr]},e[33329]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[Vr]},e[33332]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Wr]},e[33331]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[5122]},e[33334]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Er]},e[33333]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[5124]},e[33323]={textureFormat:Gr,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[Cr]},e[36757]={textureFormat:Gr,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[Vr]},e[33327]={textureFormat:Gr,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[vr,Sr]},e[33328]={textureFormat:Gr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[vr]},e[33336]={textureFormat:Nr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Cr]},e[33335]={textureFormat:Nr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Vr]},e[33338]={textureFormat:Nr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Wr]},e[33337]={textureFormat:Nr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[5122]},e[33340]={textureFormat:Nr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Er]},e[33339]={textureFormat:Nr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[5124]},e[32849]={textureFormat:pr,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[Cr]},e[35905]={textureFormat:pr,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[Cr]},e[36194]={textureFormat:pr,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[Cr,33635]},e[36758]={textureFormat:pr,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[Vr]},e[35898]={textureFormat:pr,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[vr,Sr,35899]},e[35901]={textureFormat:pr,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[vr,Sr,35902]},e[34843]={textureFormat:pr,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[vr,Sr]},e[34837]={textureFormat:pr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[vr]},e[36221]={textureFormat:Tr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[Cr]},e[36239]={textureFormat:Tr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[Vr]},e[36215]={textureFormat:Tr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[Wr]},e[36233]={textureFormat:Tr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[5122]},e[36209]={textureFormat:Tr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Er]},e[36227]={textureFormat:Tr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[5124]},e[32856]={textureFormat:mr,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Cr]},e[35907]={textureFormat:mr,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Cr]},e[36759]={textureFormat:mr,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[Vr]},e[32855]={textureFormat:mr,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[Cr,32820,33640]},e[32854]={textureFormat:mr,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[Cr,32819]},e[32857]={textureFormat:mr,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[33640]},e[34842]={textureFormat:mr,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[vr,Sr]},e[34836]={textureFormat:mr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[vr]},e[36220]={textureFormat:Yr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Cr]},e[36238]={textureFormat:Yr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Vr]},e[36975]={textureFormat:Yr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[33640]},e[36214]={textureFormat:Yr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Wr]},e[36232]={textureFormat:Yr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[5122]},e[36226]={textureFormat:Yr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[5124]},e[36208]={textureFormat:Yr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[Er]},e[33189]={textureFormat:Ur,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Wr,Er]},e[33190]={textureFormat:Ur,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Er]},e[36012]={textureFormat:Ur,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[vr]},e[35056]={textureFormat:34041,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[34042]},e[36013]={textureFormat:34041,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[36269]},Object.keys(e).forEach((function(t){const n=e[t];n.bytesPerElementMap={},n.bytesPerElement.forEach((function(e,t){const r=n.type[t];n.bytesPerElementMap[r]=e}))})),wr=e}return wr[e]}function xr(e){const t=Dr(e);if(!t)throw"unknown internal format";return{format:t.textureFormat,type:t.type[0]}}function Mr(e){return 0==(e&e-1)}function Hr(e,t,n,r,i){if(i%1!=0)throw"can't guess dimensions";if(n||r){if(r){if(!n&&(n=i/r)%1)throw"can't guess dimensions"}else if((r=i/n)%1)throw"can't guess dimensions"}else{const e=Math.sqrt(i/(t===Br?6:1));e%1==0?(n=e,r=e):(n=i,r=1)}return{width:n,height:r}}function Kr(e,t){void 0!==t.colorspaceConversion&&e.pixelStorei(37443,t.colorspaceConversion),void 0!==t.premultiplyAlpha&&e.pixelStorei(37441,t.premultiplyAlpha),void 0!==t.flipY&&e.pixelStorei(37440,t.flipY)}function Lr(e){e.pixelStorei(3317,4),Ar(e)&&(e.pixelStorei(3314,0),e.pixelStorei(32878,0),e.pixelStorei(3316,0),e.pixelStorei(3315,0),e.pixelStorei(32877,0))}function zr(e,t,n,r){r.minMag&&(n.call(e,t,10241,r.minMag),n.call(e,t,10240,r.minMag)),r.min&&n.call(e,t,10241,r.min),r.mag&&n.call(e,t,10240,r.mag),r.wrap&&(n.call(e,t,Ir,r.wrap),n.call(e,t,yr,r.wrap),(t===fr||function(e,t){return typeof WebGLSampler<"u"&&On(t,"WebGLSampler")}(0,t))&&n.call(e,t,32882,r.wrap)),r.wrapR&&n.call(e,t,32882,r.wrapR),r.wrapS&&n.call(e,t,Ir,r.wrapS),r.wrapT&&n.call(e,t,yr,r.wrapT),void 0!==r.minLod&&n.call(e,t,33082,r.minLod),void 0!==r.maxLod&&n.call(e,t,33083,r.maxLod),void 0!==r.baseLevel&&n.call(e,t,33084,r.baseLevel),void 0!==r.maxLevel&&n.call(e,t,33085,r.maxLevel),void 0!==r.compareFunc&&n.call(e,t,34893,r.compareFunc),void 0!==r.compareMode&&n.call(e,t,34892,r.compareMode)}function Or(e,t,n){const r=n.target||Zr;e.bindTexture(r,t),zr(e,r,e.texParameteri,n)}function jr(e,t,n,r,i,o){o=o||mr;const a=(n=n||gr.textureOptions).target||Zr;if(r=r||n.width,i=i||n.height,e.bindTexture(a,t),function(e,t,n,r){if(!Ar(e))return Mr(t)&&Mr(n);const i=Dr(r);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}(e,r,i,o))e.generateMipmap(a);else{const t=function(e){const t=Dr(e);if(!t)throw"unknown internal format";return t.textureFilterable}(o)?9729:9728;e.texParameteri(a,10241,t),e.texParameteri(a,10240,t),e.texParameteri(a,Ir,br),e.texParameteri(a,yr,br)}}function Pr(e){return!0===e.auto||void 0===e.auto&&void 0===e.level}function _r(e,t){return(t=t||{}).cubeFaceOrder||[34069,34070,34071,34072,34073,34074]}function qr(e,t){const n=_r(0,t).map((function(e,t){return{face:e,ndx:t}}));return n.sort((function(e,t){return e.face-t.face})),n}function $r(e,t,n,r){const i=(r=r||gr.textureOptions).target||Zr,o=r.level||0;let a=n.width,l=n.height;const c=r.internalFormat||r.format||mr,s=xr(c),d=r.format||s.format,u=r.type||s.type;if(Kr(e,r),e.bindTexture(i,t),i===Br){const s=n.width,A=n.height;let h,g;if(s/6===A)h=A,g=[0,0,1,0,2,0,3,0,4,0,5,0];else if(A/6===s)h=s,g=[0,0,0,1,0,2,0,3,0,4,0,5];else if(s/3==A/2)h=s/3,g=[0,0,1,0,2,0,0,1,1,1,2,1];else{if(s/2!=A/3)throw"can't figure out cube map from element: "+(n.src?n.src:n.nodeName);h=s/2,g=[0,0,1,0,0,1,1,1,0,2,1,2]}const F=Qr();F?(F.canvas.width=h,F.canvas.height=h,a=h,l=h,qr(0,r).forEach((function(t){const r=g[2*t.ndx+0]*h,i=g[2*t.ndx+1]*h;F.drawImage(n,r,i,h,h,0,0,h,h),e.texImage2D(t.face,o,c,d,u,F.canvas)})),F.canvas.width=1,F.canvas.height=1):typeof createImageBitmap<"u"&&(a=h,l=h,qr(0,r).forEach((function(s){const A=g[2*s.ndx+0]*h,F=g[2*s.ndx+1]*h;e.texImage2D(s.face,o,c,h,h,0,d,u,null),createImageBitmap(n,A,F,h,h,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then((function(n){Kr(e,r),e.bindTexture(i,t),e.texImage2D(s.face,o,c,d,u,n),Pr(r)&&jr(e,t,r,a,l,c)}))})))}else if(i===fr||i===Rr){const t=Math.min(n.width,n.height),r=Math.max(n.width,n.height),a=r/t;if(a%1!=0)throw"can not compute 3D dimensions of element";const l=n.width===r?1:0,s=n.height===r?1:0;e.pixelStorei(3317,1),e.pixelStorei(3314,n.width),e.pixelStorei(32878,0),e.pixelStorei(32877,0),e.texImage3D(i,o,c,t,t,t,0,d,u,null);for(let r=0;r<a;++r){const a=r*t*l,c=r*t*s;e.pixelStorei(3316,a),e.pixelStorei(3315,c),e.texSubImage3D(i,o,0,0,r,t,t,1,d,u,n)}Lr(e)}else e.texImage2D(i,o,c,d,u,n);Pr(r)&&jr(e,t,r,a,l,c),Or(e,t,r)}function ei(){}function ti(e,t){return void 0!==t||function(e){if(typeof document<"u"){const t=document.createElement("a");return t.href=e,t.hostname===location.hostname&&t.port===location.port&&t.protocol===location.protocol}{const t=new URL(location.href).origin;return new URL(e,location.href).origin===t}}(e)?t:"anonymous"}function ni(e){return typeof ImageBitmap<"u"&&e instanceof ImageBitmap||typeof ImageData<"u"&&e instanceof ImageData||typeof HTMLElement<"u"&&e instanceof HTMLElement}function ri(e,t,n){return ni(e)?(setTimeout((function(){n(null,e)})),e):function(e,t,n){let r;if(n=n||ei,t=ti(e,t=void 0!==t?t:gr.crossOrigin),typeof Image<"u"){r=new Image,void 0!==t&&(r.crossOrigin=t);const i=function(){r.removeEventListener("error",o),r.removeEventListener("load",a),r=null},o=function(){const t="couldn't load image: "+e;Ln(t),n(t,r),i()},a=function(){n(null,r),i()};return r.addEventListener("error",o),r.addEventListener("load",a),r.src=e,r}if(typeof ImageBitmap<"u"){let i,o;const a=function(){n(i,o)},l={};t&&(l.mode="cors"),fetch(e,l).then((function(e){if(!e.ok)throw e;return e.blob()})).then((function(e){return createImageBitmap(e,{premultiplyAlpha:"none",colorSpaceConversion:"none"})})).then((function(e){o=e,setTimeout(a)})).catch((function(e){i=e,setTimeout(a)})),r=null}return r}(e,t,n)}function ii(e,t,n){const r=(n=n||gr.textureOptions).target||Zr;if(e.bindTexture(r,t),!1===n.color)return;const i=function(e){return Fr(e=e||gr.textureColor)?e:new Uint8Array([255*e[0],255*e[1],255*e[2],255*e[3]])}(n.color);if(r===Br)for(let t=0;t<6;++t)e.texImage2D(34069+t,0,mr,1,1,0,mr,Cr,i);else r===fr||r===Rr?e.texImage3D(r,0,mr,1,1,1,0,mr,Cr,i):e.texImage2D(r,0,mr,1,1,0,mr,Cr,i)}function oi(e,t,n,r){r=r||ei;const i=n.src;if(6!==i.length)throw"there must be 6 urls for a cubemap";const o=n.level||0,a=n.internalFormat||n.format||mr,l=xr(a),c=n.format||l.format,s=n.type||Cr,d=n.target||Zr;if(d!==Br)throw"target must be TEXTURE_CUBE_MAP";ii(e,t,n),n=Object.assign({},n);let u=6;const A=[],h=_r(0,n);let g;g=i.map((function(i,l){return ri(i,n.crossOrigin,function(i){return function(l,h){--u,l?A.push(l):h.width!==h.height?A.push("cubemap face img is not a square: "+h.src):(Kr(e,n),e.bindTexture(d,t),5===u?_r().forEach((function(t){e.texImage2D(t,o,a,c,s,h)})):e.texImage2D(i,o,a,c,s,h),Pr(n)&&e.generateMipmap(d)),0===u&&r(A.length?A:void 0,t,g)}}(h[l]))}))}function ai(e,t,n,r){r=r||ei;const i=n.src,o=n.internalFormat||n.format||mr,a=xr(o),l=n.format||a.format,c=n.type||Cr,s=n.target||Rr;if(s!==fr&&s!==Rr)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";ii(e,t,n),n=Object.assign({},n);let d=i.length;const u=[];let A;const h=n.level||0;let g=n.width,F=n.height;const Q=i.length;let p=!0;A=i.map((function(i,a){return ri(i,n.crossOrigin,function(i){return function(a,m){if(--d,a)u.push(a);else{if(Kr(e,n),e.bindTexture(s,t),p){p=!1,g=n.width||m.width,F=n.height||m.height,e.texImage3D(s,h,o,g,F,Q,0,l,c,null);for(let t=0;t<Q;++t)e.texSubImage3D(s,h,0,0,t,g,F,1,l,c,m)}else{let t,n=m;(m.width!==g||m.height!==F)&&(t=Qr(),n=t.canvas,t.canvas.width=g,t.canvas.height=F,t.drawImage(m,0,0,g,F)),e.texSubImage3D(s,h,0,0,i,g,F,1,l,c,n),t&&n===t.canvas&&(t.canvas.width=0,t.canvas.height=0)}Pr(n)&&e.generateMipmap(s)}0===d&&r(u.length?u:void 0,t,A)}}(a))}))}function li(e,t,n,r){const i=(r=r||gr.textureOptions).target||Zr;e.bindTexture(i,t);let o=r.width,a=r.height,l=r.depth;const c=r.level||0,s=r.internalFormat||r.format||mr,d=xr(s),u=r.format||d.format,A=r.type||function(e,t,n){return Fr(t)?xn(t):n||Cr}(0,n,d.type);if(Fr(n))n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer));else{const e=Hn(A);n=new e(n)}const h=function(e,t){const n=Dr(e);if(!n)throw"unknown internal format";const r=n.bytesPerElementMap[t];if(void 0===r)throw"unknown internal format";return r}(s,A),g=n.byteLength/h;if(g%1)throw"length wrong size for format: "+hr(e,u);let F;if(i===fr||i===Rr)if(o||a||l)!o||a&&l?!a||o&&l?(F=Hr(0,i,o,a,g/l),o=F.width,a=F.height):(F=Hr(0,i,o,l,g/a),o=F.width,l=F.height):(F=Hr(0,i,a,l,g/o),a=F.width,l=F.height);else{const e=Math.cbrt(g);if(e%1!=0)throw"can't guess cube size of array of numElements: "+g;o=e,a=e,l=e}else F=Hr(0,i,o,a,g),o=F.width,a=F.height;if(Lr(e),e.pixelStorei(3317,r.unpackAlignment||1),Kr(e,r),i===Br){const t=g/6*(h/n.BYTES_PER_ELEMENT);qr(0,r).forEach(r=>{const i=t*r.ndx,l=n.subarray(i,i+t);e.texImage2D(r.face,c,s,o,a,0,u,A,l)})}else i===fr||i===Rr?e.texImage3D(i,c,s,o,a,l,0,u,A,n):e.texImage2D(i,c,s,o,a,0,u,A,n);return{width:o,height:a,depth:l,type:A}}function ci(e,t,n){n=n||ei,t=t||gr.textureOptions;const r=e.createTexture(),i=t.target||Zr;let o=t.width||1,a=t.height||1;const l=t.internalFormat||mr;e.bindTexture(i,r),i===Br&&(e.texParameteri(i,Ir,br),e.texParameteri(i,yr,br));let c=t.src;if(c)if("function"==typeof c&&(c=c(e,t)),"string"==typeof c)!function(e,t,n,r){r=r||ei,ii(e,t,n=n||gr.textureOptions),ri((n=Object.assign({},n)).src,n.crossOrigin,(function(i,o){i?r(i,t,o):($r(e,t,o,n),r(null,t,o))}))}(e,r,t,n);else if(Fr(c)||Array.isArray(c)&&("number"==typeof c[0]||Array.isArray(c[0])||Fr(c[0]))){const n=li(e,r,c,t);o=n.width,a=n.height}else Array.isArray(c)&&("string"==typeof c[0]||ni(c[0]))?i===Br?oi(e,r,t,n):ai(e,r,t,n):($r(e,r,c,t),o=c.width,a=c.height);else!function(e,t,n){const r=n.target||Zr;e.bindTexture(r,t);const i=n.level||0,o=n.internalFormat||n.format||mr,a=xr(o),l=n.format||a.format,c=n.type||a.type;if(Kr(e,n),r===Br)for(let t=0;t<6;++t)e.texImage2D(34069+t,i,o,n.width,n.height,0,l,c,null);else r===fr||r===Rr?e.texImage3D(r,i,o,n.width,n.height,n.depth,0,l,c,null):e.texImage2D(r,i,o,n.width,n.height,0,l,c,null)}(e,r,t);return Pr(t)&&jr(e,r,t,o,a,l),Or(e,r,t),r}const si=Ln;function di(e){return typeof document<"u"&&document.getElementById?document.getElementById(e):null}const ui=33984,Ai=34962,hi=34067,gi=35866,Fi={};function Qi(e,t){return Fi[t].bindPoint}function pi(e,t){return function(n){e.uniform1i(t,n)}}function mi(e,t){return function(n){e.uniform1iv(t,n)}}function Ui(e,t){return function(n){e.uniform2iv(t,n)}}function bi(e,t){return function(n){e.uniform3iv(t,n)}}function Zi(e,t){return function(n){e.uniform4iv(t,n)}}function Bi(e,t,n,r){const i=Qi(0,t);return Ar(e)?function(t){let o,a;!t||jn(0,t)?(o=t,a=null):(o=t.texture,a=t.sampler),e.uniform1i(r,n),e.activeTexture(ui+n),e.bindTexture(i,o),e.bindSampler(n,a)}:function(t){e.uniform1i(r,n),e.activeTexture(ui+n),e.bindTexture(i,t)}}function fi(e,t,n,r,i){const o=Qi(0,t),a=new Int32Array(i);for(let e=0;e<i;++e)a[e]=n+e;return Ar(e)?function(t){e.uniform1iv(r,a),t.forEach((function(t,r){let i,l;e.activeTexture(ui+a[r]),!t||jn(0,t)?(i=t,l=null):(i=t.texture,l=t.sampler),e.bindSampler(n,l),e.bindTexture(o,i)}))}:function(t){e.uniform1iv(r,a),t.forEach((function(t,n){e.activeTexture(ui+a[n]),e.bindTexture(o,t)}))}}function Ri(e,t){return function(n){if(n.value)switch(e.disableVertexAttribArray(t),n.value.length){case 4:e.vertexAttrib4fv(t,n.value);break;case 3:e.vertexAttrib3fv(t,n.value);break;case 2:e.vertexAttrib2fv(t,n.value);break;case 1:e.vertexAttrib1fv(t,n.value);break;default:throw new Error("the length of a float constant value must be between 1 and 4!")}else e.bindBuffer(Ai,n.buffer),e.enableVertexAttribArray(t),e.vertexAttribPointer(t,n.numComponents||n.size,n.type||5126,n.normalize||!1,n.stride||0,n.offset||0),e.vertexAttribDivisor&&e.vertexAttribDivisor(t,n.divisor||0)}}function Ii(e,t){return function(n){if(n.value){if(e.disableVertexAttribArray(t),4!==n.value.length)throw new Error("The length of an integer constant value must be 4!");e.vertexAttrib4iv(t,n.value)}else e.bindBuffer(Ai,n.buffer),e.enableVertexAttribArray(t),e.vertexAttribIPointer(t,n.numComponents||n.size,n.type||5124,n.stride||0,n.offset||0),e.vertexAttribDivisor&&e.vertexAttribDivisor(t,n.divisor||0)}}function yi(e,t){return function(n){if(n.value){if(e.disableVertexAttribArray(t),4!==n.value.length)throw new Error("The length of an unsigned integer constant value must be 4!");e.vertexAttrib4uiv(t,n.value)}else e.bindBuffer(Ai,n.buffer),e.enableVertexAttribArray(t),e.vertexAttribIPointer(t,n.numComponents||n.size,n.type||5125,n.stride||0,n.offset||0),e.vertexAttribDivisor&&e.vertexAttribDivisor(t,n.divisor||0)}}function Vi(e,t,n){const r=n.size,i=n.count;return function(n){e.bindBuffer(Ai,n.buffer);const o=n.size||n.numComponents||r,a=o/i,l=n.type||5126,c=Fi[l].size*o,s=n.normalize||!1,d=n.offset||0,u=c/i;for(let r=0;r<i;++r)e.enableVertexAttribArray(t+r),e.vertexAttribPointer(t+r,a,l,s,c,d+u*r),e.vertexAttribDivisor&&e.vertexAttribDivisor(t+r,n.divisor||0)}}Fi[5126]={Type:Float32Array,size:4,setter:function(e,t){return function(n){e.uniform1f(t,n)}},arraySetter:function(e,t){return function(n){e.uniform1fv(t,n)}}},Fi[35664]={Type:Float32Array,size:8,setter:function(e,t){return function(n){e.uniform2fv(t,n)}},cols:2},Fi[35665]={Type:Float32Array,size:12,setter:function(e,t){return function(n){e.uniform3fv(t,n)}},cols:3},Fi[35666]={Type:Float32Array,size:16,setter:function(e,t){return function(n){e.uniform4fv(t,n)}},cols:4},Fi[5124]={Type:Int32Array,size:4,setter:pi,arraySetter:mi},Fi[35667]={Type:Int32Array,size:8,setter:Ui,cols:2},Fi[35668]={Type:Int32Array,size:12,setter:bi,cols:3},Fi[35669]={Type:Int32Array,size:16,setter:Zi,cols:4},Fi[5125]={Type:Uint32Array,size:4,setter:function(e,t){return function(n){e.uniform1ui(t,n)}},arraySetter:function(e,t){return function(n){e.uniform1uiv(t,n)}}},Fi[36294]={Type:Uint32Array,size:8,setter:function(e,t){return function(n){e.uniform2uiv(t,n)}},cols:2},Fi[36295]={Type:Uint32Array,size:12,setter:function(e,t){return function(n){e.uniform3uiv(t,n)}},cols:3},Fi[36296]={Type:Uint32Array,size:16,setter:function(e,t){return function(n){e.uniform4uiv(t,n)}},cols:4},Fi[35670]={Type:Uint32Array,size:4,setter:pi,arraySetter:mi},Fi[35671]={Type:Uint32Array,size:8,setter:Ui,cols:2},Fi[35672]={Type:Uint32Array,size:12,setter:bi,cols:3},Fi[35673]={Type:Uint32Array,size:16,setter:Zi,cols:4},Fi[35674]={Type:Float32Array,size:32,setter:function(e,t){return function(n){e.uniformMatrix2fv(t,!1,n)}},rows:2,cols:2},Fi[35675]={Type:Float32Array,size:48,setter:function(e,t){return function(n){e.uniformMatrix3fv(t,!1,n)}},rows:3,cols:3},Fi[35676]={Type:Float32Array,size:64,setter:function(e,t){return function(n){e.uniformMatrix4fv(t,!1,n)}},rows:4,cols:4},Fi[35685]={Type:Float32Array,size:32,setter:function(e,t){return function(n){e.uniformMatrix2x3fv(t,!1,n)}},rows:2,cols:3},Fi[35686]={Type:Float32Array,size:32,setter:function(e,t){return function(n){e.uniformMatrix2x4fv(t,!1,n)}},rows:2,cols:4},Fi[35687]={Type:Float32Array,size:48,setter:function(e,t){return function(n){e.uniformMatrix3x2fv(t,!1,n)}},rows:3,cols:2},Fi[35688]={Type:Float32Array,size:48,setter:function(e,t){return function(n){e.uniformMatrix3x4fv(t,!1,n)}},rows:3,cols:4},Fi[35689]={Type:Float32Array,size:64,setter:function(e,t){return function(n){e.uniformMatrix4x2fv(t,!1,n)}},rows:4,cols:2},Fi[35690]={Type:Float32Array,size:64,setter:function(e,t){return function(n){e.uniformMatrix4x3fv(t,!1,n)}},rows:4,cols:3},Fi[35678]={Type:null,size:0,setter:Bi,arraySetter:fi,bindPoint:3553},Fi[35680]={Type:null,size:0,setter:Bi,arraySetter:fi,bindPoint:hi},Fi[35679]={Type:null,size:0,setter:Bi,arraySetter:fi,bindPoint:32879},Fi[35682]={Type:null,size:0,setter:Bi,arraySetter:fi,bindPoint:3553},Fi[36289]={Type:null,size:0,setter:Bi,arraySetter:fi,bindPoint:gi},Fi[36292]={Type:null,size:0,setter:Bi,arraySetter:fi,bindPoint:gi},Fi[36293]={Type:null,size:0,setter:Bi,arraySetter:fi,bindPoint:hi},Fi[36298]={Type:null,size:0,setter:Bi,arraySetter:fi,bindPoint:3553},Fi[36299]={Type:null,size:0,setter:Bi,arraySetter:fi,bindPoint:32879},Fi[36300]={Type:null,size:0,setter:Bi,arraySetter:fi,bindPoint:hi},Fi[36303]={Type:null,size:0,setter:Bi,arraySetter:fi,bindPoint:gi},Fi[36306]={Type:null,size:0,setter:Bi,arraySetter:fi,bindPoint:3553},Fi[36307]={Type:null,size:0,setter:Bi,arraySetter:fi,bindPoint:32879},Fi[36308]={Type:null,size:0,setter:Bi,arraySetter:fi,bindPoint:hi},Fi[36311]={Type:null,size:0,setter:Bi,arraySetter:fi,bindPoint:gi};const Ci={};Ci[5126]={size:4,setter:Ri},Ci[35664]={size:8,setter:Ri},Ci[35665]={size:12,setter:Ri},Ci[35666]={size:16,setter:Ri},Ci[5124]={size:4,setter:Ii},Ci[35667]={size:8,setter:Ii},Ci[35668]={size:12,setter:Ii},Ci[35669]={size:16,setter:Ii},Ci[5125]={size:4,setter:yi},Ci[36294]={size:8,setter:yi},Ci[36295]={size:12,setter:yi},Ci[36296]={size:16,setter:yi},Ci[35670]={size:4,setter:Ii},Ci[35671]={size:8,setter:Ii},Ci[35672]={size:12,setter:Ii},Ci[35673]={size:16,setter:Ii},Ci[35674]={size:4,setter:Vi,count:2},Ci[35675]={size:9,setter:Vi,count:3},Ci[35676]={size:16,setter:Vi,count:4};const Wi=/ERROR:\s*\d+:(\d+)/gi;const Ei=/^[ \t]*\n/;function vi(e){let t=0;return Ei.test(e)&&(t=1,e=e.replace(Ei,"")),{lineOffset:t,shaderSource:e}}function Si(e,t,n,r){if(r=r||si,!e.getShaderParameter(n,35713)){const i=e.getShaderInfoLog(n),o=vi(e.getShaderSource(n)),a=o.lineOffset,l=`${function(e,t,n){void 0===t&&(t=""),void 0===n&&(n=0);const r=[...t.matchAll(Wi)],i=new Map(r.map((e,n)=>{const i=parseInt(e[1]),o=r[n+1],a=o?o.index:t.length;return[i-1,t.substring(e.index,a)]}));return e.split("\n").map((e,t)=>{const r=i.get(t);return`${t+1+n}: ${e}${r?"\n\n^^^ "+r:""}`}).join("\n")}(o.shaderSource,i,a)}\nError compiling ${hr(e,t)}: ${i}`;return r(l),l}return""}function Ji(e,t,n){let r,i,o;if("function"==typeof t&&(n=t,t=void 0),"function"==typeof e)n=e,e=void 0;else if(e&&!Array.isArray(e)){const t=e;n=t.errorCallback,e=t.attribLocations,r=t.transformFeedbackVaryings,i=t.transformFeedbackMode,o=t.callback}const a=n||si,l=[],c={errorCallback(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];l.push(e),a(e,...n)},transformFeedbackVaryings:r,transformFeedbackMode:i,callback:o,errors:l};{let n={};Array.isArray(e)?e.forEach((function(e,r){n[e]=t?t[r]:r})):n=e||{},c.attribLocations=n}return c}const Gi=["VERTEX_SHADER","FRAGMENT_SHADER"];function Ni(e,t){return t.indexOf("frag")>=0?35632:t.indexOf("vert")>=0?35633:void 0}const Xi=function(t){return void 0===t&&(t=0),new e(e=>setTimeout(e,t))};function ki(e,t,n,r,i){const o=Ji(n,r,i),a=new Set(t),l=function(e,t,n){const r=e.createProgram(),i=Ji(n),o=i.attribLocations,a=i.transformFeedbackVaryings,l=i.transformFeedbackMode;for(let n=0;n<t.length;++n){let i=t[n];if("string"==typeof i){const t=di(i),o=t?t.text:i;let a=e[Gi[n]];t&&t.type&&(a=Ni(0,t.type)||a),i=e.createShader(a),e.shaderSource(i,vi(o).shaderSource),e.compileShader(i),e.attachShader(r,i)}}Object.entries(o).forEach(t=>{let n=t[0],i=t[1];return e.bindAttribLocation(r,i,n)});{let t=a;t&&(t.attribs&&(t=t.attribs),Array.isArray(t)||(t=Object.keys(t)),e.transformFeedbackVaryings(r,t,l||35981))}return e.linkProgram(r),r}(e,t,o);function c(e,t){const n=function(e,t,n){if(n=n||si,!e.getProgramParameter(t,35714)){const r=e.getProgramInfoLog(t);n("Error in program linking: "+r);const i=e.getAttachedShaders(t).map(t=>Si(e,e.getShaderParameter(t,e.SHADER_TYPE),t,n));return`${r}\n${i.filter(e=>e).join("\n")}`}}(e,t,o.errorCallback);return n&&function(e,t,n){for(var r,i=A(e.getAttachedShaders(t));!(r=i()).done;){const t=r.value;n.has(t)&&e.deleteShader(t)}e.deleteProgram(t)}(e,t,a),n}if(!o.callback)return c(e,l)?void 0:l;(function(e,t){return Ti.apply(this,arguments)})(e,l).then(()=>{const t=c(e,l);o.callback(t,t?void 0:l)})}function Ti(){return(Ti=(0,c.default)(o.default.mark((function e(t,n){var r,i,a;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=t.getExtension("KHR_parallel_shader_compile"),i=r?(e,t)=>e.getProgramParameter(t,r.COMPLETION_STATUS_KHR):()=>!0,a=0;case 2:return e.next=4,Xi(a);case 4:a=1e3/60;case 5:if(!i(t,n)){e.next=2;break}case 6:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Yi(e){const t=e.name;return t.startsWith("gl_")||t.startsWith("webgl_")}const wi=/(\.|\[|]|\w+)/g,Di=e=>e>="0"&&e<="9";function xi(e,t,n,r){const i=e.split(wi).filter(e=>""!==e);let o=0,a="";for(;;){const e=i[o++];a+=e;const l=Di(e[0]),c=l?parseInt(e):e;if(l&&(a+=i[o++]),o===i.length){n[c]=t;break}{const e=i[o++],t="["===e,l=n[c]||(t?[]:{});n[c]=l,n=l,r[a]=r[a]||function(e){return function(t){Mi(e,t)}}(l),a+=e}}}function Mi(e,t){for(const n in t){const r=e[n];"function"==typeof r?r(t[n]):Mi(e[n],t[n])}}function Hi(e,t){const n=function(e,t){let n=0;function r(t,r,i){const o=r.name.endsWith("[0]"),a=r.type,l=Fi[a];if(!l)throw new Error("unknown type: 0x"+a.toString(16));let c;if(l.bindPoint){const t=n;n+=r.size,c=o?l.arraySetter(e,a,t,i,r.size):l.setter(e,a,t,i,r.size)}else c=l.arraySetter&&o?l.arraySetter(e,i):l.setter(e,i);return c.location=i,c}const i={},o={},a=e.getProgramParameter(t,35718);for(let n=0;n<a;++n){const a=e.getActiveUniform(t,n);if(Yi(a))continue;let l=a.name;l.endsWith("[0]")&&(l=l.substr(0,l.length-3));const c=e.getUniformLocation(t,a.name);if(c){const e=r(0,a,c);i[l]=e,xi(l,e,o,i)}}return i}(e,t),r=function(e,t){const n={},r=e.getProgramParameter(t,35721);for(let i=0;i<r;++i){const r=e.getActiveAttrib(t,i);if(Yi(r))continue;const o=e.getAttribLocation(t,r.name),a=Ci[r.type],l=a.setter(e,o,a);l.location=o,n[r.name]=l}return n}(e,t),i={program:t,uniformSetters:n,attribSetters:r};return Ar(e)&&(i.uniformBlockSpec=function(e,t){const n=e.getProgramParameter(t,35718),r=[],i=[];for(let o=0;o<n;++o){i.push(o),r.push({});const n=e.getActiveUniform(t,o);r[o].name=n.name}[["UNIFORM_TYPE","type"],["UNIFORM_SIZE","size"],["UNIFORM_BLOCK_INDEX","blockNdx"],["UNIFORM_OFFSET","offset"]].forEach((function(n){const o=n[0],a=n[1];e.getActiveUniforms(t,i,e[o]).forEach((function(e,t){r[t][a]=e}))}));const o={},a=e.getProgramParameter(t,35382);for(let n=0;n<a;++n){const r=e.getActiveUniformBlockName(t,n),i={index:e.getUniformBlockIndex(t,r),usedByVertexShader:e.getActiveUniformBlockParameter(t,n,35396),usedByFragmentShader:e.getActiveUniformBlockParameter(t,n,35398),size:e.getActiveUniformBlockParameter(t,n,35392),uniformIndices:e.getActiveUniformBlockParameter(t,n,35395)};i.used=i.usedByVertexShader||i.usedByFragmentShader,o[r]=i}return{blockSpecs:o,uniformData:r}}(e,t),i.transformFeedbackInfo=function(e,t){const n={},r=e.getProgramParameter(t,35971);for(let i=0;i<r;++i){const r=e.getTransformFeedbackVarying(t,i);n[r.name]={index:i,type:r.type,size:r.size}}return n}(e,t)),i}const Ki=/\s|{|}|;/;function Li(e,t,n,r,i){const o=Ji(n,r,i),a=[];if(t=t.map((function(e){if(!Ki.test(e)){const t=di(e);if(t)e=t.text;else{const t="no element with id: "+e;o.errorCallback(t),a.push(t)}}return e})),a.length)return function(e,t){return e.errorCallback(t),e.callback&&setTimeout(()=>{e.callback(`${t}\n${e.errors.join("\n")}`)}),null}(o,"");const l=o.callback;l&&(o.callback=(t,n)=>{l(t,t?void 0:Hi(e,n))});const c=function(e,t,n,r,i){return ki(e,t,n,r,i)}(e,t,o);return c?Hi(e,c):null}const zi=36161,Oi=36096,ji=[{format:6408,type:5121,min:9729,wrap:33071},{format:34041}],Pi={};Pi[34041]=33306,Pi[6401]=36128,Pi[36168]=36128,Pi[6402]=Oi,Pi[33189]=Oi,Pi[33190]=Oi,Pi[36012]=Oi,Pi[35056]=33306,Pi[36013]=33306;const _i={};_i[32854]=!0,_i[32855]=!0,_i[36194]=!0,_i[34041]=!0,_i[33189]=!0,_i[6401]=!0,_i[36168]=!0;function qi(e,t,n,r){const i=36160,o=e.createFramebuffer();e.bindFramebuffer(i,o),n=n||e.drawingBufferWidth,r=r||e.drawingBufferHeight;const a=[],l={framebuffer:o,attachments:[],width:n,height:r};return(t=t||ji).forEach((function(t,o){let c=t.attachment;const s=t.samples,d=t.format;let u=t.attachmentPoint||function(e,t){return Pi[e]||Pi[t]}(d,t.internalFormat);if(u||(u=36064+o),function(e){return e>=36064&&e<36096}(u)&&a.push(u),!c)if(void 0!==s||function(e){return _i[e]}(d))c=e.createRenderbuffer(),e.bindRenderbuffer(zi,c),s>1?e.renderbufferStorageMultisample(zi,s,d,n,r):e.renderbufferStorage(zi,d,n,r);else{const i=Object.assign({},t);i.width=n,i.height=r,void 0===i.auto&&(i.auto=!1,i.min=i.min||i.minMag||9729,i.mag=i.mag||i.minMag||9729,i.wrapS=i.wrapS||i.wrap||33071,i.wrapT=i.wrapT||i.wrap||33071),c=ci(e,i)}if(function(e,t){return typeof WebGLRenderbuffer<"u"&&On(t,"WebGLRenderbuffer")}(0,c))e.framebufferRenderbuffer(i,u,zi,c);else{if(!jn(0,c))throw new Error("unknown attachment type");void 0!==t.layer?e.framebufferTextureLayer(i,u,c,t.level||0,t.layer):e.framebufferTexture2D(i,u,t.target||3553,c,t.level||0)}l.attachments.push(c)})),e.drawBuffers&&e.drawBuffers(a),l}function $i(e,t){return()=>t instanceof WebGLTexture?t:ci(e,{src:t,wrap:e.CLAMP_TO_EDGE})}let eo=function(){function e(e){this.id="_";const t=e.context,n=e.width,r=e.height;this.context=t,this.options=e;const i=this.buildDefines();this.programInfo=Li(this.context,[i+this.getVertexShader(),i+this.getFragmentShader()]),this.bufferInfo=ur(this.context,this.getBuffers()),this.fbi=qi(this.context,[{format:this.context.RGBA,type:this.context.UNSIGNED_BYTE,min:this.context.LINEAR,wrap:this.context.CLAMP_TO_EDGE}],n,r),this.output=this.fbi.attachments[0]}var t=e.prototype;return t.resizeOutput=function(e,t){this.fbi=qi(this.context,[{format:this.context.RGBA,type:this.context.UNSIGNED_BYTE,min:this.context.LINEAR,wrap:this.context.CLAMP_TO_EDGE}],e,t),this.options.width=e,this.options.height=t,this.output=this.fbi.attachments[0]},t.getDefines=function(){return{}},t.getBuffers=function(){return{position:{numComponents:2,data:[-1,-1,-1,1,1,-1,1,1,-1,1,1,-1]},texture_coord:{numComponents:2,data:[0,0,0,1,1,0,1,1,0,1,1,0]}}},t.buildDefines=function(){let e="";const t=this.getDefines();for(let n in t)e+=`#define ${n} ${t[n].toFixed(1)}\n`;return e},t.run=function(e){var t,n,r,i,o,a;null==(t=this.profiler)||t.pushContext(`[${this.id}] PROG : ${this.constructor.name}`),null==(n=this.profiler)||n.pushContext(`[${this.id}] UNIFORMS`);for(const t in e)"function"==typeof e[t]&&(null==(r=this.profiler)||r.pushContext(`[${this.id}] UNI : ${t}`),e[t]=e[t](),null==(i=this.profiler)||i.popContext(`[${this.id}] UNI : ${t}`));null==(o=this.profiler)||o.popContext(`[${this.id}] UNIFORMS`);const l=Date.now();let c=0;this.lastRun&&(c=(l-this.lastRun)/1e3),this.lastRun=l,this.context.viewport(0,0,this.context.canvas.width,this.context.canvas.height),this.context.useProgram(this.programInfo.program),function(e,t,n){n.vertexArrayObject?e.bindVertexArray(n.vertexArrayObject):(function(e,t){for(const n in t){const r=e[n];r&&r(t[n])}}(t.attribSetters||t,n.attribs),n.indices&&e.bindBuffer(34963,n.indices))}(this.context,this.programInfo,this.bufferInfo),function e(t){const n=t.uniformSetters||t,r=arguments.length<=1?0:arguments.length-1;for(let t=0;t<r;++t){const r=t+1<1||arguments.length<=t+1?void 0:arguments[t+1];if(Array.isArray(r)){const t=r.length;for(let i=0;i<t;++i)e(n,r[i])}else for(const e in r){const t=n[e];t&&t(r[e])}}}(this.programInfo,Object.assign({delta:c,canvas:[this.context.canvas.width,this.context.canvas.height]},e)),function(e,t,n){n=n||36160,t?(e.bindFramebuffer(n,t.framebuffer),e.viewport(0,0,t.width,t.height)):(e.bindFramebuffer(n,null),e.viewport(0,0,e.drawingBufferWidth,e.drawingBufferHeight))}(this.context,this.options.disableFramebuffer?null:this.fbi),function(e,t,n,r,i,o){n=void 0===n?4:n;const a=t.indices,l=t.elementType,c=void 0===r?t.numElements:r;i=void 0===i?0:i,l||a?void 0!==o?e.drawElementsInstanced(n,c,void 0===l?5123:t.elementType,i,o):e.drawElements(n,c,void 0===l?5123:t.elementType,i):void 0!==o?e.drawArraysInstanced(n,i,c,o):e.drawArrays(n,i,c)}(this.context,this.bufferInfo),null==(a=this.profiler)||a.popContext(`[${this.id}] PROG : ${this.constructor.name}`)},t.setProfiler=function(e){this.profiler=e},e}();let to=function(e){function t(){return e.apply(this,arguments)||this}(0,a.default)(t,e);var n=t.prototype;return n.getFragmentShader=function(){return"precision mediump float;\n\nvarying vec2 _texture_coord;\n\nuniform sampler2D background;\nuniform sampler2D foreground;\nuniform sampler2D threshold;\n\nvoid main() {\n vec4 backgroundColor = texture2D(background, _texture_coord);\n vec4 foregroundColor = texture2D(foreground, _texture_coord);\n vec4 tresholdColor = texture2D(threshold, _texture_coord);\n gl_FragColor = foregroundColor * tresholdColor.a +\n backgroundColor * (1. - tresholdColor.a);\n}\n"},n.getVertexShader=function(){return"varying vec2 _texture_coord;\n\nattribute vec2 position;\nattribute vec2 texture_coord;\n\nvoid main() {\n gl_Position = vec4(position, 0., 1.);\n _texture_coord = texture_coord;\n _texture_coord.y = 1. - texture_coord.y;\n}\n"},t}(eo),no=function(){function e(){this.steps=[]}var t=e.prototype;return t.addStep=function(e){this.steps.push(e)},t.run=function(){var e=(0,c.default)(o.default.mark((function e(){var t,n,r;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(t=A(this.steps);!(n=t()).done;)(r=n.value).program.run(r.getUniforms());case 1:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),t.resizeOutput=function(e,t){var n,r;null==(n=this.profiler)||n.pushContext(`PIP [${this.constructor.name}]`);for(var i,o=A(this.steps);!(i=o()).done;){const n=i.value;n.preventResize||n.program.resizeOutput(e,t)}null==(r=this.profiler)||r.popContext(`PIP [${this.constructor.name}]`)},t.setProfiler=function(e){this.profiler=e;for(var t,n=A(this.steps);!(t=n()).done;){t.value.program.setProfiler(e)}},t.setId=function(e){for(var t,n=A(this.steps);!(t=n()).done;){t.value.program.id=e}},e}(),ro=function(e){function t(){var t;return(t=e.apply(this,arguments)||this).preciseMaskEnabled=!1,t}return(0,a.default)(t,e),t}(no),io=function(e){function t(t){var n;(n=e.call(this)||this).context=t,n.preciseMaskEnabled=!0;const r={context:t,height:t.canvas.height,width:t.canvas.width},i=new to(Object.assign({},r,{disableFramebuffer:!0}));return n.addStep({program:i,getUniforms:()=>({background:$i(t,n.inputBackgroundImage),foreground:$i(t,n.inputImage),threshold:$i(t,n.inputMask)})}),n}return(0,a.default)(t,e),t.prototype.setData=function(e,t){this.inputImage=e,this.inputMask=t},t}(ro);let oo=function(e){function t(){return e.apply(this,arguments)||this}(0,a.default)(t,e);var n=t.prototype;return n.getFragmentShader=function(){return"precision mediump float;\n\nvarying vec2 _texture_coord;\nuniform sampler2D texture;\n\nvoid main() { gl_FragColor = texture2D(texture, _texture_coord); }\n"},n.getVertexShader=function(){return"varying vec2 _texture_coord;\n\nattribute vec2 position;\nattribute vec2 texture_coord;\nuniform bool invert_y;\n\nvoid main() {\n gl_Position = vec4(position, 0., 1.);\n _texture_coord = texture_coord;\n if (invert_y) {\n _texture_coord.y = 1. - texture_coord.y;\n }\n}\n"},t}(eo),ao=function(e){function t(t,n,r){var i;(i=e.call(this)||this).context=t;const o={context:t,height:r,width:n};return i.addStep({program:new oo(Object.assign({},o,{disableFramebuffer:!0})),getUniforms:()=>({texture:$i(t,i.inputImage),invert_y:!0})}),i}return(0,a.default)(t,e),t.prototype.setData=function(e){this.inputImage=e},t}(no);function lo(e){return co.apply(this,arguments)}function co(){return(co=(0,c.default)(o.default.mark((function t(n){return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",new e(e=>{setTimeout(()=>{e()},n)}));case 1:case"end":return t.stop()}}),t)})))).apply(this,arguments)}var so=(e=>(e[e.LINEAR=0]="LINEAR",e[e.GAUSSIAN=1]="GAUSSIAN",e))(so||{});let uo=function(e){function t(){return e.apply(this,arguments)||this}(0,a.default)(t,e);var n=t.prototype;return n.getDefines=function(){var e;return{RADIUS:null!=(e=this.options.radius)?e:1}},n.getFragmentShader=function(){return"precision mediump float;\n\nvarying vec2 _texture_coord;\n\nuniform vec2 canvas;\nuniform sampler2D texture;\n\nvec4 loop();\n\nvoid main() { gl_FragColor = loop(); }\n"+this.createLoopFunction()},n.getVertexShader=function(){return"varying vec2 _texture_coord;\n\nattribute vec2 position;\nattribute vec2 texture_coord;\n\nvoid main() {\n gl_Position = vec4(position, 0., 1.);\n _texture_coord = texture_coord;\n}\n"},n.createLoopFunction=function(){var e;let t=null!=(e=this.options.radius)?e:1;return`\n\n vec4 loop() { \n vec4 result = vec4(0,0,0,0);\n float factorSum = 0.;\n\n vec2 normalizedRadius = vec2(-${t}.) / canvas;\n vec2 normalizedIncrement = vec2(1.) / canvas;\n vec2 diff = normalizedRadius;\n\n for(int y=-${t}; y<${t+1}; ++y) {\n for(int x=-${t}; x<${t+1}; ++x) {\n float factor = 1.;\n result += factor * texture2D(texture, _texture_coord + diff);\n factorSum += factor;\n diff.x += normalizedIncrement.x;\n }\n diff.y += normalizedIncrement.y;\n diff.x = normalizedRadius.x;\n }\n return result / factorSum;\n }`},n.getFactor=function(e,t){switch(this.options.type){case 1:return this.getLinearFactor(e,t);case 0:default:return this.getLinearFactor(e,t)}},n.getLinearFactor=function(e,t){return 1},n.getGaussianFactor=function(e,t){var n;const r=2*Math.PI,i=Math.max(null!=(n=this.options.radius)?n:1,1),o=1/(r*Math.pow(i,2)),a=o*-(Math.pow(e,2)+Math.pow(t,2));return o*Math.pow(Math.E,a)},t}(eo);let Ao=function(e){function t(){return e.apply(this,arguments)||this}(0,a.default)(t,e);var n=t.prototype;return n.getFragmentShader=function(){return"#version 300 es\n// https://github.com/Volcomix/virtual-background/blob/main/src/pipelines/webgl2/jointBilateralFilterStage.ts\n\nprecision highp float;\nuniform sampler2D input_frame;\nuniform sampler2D segmentation_mask;\nuniform sampler2D threshold;\nuniform vec2 texel_size;\nuniform float step;\nuniform float radius;\nuniform float offset;\nuniform float sigma_texel;\nuniform float sigma_color;\n\nin vec2 _texture_coord;\nout vec4 outColor;\n\nfloat gaussian(float x, float sigma) {\n float coeff = -0.5 / (sigma * sigma * 4.0 + 1.0e-6);\n return exp((x * x) * coeff);\n}\n\nvoid main() {\n vec2 centerCoord = _texture_coord;\n vec3 centerColor = texture(input_frame, centerCoord).rgb;\n float newVal = 0.0;\n float spaceWeight = 0.0;\n float colorWeight = 0.0;\n float totalWeight = 0.0;\n // Subsample kernel space.\n for (float i = -radius + offset; i <= radius; i += step) {\n for (float j = -radius + offset; j <= radius; j += step) {\n vec2 shift = vec2(j, i) * texel_size;\n vec2 coord = vec2(centerCoord + shift);\n vec3 frameColor = texture(input_frame, coord).rgb;\n float threshold = texture(threshold, coord).a;\n float outVal = texture(segmentation_mask, coord).a;\n\n spaceWeight = gaussian(distance(centerCoord, coord), sigma_texel);\n colorWeight = gaussian(distance(centerColor, frameColor), sigma_color);\n totalWeight += spaceWeight * colorWeight;\n newVal += spaceWeight * colorWeight * outVal * threshold;\n }\n }\n newVal /= totalWeight;\n outColor = vec4(vec3(0.), newVal);\n}"},n.getVertexShader=function(){return"#version 300 es\nin vec2 position;\nin vec2 texture_coord;\nout vec2 _texture_coord;\nvoid main() {\n gl_Position = vec4(position, 0.0, 1.0);\n _texture_coord = texture_coord;\n}"},t}(eo),ho=function(e){function t(t,n,r){var i;(i=e.call(this)||this).context=t;const o={context:t,height:r,width:n},a=new uo(Object.assign({},o,{radius:1,type:so.GAUSSIAN}));return i.jointBilateral=new Ao(o),i.addStep({program:a,getUniforms:()=>({inputs:$i(t,i.inputMask)})}),i.addStep({program:i.jointBilateral,getUniforms:()=>{var e,n,r,o,a,l;const c=null!=(e=null==(r=i.inputImage)?void 0:r.width)?e:1,s=null!=(n=null==(o=i.inputImage)?void 0:o.height)?n:1;null==(a=i.inputMask)||a.width,null==(l=i.inputMask)||l.height;const d=Math.max(1,.66*Math.sqrt(3)),u=1/c,A=1/s;return{input_frame:$i(t,i.inputImage),segmentation_mask:$i(t,i.inputMask),texel_size:[u,A],step:d,radius:3,offset:d>1?.5*d:0,sigma_texel:3*Math.max(u,A),sigma_color:3}}}),i.output=i.jointBilateral.output,i}(0,a.default)(t,e);var n=t.prototype;return n.setData=function(e,t){this.previousInputImage=this.inputImage?this.inputImage:e,this.previousInputMask=this.inputMask?this.inputMask:t,this.inputImage=e,this.inputMask=t},n.resizeOutput=function(t,n){e.prototype.resizeOutput.call(this,t,n),this.output=this.jointBilateral.output},t}(no);var go=(e=>(e.PUSH="PUSH",e.POP="POP",e))(go||{});let Fo=function(){function t(e){this.queries=[],this.context=e,this.extension=e.getExtension("EXT_disjoint_timer_query_webgl2")}var n=t.prototype;return n.start=function(){},n.stop=function(){this.activeQuery&&this.context.endQuery(this.extension.TIME_ELAPSED_EXT)},n.pushContext=function(e){this.createQuery("PUSH",e)},n.popContext=function(e){this.createQuery("POP",e)},n.createQuery=function(e,t){this.activeQuery&&this.context.endQuery(this.extension.TIME_ELAPSED_EXT),this.activeQuery=this.context.createQuery(),this.context.beginQuery(this.extension.TIME_ELAPSED_EXT,this.activeQuery),this.queries.push({name:t,action:e,query:this.activeQuery})},n.getResolvedQueries=function(){var t=(0,c.default)(o.default.mark((function t(){var n,r;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.all([...this.queries].map(e=>this.resolveQuery(e)));case 2:for(n=t.sent.filter(e=>e),r=1;r<n.length;++r)n[r].timestamp+=n[r-1].duration+n[r-1].timestamp;return t.abrupt("return",n);case 5:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),n.resolveQuery=function(){var e=(0,c.default)(o.default.mark((function e(t){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.awaitQueryAvailable(t);case 2:if(e.sent){e.next=5;break}return console.log("Unawaitable query",t),e.abrupt("return");case 5:if(!this.context.getParameter(this.extension.GPU_DISJOINT_EXT)){e.next=8;break}return console.log("Disjointed query",t),e.abrupt("return");case 8:return e.abrupt("return",Object.assign({},t,{duration:this.context.getQueryParameter(t.query,this.context.QUERY_RESULT),timestamp:0}));case 9:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),n.awaitQueryAvailable=function(){var e=(0,c.default)(o.default.mark((function e(t){var n;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=0;case 1:if(!(n<10)){e.next=9;break}if(!this.context.getQueryParameter(t.query,this.context.QUERY_RESULT_AVAILABLE)){e.next=4;break}return e.abrupt("return",t);case 4:return e.next=6,lo(200);case 6:++n,e.next=1;break;case 9:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),t}(),Qo=function(){function e(){this.previousImageWidth=0,this.previousImageHeight=0,this.previousMaskWidth=2,this.previousMaskHeight=2,this.postProcessingEnabled=!0;const e=new OffscreenCanvas(0,0),t=e.getContext("webgl2");if(!t)throw"Fail to retrieve webgl2 context";this.canvas=e,this.context=t,this.improveMask=new ho(this.context,2,2)}var t=e.prototype;return t.enablePostProcessing=function(){this.postProcessingEnabled=!0},t.disablePostProcessing=function(){this.postProcessingEnabled=!1},t.profileWebgl=function(){var e=(0,c.default)(o.default.mark((function e(t){var n;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=new Fo(this.context),this.profiler=n,n.start(),e.next=5,lo(t);case 5:return this.profiler=void 0,n.stop(),e.abrupt("return",n.getResolvedQueries());case 8:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),t.render=function(){var e=(0,c.default)(o.default.mark((function e(t,n){var r,i,a,l,c;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.pipeline){e.next=2;break}throw"missing pipeline";case 2:return(this.previousImageHeight!==t.height||this.previousImageWidth!==t.width)&&this.resizeOutput(t.width,t.height),(this.previousMaskHeight!==n.height||this.previousMaskWidth!==n.width)&&(this.improveMask.resizeOutput(n.width,n.height),this.previousMaskWidth=n.width,this.previousMaskHeight=n.height),a="renderer",null==(r=this.profiler)||r.pushContext(a),this.improveMask.setProfiler(this.profiler),this.pipeline.setProfiler(this.profiler),e.next=7,createImageBitmap(n);case 7:return l=e.sent,c=l,this.postProcessingEnabled&&(this.improveMask.setData(t,l),this.improveMask.run(),c=this.improveMask.output),this.pipeline.setData(t,c),e.next=13,this.pipeline.run();case 13:return null==(i=this.profiler)||i.popContext(a),e.abrupt("return",this.canvas);case 15:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),t.resizeOutput=function(e,t){var n;this.canvas.width=e,this.canvas.height=t,null==(n=this.pipeline)||n.resizeOutput(e,t),this.previousImageWidth=e,this.previousImageHeight=t},t.destroy=function(){var e;const t=null==(e=this.context)?void 0:e.getExtension("WEBGL_lose_context");t&&t.loseContext()},e}(),po=function(e){function t(){var t;(t=e.call(this)||this).pipeline=new io(t.context);const n=new OffscreenCanvas(0,0),r=n.getContext("webgl2");if(!r)throw"Fail to retrieve webgl context";return t.backgroundImageResizerCanvas=n,t.backgroundImageResizerContext=r,t.backgroundImageResizer=new ao(t.backgroundImageResizerContext,0,0),t}(0,a.default)(t,e);var n=t.prototype;return n.setBackgroundImage=function(e){this.backgroundImage=e,this.updateBackgroundImage()},n.updateBackgroundImage=function(){const e=this.canvas,t=e.width,n=e.height;this.backgroundImageResizer.resizeOutput(t,n),this.backgroundImageResizer.setData(this.backgroundImage),this.backgroundImageResizer.run(),this.pipeline.inputBackgroundImage=this.backgroundImageResizerCanvas},n.resizeOutput=function(t,n){e.prototype.resizeOutput.call(this,t,n),this.backgroundImageResizerCanvas.width=t,this.backgroundImageResizerCanvas.height=n,this.backgroundImageResizer.resizeOutput(t,n),this.updateBackgroundImage()},n.destroy=function(){var t;const n=null==(t=this.backgroundImageResizerContext)?void 0:t.getExtension("WEBGL_lose_context");n&&n.loseContext(),e.prototype.destroy.call(this)},t}(Qo),mo=function(e){function t(){return e.apply(this,arguments)||this}(0,a.default)(t,e);var n=t.prototype;return n.setBackgroundVideo=function(e){this.frameReader=e},n.render=function(){var t=(0,c.default)(o.default.mark((function t(n,r){return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.readNextVideoFrame();case 2:return t.abrupt("return",e.prototype.render.call(this,n,r));case 3:case"end":return t.stop()}}),t,this)})));return function(e,n){return t.apply(this,arguments)}}(),n.readNextVideoFrame=function(){var e=(0,c.default)(o.default.mark((function e(){var t,n,r;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,null==(t=this.frameReader)?void 0:t.read();case 2:if(null==(n=e.sent)||!n.value){e.next=8;break}return e.next=6,createImageBitmap(n.value);case 6:r=e.sent,this.setBackgroundImage(r),n.value.close();case 8:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),t}(po),Uo=function(){function e(){}var t=e.prototype;return t.blurBackground=function(e){return new Tn(e)},t.blurSilhouette=function(e){return new Yn(e)},t.imageBackground=function(){return new wn},t.videoBackground=function(){return new mo},e}();let bo=function(e){function t(){return e.apply(this,arguments)||this}(0,a.default)(t,e);var n=t.prototype;return n.getDefines=function(){var e;return{RADIUS:null!=(e=this.options.radius)?e:1}},n.getFragmentShader=function(){return"precision mediump float;\n\nvarying vec2 _texture_coord;\n\nuniform vec2 canvas;\nuniform sampler2D texture;\nuniform sampler2D mask;\n\nvec4 loop();\n\nvoid main() { gl_FragColor = loop(); }\n"+this.createLoopFunction()},n.getVertexShader=function(){return"varying vec2 _texture_coord;\n\nattribute vec2 position;\nattribute vec2 texture_coord;\n\nvoid main() {\n gl_Position = vec4(position, 0., 1.);\n _texture_coord = texture_coord;\n}\n"},n.createLoopFunction=function(){var e;let t=null!=(e=this.options.radius)?e:1;return`\n\n vec4 loop() { \n vec4 result = vec4(0,0,0,0);\n float factorSum = 0.;\n\n vec2 normalizedRadius = vec2(-${t}.) / canvas;\n vec2 normalizedIncrement = vec2(1.) / canvas;\n vec2 diff = normalizedRadius;\n float maxLength = length(normalizedRadius);\n\n for(int y=-${t}; y<${t+1}; ++y) {\n for(int x=-${t}; x<${t+1}; ++x) {\n float factor = (1.- texture2D(mask, _texture_coord + diff).a) * (maxLength - length(diff)) / maxLength;\n result += factor * texture2D(texture, _texture_coord + diff);\n factorSum += factor;\n diff.x += normalizedIncrement.x;\n }\n diff.y += normalizedIncrement.y;\n diff.x = normalizedRadius.x;\n }\n return result / factorSum;\n }`},t}(eo);let Zo=function(e){function t(t,n){var r;(r=e.call(this)||this).context=t,r.radius=n;const i={context:t,height:t.canvas.height,width:t.canvas.width};r.blur=new bo(Object.assign({},i,{radius:n},r.getBlurTextureSize(t.canvas.width,t.canvas.height)));const o=new to(Object.assign({},i,{disableFramebuffer:!0}));return r.addStep({program:r.blur,preventResize:!0,getUniforms:()=>({texture:$i(t,r.inputImage),mask:$i(t,r.inputMask)})}),r.addStep({program:o,getUniforms:()=>({background:$i(t,r.blur.output),foreground:$i(t,r.inputImage),threshold:$i(t,r.inputMask)})}),r}(0,a.default)(t,e);var n=t.prototype;return n.getBlurTextureSize=function(e,t){const n=this.radius>10?8:2;return{width:Math.max(2,e/n),height:Math.max(2,t/n)}},n.setData=function(e,t){this.inputImage=e,this.inputMask=t},n.resizeOutput=function(t,n){e.prototype.resizeOutput.call(this,t,n);const r=this.getBlurTextureSize(t,n);this.blur.resizeOutput(r.width,r.height)},t}(ro),Bo=function(e){function t(t){var n;return(n=e.call(this)||this).pipeline=new Zo(n.context,t),n.disablePostProcessing(),n}return(0,a.default)(t,e),t}(Qo),fo=function(e){function t(t,n){var r;(r=e.call(this)||this).context=t;const i={context:t,height:t.canvas.height,width:t.canvas.width},o=new uo(Object.assign({},i,{radius:n,type:so.GAUSSIAN})),a=new to(Object.assign({},i,{disableFramebuffer:!0}));return r.addStep({program:o,getUniforms:()=>({texture:$i(t,r.inputImage)})}),r.addStep({program:a,getUniforms:()=>({background:$i(t,r.inputImage),foreground:$i(t,o.output),threshold:$i(t,r.inputMask)})}),r}return(0,a.default)(t,e),t.prototype.setData=function(e,t){this.inputImage=e,this.inputMask=t},t}(ro),Ro=function(e){function t(t){var n;return(n=e.call(this)||this).pipeline=new fo(n.context,t),n.disablePostProcessing(),n}return(0,a.default)(t,e),t}(Qo),Io=function(e){function t(){var t;return(t=e.apply(this,arguments)||this).preciseMaskEnabled=!0,t}(0,a.default)(t,e);var n=t.prototype;return n.run=function(){var t=(0,c.default)(o.default.mark((function t(){return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(t.t0=this.frameReader,!t.t0){t.next=6;break}return t.next=4,this.readNextVideoFrame();case 4:return t.next=6,e.prototype.run.call(this);case 6:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),n.readNextVideoFrame=function(){var e=(0,c.default)(o.default.mark((function e(){var t,n;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,null==(t=this.frameReader)?void 0:t.read();case 2:if(n=e.sent,e.t0=null!=n&&n.value,!e.t0){e.next=9;break}return e.next=7,createImageBitmap(n.value);case 7:this.inputBackgroundImage=e.sent,n.value.close();case 9:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),(0,l.default)(t,[{key:"reader",set:function(e){this.frameReader=e}}]),t}(io),yo=function(e){function t(){var t;return(t=e.call(this)||this).pipeline=new Io(t.context),t}return(0,a.default)(t,e),t.prototype.setBackgroundVideo=function(e){this.pipeline.reader=e},t}(Qo),Vo=function(){function e(){}var t=e.prototype;return t.blurBackground=function(e){return new Bo(e)},t.blurSilhouette=function(e){return new Ro(e)},t.imageBackground=function(){return new po},t.videoBackground=function(){return new yo},e}(),Co=function(){function e(e){switch(e){case We.CANVAS:this.factory=new Uo;break;case We.WEBGL:this.factory=new Vo;break;default:const e=Ne();this.factory=e.supported?new Vo:new Uo}}var t=e.prototype;return t.blurBackground=function(e){return this.getFactory().blurBackground(e)},t.blurSilhouette=function(e){return this.getFactory().blurSilhouette(e)},t.imageBackground=function(){return this.getFactory().imageBackground()},t.videoBackground=function(){return this.getFactory().videoBackground()},t.getFactory=function(){if(!this.factory)throw"Factory is not initialized";return this.factory},e}(),Wo=function(){function e(){}var t=e.prototype;return t.setBackgroundOptions=function(e){var t,n;this.renderer&&this.renderer.destroy();const r=new Co(null==(t=e.renderingOptions)?void 0:t.type);switch(e.transformerType){case"BackgroundBlur":this.renderer=r.blurBackground(this.getBlurSize(e.radius));break;case"SilhouetteBlur":this.renderer=r.blurSilhouette(this.getBlurSize(e.radius));break;case"VideoBackground":const t=r.videoBackground();this.backgroundVideo&&t.setBackgroundVideo(this.backgroundVideo),this.renderer=t;break;case"VirtualBackground":const n=r.imageBackground();this.backgroundImage&&n.setBackgroundImage(this.backgroundImage),this.renderer=n;break;default:throw`Unknown rendering type [${e.transformerType}]`}(null==(n=e.renderingOptions)?void 0:n.type)===We.WEBGL&&(e.renderingOptions.selfieSegmentationType===Ce.PRECISE?this.renderer.enablePostProcessing():e.renderingOptions.selfieSegmentationType===Ce.FAST&&this.renderer.disablePostProcessing())},t.setVideoBGReadable=function(e){this.backgroundVideo=e.getReader();const t=this.renderer;null!=t&&t.setBackgroundVideo&&t.setBackgroundVideo(this.backgroundVideo)},t.setVirtualBGImage=function(){var e=(0,c.default)(o.default.mark((function e(t){var n;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:null!=(n=this.renderer)&&n.setBackgroundImage&&n.setBackgroundImage(t),this.backgroundImage=t;case 2:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),t.process=function(){var e=(0,c.default)(o.default.mark((function e(t,n){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.renderer){e.next=2;break}return e.abrupt("return",this.renderer.render(t,n));case 2:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),t.resizeForeground=function(){var e=(0,c.default)(o.default.mark((function e(t,n){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),t.getBlurSize=function(e){switch(void 0===e&&(e=ye.Low),e){case ye.Low:return 5;case ye.High:return 12}return e},t.profile=function(){var e=(0,c.default)(o.default.mark((function e(t){var n,r;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",null!=(n=null==(r=this.renderer)?void 0:r.profileWebgl(t))?n:[]);case 1:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),e}();let Eo=function(){function t(){this.canvas=new OffscreenCanvas(0,0),this.context=this.canvas.getContext("2d",{willReadFrequently:!0}),this.width=0,this.height=0}var r=t.prototype;return r.createImageSegmenter=function(){var e=(0,c.default)(o.default.mark((function e(){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.ImageSegmenter&&this.wasmFileset){e.next=3;break}return console.warn("Mediapipe objects not loaded"),e.abrupt("return");case 3:return e.next=5,this.ImageSegmenter.createFromOptions(this.wasmFileset,{baseOptions:{modelAssetPath:this.modelAssetUriPath,delegate:"GPU"},runningMode:"VIDEO",outputCategoryMask:!0,outputConfidenceMasks:!0});case 5:this.imageSegmenter=e.sent;case 6:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),r.loadMediapipeAssets=function(){var t=(0,c.default)(o.default.mark((function t(r,i){var a,l,c,s,d;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return this.modelAssetUriPath=r||"https://d3opqjmqzxf057.cloudfront.net/ml/vonage_selfie_segmenter/float16/v1/vonage_selfie_segmenter.tflite",a=i?i+"/task-vision.js":"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@0.10.20/+esm",l=i?i+"/wasm":"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@0.10.20/wasm",t.next=5,(t=>new e(e=>e(""+t)).then(e=>u(n(751)(e))))(a);case 5:return c=t.sent,s=c.FilesetResolver,d=c.ImageSegmenter,this.ImageSegmenter=d,t.next=11,s.forVisionTasks(l);case 11:this.wasmFileset=t.sent;case 12:case"end":return t.stop()}}),t,this)})));return function(e,n){return t.apply(this,arguments)}}(),r.init=function(){var e=(0,c.default)(o.default.mark((function e(t,n){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.loadMediapipeAssets(t,n);case 2:return s.document={},e.next=5,this.createImageSegmenter();case 5:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),r.process=function(){var e=(0,c.default)(o.default.mark((function e(t){var n,r,i,a,l,c,s;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.imageSegmenter){e.next=3;break}return console.warn("ImageSegmenter instance not available"),e.abrupt("return");case 3:(this.width!==t.width||this.height!==t.height)&&(this.canvas.width=this.width=t.width,this.canvas.height=this.height=t.height,this.mask&&(this.mask=new ImageData(this.width,this.height))),this.mask||(this.mask=new ImageData(this.width,this.height)),this.context.drawImage(t,0,0,t.width,t.height),r=Date.now(),e.prev=5,null==(n=this.imageSegmenter)||n.segmentForVideo(this.context.getImageData(0,0,t.width,t.height),r,e=>{var t;const n=null==(t=e.confidenceMasks)?void 0:t[0];i=null==n?void 0:n.getAsFloat32Array()}),e.next=14;break;case 9:return e.prev=9,e.t0=e.catch(5),e.next=13,this.createImageSegmenter();case 13:return e.abrupt("return");case 14:if(i){e.next=16;break}return e.abrupt("return");case 16:if(this.previousConfidenceMask){e.next=19;break}return this.previousConfidenceMask=i.slice(),e.abrupt("return");case 19:for(a=i.map((e,t)=>{var n;const r=null==(n=this.previousConfidenceMask)?void 0:n[t];return void 0!==r?this.blend(r,e):e}),l=[255,0,0],c=0;c<(null==a?void 0:a.length);c++)(s=1-a[c])>.1?(s<.7?(this.mask.data[4*c]=l[0]*s,this.mask.data[4*c+3]=255*s):(this.mask.data[4*c]=l[0],this.mask.data[4*c+3]=255),this.mask.data[4*c+1]=l[1],this.mask.data[4*c+2]=l[2]):this.mask.data[4*c]=this.mask.data[4*c+1]=this.mask.data[4*c+2]=this.mask.data[4*c+3]=0;return e.abrupt("return",(this.previousConfidenceMask=a.slice(),this.mask));case 22:case"end":return e.stop()}}),e,this,[[5,9]])})));return function(t){return e.apply(this,arguments)}}(),r.isGpuSupported=function(){return!0},r.blend=function(e,t){const n=t-.5,r=n*n;return t+.9*(1-Math.min(1,r*(5.68842+r*(r*(r*(291.309+-624.717*r)-57.8051)-.748699))))*(e-t)},t}(),vo=function(){function e(){this.reporter=new Xn,this.isEnabled=!0}var t=e.prototype;return t.init=function(){var e=(0,c.default)(o.default.mark((function e(t,n){var r;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.selfieSegmentation=new Eo,e.next=3,null==(r=this.selfieSegmentation)?void 0:r.init(n.modelAssetUriPath,n.mediapipeBaseAssetsUri);case 3:this.backgroundFilter=new Wo,this.report({variation:"Create"});case 5:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),t.transform=function(){var e=(0,c.default)(o.default.mark((function e(t,n){var r,i,a,l,c,s,d;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.isEnabled){e.next=2;break}return e.abrupt("return",n.enqueue(t));case 2:return c=null!=(r=t.timestamp)?r:0,e.next=5,createImageBitmap(t);case 5:return s=e.sent,e.next=8,null==(i=this.selfieSegmentation)?void 0:i.process(s);case 8:if(d=e.sent,e.t0=d,!e.t0){e.next=14;break}return e.next=13,null==(a=this.backgroundFilter)?void 0:a.process(s,d);case 13:l=e.sent;case 14:l?(t.close(),n.enqueue(new VideoFrame(l,{timestamp:c,alpha:"discard"}))):n.enqueue(t);case 15:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),t.setBackgroundOptions=function(){var e=(0,c.default)(o.default.mark((function e(t){var n;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.backgroundOptions=t,e.next=3,null==(n=this.backgroundFilter)?void 0:n.setBackgroundOptions(t);case 3:this.report({variation:"Update"});case 4:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),t.setVideoBGReadable=function(){var e=(0,c.default)(o.default.mark((function e(t){var n;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,null==(n=this.backgroundFilter)?void 0:n.setVideoBGReadable(t);case 2:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),t.setVirtualBGImage=function(){var e=(0,c.default)(o.default.mark((function e(t){var n;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,null==(n=this.backgroundFilter)?void 0:n.setVirtualBGImage(t);case 2:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),t.profile=function(){var e=(0,c.default)(o.default.mark((function e(t){var n,r;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",null!=(n=null==(r=this.backgroundFilter)?void 0:r.profile(t))?n:[]);case 1:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),t.getTransformerType=function(){var e,t;return null!=(e=null==(t=this.backgroundOptions)?void 0:t.transformerType)?e:"Undefined"},t.enable=function(){this.isEnabled=!0},t.disable=function(){this.isEnabled=!1},t.report=function(e){var t;this.reporter.send(Object.assign({version:"6.0.0-alpha.2",action:"MlTransformers",transformerType:null==(t=this.backgroundOptions)?void 0:t.transformerType,config:JSON.stringify(this.backgroundOptions)},e))},e}();t.BackgroundTransformer=vo;const So=function(){function t(){this.backgroundTransformer=new vo,this.mediaProcessor=new fe,this.rate=30,this.eventsQueue=[],this.frameTransformLatencyMs=[]}var n=t.prototype;return n.init=function(){var e=(0,c.default)(o.default.mark((function e(t,n){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.frameTransformLatencyMs=[],e.next=3,this.backgroundTransformer.init(t,n);case 3:return e.next=5,this.mediaProcessor.setTransformers([this.backgroundTransformer]);case 5:this.mediaProcessor.setTrackExpectedRate(this.rate),this.mediaProcessor.onAny((e,t)=>{this.resolveOnMediaProcessor?(this.resolveOnMediaProcessor({name:e,data:t}),this.resolveOnMediaProcessor=void 0):this.eventsQueue.push({name:e,data:t})});case 7:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),n.enable=function(){this.backgroundTransformer.enable()},n.disable=function(){this.backgroundTransformer.disable()},n.onMediaProcessorEvent=function(){var t=(0,c.default)(o.default.mark((function t(){return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,new e(e=>{this.eventsQueue.length>0?e(this.eventsQueue.shift()):this.resolveOnMediaProcessor=e});case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),n.setTrackExpectedRate=function(){var e=(0,c.default)(o.default.mark((function e(t){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this.rate=t,this.mediaProcessor.setTrackExpectedRate(t);case 1:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),n.transform=function(){var e=(0,c.default)(o.default.mark((function e(t,n){var r;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=performance.now(),this.mediaProcessor.transform(t,n),this.frameTransformLatencyMs.push(performance.now()-r);case 2:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),n.setBackgroundOptions=function(){var e=(0,c.default)(o.default.mark((function e(t){var n;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,null==(n=this.backgroundTransformer)?void 0:n.setBackgroundOptions(t);case 2:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),n.setVideoBGReadable=function(e){this.backgroundTransformer.setVideoBGReadable(e)},n.setVirtualBGImage=function(){var e=(0,c.default)(o.default.mark((function e(t){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.backgroundTransformer.setVirtualBGImage(t);case 2:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),n.terminate=function(){var e=(0,c.default)(o.default.mark((function e(){var t;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.mediaProcessor.destroy();case 2:t=this.frameTransformLatencyMs.reduce((e,t)=>e+t,0)/this.frameTransformLatencyMs.length||0,console.log(`Transform latency average is: ${t} ms`);case 4:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),n.setVonageMetadata=function(e){!function(e){Ae(e)}(e)},n.profile=function(){var e=(0,c.default)(o.default.mark((function e(t){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=JSON,e.next=3,this.backgroundTransformer.profile(t);case 3:return e.t1=e.sent,e.abrupt("return",e.t0.stringify.call(e.t0,e.t1));case 5:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),t}();!function(e,t){t.workerId=e,Ut()&&($t[t.workerId]=t)}("ProcessorWorker",So);let Jo=So;const Go="KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGd0KHQsZSl7Z2xvYmFsVGhpcy52b25hZ2V8fChnbG9iYWxUaGlzLnZvbmFnZT17fSksZ2xvYmFsVGhpcy52b25hZ2Uud29ya2VyaXplcnx8KGdsb2JhbFRoaXMudm9uYWdlLndvcmtlcml6ZXI9e30pO2xldCByPWdsb2JhbFRoaXMudm9uYWdlLndvcmtlcml6ZXI7cmV0dXJuIHJbdF18fChyW3RdPWUpLHJbdF19Y29uc3QgX3I9Z3QoImdsb2JhbHMiLHt9KTt2YXIgb2U9KHQ9Pih0LklOSVQ9IklOSVQiLHQuRk9SV0FSRD0iRk9SV0FSRCIsdC5URVJNSU5BVEU9IlRFUk1JTkFURSIsdC5HTE9CQUxTX1NZTkM9IkdMT0JBTFNfU1lOQyIsdC5FVkVOVD0iRVZFTlQiLHQpKShvZXx8e30pO2Z1bmN0aW9uIGlzKHQpe3JldHVybltJbWFnZUJpdG1hcCxSZWFkYWJsZVN0cmVhbSxXcml0YWJsZVN0cmVhbV0uc29tZShyPT50IGluc3RhbmNlb2Ygcil9ZnVuY3Rpb24gYmUodCxlKXtjb25zdHtpZDpyLHR5cGU6bn09dCxzPUFycmF5LmlzQXJyYXkoZSk/ZTpbZV07cG9zdE1lc3NhZ2Uoe2lkOnIsdHlwZTpuLHJlc3VsdDplfSxzLmZpbHRlcihpPT5pcyhpKSkpfWd0KCJ3b3JrZXJpemVkIix7fSk7ZnVuY3Rpb24gVHIoKXtyZXR1cm4gdHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlPCJ1IiYmc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlfWZ1bmN0aW9uIEJlKHQsZSl7aWYoQXJyYXkuaXNBcnJheShlKSllLnNwbGljZSgwLGUubGVuZ3RoKTtlbHNlIGlmKHR5cGVvZiBlPT0ib2JqZWN0Iilmb3IoY29uc3QgciBpbiBlKWRlbGV0ZSBlW3JdO2Zvcihjb25zdCByIGluIHQpQXJyYXkuaXNBcnJheSh0W3JdKT8oZVtyXT1bXSxCZSh0W3JdLGVbcl0pKTp0eXBlb2YgdFtyXT09Im9iamVjdCI/KGVbcl09e30sQmUodFtyXSxlW3JdKSk6ZVtyXT10W3JdfWNvbnN0IFU9bmV3IFdlYWtNYXAsWT1uZXcgV2Vha01hcCxCPW5ldyBXZWFrTWFwLERlPVN5bWJvbCgiYW55UHJvZHVjZXIiKSx3cj1Qcm9taXNlLnJlc29sdmUoKSxNZT1TeW1ib2woImxpc3RlbmVyQWRkZWQiKSxVZT1TeW1ib2woImxpc3RlbmVyUmVtb3ZlZCIpO2xldCBOZT0hMSx4dD0hMTtmdW5jdGlvbiBhZSh0KXtpZih0eXBlb2YgdCE9InN0cmluZyImJnR5cGVvZiB0IT0ic3ltYm9sIiYmdHlwZW9mIHQhPSJudW1iZXIiKXRocm93IG5ldyBUeXBlRXJyb3IoImBldmVudE5hbWVgIG11c3QgYmUgYSBzdHJpbmcsIHN5bWJvbCwgb3IgbnVtYmVyIil9ZnVuY3Rpb24gT2UodCl7aWYodHlwZW9mIHQhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigibGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gY2UodCxlKXtjb25zdCByPVkuZ2V0KHQpO2lmKHIuaGFzKGUpKXJldHVybiByLmdldChlKX1mdW5jdGlvbiBnZSh0LGUpe2NvbnN0IHI9dHlwZW9mIGU9PSJzdHJpbmcifHx0eXBlb2YgZT09InN5bWJvbCJ8fHR5cGVvZiBlPT0ibnVtYmVyIj9lOkRlLG49Qi5nZXQodCk7aWYobi5oYXMocikpcmV0dXJuIG4uZ2V0KHIpfWZ1bmN0aW9uIG9zKHQsZSxyKXtjb25zdCBuPUIuZ2V0KHQpO2lmKG4uaGFzKGUpKWZvcihjb25zdCBzIG9mIG4uZ2V0KGUpKXMuZW5xdWV1ZShyKTtpZihuLmhhcyhEZSkpe2NvbnN0IHM9UHJvbWlzZS5hbGwoW2Uscl0pO2Zvcihjb25zdCBpIG9mIG4uZ2V0KERlKSlpLmVucXVldWUocyl9fWZ1bmN0aW9uIEFyKHQsZSl7ZT1BcnJheS5pc0FycmF5KGUpP2U6W2VdO2xldCByPSExLG49KCk9Pnt9LHM9W107Y29uc3QgaT17ZW5xdWV1ZShhKXtzLnB1c2goYSksbigpfSxmaW5pc2goKXtyPSEwLG4oKX19O2Zvcihjb25zdCBhIG9mIGUpe2xldCBvPWdlKHQsYSk7b3x8KG89bmV3IFNldCxCLmdldCh0KS5zZXQoYSxvKSksby5hZGQoaSl9cmV0dXJue2FzeW5jIG5leHQoKXtyZXR1cm4gcz9zLmxlbmd0aD09PTA/cj8ocz12b2lkIDAsdGhpcy5uZXh0KCkpOihhd2FpdCBuZXcgUHJvbWlzZShhPT57bj1hfSksdGhpcy5uZXh0KCkpOntkb25lOiExLHZhbHVlOmF3YWl0IHMuc2hpZnQoKX06e2RvbmU6ITB9fSxhc3luYyByZXR1cm4oYSl7cz12b2lkIDA7Zm9yKGNvbnN0IG8gb2YgZSl7Y29uc3QgYz1nZSh0LG8pO2MmJihjLmRlbGV0ZShpKSxjLnNpemU9PT0wJiZCLmdldCh0KS5kZWxldGUobykpfXJldHVybiBuKCksYXJndW1lbnRzLmxlbmd0aD4wP3tkb25lOiEwLHZhbHVlOmF3YWl0IGF9Ontkb25lOiEwfX0sW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpe3JldHVybiB0aGlzfX19ZnVuY3Rpb24gdnIodCl7aWYodD09PXZvaWQgMClyZXR1cm4gU3I7aWYoIUFycmF5LmlzQXJyYXkodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYG1ldGhvZE5hbWVzYCBtdXN0IGJlIGFuIGFycmF5IG9mIHN0cmluZ3MiKTtmb3IoY29uc3QgZSBvZiB0KWlmKCFTci5pbmNsdWRlcyhlKSl0aHJvdyB0eXBlb2YgZSE9InN0cmluZyI/bmV3IFR5cGVFcnJvcigiYG1ldGhvZE5hbWVzYCBlbGVtZW50IG11c3QgYmUgYSBzdHJpbmciKTpuZXcgRXJyb3IoYCR7ZX0gaXMgbm90IEVtaXR0ZXJ5IG1ldGhvZGApO3JldHVybiB0fWNvbnN0IHVlPXQ9PnQ9PT1NZXx8dD09PVVlO2Z1bmN0aW9uIExlKHQsZSxyKXtpZih1ZShlKSl0cnl7TmU9ITAsdC5lbWl0KGUscil9ZmluYWxseXtOZT0hMX19Y2xhc3MgZmV7c3RhdGljIG1peGluKGUscil7cmV0dXJuIHI9dnIociksbj0+e2lmKHR5cGVvZiBuIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoImB0YXJnZXRgIG11c3QgYmUgZnVuY3Rpb24iKTtmb3IoY29uc3QgYSBvZiByKWlmKG4ucHJvdG90eXBlW2FdIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcihgVGhlIHByb3BlcnR5IFxgJHthfVxgIGFscmVhZHkgZXhpc3RzIG9uIFxgdGFyZ2V0XGBgKTtmdW5jdGlvbiBzKCl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLGUse2VudW1lcmFibGU6ITEsdmFsdWU6bmV3IGZlfSksdGhpc1tlXX1PYmplY3QuZGVmaW5lUHJvcGVydHkobi5wcm90b3R5cGUsZSx7ZW51bWVyYWJsZTohMSxnZXQ6c30pO2NvbnN0IGk9YT0+ZnVuY3Rpb24oLi4ubyl7cmV0dXJuIHRoaXNbZV1bYV0oLi4ubyl9O2Zvcihjb25zdCBhIG9mIHIpT2JqZWN0LmRlZmluZVByb3BlcnR5KG4ucHJvdG90eXBlLGEse2VudW1lcmFibGU6ITEsdmFsdWU6aShhKX0pO3JldHVybiBufX1zdGF0aWMgZ2V0IGlzRGVidWdFbmFibGVkKCl7dmFyIGUscjtpZih0eXBlb2YoKGU9Z2xvYmFsVGhpcy5wcm9jZXNzKT09bnVsbD92b2lkIDA6ZS5lbnYpIT0ib2JqZWN0IilyZXR1cm4geHQ7Y29uc3R7ZW52Om59PShyPWdsb2JhbFRoaXMucHJvY2VzcykhPW51bGw/cjp7ZW52Ont9fTtyZXR1cm4gbi5ERUJVRz09PSJlbWl0dGVyeSJ8fG4uREVCVUc9PT0iKiJ8fHh0fXN0YXRpYyBzZXQgaXNEZWJ1Z0VuYWJsZWQoZSl7eHQ9ZX1jb25zdHJ1Y3RvcihlPXt9KXt2YXIgcjtVLnNldCh0aGlzLG5ldyBTZXQpLFkuc2V0KHRoaXMsbmV3IE1hcCksQi5zZXQodGhpcyxuZXcgTWFwKSxCLmdldCh0aGlzKS5zZXQoRGUsbmV3IFNldCksdGhpcy5kZWJ1Zz0ocj1lLmRlYnVnKSE9bnVsbD9yOnt9LHRoaXMuZGVidWcuZW5hYmxlZD09PXZvaWQgMCYmKHRoaXMuZGVidWcuZW5hYmxlZD0hMSksdGhpcy5kZWJ1Zy5sb2dnZXJ8fCh0aGlzLmRlYnVnLmxvZ2dlcj0obixzLGksYSk9Pnt0cnl7YT1KU09OLnN0cmluZ2lmeShhKX1jYXRjaHthPWBPYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIGtleXMgZmFpbGVkIHRvIHN0cmluZ2lmeTogJHtPYmplY3Qua2V5cyhhKS5qb2luKCIsIil9YH0odHlwZW9mIGk9PSJzeW1ib2wifHx0eXBlb2YgaT09Im51bWJlciIpJiYoaT1pLnRvU3RyaW5nKCkpO2NvbnN0IG89bmV3IERhdGUsYz1gJHtvLmdldEhvdXJzKCl9OiR7by5nZXRNaW51dGVzKCl9OiR7by5nZXRTZWNvbmRzKCl9LiR7by5nZXRNaWxsaXNlY29uZHMoKX1gO2NvbnNvbGUubG9nKGBbJHtjfV1bZW1pdHRlcnk6JHtufV1bJHtzfV0gRXZlbnQgTmFtZTogJHtpfQoJZGF0YTogJHthfWApfSl9bG9nSWZEZWJ1Z0VuYWJsZWQoZSxyLG4peyhmZS5pc0RlYnVnRW5hYmxlZHx8dGhpcy5kZWJ1Zy5lbmFibGVkKSYmdGhpcy5kZWJ1Zy5sb2dnZXIoZSx0aGlzLmRlYnVnLm5hbWUscixuKX1vbihlLHIpe09lKHIpLGU9QXJyYXkuaXNBcnJheShlKT9lOltlXTtmb3IoY29uc3QgbiBvZiBlKXthZShuKTtsZXQgcz1jZSh0aGlzLG4pO3N8fChzPW5ldyBTZXQsWS5nZXQodGhpcykuc2V0KG4scykpLHMuYWRkKHIpLHRoaXMubG9nSWZEZWJ1Z0VuYWJsZWQoInN1YnNjcmliZSIsbix2b2lkIDApLHVlKG4pfHxMZSh0aGlzLE1lLHtldmVudE5hbWU6bixsaXN0ZW5lcjpyfSl9cmV0dXJuIHRoaXMub2ZmLmJpbmQodGhpcyxlLHIpfW9mZihlLHIpe09lKHIpLGU9QXJyYXkuaXNBcnJheShlKT9lOltlXTtmb3IoY29uc3QgbiBvZiBlKXthZShuKTtjb25zdCBzPWNlKHRoaXMsbik7cyYmKHMuZGVsZXRlKHIpLHMuc2l6ZT09PTAmJlkuZ2V0KHRoaXMpLmRlbGV0ZShuKSksdGhpcy5sb2dJZkRlYnVnRW5hYmxlZCgidW5zdWJzY3JpYmUiLG4sdm9pZCAwKSx1ZShuKXx8TGUodGhpcyxVZSx7ZXZlbnROYW1lOm4sbGlzdGVuZXI6cn0pfX1vbmNlKGUpe2xldCByO2NvbnN0IG49bmV3IFByb21pc2Uocz0+e3I9dGhpcy5vbihlLGk9PntyKCkscyhpKX0pfSk7cmV0dXJuIG4ub2ZmPXIsbn1ldmVudHMoZSl7ZT1BcnJheS5pc0FycmF5KGUpP2U6W2VdO2Zvcihjb25zdCByIG9mIGUpYWUocik7cmV0dXJuIEFyKHRoaXMsZSl9YXN5bmMgZW1pdChlLHIpe3ZhciBuO2lmKGFlKGUpLHVlKGUpJiYhTmUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYGV2ZW50TmFtZWAgY2Fubm90IGJlIG1ldGEgZXZlbnQgYGxpc3RlbmVyQWRkZWRgIG9yIGBsaXN0ZW5lclJlbW92ZWRgIik7dGhpcy5sb2dJZkRlYnVnRW5hYmxlZCgiZW1pdCIsZSxyKSxvcyh0aGlzLGUscik7Y29uc3Qgcz0obj1jZSh0aGlzLGUpKSE9bnVsbD9uOm5ldyBTZXQsaT1VLmdldCh0aGlzKSxhPVsuLi5zXSxvPXVlKGUpP1tdOlsuLi5pXTthd2FpdCB3cixhd2FpdCBQcm9taXNlLmFsbChbLi4uYS5tYXAoYXN5bmMgYz0+e2lmKHMuaGFzKGMpKXJldHVybiBjKHIpfSksLi4uby5tYXAoYXN5bmMgYz0+e2lmKGkuaGFzKGMpKXJldHVybiBjKGUscil9KV0pfWFzeW5jIGVtaXRTZXJpYWwoZSxyKXt2YXIgbjtpZihhZShlKSx1ZShlKSYmIU5lKXRocm93IG5ldyBUeXBlRXJyb3IoImBldmVudE5hbWVgIGNhbm5vdCBiZSBtZXRhIGV2ZW50IGBsaXN0ZW5lckFkZGVkYCBvciBgbGlzdGVuZXJSZW1vdmVkYCIpO3RoaXMubG9nSWZEZWJ1Z0VuYWJsZWQoImVtaXRTZXJpYWwiLGUscik7Y29uc3Qgcz0obj1jZSh0aGlzLGUpKSE9bnVsbD9uOm5ldyBTZXQsaT1VLmdldCh0aGlzKSxhPVsuLi5zXSxvPVsuLi5pXTthd2FpdCB3cjtmb3IoY29uc3QgYyBvZiBhKXMuaGFzKGMpJiZhd2FpdCBjKHIpO2Zvcihjb25zdCBjIG9mIG8paS5oYXMoYykmJmF3YWl0IGMoZSxyKX1vbkFueShlKXtyZXR1cm4gT2UoZSksdGhpcy5sb2dJZkRlYnVnRW5hYmxlZCgic3Vic2NyaWJlQW55Iix2b2lkIDAsdm9pZCAwKSxVLmdldCh0aGlzKS5hZGQoZSksTGUodGhpcyxNZSx7bGlzdGVuZXI6ZX0pLHRoaXMub2ZmQW55LmJpbmQodGhpcyxlKX1hbnlFdmVudCgpe3JldHVybiBBcih0aGlzKX1vZmZBbnkoZSl7T2UoZSksdGhpcy5sb2dJZkRlYnVnRW5hYmxlZCgidW5zdWJzY3JpYmVBbnkiLHZvaWQgMCx2b2lkIDApLExlKHRoaXMsVWUse2xpc3RlbmVyOmV9KSxVLmdldCh0aGlzKS5kZWxldGUoZSl9Y2xlYXJMaXN0ZW5lcnMoZSl7ZT1BcnJheS5pc0FycmF5KGUpP2U6W2VdO2Zvcihjb25zdCByIG9mIGUpaWYodGhpcy5sb2dJZkRlYnVnRW5hYmxlZCgiY2xlYXIiLHIsdm9pZCAwKSx0eXBlb2Ygcj09InN0cmluZyJ8fHR5cGVvZiByPT0ic3ltYm9sInx8dHlwZW9mIHI9PSJudW1iZXIiKXtjb25zdCBuPWNlKHRoaXMscik7biYmbi5jbGVhcigpO2NvbnN0IHM9Z2UodGhpcyxyKTtpZihzKXtmb3IoY29uc3QgaSBvZiBzKWkuZmluaXNoKCk7cy5jbGVhcigpfX1lbHNle1UuZ2V0KHRoaXMpLmNsZWFyKCk7Zm9yKGNvbnN0W24sc11vZiBZLmdldCh0aGlzKS5lbnRyaWVzKCkpcy5jbGVhcigpLFkuZ2V0KHRoaXMpLmRlbGV0ZShuKTtmb3IoY29uc3RbbixzXW9mIEIuZ2V0KHRoaXMpLmVudHJpZXMoKSl7Zm9yKGNvbnN0IGkgb2YgcylpLmZpbmlzaCgpO3MuY2xlYXIoKSxCLmdldCh0aGlzKS5kZWxldGUobil9fX1saXN0ZW5lckNvdW50KGUpe3ZhciByLG4scyxpLGEsbztlPUFycmF5LmlzQXJyYXkoZSk/ZTpbZV07bGV0IGM9MDtmb3IoY29uc3QgdSBvZiBlKXtpZih0eXBlb2YgdT09InN0cmluZyIpe2MrPVUuZ2V0KHRoaXMpLnNpemUrKChuPShyPWNlKHRoaXMsdSkpPT1udWxsP3ZvaWQgMDpyLnNpemUpIT1udWxsP246MCkrKChpPShzPWdlKHRoaXMsdSkpPT1udWxsP3ZvaWQgMDpzLnNpemUpIT1udWxsP2k6MCkrKChvPShhPWdlKHRoaXMpKT09bnVsbD92b2lkIDA6YS5zaXplKSE9bnVsbD9vOjApO2NvbnRpbnVlfXR5cGVvZiB1PCJ1IiYmYWUodSksYys9VS5nZXQodGhpcykuc2l6ZTtmb3IoY29uc3QgZiBvZiBZLmdldCh0aGlzKS52YWx1ZXMoKSljKz1mLnNpemU7Zm9yKGNvbnN0IGYgb2YgQi5nZXQodGhpcykudmFsdWVzKCkpYys9Zi5zaXplfXJldHVybiBjfWJpbmRNZXRob2RzKGUscil7aWYodHlwZW9mIGUhPSJvYmplY3QifHxlPT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJgdGFyZ2V0YCBtdXN0IGJlIGFuIG9iamVjdCIpO3I9dnIocik7Zm9yKGNvbnN0IG4gb2Ygcil7aWYoZVtuXSE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoYFRoZSBwcm9wZXJ0eSBcYCR7bn1cYCBhbHJlYWR5IGV4aXN0cyBvbiBcYHRhcmdldFxgYCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7ZW51bWVyYWJsZTohMSx2YWx1ZTp0aGlzW25dLmJpbmQodGhpcyl9KX19fWNvbnN0IFNyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGZlLnByb3RvdHlwZSkuZmlsdGVyKHQ9PnQhPT0iY29uc3RydWN0b3IiKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZmUsImxpc3RlbmVyQWRkZWQiLHt2YWx1ZTpNZSx3cml0YWJsZTohMSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmZSwibGlzdGVuZXJSZW1vdmVkIix7dmFsdWU6VWUsd3JpdGFibGU6ITEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITF9KTtmdW5jdGlvbiBhcyh0KXtyZXR1cm4gdC5vbkFueSYmdC5lbWl0fWFzeW5jIGZ1bmN0aW9uIGNzKHQsZSl7Y29uc3R7ZnVuY3Rpb25OYW1lOnIsYXJnczpufT10O2lmKCFlLmluc3RhbmNlKXRocm93Imluc3RhbmNlIG5vdCBpbml0aWFsaXplZCI7aWYoIXIpdGhyb3cibWlzc2luZyBmdW5jdGlvbiBuYW1lIHRvIGNhbGwiO2lmKCFlLmluc3RhbmNlW3JdKXRocm93YHVuZGVmaW5lZCBmdW5jdGlvbiBbJHtyfV0gaW4gY2xhc3MgJHtlLmluc3RhbmNlLmNvbnN0cnVjdG9yLndvcmtlcklkfWA7YmUodCxhd2FpdCBlLmluc3RhbmNlW3JdKC4uLm4/P1tdKSl9Y29uc3QgSXI9Z3QoInJlZ2lzdGVyZWRXb3JrZXJzIix7fSk7ZnVuY3Rpb24gdXModCxlKXtlLndvcmtlcklkPXQsVHIoKSYmKElyW2Uud29ya2VySWRdPWUpfWZ1bmN0aW9uIGZzKHQsZSl7aWYoIXQuYXJncyl0aHJvdyJNaXNzaW5nIGNsYXNzTmFtZSB3aGlsZSBpbml0aWFsaXppbmcgd29ya2VyIjtjb25zdFtyLG5dPXQuYXJncyxzPUlyW3JdO2lmKHMpZS5pbnN0YW5jZT1uZXcgcyh0LmFyZ3Muc2xpY2UoMSkpO2Vsc2UgdGhyb3dgdW5rbm93biB3b3JrZXIgY2xhc3MgJHtyfWA7QmUobixfciksYXMoZS5pbnN0YW5jZSkmJmUuaW5zdGFuY2Uub25BbnkoKGksYSk9PntiZSh7dHlwZTpvZS5FVkVOVH0se25hbWU6aSxkYXRhOmF9KX0pLGJlKHQsdHlwZW9mIGUuaW5zdGFuY2UhPT12b2lkIDApfWFzeW5jIGZ1bmN0aW9uIGxzKHQsZSl7Y29uc3R7YXJnczpyfT10O2lmKCFlLmluc3RhbmNlKXRocm93Imluc3RhbmNlIG5vdCBpbml0aWFsaXplZCI7bGV0IG47ZS5pbnN0YW5jZS50ZXJtaW5hdGUmJihuPWF3YWl0IGUuaW5zdGFuY2UudGVybWluYXRlKC4uLnI/P1tdKSksYmUodCxuKX1mdW5jdGlvbiBkcyh0KXtpZighdC5hcmdzKXRocm93Ik1pc3NpbmcgZ2xvYmFscyB3aGlsZSBzeW5jaW5nIjtCZSh0LmFyZ3NbMF0sX3IpLGJlKHQse30pfWZ1bmN0aW9uIGhzKCl7Y29uc3QgdD17fTtvbm1lc3NhZ2U9YXN5bmMgZT0+e2NvbnN0IHI9ZS5kYXRhO3N3aXRjaChyLnR5cGUpe2Nhc2Ugb2UuSU5JVDpmcyhyLHQpO2JyZWFrO2Nhc2Ugb2UuRk9SV0FSRDpjcyhyLHQpO2JyZWFrO2Nhc2Ugb2UuVEVSTUlOQVRFOmxzKHIsdCk7YnJlYWs7Y2FzZSBvZS5HTE9CQUxTX1NZTkM6ZHMocik7YnJlYWt9fX1UcigpJiZocygpO2NsYXNzIER7fUQudXBkYXRlcz17dHJhbnNmb3JtZXJfbmV3OiJOZXcgdHJhbnNmb3JtZXIiLHRyYW5zZm9ybWVyX251bGw6Ik51bGwgdHJhbnNmb3JtZXIifSxELmVycm9ycz17dHJhbnNmb3JtZXJfbm9uZToiTm8gdHJhbnNmb3JtZXJzIHByb3ZpZGVkIix0cmFuc2Zvcm1lcl9zdGFydDoiQ2Fubm90IHN0YXJ0IHRyYW5zZm9ybWVyIix0cmFuc2Zvcm1lcl90cmFuc2Zvcm06IkNhbm5vdCB0cmFuc2Zvcm0gZnJhbWUiLHRyYW5zZm9ybWVyX2ZsdXNoOiJDYW5ub3QgZmx1c2ggdHJhbnNmb3JtZXIiLHJlYWRhYmxlX251bGw6IlJlYWRhYmxlIGlzIG51bGwiLHdyaXRhYmxlX251bGw6IldyaXRhYmxlIGlzIG51bGwifTtmdW5jdGlvbiBtcyh0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCwiZGVmYXVsdCIpP3QuZGVmYXVsdDp0fWNvbnN0IE49bmV3IFdlYWtNYXAsemU9bmV3IFdlYWtNYXAseGU9bmV3IFdlYWtNYXAsRXQ9U3ltYm9sKCJhbnlQcm9kdWNlciIpLFJyPVByb21pc2UucmVzb2x2ZSgpLEdlPVN5bWJvbCgibGlzdGVuZXJBZGRlZCIpLCRlPVN5bWJvbCgibGlzdGVuZXJSZW1vdmVkIik7bGV0IF90PSExO2Z1bmN0aW9uIGxlKHQpe2lmKHR5cGVvZiB0IT0ic3RyaW5nIiYmdHlwZW9mIHQhPSJzeW1ib2wiKXRocm93IG5ldyBUeXBlRXJyb3IoImV2ZW50TmFtZSBtdXN0IGJlIGEgc3RyaW5nIG9yIGEgc3ltYm9sIil9ZnVuY3Rpb24gVmUodCl7aWYodHlwZW9mIHQhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigibGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gZGUodCxlKXtjb25zdCByPXplLmdldCh0KTtyZXR1cm4gci5oYXMoZSl8fHIuc2V0KGUsbmV3IFNldCksci5nZXQoZSl9ZnVuY3Rpb24gRWUodCxlKXtjb25zdCByPXR5cGVvZiBlPT0ic3RyaW5nInx8dHlwZW9mIGU9PSJzeW1ib2wiP2U6RXQsbj14ZS5nZXQodCk7cmV0dXJuIG4uaGFzKHIpfHxuLnNldChyLG5ldyBTZXQpLG4uZ2V0KHIpfWZ1bmN0aW9uIHBzKHQsZSxyKXtjb25zdCBuPXhlLmdldCh0KTtpZihuLmhhcyhlKSlmb3IoY29uc3QgcyBvZiBuLmdldChlKSlzLmVucXVldWUocik7aWYobi5oYXMoRXQpKXtjb25zdCBzPVByb21pc2UuYWxsKFtlLHJdKTtmb3IoY29uc3QgaSBvZiBuLmdldChFdCkpaS5lbnF1ZXVlKHMpfX1mdW5jdGlvbiBGcih0LGUpe2U9QXJyYXkuaXNBcnJheShlKT9lOltlXTtsZXQgcj0hMSxuPSgpPT57fSxzPVtdO2NvbnN0IGk9e2VucXVldWUoYSl7cy5wdXNoKGEpLG4oKX0sZmluaXNoKCl7cj0hMCxuKCl9fTtmb3IoY29uc3QgYSBvZiBlKUVlKHQsYSkuYWRkKGkpO3JldHVybnthc3luYyBuZXh0KCl7cmV0dXJuIHM/cy5sZW5ndGg9PT0wP3I/KHM9dm9pZCAwLHRoaXMubmV4dCgpKTooYXdhaXQgbmV3IFByb21pc2UoYT0+e249YX0pLHRoaXMubmV4dCgpKTp7ZG9uZTohMSx2YWx1ZTphd2FpdCBzLnNoaWZ0KCl9Ontkb25lOiEwfX0sYXN5bmMgcmV0dXJuKGEpe3M9dm9pZCAwO2Zvcihjb25zdCBvIG9mIGUpRWUodCxvKS5kZWxldGUoaSk7cmV0dXJuIG4oKSxhcmd1bWVudHMubGVuZ3RoPjA/e2RvbmU6ITAsdmFsdWU6YXdhaXQgYX06e2RvbmU6ITB9fSxbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCl7cmV0dXJuIHRoaXN9fX1mdW5jdGlvbiBQcih0KXtpZih0PT09dm9pZCAwKXJldHVybiBrcjtpZighQXJyYXkuaXNBcnJheSh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJgbWV0aG9kTmFtZXNgIG11c3QgYmUgYW4gYXJyYXkgb2Ygc3RyaW5ncyIpO2Zvcihjb25zdCBlIG9mIHQpaWYoIWtyLmluY2x1ZGVzKGUpKXRocm93IHR5cGVvZiBlIT0ic3RyaW5nIj9uZXcgVHlwZUVycm9yKCJgbWV0aG9kTmFtZXNgIGVsZW1lbnQgbXVzdCBiZSBhIHN0cmluZyIpOm5ldyBFcnJvcihgJHtlfSBpcyBub3QgRW1pdHRlcnkgbWV0aG9kYCk7cmV0dXJuIHR9Y29uc3QgVHQ9dD0+dD09PUdlfHx0PT09JGU7bGV0IFdlPWNsYXNzIEVye3N0YXRpYyBtaXhpbihlLHIpe3JldHVybiByPVByKHIpLG49PntpZih0eXBlb2YgbiE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJgdGFyZ2V0YCBtdXN0IGJlIGZ1bmN0aW9uIik7Zm9yKGNvbnN0IGEgb2YgcilpZihuLnByb3RvdHlwZVthXSE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoYFRoZSBwcm9wZXJ0eSBcYCR7YX1cYCBhbHJlYWR5IGV4aXN0cyBvbiBcYHRhcmdldFxgYCk7ZnVuY3Rpb24gcygpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxlLHtlbnVtZXJhYmxlOiExLHZhbHVlOm5ldyBFcn0pLHRoaXNbZV19T2JqZWN0LmRlZmluZVByb3BlcnR5KG4ucHJvdG90eXBlLGUse2VudW1lcmFibGU6ITEsZ2V0OnN9KTtjb25zdCBpPWE9PmZ1bmN0aW9uKC4uLm8pe3JldHVybiB0aGlzW2VdW2FdKC4uLm8pfTtmb3IoY29uc3QgYSBvZiByKU9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLnByb3RvdHlwZSxhLHtlbnVtZXJhYmxlOiExLHZhbHVlOmkoYSl9KTtyZXR1cm4gbn19c3RhdGljIGdldCBpc0RlYnVnRW5hYmxlZCgpe2lmKHR5cGVvZiBwcm9jZXNzIT0ib2JqZWN0IilyZXR1cm4gX3Q7Y29uc3R7ZW52OmV9PXByb2Nlc3N8fHtlbnY6e319O3JldHVybiBlLkRFQlVHPT09ImVtaXR0ZXJ5Inx8ZS5ERUJVRz09PSIqInx8X3R9c3RhdGljIHNldCBpc0RlYnVnRW5hYmxlZChlKXtfdD1lfWNvbnN0cnVjdG9yKGU9e30pe04uc2V0KHRoaXMsbmV3IFNldCksemUuc2V0KHRoaXMsbmV3IE1hcCkseGUuc2V0KHRoaXMsbmV3IE1hcCksdGhpcy5kZWJ1Zz1lLmRlYnVnfHx7fSx0aGlzLmRlYnVnLmVuYWJsZWQ9PT12b2lkIDAmJih0aGlzLmRlYnVnLmVuYWJsZWQ9ITEpLHRoaXMuZGVidWcubG9nZ2VyfHwodGhpcy5kZWJ1Zy5sb2dnZXI9KHIsbixzLGkpPT57dHJ5e2k9SlNPTi5zdHJpbmdpZnkoaSl9Y2F0Y2h7aT1gT2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZyBrZXlzIGZhaWxlZCB0byBzdHJpbmdpZnk6ICR7T2JqZWN0LmtleXMoaSkuam9pbigiLCIpfWB9dHlwZW9mIHM9PSJzeW1ib2wiJiYocz1zLnRvU3RyaW5nKCkpO2NvbnN0IGE9bmV3IERhdGUsbz1gJHthLmdldEhvdXJzKCl9OiR7YS5nZXRNaW51dGVzKCl9OiR7YS5nZXRTZWNvbmRzKCl9LiR7YS5nZXRNaWxsaXNlY29uZHMoKX1gO2NvbnNvbGUubG9nKGBbJHtvfV1bZW1pdHRlcnk6JHtyfV1bJHtufV0gRXZlbnQgTmFtZTogJHtzfQoJZGF0YTogJHtpfWApfSl9bG9nSWZEZWJ1Z0VuYWJsZWQoZSxyLG4peyhFci5pc0RlYnVnRW5hYmxlZHx8dGhpcy5kZWJ1Zy5lbmFibGVkKSYmdGhpcy5kZWJ1Zy5sb2dnZXIoZSx0aGlzLmRlYnVnLm5hbWUscixuKX1vbihlLHIpe1ZlKHIpLGU9QXJyYXkuaXNBcnJheShlKT9lOltlXTtmb3IoY29uc3QgbiBvZiBlKWxlKG4pLGRlKHRoaXMsbikuYWRkKHIpLHRoaXMubG9nSWZEZWJ1Z0VuYWJsZWQoInN1YnNjcmliZSIsbix2b2lkIDApLFR0KG4pfHx0aGlzLmVtaXQoR2Use2V2ZW50TmFtZTpuLGxpc3RlbmVyOnJ9KTtyZXR1cm4gdGhpcy5vZmYuYmluZCh0aGlzLGUscil9b2ZmKGUscil7VmUociksZT1BcnJheS5pc0FycmF5KGUpP2U6W2VdO2Zvcihjb25zdCBuIG9mIGUpbGUobiksZGUodGhpcyxuKS5kZWxldGUociksdGhpcy5sb2dJZkRlYnVnRW5hYmxlZCgidW5zdWJzY3JpYmUiLG4sdm9pZCAwKSxUdChuKXx8dGhpcy5lbWl0KCRlLHtldmVudE5hbWU6bixsaXN0ZW5lcjpyfSl9b25jZShlKXtyZXR1cm4gbmV3IFByb21pc2Uocj0+e2NvbnN0IG49dGhpcy5vbihlLHM9PntuKCkscihzKX0pfSl9ZXZlbnRzKGUpe2U9QXJyYXkuaXNBcnJheShlKT9lOltlXTtmb3IoY29uc3QgciBvZiBlKWxlKHIpO3JldHVybiBGcih0aGlzLGUpfWFzeW5jIGVtaXQoZSxyKXtsZShlKSx0aGlzLmxvZ0lmRGVidWdFbmFibGVkKCJlbWl0IixlLHIpLHBzKHRoaXMsZSxyKTtjb25zdCBuPWRlKHRoaXMsZSkscz1OLmdldCh0aGlzKSxpPVsuLi5uXSxhPVR0KGUpP1tdOlsuLi5zXTthd2FpdCBScixhd2FpdCBQcm9taXNlLmFsbChbLi4uaS5tYXAoYXN5bmMgbz0+e2lmKG4uaGFzKG8pKXJldHVybiBvKHIpfSksLi4uYS5tYXAoYXN5bmMgbz0+e2lmKHMuaGFzKG8pKXJldHVybiBvKGUscil9KV0pfWFzeW5jIGVtaXRTZXJpYWwoZSxyKXtsZShlKSx0aGlzLmxvZ0lmRGVidWdFbmFibGVkKCJlbWl0U2VyaWFsIixlLHIpO2NvbnN0IG49ZGUodGhpcyxlKSxzPU4uZ2V0KHRoaXMpLGk9Wy4uLm5dLGE9Wy4uLnNdO2F3YWl0IFJyO2Zvcihjb25zdCBvIG9mIGkpbi5oYXMobykmJmF3YWl0IG8ocik7Zm9yKGNvbnN0IG8gb2YgYSlzLmhhcyhvKSYmYXdhaXQgbyhlLHIpfW9uQW55KGUpe3JldHVybiBWZShlKSx0aGlzLmxvZ0lmRGVidWdFbmFibGVkKCJzdWJzY3JpYmVBbnkiLHZvaWQgMCx2b2lkIDApLE4uZ2V0KHRoaXMpLmFkZChlKSx0aGlzLmVtaXQoR2Use2xpc3RlbmVyOmV9KSx0aGlzLm9mZkFueS5iaW5kKHRoaXMsZSl9YW55RXZlbnQoKXtyZXR1cm4gRnIodGhpcyl9b2ZmQW55KGUpe1ZlKGUpLHRoaXMubG9nSWZEZWJ1Z0VuYWJsZWQoInVuc3Vic2NyaWJlQW55Iix2b2lkIDAsdm9pZCAwKSx0aGlzLmVtaXQoJGUse2xpc3RlbmVyOmV9KSxOLmdldCh0aGlzKS5kZWxldGUoZSl9Y2xlYXJMaXN0ZW5lcnMoZSl7ZT1BcnJheS5pc0FycmF5KGUpP2U6W2VdO2Zvcihjb25zdCByIG9mIGUpaWYodGhpcy5sb2dJZkRlYnVnRW5hYmxlZCgiY2xlYXIiLHIsdm9pZCAwKSx0eXBlb2Ygcj09InN0cmluZyJ8fHR5cGVvZiByPT0ic3ltYm9sIil7ZGUodGhpcyxyKS5jbGVhcigpO2NvbnN0IG49RWUodGhpcyxyKTtmb3IoY29uc3QgcyBvZiBuKXMuZmluaXNoKCk7bi5jbGVhcigpfWVsc2V7Ti5nZXQodGhpcykuY2xlYXIoKTtmb3IoY29uc3QgbiBvZiB6ZS5nZXQodGhpcykudmFsdWVzKCkpbi5jbGVhcigpO2Zvcihjb25zdCBuIG9mIHhlLmdldCh0aGlzKS52YWx1ZXMoKSl7Zm9yKGNvbnN0IHMgb2YgbilzLmZpbmlzaCgpO24uY2xlYXIoKX19fWxpc3RlbmVyQ291bnQoZSl7ZT1BcnJheS5pc0FycmF5KGUpP2U6W2VdO2xldCByPTA7Zm9yKGNvbnN0IG4gb2YgZSl7aWYodHlwZW9mIG49PSJzdHJpbmciKXtyKz1OLmdldCh0aGlzKS5zaXplK2RlKHRoaXMsbikuc2l6ZStFZSh0aGlzLG4pLnNpemUrRWUodGhpcykuc2l6ZTtjb250aW51ZX10eXBlb2YgbjwidSImJmxlKG4pLHIrPU4uZ2V0KHRoaXMpLnNpemU7Zm9yKGNvbnN0IHMgb2YgemUuZ2V0KHRoaXMpLnZhbHVlcygpKXIrPXMuc2l6ZTtmb3IoY29uc3QgcyBvZiB4ZS5nZXQodGhpcykudmFsdWVzKCkpcis9cy5zaXplfXJldHVybiByfWJpbmRNZXRob2RzKGUscil7aWYodHlwZW9mIGUhPSJvYmplY3QifHxlPT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJgdGFyZ2V0YCBtdXN0IGJlIGFuIG9iamVjdCIpO3I9UHIocik7Zm9yKGNvbnN0IG4gb2Ygcil7aWYoZVtuXSE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoYFRoZSBwcm9wZXJ0eSBcYCR7bn1cYCBhbHJlYWR5IGV4aXN0cyBvbiBcYHRhcmdldFxgYCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7ZW51bWVyYWJsZTohMSx2YWx1ZTp0aGlzW25dLmJpbmQodGhpcyl9KX19fTtjb25zdCBrcj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhXZS5wcm90b3R5cGUpLmZpbHRlcih0PT50IT09ImNvbnN0cnVjdG9yIik7T2JqZWN0LmRlZmluZVByb3BlcnR5KFdlLCJsaXN0ZW5lckFkZGVkIix7dmFsdWU6R2Usd3JpdGFibGU6ITEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITF9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoV2UsImxpc3RlbmVyUmVtb3ZlZCIse3ZhbHVlOiRlLHdyaXRhYmxlOiExLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiExfSk7dmFyIHlzPVdlO2NvbnN0IHd0PW1zKHlzKTtmdW5jdGlvbiBicyh0KXtyZXR1cm4gdHlwZW9mIHQ9PSJvYmplY3QiJiZ0IT09bnVsbCYmIm1lc3NhZ2UiaW4gdCYmdHlwZW9mIHQubWVzc2FnZT09InN0cmluZyJ9ZnVuY3Rpb24gZ3ModCl7aWYoYnModCkpcmV0dXJuIHQ7dHJ5e3JldHVybiBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkodCkpfWNhdGNoe3JldHVybiBuZXcgRXJyb3IoU3RyaW5nKHQpKX19ZnVuY3Rpb24gQXQodCl7cmV0dXJuIGdzKHQpLm1lc3NhZ2V9dmFyIHhzPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxFcz0odCxlLHIpPT5lIGluIHQ/eHModCxlLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpyfSk6dFtlXT1yLF9zPSh0LGUscik9PihFcyh0LGUrIiIscikscik7Y29uc3QgVHM9ImhsZy50b2tib3guY29tL3Byb2QvbG9nZ2luZy92Y3Bfd2VicnRjIix3cz0iaHR0cHM6Ly8iLEFzPTFlNDtsZXQgSGU7Y29uc3QgdnM9bmV3IFVpbnQ4QXJyYXkoMTYpO2Z1bmN0aW9uIFNzKCl7aWYoIUhlJiYoSGU9dHlwZW9mIGNyeXB0bzwidSImJmNyeXB0by5nZXRSYW5kb21WYWx1ZXMmJmNyeXB0by5nZXRSYW5kb21WYWx1ZXMuYmluZChjcnlwdG8pLCFIZSkpdGhyb3cgbmV3IEVycm9yKCJjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKCkgbm90IHN1cHBvcnRlZC4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS91dWlkanMvdXVpZCNnZXRyYW5kb212YWx1ZXMtbm90LXN1cHBvcnRlZCIpO3JldHVybiBIZSh2cyl9Y29uc3QgVD1bXTtmb3IobGV0IHQ9MDt0PDI1NjsrK3QpVC5wdXNoKCh0KzI1NikudG9TdHJpbmcoMTYpLnNsaWNlKDEpKTtmdW5jdGlvbiBJcyh0LGU9MCl7cmV0dXJuKFRbdFtlKzBdXStUW3RbZSsxXV0rVFt0W2UrMl1dK1RbdFtlKzNdXSsiLSIrVFt0W2UrNF1dK1RbdFtlKzVdXSsiLSIrVFt0W2UrNl1dK1RbdFtlKzddXSsiLSIrVFt0W2UrOF1dK1RbdFtlKzldXSsiLSIrVFt0W2UrMTBdXStUW3RbZSsxMV1dK1RbdFtlKzEyXV0rVFt0W2UrMTNdXStUW3RbZSsxNF1dK1RbdFtlKzE1XV0pLnRvTG93ZXJDYXNlKCl9Y29uc3QgUnM9dHlwZW9mIGNyeXB0bzwidSImJmNyeXB0by5yYW5kb21VVUlEJiZjcnlwdG8ucmFuZG9tVVVJRC5iaW5kKGNyeXB0byksQ3I9e3JhbmRvbVVVSUQ6UnN9O2Z1bmN0aW9uIEZzKHQsZSxyKXtpZihDci5yYW5kb21VVUlEJiYhZSYmIXQpcmV0dXJuIENyLnJhbmRvbVVVSUQoKTt0PXR8fHt9O2NvbnN0IG49dC5yYW5kb218fCh0LnJuZ3x8U3MpKCk7cmV0dXJuIG5bNl09bls2XSYxNXw2NCxuWzhdPW5bOF0mNjN8MTI4LElzKG4pfWZ1bmN0aW9uIHZ0KHQsZSl7Z2xvYmFsVGhpcy52b25hZ2V8fChnbG9iYWxUaGlzLnZvbmFnZT17fSksZ2xvYmFsVGhpcy52b25hZ2Uud29ya2VyaXplcnx8KGdsb2JhbFRoaXMudm9uYWdlLndvcmtlcml6ZXI9e30pO2xldCByPWdsb2JhbFRoaXMudm9uYWdlLndvcmtlcml6ZXI7cmV0dXJuIHJbdF18fChyW3RdPWUpLHJbdF19Y29uc3QgTz12dCgiZ2xvYmFscyIse30pO3ZhciBRPSh0PT4odC5JTklUPSJJTklUIix0LkZPUldBUkQ9IkZPUldBUkQiLHQuVEVSTUlOQVRFPSJURVJNSU5BVEUiLHQuR0xPQkFMU19TWU5DPSJHTE9CQUxTX1NZTkMiLHQpKShRfHx7fSk7ZnVuY3Rpb24gQnIodCl7cmV0dXJuW0ltYWdlQml0bWFwLFJlYWRhYmxlU3RyZWFtLFdyaXRhYmxlU3RyZWFtXS5zb21lKGU9PnQgaW5zdGFuY2VvZiBlKX1sZXQgUHM9MDtmdW5jdGlvbiBrcyh0LGUscixuLHMpe2NvbnN0IGk9UHMrKztyZXR1cm4gdC5wb3N0TWVzc2FnZSh7aWQ6aSx0eXBlOmUsZnVuY3Rpb25OYW1lOnIsYXJnczpufSxuLmZpbHRlcihhPT5CcihhKSkpLG5ldyBQcm9taXNlKGE9PntzPT1udWxsfHxzLnNldChpLGEpfSl9ZnVuY3Rpb24gX2UodCxlKXtjb25zdHtpZDpyLHR5cGU6bn09dCxzPUFycmF5LmlzQXJyYXkoZSk/ZTpbZV07cG9zdE1lc3NhZ2Uoe2lkOnIsdHlwZTpuLHJlc3VsdDplfSxzLmZpbHRlcihpPT5CcihpKSkpfWNvbnN0IERyPXZ0KCJ3b3JrZXJpemVkIix7fSk7ZnVuY3Rpb24gTXIoKXtyZXR1cm4gdHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlPCJ1IiYmc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlfWFzeW5jIGZ1bmN0aW9uIENzKCl7aWYoTXIoKSlfZSh7dHlwZTpRLkdMT0JBTFNfU1lOQ30sTyk7ZWxzZXtjb25zdCB0PVtdO2Zvcihjb25zdCBlIGluIERyKXtjb25zdHt3b3JrZXI6cixyZXNvbHZlcnM6bn09RHJbZV0ud29ya2VyQ29udGV4dDtyJiZ0LnB1c2goa3MocixRLkdMT0JBTFNfU1lOQywiIixbT10sbikpfWF3YWl0IFByb21pc2UuYWxsKHQpfX1mdW5jdGlvbiBqZSh0LGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpZS5zcGxpY2UoMCxlLmxlbmd0aCk7ZWxzZSBpZih0eXBlb2YgZT09Im9iamVjdCIpZm9yKGNvbnN0IHIgaW4gZSlkZWxldGUgZVtyXTtmb3IoY29uc3QgciBpbiB0KUFycmF5LmlzQXJyYXkodFtyXSk/KGVbcl09W10samUodFtyXSxlW3JdKSk6dHlwZW9mIHRbcl09PSJvYmplY3QiPyhlW3JdPXt9LGplKHRbcl0sZVtyXSkpOmVbcl09dFtyXX1hc3luYyBmdW5jdGlvbiBCcyh0LGUpe2NvbnN0e2Z1bmN0aW9uTmFtZTpyLGFyZ3M6bn09dDtpZighZS5pbnN0YW5jZSl0aHJvdyJpbnN0YW5jZSBub3QgaW5pdGlhbGl6ZWQiO2lmKCFyKXRocm93Im1pc3NpbmcgZnVuY3Rpb24gbmFtZSB0byBjYWxsIjtpZighZS5pbnN0YW5jZVtyXSl0aHJvd2B1bmRlZmluZWQgZnVuY3Rpb24gWyR7cn1dIGluIGNsYXNzICR7ZS5pbnN0YW5jZS5jb25zdHJ1Y3Rvci53b3JrZXJJZH1gO19lKHQsYXdhaXQgZS5pbnN0YW5jZVtyXSguLi5uPz9bXSkpfWNvbnN0IERzPXZ0KCJyZWdpc3RlcmVkV29ya2VycyIse30pO2Z1bmN0aW9uIE1zKHQsZSl7aWYoIXQuYXJncyl0aHJvdyJNaXNzaW5nIGNsYXNzTmFtZSB3aGlsZSBpbml0aWFsaXppbmcgd29ya2VyIjtjb25zdFtyLG5dPXQuYXJncyxzPURzW3JdO2lmKHMpZS5pbnN0YW5jZT1uZXcgcyh0LmFyZ3Muc2xpY2UoMSkpO2Vsc2UgdGhyb3dgdW5rbm93biB3b3JrZXIgY2xhc3MgJHtyfWA7amUobixPKSxfZSh0LHR5cGVvZiBlLmluc3RhbmNlIT09dm9pZCAwKX1hc3luYyBmdW5jdGlvbiBVcyh0LGUpe2NvbnN0e2FyZ3M6cn09dDtpZighZS5pbnN0YW5jZSl0aHJvdyJpbnN0YW5jZSBub3QgaW5pdGlhbGl6ZWQiO2xldCBuO2UuaW5zdGFuY2UudGVybWluYXRlJiYobj1hd2FpdCBlLmluc3RhbmNlLnRlcm1pbmF0ZSguLi5yPz9bXSkpLF9lKHQsbil9ZnVuY3Rpb24gTnModCl7aWYoIXQuYXJncyl0aHJvdyJNaXNzaW5nIGdsb2JhbHMgd2hpbGUgc3luY2luZyI7amUodC5hcmdzWzBdLE8pLF9lKHQse30pfWZ1bmN0aW9uIE9zKCl7Y29uc3QgdD17fTtvbm1lc3NhZ2U9YXN5bmMgZT0+e2NvbnN0IHI9ZS5kYXRhO3N3aXRjaChyLnR5cGUpe2Nhc2UgUS5JTklUOk1zKHIsdCk7YnJlYWs7Y2FzZSBRLkZPUldBUkQ6QnMocix0KTticmVhaztjYXNlIFEuVEVSTUlOQVRFOlVzKHIsdCk7YnJlYWs7Y2FzZSBRLkdMT0JBTFNfU1lOQzpOcyhyKTticmVha319fU1yKCkmJk9zKCk7ZnVuY3Rpb24gTHModCxlKXtyZXR1cm4gT1t0XXx8KE9bdF09ZSksWygpPT5PW3RdLGFzeW5jIHI9PntPW3RdPXIsYXdhaXQgQ3MoKX1dfWZ1bmN0aW9uIHpzKHQsZSl7cmV0dXJuIExzKHQsZSl9Y29uc3RbR3MsJHNdPXpzKCJtZXRhZGF0YSIpO2Z1bmN0aW9uIFZzKHQpeyRzKHQpfWZ1bmN0aW9uIFN0KCl7cmV0dXJuIEdzKCl9bGV0IEl0PWNsYXNze2NvbnN0cnVjdG9yKGUscil7X3ModGhpcywidXVpZCIpLHRoaXMuY29uZmlnPWUsdGhpcy51dWlkPXI/P0ZzKCl9YXN5bmMgc2VuZChlKXt2YXIgcixuLHM7Y29uc3R7YXBwSWQ6aSxzb3VyY2VUeXBlOmF9PShyPVN0KCkpIT1udWxsP3I6e307aWYoIWl8fCFhKXJldHVybiJtZXRhZGF0YSBtaXNzaW5nIjtjb25zdCBvPW5ldyBBYm9ydENvbnRyb2xsZXIsYz1zZXRUaW1lb3V0KCgpPT5vLmFib3J0KCksQXMpO3JldHVybiBhd2FpdCgocz0obj10aGlzLmNvbmZpZyk9PW51bGw/dm9pZCAwOm4uZmV0Y2gpIT1udWxsP3M6ZmV0Y2gpKHRoaXMuZ2V0VXJsKCkse21ldGhvZDoiUE9TVCIsaGVhZGVyczp0aGlzLmdldEhlYWRlcnMoKSxib2R5OkpTT04uc3RyaW5naWZ5KHRoaXMuYnVpbGRSZXBvcnQoZSkpLHNpZ25hbDpvLnNpZ25hbH0pLGNsZWFyVGltZW91dChjKSwic3VjY2VzcyJ9Z2V0VXJsKCl7dmFyIGU7bGV0IHI9KGU9U3QoKS5wcm94eVVybCkhPW51bGw/ZTp3cztyZXR1cm4gcis9KHIuYXQoLTEpPT09Ii8iPyIiOiIvIikrVHMscn1nZXRIZWFkZXJzKCl7cmV0dXJueyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn19YnVpbGRSZXBvcnQoZSl7Y29uc3Qgcj1TdCgpO3JldHVybntndWlkOnRoaXMudXVpZCwuLi5lLGFwcGxpY2F0aW9uSWQ6ci5hcHBJZCx0aW1lc3RhbXA6RGF0ZS5ub3coKSxwcm94eVVybDpyLnByb3h5VXJsLHNvdXJjZTpyLnNvdXJjZVR5cGV9fX07Y29uc3QgWGU9IjIuMC40IjtjbGFzcyBXc3tjb25zdHJ1Y3RvcihlLHIpe3RoaXMuY29uZmlnPWUsdGhpcy5mcmFtZVRyYW5zZm9ybWVkQ291bnQ9MCx0aGlzLmZyYW1lRnJvbVNvdXJjZUNvdW50PTAsdGhpcy5zdGFydEF0PTAsdGhpcy5yZXBvcnRlcj1uZXcgSXQoZSxyKX1hc3luYyBvbkZyYW1lRnJvbVNvdXJjZSgpe3RoaXMuZnJhbWVGcm9tU291cmNlQ291bnQrK31nZXQgZnBzKCl7Y29uc3R7c3RhcnRBdDplLGZyYW1lRnJvbVNvdXJjZUNvdW50OnJ9PXRoaXMsbj0oRGF0ZS5ub3coKS1lKS8xZTM7cmV0dXJuIHIvbn1hc3luYyBvbkZyYW1lVHJhbnNmb3JtZWQoZT17fSxyPSExKXt0aGlzLnN0YXJ0QXQ9PT0wJiYodGhpcy5zdGFydEF0PURhdGUubm93KCkpLHRoaXMuZnJhbWVUcmFuc2Zvcm1lZENvdW50Kys7Y29uc3R7c3RhcnRBdDpuLGZyYW1lVHJhbnNmb3JtZWRDb3VudDpzLGZyYW1lRnJvbVNvdXJjZUNvdW50Oml9PXRoaXMsYT1EYXRlLm5vdygpLG89KGEtbikvMWUzLGM9cy9vLHU9aS9vO3JldHVybiByfHx0aGlzLmZyYW1lVHJhbnNmb3JtZWRDb3VudD49dGhpcy5jb25maWcubG9nZ2luZ0ludGVydmFsRnJhbWVDb3VudD8odGhpcy5mcmFtZUZyb21Tb3VyY2VDb3VudD0wLHRoaXMuZnJhbWVUcmFuc2Zvcm1lZENvdW50PTAsdGhpcy5zdGFydEF0PWEsdGhpcy5yZXBvcnRlci5jb25maWc9dGhpcy5jb25maWcsdGhpcy5yZXBvcnRlci5zZW5kKHsuLi50aGlzLmNvbmZpZy5yZXBvcnQsdmFyaWF0aW9uOiJRb1MiLGZwczp1LHRyYW5zZm9ybWVkRnBzOmMsZnJhbWVzVHJhbnNmb3JtZWQ6cywuLi5lfSkpOiJzdWNjZXNzIn19dmFyIFJ0PSh0PT4odC5waXBlbGluZV9lbmRlZD0icGlwZWxpbmVfZW5kZWQiLHQucGlwZWxpbmVfZW5kZWRfd2l0aF9lcnJvcj0icGlwZWxpbmVfZW5kZWRfd2l0aF9lcnJvciIsdC5waXBlbGluZV9zdGFydGVkPSJwaXBlbGluZV9zdGFydGVkIix0LnBpcGVsaW5lX3N0YXJ0ZWRfd2l0aF9lcnJvcj0icGlwZWxpbmVfc3RhcnRlZF93aXRoX2Vycm9yIix0LnBpcGVsaW5lX3Jlc3RhcnRlZD0icGlwZWxpbmVfcmVzdGFydGVkIix0LnBpcGVsaW5lX3Jlc3RhcnRlZF93aXRoX2Vycm9yPSJwaXBlbGluZV9yZXN0YXJ0ZWRfd2l0aF9lcnJvciIsdCkpKFJ0fHx7fSk7Y29uc3QgSHM9NTAwLGpzPS44O2NsYXNzIFhzIGV4dGVuZHMgd3R7Y29uc3RydWN0b3IoZSxyKXtzdXBlcigpLHRoaXMucmVwb3J0ZXJfPW5ldyBJdCx0aGlzLnJlcG9ydGVyUW9zXz1uZXcgV3Moe2xvZ2dpbmdJbnRlcnZhbEZyYW1lQ291bnQ6SHMscmVwb3J0Ont2ZXJzaW9uOlhlfX0pLHRoaXMuaW5kZXhfPXIsdGhpcy50cmFuc2Zvcm1lcl89ZSx0aGlzLnNob3VsZFN0b3BfPSExLHRoaXMuaXNGbGFzaGVkXz0hMSx0aGlzLm1lZGlhVHJhbnNmb3JtZXJRb3NSZXBvcnRTdGFydFRpbWVzdGFtcF89MCx0aGlzLnZpZGVvSGVpZ2h0Xz0wLHRoaXMudmlkZW9XaWR0aF89MCx0aGlzLnRyYWNrRXhwZWN0ZWRSYXRlXz0tMSx0aGlzLnRyYW5zZm9ybWVyVHlwZV89IkN1c3RvbSIsImdldFRyYW5zZm9ybWVyVHlwZSJpbiBlJiYodGhpcy50cmFuc2Zvcm1lclR5cGVfPWUuZ2V0VHJhbnNmb3JtZXJUeXBlKCkpLHRoaXMucmVwb3J0KHt2YXJpYXRpb246IkNyZWF0ZSJ9KX1zZXRUcmFja0V4cGVjdGVkUmF0ZShlKXt0aGlzLnRyYWNrRXhwZWN0ZWRSYXRlXz1lfWFzeW5jIHN0YXJ0KGUpe2lmKHRoaXMuY29udHJvbGxlcl89ZSx0aGlzLnRyYW5zZm9ybWVyXyYmdHlwZW9mIHRoaXMudHJhbnNmb3JtZXJfLnN0YXJ0PT0iZnVuY3Rpb24iKXRyeXthd2FpdCB0aGlzLnRyYW5zZm9ybWVyXy5zdGFydChlKX1jYXRjaChyKXt0aGlzLnJlcG9ydCh7bWVzc2FnZTpELmVycm9ycy50cmFuc2Zvcm1lcl9zdGFydCx2YXJpYXRpb246IkVycm9yIixlcnJvcjpBdChyKX0pO2NvbnN0IG49e2V2ZW50TWV0YURhdGE6e3RyYW5zZm9ybWVySW5kZXg6dGhpcy5pbmRleF99LGVycm9yOnIsZnVuY3Rpb246InN0YXJ0In07dGhpcy5lbWl0KCJlcnJvciIsbil9fWFzeW5jIHRyYW5zZm9ybShlLHIpe3ZhciBuLHM7aWYodGhpcy5tZWRpYVRyYW5zZm9ybWVyUW9zUmVwb3J0U3RhcnRUaW1lc3RhbXBfPT09MCYmKHRoaXMubWVkaWFUcmFuc2Zvcm1lclFvc1JlcG9ydFN0YXJ0VGltZXN0YW1wXz1EYXRlLm5vdygpKSxlIGluc3RhbmNlb2YgVmlkZW9GcmFtZSYmKHRoaXMudmlkZW9IZWlnaHRfPShlPT1udWxsP3ZvaWQgMDplLmRpc3BsYXlIZWlnaHQpPz8wLHRoaXMudmlkZW9XaWR0aF89KGU9PW51bGw/dm9pZCAwOmUuZGlzcGxheVdpZHRoKT8/MCksdGhpcy5yZXBvcnRlclFvc18ub25GcmFtZUZyb21Tb3VyY2UoKSx0aGlzLnRyYW5zZm9ybWVyXylpZih0aGlzLnNob3VsZFN0b3BfKWNvbnNvbGUud2FybigiW1BpcGVsaW5lXSBmbHVzaCBmcm9tIHRyYW5zZm9ybSIpLGUuY2xvc2UoKSx0aGlzLmZsdXNoKHIpLHIudGVybWluYXRlKCk7ZWxzZXt0cnl7YXdhaXQoKHM9KG49dGhpcy50cmFuc2Zvcm1lcl8pLnRyYW5zZm9ybSk9PW51bGw/dm9pZCAwOnMuY2FsbChuLGUscikpLHRoaXMucmVwb3J0UW9zKCl9Y2F0Y2goaSl7dGhpcy5yZXBvcnQoe21lc3NhZ2U6RC5lcnJvcnMudHJhbnNmb3JtZXJfdHJhbnNmb3JtLHZhcmlhdGlvbjoiRXJyb3IiLGVycm9yOkF0KGkpfSk7Y29uc3QgYT17ZXZlbnRNZXRhRGF0YTp7dHJhbnNmb3JtZXJJbmRleDp0aGlzLmluZGV4X30sZXJyb3I6aSxmdW5jdGlvbjoidHJhbnNmb3JtIn07dGhpcy5lbWl0KCJlcnJvciIsYSl9aWYodGhpcy50cmFja0V4cGVjdGVkUmF0ZV8hPS0xJiZ0aGlzLnRyYWNrRXhwZWN0ZWRSYXRlXypqcz50aGlzLnJlcG9ydGVyUW9zXy5mcHMpe2NvbnN0IGk9e2V2ZW50TWV0YURhdGE6e3RyYW5zZm9ybWVySW5kZXg6dGhpcy5pbmRleF99LHdhcm5pbmdUeXBlOiJmcHNfZHJvcCIsZHJvcEluZm86e3JlcXVlc3RlZDp0aGlzLnRyYWNrRXhwZWN0ZWRSYXRlXyxjdXJyZW50OnRoaXMucmVwb3J0ZXJRb3NfLmZwc319O3RoaXMuZW1pdCgid2FybiIsaSl9fX1hc3luYyBmbHVzaChlKXtpZih0aGlzLnRyYW5zZm9ybWVyXyYmdHlwZW9mIHRoaXMudHJhbnNmb3JtZXJfLmZsdXNoPT0iZnVuY3Rpb24iJiYhdGhpcy5pc0ZsYXNoZWRfKXt0aGlzLmlzRmxhc2hlZF89ITA7dHJ5e2F3YWl0IHRoaXMudHJhbnNmb3JtZXJfLmZsdXNoKGUpfWNhdGNoKHIpe3RoaXMucmVwb3J0KHttZXNzYWdlOkQuZXJyb3JzLnRyYW5zZm9ybWVyX2ZsdXNoLHZhcmlhdGlvbjoiRXJyb3IiLGVycm9yOkF0KHIpfSk7Y29uc3Qgbj17ZXZlbnRNZXRhRGF0YTp7dHJhbnNmb3JtZXJJbmRleDp0aGlzLmluZGV4X30sZXJyb3I6cixmdW5jdGlvbjoiZmx1c2gifTt0aGlzLmVtaXQoImVycm9yIixuKX19dGhpcy5yZXBvcnRRb3MoITApLHRoaXMucmVwb3J0KHt2YXJpYXRpb246IkRlbGV0ZSJ9KX1zdG9wKCl7Y29uc29sZS5sb2coIltQaXBlbGluZV0gU3RvcCBzdHJlYW0uIiksdGhpcy5jb250cm9sbGVyXyYmKHRoaXMuZmx1c2godGhpcy5jb250cm9sbGVyXyksdGhpcy5jb250cm9sbGVyXy50ZXJtaW5hdGUoKSksdGhpcy5zaG91bGRTdG9wXz0hMH1yZXBvcnQoZSl7dGhpcy5yZXBvcnRlcl8uc2VuZCh7dmVyc2lvbjpYZSxhY3Rpb246Ik1lZGlhVHJhbnNmb3JtZXIiLHRyYW5zZm9ybWVyVHlwZTp0aGlzLnRyYW5zZm9ybWVyVHlwZV8sLi4uZX0pfXJlcG9ydFFvcyhlPSExKXt0aGlzLnJlcG9ydGVyUW9zXy5jb25maWc9ey4uLnRoaXMucmVwb3J0ZXJRb3NfLmNvbmZpZ30sdGhpcy5yZXBvcnRlclFvc18ub25GcmFtZVRyYW5zZm9ybWVkKHt2ZXJzaW9uOlhlLGFjdGlvbjoiTWVkaWFUcmFuc2Zvcm1lciIsdHJhbnNmb3JtZXJUeXBlOnRoaXMudHJhbnNmb3JtZXJUeXBlXyx2aWRlb1dpZHRoOnRoaXMudmlkZW9XaWR0aF8sdmlkZW9IZWlnaHQ6dGhpcy52aWRlb0hlaWdodF99LGUpfX1jbGFzcyBZcyBleHRlbmRzIHd0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy50cmFuc2Zvcm1lcnNfPVtdLHRoaXMudHJhY2tFeHBlY3RlZFJhdGVfPS0xO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKXtsZXQgbj1uZXcgWHMoZVtyXSxyKTtuLm9uKCJlcnJvciIscz0+e3RoaXMuZW1pdCgiZXJyb3IiLHMpfSksbi5vbigid2FybiIscz0+e3RoaXMuZW1pdCgid2FybiIscyl9KSx0aGlzLnRyYW5zZm9ybWVyc18ucHVzaChuKX19c2V0VHJhY2tFeHBlY3RlZFJhdGUoZSl7dGhpcy50cmFja0V4cGVjdGVkUmF0ZV89ZTtmb3IobGV0IHIgb2YgdGhpcy50cmFuc2Zvcm1lcnNfKXIuc2V0VHJhY2tFeHBlY3RlZFJhdGUodGhpcy50cmFja0V4cGVjdGVkUmF0ZV8pfWFzeW5jIHN0YXJ0KGUscil7aWYoIXRoaXMudHJhbnNmb3JtZXJzX3x8dGhpcy50cmFuc2Zvcm1lcnNfLmxlbmd0aD09PTApe2NvbnNvbGUubG9nKCJbUGlwZWxpbmVdIE5vIHRyYW5zZm9ybWVycy4iKTtyZXR1cm59dHJ5e2xldCBuPWU7Zm9yKGxldCBzIG9mIHRoaXMudHJhbnNmb3JtZXJzXyllPWUucGlwZVRocm91Z2gobmV3IFRyYW5zZm9ybVN0cmVhbShzKSk7ZS5waXBlVG8ocikudGhlbihhc3luYygpPT57Y29uc29sZS5sb2coIltQaXBlbGluZV0gU2V0dXAuIiksYXdhaXQgci5hYm9ydCgpLGF3YWl0IG4uY2FuY2VsKCksdGhpcy5lbWl0KCJwaXBlbGluZUluZm8iLCJwaXBlbGluZV9lbmRlZCIpfSkuY2F0Y2goYXN5bmMgcz0+e2UuY2FuY2VsKCkudGhlbigoKT0+e2NvbnNvbGUubG9nKCJbUGlwZWxpbmVdIFNodXR0aW5nIGRvd24gc3RyZWFtcyBhZnRlciBhYm9ydC4iKX0pLmNhdGNoKGk9Pntjb25zb2xlLmVycm9yKCJbUGlwZWxpbmVdIEVycm9yIGZyb20gc3RyZWFtIHRyYW5zZm9ybToiLGkpfSksYXdhaXQgci5hYm9ydChzKSxhd2FpdCBuLmNhbmNlbChzKSx0aGlzLmVtaXQoInBpcGVsaW5lSW5mbyIsInBpcGVsaW5lX2VuZGVkX3dpdGhfZXJyb3IiKX0pfWNhdGNoe3RoaXMuZW1pdCgicGlwZWxpbmVJbmZvIiwicGlwZWxpbmVfc3RhcnRlZF93aXRoX2Vycm9yIiksdGhpcy5kZXN0cm95KCk7cmV0dXJufXRoaXMuZW1pdCgicGlwZWxpbmVJbmZvIiwicGlwZWxpbmVfc3RhcnRlZCIpLGNvbnNvbGUubG9nKCJbUGlwZWxpbmVdIFBpcGVsaW5lIHN0YXJ0ZWQuIil9YXN5bmMgZGVzdHJveSgpe2NvbnNvbGUubG9nKCJbUGlwZWxpbmVdIERlc3Ryb3lpbmcgUGlwZWxpbmUuIik7Zm9yKGxldCBlIG9mIHRoaXMudHJhbnNmb3JtZXJzXyllLnN0b3AoKX19Y2xhc3MgUXMgZXh0ZW5kcyB3dHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5yZXBvcnRlcl89bmV3IEl0LHRoaXMudHJhY2tFeHBlY3RlZFJhdGVfPS0xLHRoaXMucmVwb3J0KHt2YXJpYXRpb246IkNyZWF0ZSJ9KX1zZXRUcmFja0V4cGVjdGVkUmF0ZShlKXt0aGlzLnRyYWNrRXhwZWN0ZWRSYXRlXz1lLHRoaXMucGlwZWxpbmVfJiZ0aGlzLnBpcGVsaW5lXy5zZXRUcmFja0V4cGVjdGVkUmF0ZSh0aGlzLnRyYWNrRXhwZWN0ZWRSYXRlXyl9dHJhbnNmb3JtKGUscil7cmV0dXJuIHRoaXMucmVhZGFibGVfPWUsdGhpcy53cml0YWJsZV89cix0aGlzLnRyYW5zZm9ybUludGVybmFsKCl9dHJhbnNmb3JtSW50ZXJuYWwoKXtyZXR1cm4gbmV3IFByb21pc2UoYXN5bmMoZSxyKT0+e2lmKCF0aGlzLnRyYW5zZm9ybWVyc198fHRoaXMudHJhbnNmb3JtZXJzXy5sZW5ndGg9PT0wKXt0aGlzLnJlcG9ydCh7bWVzc2FnZTpELmVycm9ycy50cmFuc2Zvcm1lcl9ub25lLHZhcmlhdGlvbjoiRXJyb3IifSkscigiW01lZGlhUHJvY2Vzc29yXSBOZWVkIHRvIHNldCB0cmFuc2Zvcm1lcnMuIik7cmV0dXJufWlmKCF0aGlzLnJlYWRhYmxlXyl7dGhpcy5yZXBvcnQoe3ZhcmlhdGlvbjoiRXJyb3IiLG1lc3NhZ2U6RC5lcnJvcnMucmVhZGFibGVfbnVsbH0pLHIoIltNZWRpYVByb2Nlc3Nvcl0gUmVhZGFibGUgaXMgbnVsbC4iKTtyZXR1cm59aWYoIXRoaXMud3JpdGFibGVfKXt0aGlzLnJlcG9ydCh7dmFyaWF0aW9uOiJFcnJvciIsbWVzc2FnZTpELmVycm9ycy53cml0YWJsZV9udWxsfSkscigiW01lZGlhUHJvY2Vzc29yXSBXcml0YWJsZSBpcyBudWxsLiIpO3JldHVybn1sZXQgbj0hMTt0aGlzLnBpcGVsaW5lXyYmKG49ITAsdGhpcy5waXBlbGluZV8uY2xlYXJMaXN0ZW5lcnMoKSx0aGlzLnBpcGVsaW5lXy5kZXN0cm95KCkpLHRoaXMucGlwZWxpbmVfPW5ldyBZcyh0aGlzLnRyYW5zZm9ybWVyc18pLHRoaXMucGlwZWxpbmVfLm9uKCJ3YXJuIixzPT57dGhpcy5lbWl0KCJ3YXJuIixzKX0pLHRoaXMucGlwZWxpbmVfLm9uKCJlcnJvciIscz0+e3RoaXMuZW1pdCgiZXJyb3IiLHMpfSksdGhpcy5waXBlbGluZV8ub24oInBpcGVsaW5lSW5mbyIscz0+e24mJihzPT09InBpcGVsaW5lX3N0YXJ0ZWQiP3M9UnQucGlwZWxpbmVfcmVzdGFydGVkOnM9PT0icGlwZWxpbmVfc3RhcnRlZF93aXRoX2Vycm9yIiYmKHM9UnQucGlwZWxpbmVfcmVzdGFydGVkX3dpdGhfZXJyb3IpKSx0aGlzLmVtaXQoInBpcGVsaW5lSW5mbyIscyl9KSx0aGlzLnRyYWNrRXhwZWN0ZWRSYXRlXyE9LTEmJnRoaXMucGlwZWxpbmVfLnNldFRyYWNrRXhwZWN0ZWRSYXRlKHRoaXMudHJhY2tFeHBlY3RlZFJhdGVfKSx0aGlzLnBpcGVsaW5lXy5zdGFydCh0aGlzLnJlYWRhYmxlXyx0aGlzLndyaXRhYmxlXykudGhlbigoKT0+e2UoKX0pLmNhdGNoKHM9PntyKHMpfSl9KX1zZXRUcmFuc2Zvcm1lcnMoZSl7cmV0dXJuIHRoaXMucmVwb3J0KHt2YXJpYXRpb246IlVwZGF0ZSIsbWVzc2FnZTpELnVwZGF0ZXMudHJhbnNmb3JtZXJfbmV3fSksdGhpcy50cmFuc2Zvcm1lcnNfPWUsdGhpcy5yZWFkYWJsZV8mJnRoaXMud3JpdGFibGVfP3RoaXMudHJhbnNmb3JtSW50ZXJuYWwoKTpQcm9taXNlLnJlc29sdmUoKX1kZXN0cm95KCl7cmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIGU9Pnt0aGlzLnBpcGVsaW5lXyYmdGhpcy5waXBlbGluZV8uZGVzdHJveSgpLHRoaXMucmVwb3J0KHt2YXJpYXRpb246IkRlbGV0ZSJ9KSxlKCl9KX1yZXBvcnQoZSl7dGhpcy5yZXBvcnRlcl8uc2VuZCh7dmVyc2lvbjpYZSxhY3Rpb246Ik1lZGlhUHJvY2Vzc29yIiwuLi5lfSl9fXZhciBxcz1PYmplY3QuZGVmaW5lUHJvcGVydHksS3M9KHQsZSxyKT0+ZSBpbiB0P3FzKHQsZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6cn0pOnRbZV09cixKcz0odCxlLHIpPT4oS3ModCxlKyIiLHIpLHIpO2NvbnN0IFpzPSJobGcudG9rYm94LmNvbS9wcm9kL2xvZ2dpbmcvdmNwX3dlYnJ0YyIsZWk9Imh0dHBzOi8vIix0aT0xZTQ7bGV0IFllO2NvbnN0IHJpPW5ldyBVaW50OEFycmF5KDE2KTtmdW5jdGlvbiBuaSgpe2lmKCFZZSYmKFllPXR5cGVvZiBjcnlwdG88InUiJiZjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzJiZjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzLmJpbmQoY3J5cHRvKSwhWWUpKXRocm93IG5ldyBFcnJvcigiY3J5cHRvLmdldFJhbmRvbVZhbHVlcygpIG5vdCBzdXBwb3J0ZWQuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdXVpZGpzL3V1aWQjZ2V0cmFuZG9tdmFsdWVzLW5vdC1zdXBwb3J0ZWQiKTtyZXR1cm4gWWUocmkpfWNvbnN0IHc9W107Zm9yKGxldCB0PTA7dDwyNTY7Kyt0KXcucHVzaCgodCsyNTYpLnRvU3RyaW5nKDE2KS5zbGljZSgxKSk7ZnVuY3Rpb24gc2kodCxlPTApe3JldHVybih3W3RbZSswXV0rd1t0W2UrMV1dK3dbdFtlKzJdXSt3W3RbZSszXV0rIi0iK3dbdFtlKzRdXSt3W3RbZSs1XV0rIi0iK3dbdFtlKzZdXSt3W3RbZSs3XV0rIi0iK3dbdFtlKzhdXSt3W3RbZSs5XV0rIi0iK3dbdFtlKzEwXV0rd1t0W2UrMTFdXSt3W3RbZSsxMl1dK3dbdFtlKzEzXV0rd1t0W2UrMTRdXSt3W3RbZSsxNV1dKS50b0xvd2VyQ2FzZSgpfWNvbnN0IGlpPXR5cGVvZiBjcnlwdG88InUiJiZjcnlwdG8ucmFuZG9tVVVJRCYmY3J5cHRvLnJhbmRvbVVVSUQuYmluZChjcnlwdG8pLFVyPXtyYW5kb21VVUlEOmlpfTtmdW5jdGlvbiBvaSh0LGUscil7aWYoVXIucmFuZG9tVVVJRCYmIWUmJiF0KXJldHVybiBVci5yYW5kb21VVUlEKCk7dD10fHx7fTtjb25zdCBuPXQucmFuZG9tfHwodC5ybmd8fG5pKSgpO3JldHVybiBuWzZdPW5bNl0mMTV8NjQsbls4XT1uWzhdJjYzfDEyOCxzaShuKX1mdW5jdGlvbiBGdCh0LGUpe2dsb2JhbFRoaXMudm9uYWdlfHwoZ2xvYmFsVGhpcy52b25hZ2U9e30pLGdsb2JhbFRoaXMudm9uYWdlLndvcmtlcml6ZXJ8fChnbG9iYWxUaGlzLnZvbmFnZS53b3JrZXJpemVyPXt9KTtsZXQgcj1nbG9iYWxUaGlzLnZvbmFnZS53b3JrZXJpemVyO3JldHVybiByW3RdfHwoclt0XT1lKSxyW3RdfWNvbnN0IEw9RnQoImdsb2JhbHMiLHt9KTt2YXIgcT0odD0+KHQuSU5JVD0iSU5JVCIsdC5GT1JXQVJEPSJGT1JXQVJEIix0LlRFUk1JTkFURT0iVEVSTUlOQVRFIix0LkdMT0JBTFNfU1lOQz0iR0xPQkFMU19TWU5DIix0KSkocXx8e30pO2Z1bmN0aW9uIE5yKHQpe3JldHVybltJbWFnZUJpdG1hcCxSZWFkYWJsZVN0cmVhbSxXcml0YWJsZVN0cmVhbV0uc29tZShlPT50IGluc3RhbmNlb2YgZSl9bGV0IGFpPTA7ZnVuY3Rpb24gY2kodCxlLHIsbixzKXtjb25zdCBpPWFpKys7cmV0dXJuIHQucG9zdE1lc3NhZ2Uoe2lkOmksdHlwZTplLGZ1bmN0aW9uTmFtZTpyLGFyZ3M6bn0sbi5maWx0ZXIoYT0+TnIoYSkpKSxuZXcgUHJvbWlzZShhPT57cz09bnVsbHx8cy5zZXQoaSxhKX0pfWZ1bmN0aW9uIFRlKHQsZSl7Y29uc3R7aWQ6cix0eXBlOm59PXQscz1BcnJheS5pc0FycmF5KGUpP2U6W2VdO3Bvc3RNZXNzYWdlKHtpZDpyLHR5cGU6bixyZXN1bHQ6ZX0scy5maWx0ZXIoaT0+TnIoaSkpKX1jb25zdCBPcj1GdCgid29ya2VyaXplZCIse30pO2Z1bmN0aW9uIExyKCl7cmV0dXJuIHR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZTwidSImJnNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZX1hc3luYyBmdW5jdGlvbiB1aSgpe2lmKExyKCkpVGUoe3R5cGU6cS5HTE9CQUxTX1NZTkN9LEwpO2Vsc2V7Y29uc3QgdD1bXTtmb3IoY29uc3QgZSBpbiBPcil7Y29uc3R7d29ya2VyOnIscmVzb2x2ZXJzOm59PU9yW2VdLndvcmtlckNvbnRleHQ7ciYmdC5wdXNoKGNpKHIscS5HTE9CQUxTX1NZTkMsIiIsW0xdLG4pKX1hd2FpdCBQcm9taXNlLmFsbCh0KX19ZnVuY3Rpb24gUWUodCxlKXtpZihBcnJheS5pc0FycmF5KGUpKWUuc3BsaWNlKDAsZS5sZW5ndGgpO2Vsc2UgaWYodHlwZW9mIGU9PSJvYmplY3QiKWZvcihjb25zdCByIGluIGUpZGVsZXRlIGVbcl07Zm9yKGNvbnN0IHIgaW4gdClBcnJheS5pc0FycmF5KHRbcl0pPyhlW3JdPVtdLFFlKHRbcl0sZVtyXSkpOnR5cGVvZiB0W3JdPT0ib2JqZWN0Ij8oZVtyXT17fSxRZSh0W3JdLGVbcl0pKTplW3JdPXRbcl19YXN5bmMgZnVuY3Rpb24gZmkodCxlKXtjb25zdHtmdW5jdGlvbk5hbWU6cixhcmdzOm59PXQ7aWYoIWUuaW5zdGFuY2UpdGhyb3ciaW5zdGFuY2Ugbm90IGluaXRpYWxpemVkIjtpZighcil0aHJvdyJtaXNzaW5nIGZ1bmN0aW9uIG5hbWUgdG8gY2FsbCI7aWYoIWUuaW5zdGFuY2Vbcl0pdGhyb3dgdW5kZWZpbmVkIGZ1bmN0aW9uIFske3J9XSBpbiBjbGFzcyAke2UuaW5zdGFuY2UuY29uc3RydWN0b3Iud29ya2VySWR9YDtUZSh0LGF3YWl0IGUuaW5zdGFuY2Vbcl0oLi4ubj8/W10pKX1jb25zdCBsaT1GdCgicmVnaXN0ZXJlZFdvcmtlcnMiLHt9KTtmdW5jdGlvbiBkaSh0LGUpe2lmKCF0LmFyZ3MpdGhyb3ciTWlzc2luZyBjbGFzc05hbWUgd2hpbGUgaW5pdGlhbGl6aW5nIHdvcmtlciI7Y29uc3RbcixuXT10LmFyZ3Mscz1saVtyXTtpZihzKWUuaW5zdGFuY2U9bmV3IHModC5hcmdzLnNsaWNlKDEpKTtlbHNlIHRocm93YHVua25vd24gd29ya2VyIGNsYXNzICR7cn1gO1FlKG4sTCksVGUodCx0eXBlb2YgZS5pbnN0YW5jZSE9PXZvaWQgMCl9YXN5bmMgZnVuY3Rpb24gaGkodCxlKXtjb25zdHthcmdzOnJ9PXQ7aWYoIWUuaW5zdGFuY2UpdGhyb3ciaW5zdGFuY2Ugbm90IGluaXRpYWxpemVkIjtsZXQgbjtlLmluc3RhbmNlLnRlcm1pbmF0ZSYmKG49YXdhaXQgZS5pbnN0YW5jZS50ZXJtaW5hdGUoLi4ucj8/W10pKSxUZSh0LG4pfWZ1bmN0aW9uIG1pKHQpe2lmKCF0LmFyZ3MpdGhyb3ciTWlzc2luZyBnbG9iYWxzIHdoaWxlIHN5bmNpbmciO1FlKHQuYXJnc1swXSxMKSxUZSh0LHt9KX1mdW5jdGlvbiBwaSgpe2NvbnN0IHQ9e307b25tZXNzYWdlPWFzeW5jIGU9Pntjb25zdCByPWUuZGF0YTtzd2l0Y2goci50eXBlKXtjYXNlIHEuSU5JVDpkaShyLHQpO2JyZWFrO2Nhc2UgcS5GT1JXQVJEOmZpKHIsdCk7YnJlYWs7Y2FzZSBxLlRFUk1JTkFURTpoaShyLHQpO2JyZWFrO2Nhc2UgcS5HTE9CQUxTX1NZTkM6bWkocik7YnJlYWt9fX1McigpJiZwaSgpO2Z1bmN0aW9uIHlpKHQsZSl7cmV0dXJuIExbdF18fChMW3RdPWUpLFsoKT0+TFt0XSxhc3luYyByPT57TFt0XT1yLGF3YWl0IHVpKCl9XX1mdW5jdGlvbiBiaSh0LGUpe3JldHVybiB5aSh0LGUpfWNvbnN0W2dpLGZmXT1iaSgibWV0YWRhdGEiKTtmdW5jdGlvbiBQdCgpe3JldHVybiBnaSgpfWNsYXNzIHhpe2NvbnN0cnVjdG9yKGUpe0pzKHRoaXMsInV1aWQiLG9pKCkpLHRoaXMuY29uZmlnPWV9YXN5bmMgc2VuZChlKXt2YXIgcixuLHM7Y29uc3R7YXBwSWQ6aSxzb3VyY2VUeXBlOmF9PShyPVB0KCkpIT1udWxsP3I6e307aWYoIWl8fCFhKXJldHVybiJtZXRhZGF0YSBtaXNzaW5nIjtjb25zdCBvPW5ldyBBYm9ydENvbnRyb2xsZXIsYz1zZXRUaW1lb3V0KCgpPT5vLmFib3J0KCksdGkpO3JldHVybiBhd2FpdCgocz0obj10aGlzLmNvbmZpZyk9PW51bGw/dm9pZCAwOm4uZmV0Y2gpIT1udWxsP3M6ZmV0Y2gpKHRoaXMuZ2V0VXJsKCkse21ldGhvZDoiUE9TVCIsaGVhZGVyczp0aGlzLmdldEhlYWRlcnMoKSxib2R5OkpTT04uc3RyaW5naWZ5KHRoaXMuYnVpbGRSZXBvcnQoZSkpLHNpZ25hbDpvLnNpZ25hbH0pLGNsZWFyVGltZW91dChjKSwic3VjY2VzcyJ9Z2V0VXJsKCl7dmFyIGU7bGV0IHI9KGU9UHQoKS5wcm94eVVybCkhPW51bGw/ZTplaTtyZXR1cm4gcis9KHIuYXQoLTEpPT09Ii8iPyIiOiIvIikrWnMscn1nZXRIZWFkZXJzKCl7cmV0dXJueyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn19YnVpbGRSZXBvcnQoZSl7Y29uc3Qgcj1QdCgpO3JldHVybntndWlkOnRoaXMudXVpZCwuLi5lLGFwcGxpY2F0aW9uSWQ6ci5hcHBJZCx0aW1lc3RhbXA6RGF0ZS5ub3coKSxwcm94eVVybDpyLnByb3h5VXJsLHNvdXJjZTpyLnNvdXJjZVR5cGV9fX1jb25zdCBFaT0iNi4wLjAtYWxwaGEuMiI7dmFyIHFlPSh0PT4odC5Mb3c9IkxvdyIsdC5IaWdoPSJIaWdoIix0KSkocWV8fHt9KSxrdD0odD0+KHQuRkFTVD0iRkFTVCIsdC5QUkVDSVNFPSJQUkVDSVNFIix0KSkoa3R8fHt9KSxLZT0odD0+KHQuQ0FOVkFTPSJDQU5WQVMiLHQuV0VCR0w9IldFQkdMIix0KSkoS2V8fHt9KTtmdW5jdGlvbiBfaSgpe2NvbnN0IGU9bmV3IE9mZnNjcmVlbkNhbnZhcygwLDApLmdldENvbnRleHQoIndlYmdsMiIse2ZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQ6ITB9KTtpZihlKXtjb25zdCByPWU9PW51bGw/dm9pZCAwOmUuZ2V0RXh0ZW5zaW9uKCJXRUJHTF9sb3NlX2NvbnRleHQiKTtyJiZyLmxvc2VDb250ZXh0KCl9ZWxzZSByZXR1cm57c3VwcG9ydGVkOiExLG1lc3NhZ2U6IllvdXIgaGFyZHdhcmUgZG9lcyBub3QgcGVyZm9ybSBnb29kIGVub3VnaCB0byBydW4gdGhlIGxpYnJhcnkgZWZmaWNpZW50bHkifTtyZXR1cm57c3VwcG9ydGVkOiEwfX1jbGFzcyBDdHtjb25zdHJ1Y3Rvcigpe2NvbnN0IGU9bmV3IE9mZnNjcmVlbkNhbnZhcygwLDApLHI9ZS5nZXRDb250ZXh0KCIyZCIse3dpbGxSZWFkRnJlcXVlbnRseTohMH0pO2lmKCFyKXRocm93IkZhaWwgdG8gcmV0cmlldmUgMmQgY29udGV4dCI7dGhpcy5jYW52YXM9ZSx0aGlzLmNvbnRleHQ9cn1zZXRGbGlja2VyaW5nT3B0aW9ucyhlKXt9ZW5hYmxlUG9zdFByb2Nlc3NpbmcoKXt9ZGlzYWJsZVBvc3RQcm9jZXNzaW5nKCl7fWFzeW5jIHByb2ZpbGVXZWJnbChlKXtyZXR1cm5bXX1hc3luYyByZW5kZXIoZSxyKXtyZXR1cm4gdGhpcy5jYW52YXN9cmVzaXplQ2FudmFzKGUpe2NvbnN0e3dpZHRoOnIsaGVpZ2h0Om59PWU7dGhpcy5jYW52YXMud2lkdGg9cix0aGlzLmNhbnZhcy5oZWlnaHQ9bn1yZW5kZXJTaWxob3VldHRlKGUscixuPSJub25lIil7Y29uc3R7d2lkdGg6cyxoZWlnaHQ6aX09ZTt0aGlzLmNvbnRleHQuc2F2ZSgpLHRoaXMuY29udGV4dC5kcmF3SW1hZ2UociwwLDAsci53aWR0aCxyLmhlaWdodCwwLDAscyxpKSx0aGlzLmNvbnRleHQuZmlsdGVyPSJibHVyKDVweCkiLHRoaXMuY29udGV4dC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb249InNvdXJjZS1pbiIsdGhpcy5jb250ZXh0LmRyYXdJbWFnZShyLDAsMCxyLndpZHRoLHIuaGVpZ2h0LDAsMCxzLGkpLHRoaXMuY29udGV4dC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb249InNvdXJjZS1pbiIsdGhpcy5jb250ZXh0LmZpbHRlcj1uLHRoaXMuY29udGV4dC5kcmF3SW1hZ2UoZSwwLDAscyxpLDAsMCx0aGlzLmNhbnZhcy53aWR0aCx0aGlzLmNhbnZhcy5oZWlnaHQpLHRoaXMuY29udGV4dC5yZXN0b3JlKCl9ZGVzdHJveSgpe319Y2xhc3MgVGkgZXh0ZW5kcyBDdHtjb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMucmFkaXVzPWV9YXN5bmMgcmVuZGVyKGUscil7c3VwZXIucmVzaXplQ2FudmFzKGUpO2NvbnN0IG49YXdhaXQgY3JlYXRlSW1hZ2VCaXRtYXAocik7cmV0dXJuIHRoaXMucmVuZGVyU2lsaG91ZXR0ZShlLG4pLHRoaXMuY29udGV4dC5zYXZlKCksdGhpcy5jb250ZXh0LmZpbHRlcj1gYmx1cigke3RoaXMucmFkaXVzfXB4KWAsdGhpcy5jb250ZXh0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj0iZGVzdGluYXRpb24tb3ZlciIsdGhpcy5jb250ZXh0LmRyYXdJbWFnZShlLDAsMCxlLndpZHRoLGUuaGVpZ2h0KSx0aGlzLmNvbnRleHQucmVzdG9yZSgpLHN1cGVyLnJlbmRlcihlLHIpfX1jbGFzcyB3aSBleHRlbmRzIEN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy5yYWRpdXM9ZX1hc3luYyByZW5kZXIoZSxyKXtzdXBlci5yZXNpemVDYW52YXMoZSk7Y29uc3Qgbj1hd2FpdCBjcmVhdGVJbWFnZUJpdG1hcChyKTtyZXR1cm4gdGhpcy5yZW5kZXJTaWxob3VldHRlKGUsbixgYmx1cigke3RoaXMucmFkaXVzfXB4KWApLHRoaXMuY29udGV4dC5zYXZlKCksdGhpcy5jb250ZXh0LmZpbHRlcj0ibm9uZSIsdGhpcy5jb250ZXh0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj0iZGVzdGluYXRpb24tb3ZlciIsdGhpcy5jb250ZXh0LmRyYXdJbWFnZShlLDAsMCxlLndpZHRoLGUuaGVpZ2h0KSx0aGlzLmNvbnRleHQucmVzdG9yZSgpLHN1cGVyLnJlbmRlcihlLHIpfX1jbGFzcyBBaSBleHRlbmRzIEN0e3NldEJhY2tncm91bmRJbWFnZShlKXt0aGlzLmJhY2tncm91bmRJbWFnZT1lfWFzeW5jIHJlbmRlcihlLHIpe3N1cGVyLnJlc2l6ZUNhbnZhcyhlKTtjb25zdCBuPWF3YWl0IGNyZWF0ZUltYWdlQml0bWFwKHIpO3JldHVybiB0aGlzLnJlbmRlclNpbGhvdWV0dGUoZSxuKSx0aGlzLmJhY2tncm91bmRJbWFnZSYmKHRoaXMuY29udGV4dC5zYXZlKCksdGhpcy5jb250ZXh0LmZpbHRlcj0ibm9uZSIsdGhpcy5jb250ZXh0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj0iZGVzdGluYXRpb24tb3ZlciIsdGhpcy5jb250ZXh0LmRyYXdJbWFnZSh0aGlzLmJhY2tncm91bmRJbWFnZSwwLDAsdGhpcy5iYWNrZ3JvdW5kSW1hZ2Uud2lkdGgsdGhpcy5iYWNrZ3JvdW5kSW1hZ2UuaGVpZ2h0LDAsMCxlLndpZHRoLGUuaGVpZ2h0KSx0aGlzLmNvbnRleHQucmVzdG9yZSgpKSxzdXBlci5yZW5kZXIoZSxyKX19LyogQGxpY2Vuc2UgdHdnbC5qcyA1LjUuMSBDb3B5cmlnaHQgKGMpIDIwMTUsIEdyZWdnIFRhdmFyZXMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KQXZhaWxhYmxlIHZpYSB0aGUgTUlUIGxpY2Vuc2UuCnNlZTogaHR0cDovL2dpdGh1Yi5jb20vZ3JlZ2dtYW4vdHdnbC5qcyBmb3IgZGV0YWlscyAqL2NvbnN0IEJ0PTUxMjAsd2U9NTEyMSxEdD01MTIyLE10PTUxMjMsVXQ9NTEyNCxOdD01MTI1LE90PTUxMjYsdmk9MzI4MTksU2k9MzI4MjAsSWk9MzM2MzUsUmk9NTEzMSxGaT0zMzY0MCxQaT0zNTg5OSxraT0zNTkwMixDaT0zNjI2OSxCaT0zNDA0Mix6cj17fTt7Y29uc3QgdD16cjt0W0J0XT1JbnQ4QXJyYXksdFt3ZV09VWludDhBcnJheSx0W0R0XT1JbnQxNkFycmF5LHRbTXRdPVVpbnQxNkFycmF5LHRbVXRdPUludDMyQXJyYXksdFtOdF09VWludDMyQXJyYXksdFtPdF09RmxvYXQzMkFycmF5LHRbdmldPVVpbnQxNkFycmF5LHRbU2ldPVVpbnQxNkFycmF5LHRbSWldPVVpbnQxNkFycmF5LHRbUmldPVVpbnQxNkFycmF5LHRbRmldPVVpbnQzMkFycmF5LHRbUGldPVVpbnQzMkFycmF5LHRba2ldPVVpbnQzMkFycmF5LHRbQ2ldPVVpbnQzMkFycmF5LHRbQmldPVVpbnQzMkFycmF5fWZ1bmN0aW9uIEx0KHQpe2lmKHQgaW5zdGFuY2VvZiBJbnQ4QXJyYXkpcmV0dXJuIEJ0O2lmKHQgaW5zdGFuY2VvZiBVaW50OEFycmF5fHx0IGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXkpcmV0dXJuIHdlO2lmKHQgaW5zdGFuY2VvZiBJbnQxNkFycmF5KXJldHVybiBEdDtpZih0IGluc3RhbmNlb2YgVWludDE2QXJyYXkpcmV0dXJuIE10O2lmKHQgaW5zdGFuY2VvZiBJbnQzMkFycmF5KXJldHVybiBVdDtpZih0IGluc3RhbmNlb2YgVWludDMyQXJyYXkpcmV0dXJuIE50O2lmKHQgaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXkpcmV0dXJuIE90O3Rocm93IG5ldyBFcnJvcigidW5zdXBwb3J0ZWQgdHlwZWQgYXJyYXkgdHlwZSIpfWZ1bmN0aW9uIEdyKHQpe2lmKHQ9PT1JbnQ4QXJyYXkpcmV0dXJuIEJ0O2lmKHQ9PT1VaW50OEFycmF5fHx0PT09VWludDhDbGFtcGVkQXJyYXkpcmV0dXJuIHdlO2lmKHQ9PT1JbnQxNkFycmF5KXJldHVybiBEdDtpZih0PT09VWludDE2QXJyYXkpcmV0dXJuIE10O2lmKHQ9PT1JbnQzMkFycmF5KXJldHVybiBVdDtpZih0PT09VWludDMyQXJyYXkpcmV0dXJuIE50O2lmKHQ9PT1GbG9hdDMyQXJyYXkpcmV0dXJuIE90O3Rocm93IG5ldyBFcnJvcigidW5zdXBwb3J0ZWQgdHlwZWQgYXJyYXkgdHlwZSIpfWZ1bmN0aW9uICRyKHQpe2NvbnN0IGU9enJbdF07aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIGdsIHR5cGUiKTtyZXR1cm4gZX1jb25zdCBKZT10eXBlb2YgU2hhcmVkQXJyYXlCdWZmZXI8InUiP2Z1bmN0aW9uKGUpe3JldHVybiBlJiZlLmJ1ZmZlciYmKGUuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXJ8fGUuYnVmZmVyIGluc3RhbmNlb2YgU2hhcmVkQXJyYXlCdWZmZXIpfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5idWZmZXImJmUuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXJ9O2Z1bmN0aW9uIFZyKC4uLnQpe2NvbnNvbGUuZXJyb3IoLi4udCl9Y29uc3QgV3I9bmV3IE1hcDtmdW5jdGlvbiBaZSh0LGUpe2lmKCF0fHx0eXBlb2YgdCE9Im9iamVjdCIpcmV0dXJuITE7bGV0IHI9V3IuZ2V0KGUpO3J8fChyPW5ldyBXZWFrTWFwLFdyLnNldChlLHIpKTtsZXQgbj1yLmdldCh0KTtpZihuPT09dm9pZCAwKXtjb25zdCBzPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KTtuPXMuc3Vic3RyaW5nKDgscy5sZW5ndGgtMSk9PT1lLHIuc2V0KHQsbil9cmV0dXJuIG59ZnVuY3Rpb24gRGkodCxlKXtyZXR1cm4gdHlwZW9mIFdlYkdMQnVmZmVyPCJ1IiYmWmUoZSwiV2ViR0xCdWZmZXIiKX1mdW5jdGlvbiBNaSh0LGUpe3JldHVybiB0eXBlb2YgV2ViR0xSZW5kZXJidWZmZXI8InUiJiZaZShlLCJXZWJHTFJlbmRlcmJ1ZmZlciIpfWZ1bmN0aW9uIHp0KHQsZSl7cmV0dXJuIHR5cGVvZiBXZWJHTFRleHR1cmU8InUiJiZaZShlLCJXZWJHTFRleHR1cmUiKX1mdW5jdGlvbiBVaSh0LGUpe3JldHVybiB0eXBlb2YgV2ViR0xTYW1wbGVyPCJ1IiYmWmUoZSwiV2ViR0xTYW1wbGVyIil9Y29uc3QgSHI9MzUwNDQsSz0zNDk2MixOaT0zNDk2MyxPaT0zNDY2MCxMaT01MTIwLHppPTUxMjEsR2k9NTEyMiwkaT01MTIzLFZpPTUxMjQsV2k9NTEyNSxqcj01MTI2LFhyPXthdHRyaWJQcmVmaXg6IiJ9O2Z1bmN0aW9uIEhpKHQsZSxyLG4scyl7dC5iaW5kQnVmZmVyKGUsciksdC5idWZmZXJEYXRhKGUsbixzfHxIcil9ZnVuY3Rpb24gWXIodCxlLHIsbil7aWYoRGkodCxlKSlyZXR1cm4gZTtyPXJ8fEs7Y29uc3Qgcz10LmNyZWF0ZUJ1ZmZlcigpO3JldHVybiBIaSh0LHIscyxlLG4pLHN9ZnVuY3Rpb24gUXIodCl7cmV0dXJuIHQ9PT0iaW5kaWNlcyJ9ZnVuY3Rpb24gamkodCl7cmV0dXJuIHQ9PT1JbnQ4QXJyYXl8fHQ9PT1VaW50OEFycmF5fWZ1bmN0aW9uIFhpKHQpe3JldHVybiB0Lmxlbmd0aD90OnQuZGF0YX1jb25zdCBZaT0vY29vcmR8dGV4dHVyZS9pLFFpPS9jb2xvcnxjb2xvdXIvaTtmdW5jdGlvbiBxaSh0LGUpe2xldCByO2lmKFlpLnRlc3QodCk/cj0yOlFpLnRlc3QodCk/cj00OnI9MyxlJXI+MCl0aHJvdyBuZXcgRXJyb3IoYENhbiBub3QgZ3Vlc3MgbnVtQ29tcG9uZW50cyBmb3IgYXR0cmlidXRlICcke3R9Jy4gVHJpZWQgJHtyfSBidXQgJHtlfSB2YWx1ZXMgaXMgbm90IGV2ZW5seSBkaXZpc2libGUgYnkgJHtyfS4gWW91IHNob3VsZCBzcGVjaWZ5IGl0LmApO3JldHVybiByfWZ1bmN0aW9uIEtpKHQsZSxyKXtyZXR1cm4gdC5udW1Db21wb25lbnRzfHx0LnNpemV8fHFpKGUscnx8WGkodCkubGVuZ3RoKX1mdW5jdGlvbiBxcih0LGUpe2lmKEplKHQpKXJldHVybiB0O2lmKEplKHQuZGF0YSkpcmV0dXJuIHQuZGF0YTtBcnJheS5pc0FycmF5KHQpJiYodD17ZGF0YTp0fSk7bGV0IHI9dC50eXBlP0d0KHQudHlwZSk6dm9pZCAwO3JldHVybiByfHwoUXIoZSk/cj1VaW50MTZBcnJheTpyPUZsb2F0MzJBcnJheSksbmV3IHIodC5kYXRhKX1mdW5jdGlvbiBKaSh0KXtyZXR1cm4gdHlwZW9mIHQ9PSJudW1iZXIiP3Q6dD9Hcih0KTpqcn1mdW5jdGlvbiBHdCh0KXtyZXR1cm4gdHlwZW9mIHQ9PSJudW1iZXIiPyRyKHQpOnR8fEZsb2F0MzJBcnJheX1mdW5jdGlvbiBaaSh0LGUpe3JldHVybntidWZmZXI6ZS5idWZmZXIsbnVtVmFsdWVzOjIqMyo0LHR5cGU6SmkoZS50eXBlKSxhcnJheVR5cGU6R3QoZS50eXBlKX19ZnVuY3Rpb24gZW8odCxlKXtjb25zdCByPWUuZGF0YXx8ZSxuPUd0KGUudHlwZSkscz1yKm4uQllURVNfUEVSX0VMRU1FTlQsaT10LmNyZWF0ZUJ1ZmZlcigpO3JldHVybiB0LmJpbmRCdWZmZXIoSyxpKSx0LmJ1ZmZlckRhdGEoSyxzLGUuZHJhd1R5cGV8fEhyKSx7YnVmZmVyOmksbnVtVmFsdWVzOnIsdHlwZTpHcihuKSxhcnJheVR5cGU6bn19ZnVuY3Rpb24gdG8odCxlLHIpe2NvbnN0IG49cXIoZSxyKTtyZXR1cm57YXJyYXlUeXBlOm4uY29uc3RydWN0b3IsYnVmZmVyOllyKHQsbix2b2lkIDAsZS5kcmF3VHlwZSksdHlwZTpMdChuKSxudW1WYWx1ZXM6MH19ZnVuY3Rpb24gcm8odCxlKXtjb25zdCByPXt9O3JldHVybiBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe2lmKCFRcihuKSl7Y29uc3Qgcz1lW25dLGk9cy5hdHRyaWJ8fHMubmFtZXx8cy5hdHRyaWJOYW1lfHxYci5hdHRyaWJQcmVmaXgrbjtpZihzLnZhbHVlKXtpZighQXJyYXkuaXNBcnJheShzLnZhbHVlKSYmIUplKHMudmFsdWUpKXRocm93IG5ldyBFcnJvcigiYXJyYXkudmFsdWUgaXMgbm90IGFycmF5IG9yIHR5cGVkYXJyYXkiKTtyW2ldPXt2YWx1ZTpzLnZhbHVlfX1lbHNle2xldCBhO3MuYnVmZmVyJiZzLmJ1ZmZlciBpbnN0YW5jZW9mIFdlYkdMQnVmZmVyP2E9Wmk6dHlwZW9mIHM9PSJudW1iZXIifHx0eXBlb2Ygcy5kYXRhPT0ibnVtYmVyIj9hPWVvOmE9dG87Y29uc3R7YnVmZmVyOm8sdHlwZTpjLG51bVZhbHVlczp1LGFycmF5VHlwZTpmfT1hKHQscyxuKSxkPXMubm9ybWFsaXplIT09dm9pZCAwP3Mubm9ybWFsaXplOmppKGYpLGg9S2kocyxuLHUpO3JbaV09e2J1ZmZlcjpvLG51bUNvbXBvbmVudHM6aCx0eXBlOmMsbm9ybWFsaXplOmQsc3RyaWRlOnMuc3RyaWRlfHwwLG9mZnNldDpzLm9mZnNldHx8MCxkaXZpc29yOnMuZGl2aXNvcj09PXZvaWQgMD92b2lkIDA6cy5kaXZpc29yLGRyYXdUeXBlOnMuZHJhd1R5cGV9fX19KSx0LmJpbmRCdWZmZXIoSyxudWxsKSxyfWZ1bmN0aW9uIG5vKHQsZSl7cmV0dXJuIGU9PT1MaXx8ZT09PXppPzE6ZT09PUdpfHxlPT09JGk/MjplPT09Vml8fGU9PT1XaXx8ZT09PWpyPzQ6MH1jb25zdCAkdD1bInBvc2l0aW9uIiwicG9zaXRpb25zIiwiYV9wb3NpdGlvbiJdO2Z1bmN0aW9uIHNvKHQsZSl7bGV0IHIsbjtmb3Iobj0wO248JHQubGVuZ3RoJiYocj0kdFtuXSwhKHIgaW4gZXx8KHI9WHIuYXR0cmliUHJlZml4K3IsciBpbiBlKSkpOysrbik7bj09PSR0Lmxlbmd0aCYmKHI9T2JqZWN0LmtleXMoZSlbMF0pO2NvbnN0IHM9ZVtyXTtpZighcy5idWZmZXIpcmV0dXJuIDE7dC5iaW5kQnVmZmVyKEsscy5idWZmZXIpO2NvbnN0IGk9dC5nZXRCdWZmZXJQYXJhbWV0ZXIoSyxPaSk7dC5iaW5kQnVmZmVyKEssbnVsbCk7Y29uc3QgYT1ubyh0LHMudHlwZSksbz1pL2EsYz1zLm51bUNvbXBvbmVudHN8fHMuc2l6ZSx1PW8vYztpZih1JTEhPT0wKXRocm93IG5ldyBFcnJvcihgbnVtQ29tcG9uZW50cyAke2N9IG5vdCBjb3JyZWN0IGZvciBsZW5ndGggJHtsZW5ndGh9YCk7cmV0dXJuIHV9ZnVuY3Rpb24gaW8odCxlLHIpe2NvbnN0IG49cm8odCxlKSxzPU9iamVjdC5hc3NpZ24oe30scnx8e30pO3MuYXR0cmlicz1PYmplY3QuYXNzaWduKHt9LHI/ci5hdHRyaWJzOnt9LG4pO2NvbnN0IGk9ZS5pbmRpY2VzO2lmKGkpe2NvbnN0IGE9cXIoaSwiaW5kaWNlcyIpO3MuaW5kaWNlcz1Zcih0LGEsTmkpLHMubnVtRWxlbWVudHM9YS5sZW5ndGgscy5lbGVtZW50VHlwZT1MdChhKX1lbHNlIHMubnVtRWxlbWVudHN8fChzLm51bUVsZW1lbnRzPXNvKHQscy5hdHRyaWJzKSk7cmV0dXJuIHN9ZnVuY3Rpb24gQWUodCl7cmV0dXJuISF0LnRleFN0b3JhZ2UyRH1jb25zdCBLcj1mdW5jdGlvbigpe2NvbnN0IHQ9e30sZT17fTtmdW5jdGlvbiByKG4pe2NvbnN0IHM9bi5jb25zdHJ1Y3Rvci5uYW1lO2lmKCF0W3NdKXtmb3IoY29uc3QgaSBpbiBuKWlmKHR5cGVvZiBuW2ldPT0ibnVtYmVyIil7Y29uc3QgYT1lW25baV1dO2VbbltpXV09YT9gJHthfSB8ICR7aX1gOml9dFtzXT0hMH19cmV0dXJuIGZ1bmN0aW9uKHMsaSl7cmV0dXJuIHIocyksZVtpXXx8KHR5cGVvZiBpPT0ibnVtYmVyIj9gMHgke2kudG9TdHJpbmcoMTYpfWA6aSl9fSgpLHo9e3RleHR1cmVDb2xvcjpuZXcgVWludDhBcnJheShbMTI4LDE5MiwyNTUsMjU1XSksdGV4dHVyZU9wdGlvbnM6e30sY3Jvc3NPcmlnaW46dm9pZCAwfSx2ZT1KZSxKcj1mdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0PXR8fCh0eXBlb2YgZG9jdW1lbnQ8InUiJiZkb2N1bWVudC5jcmVhdGVFbGVtZW50P2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLmdldENvbnRleHQoIjJkIik6bnVsbCksdH19KCksVnQ9NjQwNixQPTY0MDcsZz02NDA4LFd0PTY0MDksSHQ9NjQxMCxoZT02NDAyLGp0PTM0MDQxLGV0PTMzMDcxLG9vPTk3MjgsYW89OTcyOSxHPTM1NTMsJD0zNDA2NyxKPTMyODc5LFo9MzU4NjYsWHQ9MzQwNjksY289MzQwNzAsdW89MzQwNzEsZm89MzQwNzIsbG89MzQwNzMsaG89MzQwNzQsWXQ9MTAyNDEsUXQ9MTAyNDAsdHQ9MTAyNDIscnQ9MTAyNDMsWnI9MzI4ODIsbW89MzMwODIscG89MzMwODMseW89MzMwODQsYm89MzMwODUsZ289MzQ4OTIseG89MzQ4OTMscXQ9MzMxNyxlbj0zMzE0LHRuPTMyODc4LHJuPTMzMTYsbm49MzMxNSxzbj0zMjg3NyxFbz0zNzQ0Myxfbz0zNzQ0MSxUbz0zNzQ0MCx3bz0zMzMyMSxBbz0zNjc1Nix2bz0zMzMyNSxTbz0zMzMyNixJbz0zMzMzMCxSbz0zMzMyOSxGbz0zMzMzOCxQbz0zMzMzNyxrbz0zMzM0MCxDbz0zMzMzOSxCbz0zMzMyMyxEbz0zNjc1NyxNbz0zMzMyNyxVbz0zMzMyOCxObz0zMzMzNixPbz0zMzMzNSxMbz0zMzMzMix6bz0zMzMzMSxHbz0zMzMzNCwkbz0zMzMzMyxWbz0zMjg0OSxXbz0zNTkwNSxIbz0zNjE5NCxqbz0zNjc1OCxYbz0zNTg5OCxZbz0zNTkwMSxRbz0zNDg0Myxxbz0zNDgzNyxLbz0zNjIyMSxKbz0zNjIzOSxabz0zNjIxNSxlYT0zNjIzMyx0YT0zNjIwOSxyYT0zNjIyNyxuYT0zMjg1NixzYT0zNTkwNyxpYT0zNjc1OSxvYT0zMjg1NSxhYT0zMjg1NCxjYT0zMjg1Nyx1YT0zNDg0MixmYT0zNDgzNixsYT0zNjIyMCxkYT0zNjIzOCxoYT0zNjk3NSxtYT0zNjIxNCxwYT0zNjIzMix5YT0zNjIyNixiYT0zNjIwOCxnYT0zMzE4OSx4YT0zMzE5MCxFYT0zNjAxMixfYT0zNjAxMyxUYT0zNTA1NixWPTUxMjAsRT01MTIxLG50PTUxMjIsbWU9NTEyMyxzdD01MTI0LGVlPTUxMjUsQT01MTI2LG9uPTMyODE5LGFuPTMyODIwLGNuPTMzNjM1LGs9NTEzMSxTZT0zNjE5MyxLdD0zMzY0MCx3YT0zNTg5OSxBYT0zNTkwMix2YT0zNjI2OSxTYT0zNDA0MixJZT0zMzMxOSx0ZT0zMzMyMCxSZT02NDAzLHJlPTM2MjQ0LG5lPTM2MjQ4LFc9MzYyNDksSWE9e307e2NvbnN0IHQ9SWE7dFtWdF09e251bUNvbG9yQ29tcG9uZW50czoxfSx0W1d0XT17bnVtQ29sb3JDb21wb25lbnRzOjF9LHRbSHRdPXtudW1Db2xvckNvbXBvbmVudHM6Mn0sdFtQXT17bnVtQ29sb3JDb21wb25lbnRzOjN9LHRbZ109e251bUNvbG9yQ29tcG9uZW50czo0fSx0W1JlXT17bnVtQ29sb3JDb21wb25lbnRzOjF9LHRbcmVdPXtudW1Db2xvckNvbXBvbmVudHM6MX0sdFtJZV09e251bUNvbG9yQ29tcG9uZW50czoyfSx0W3RlXT17bnVtQ29sb3JDb21wb25lbnRzOjJ9LHRbUF09e251bUNvbG9yQ29tcG9uZW50czozfSx0W25lXT17bnVtQ29sb3JDb21wb25lbnRzOjN9LHRbZ109e251bUNvbG9yQ29tcG9uZW50czo0fSx0W1ddPXtudW1Db2xvckNvbXBvbmVudHM6NH0sdFtoZV09e251bUNvbG9yQ29tcG9uZW50czoxfSx0W2p0XT17bnVtQ29sb3JDb21wb25lbnRzOjJ9fWxldCBKdDtmdW5jdGlvbiBpdCh0KXtpZighSnQpe2NvbnN0IGU9e307ZVtWdF09e3RleHR1cmVGb3JtYXQ6VnQsY29sb3JSZW5kZXJhYmxlOiEwLHRleHR1cmVGaWx0ZXJhYmxlOiEwLGJ5dGVzUGVyRWxlbWVudDpbMSwyLDIsNF0sdHlwZTpbRSxrLFNlLEFdfSxlW1d0XT17dGV4dHVyZUZvcm1hdDpXdCxjb2xvclJlbmRlcmFibGU6ITAsdGV4dHVyZUZpbHRlcmFibGU6ITAsYnl0ZXNQZXJFbGVtZW50OlsxLDIsMiw0XSx0eXBlOltFLGssU2UsQV19LGVbSHRdPXt0ZXh0dXJlRm9ybWF0Okh0LGNvbG9yUmVuZGVyYWJsZTohMCx0ZXh0dXJlRmlsdGVyYWJsZTohMCxieXRlc1BlckVsZW1lbnQ6WzIsNCw0LDhdLHR5cGU6W0UsayxTZSxBXX0sZVtQXT17dGV4dHVyZUZvcm1hdDpQLGNvbG9yUmVuZGVyYWJsZTohMCx0ZXh0dXJlRmlsdGVyYWJsZTohMCxieXRlc1BlckVsZW1lbnQ6WzMsNiw2LDEyLDJdLHR5cGU6W0UsayxTZSxBLGNuXX0sZVtnXT17dGV4dHVyZUZvcm1hdDpnLGNvbG9yUmVuZGVyYWJsZTohMCx0ZXh0dXJlRmlsdGVyYWJsZTohMCxieXRlc1BlckVsZW1lbnQ6WzQsOCw4LDE2LDIsMl0sdHlwZTpbRSxrLFNlLEEsb24sYW5dfSxlW2hlXT17dGV4dHVyZUZvcm1hdDpoZSxjb2xvclJlbmRlcmFibGU6ITAsdGV4dHVyZUZpbHRlcmFibGU6ITEsYnl0ZXNQZXJFbGVtZW50OlsyLDRdLHR5cGU6W2VlLG1lXX0sZVt3b109e3RleHR1cmVGb3JtYXQ6UmUsY29sb3JSZW5kZXJhYmxlOiEwLHRleHR1cmVGaWx0ZXJhYmxlOiEwLGJ5dGVzUGVyRWxlbWVudDpbMV0sdHlwZTpbRV19LGVbQW9dPXt0ZXh0dXJlRm9ybWF0OlJlLGNvbG9yUmVuZGVyYWJsZTohMSx0ZXh0dXJlRmlsdGVyYWJsZTohMCxieXRlc1BlckVsZW1lbnQ6WzFdLHR5cGU6W1ZdfSxlW3ZvXT17dGV4dHVyZUZvcm1hdDpSZSxjb2xvclJlbmRlcmFibGU6ITEsdGV4dHVyZUZpbHRlcmFibGU6ITAsYnl0ZXNQZXJFbGVtZW50Ols0LDJdLHR5cGU6W0Esa119LGVbU29dPXt0ZXh0dXJlRm9ybWF0OlJlLGNvbG9yUmVuZGVyYWJsZTohMSx0ZXh0dXJlRmlsdGVyYWJsZTohMSxieXRlc1BlckVsZW1lbnQ6WzRdLHR5cGU6W0FdfSxlW0lvXT17dGV4dHVyZUZvcm1hdDpyZSxjb2xvclJlbmRlcmFibGU6ITAsdGV4dHVyZUZpbHRlcmFibGU6ITEsYnl0ZXNQZXJFbGVtZW50OlsxXSx0eXBlOltFXX0sZVtSb109e3RleHR1cmVGb3JtYXQ6cmUsY29sb3JSZW5kZXJhYmxlOiEwLHRleHR1cmVGaWx0ZXJhYmxlOiExLGJ5dGVzUGVyRWxlbWVudDpbMV0sdHlwZTpbVl19LGVbTG9dPXt0ZXh0dXJlRm9ybWF0OnJlLGNvbG9yUmVuZGVyYWJsZTohMCx0ZXh0dXJlRmlsdGVyYWJsZTohMSxieXRlc1BlckVsZW1lbnQ6WzJdLHR5cGU6W21lXX0sZVt6b109e3RleHR1cmVGb3JtYXQ6cmUsY29sb3JSZW5kZXJhYmxlOiEwLHRleHR1cmVGaWx0ZXJhYmxlOiExLGJ5dGVzUGVyRWxlbWVudDpbMl0sdHlwZTpbbnRdfSxlW0dvXT17dGV4dHVyZUZvcm1hdDpyZSxjb2xvclJlbmRlcmFibGU6ITAsdGV4dHVyZUZpbHRlcmFibGU6ITEsYnl0ZXNQZXJFbGVtZW50Ols0XSx0eXBlOltlZV19LGVbJG9dPXt0ZXh0dXJlRm9ybWF0OnJlLGNvbG9yUmVuZGVyYWJsZTohMCx0ZXh0dXJlRmlsdGVyYWJsZTohMSxieXRlc1BlckVsZW1lbnQ6WzRdLHR5cGU6W3N0XX0sZVtCb109e3RleHR1cmVGb3JtYXQ6SWUsY29sb3JSZW5kZXJhYmxlOiEwLHRleHR1cmVGaWx0ZXJhYmxlOiEwLGJ5dGVzUGVyRWxlbWVudDpbMl0sdHlwZTpbRV19LGVbRG9dPXt0ZXh0dXJlRm9ybWF0OkllLGNvbG9yUmVuZGVyYWJsZTohMSx0ZXh0dXJlRmlsdGVyYWJsZTohMCxieXRlc1BlckVsZW1lbnQ6WzJdLHR5cGU6W1ZdfSxlW01vXT17dGV4dHVyZUZvcm1hdDpJZSxjb2xvclJlbmRlcmFibGU6ITEsdGV4dHVyZUZpbHRlcmFibGU6ITAsYnl0ZXNQZXJFbGVtZW50Ols4LDRdLHR5cGU6W0Esa119LGVbVW9dPXt0ZXh0dXJlRm9ybWF0OkllLGNvbG9yUmVuZGVyYWJsZTohMSx0ZXh0dXJlRmlsdGVyYWJsZTohMSxieXRlc1BlckVsZW1lbnQ6WzhdLHR5cGU6W0FdfSxlW05vXT17dGV4dHVyZUZvcm1hdDp0ZSxjb2xvclJlbmRlcmFibGU6ITAsdGV4dHVyZUZpbHRlcmFibGU6ITEsYnl0ZXNQZXJFbGVtZW50OlsyXSx0eXBlOltFXX0sZVtPb109e3RleHR1cmVGb3JtYXQ6dGUsY29sb3JSZW5kZXJhYmxlOiEwLHRleHR1cmVGaWx0ZXJhYmxlOiExLGJ5dGVzUGVyRWxlbWVudDpbMl0sdHlwZTpbVl19LGVbRm9dPXt0ZXh0dXJlRm9ybWF0OnRlLGNvbG9yUmVuZGVyYWJsZTohMCx0ZXh0dXJlRmlsdGVyYWJsZTohMSxieXRlc1BlckVsZW1lbnQ6WzRdLHR5cGU6W21lXX0sZVtQb109e3RleHR1cmVGb3JtYXQ6dGUsY29sb3JSZW5kZXJhYmxlOiEwLHRleHR1cmVGaWx0ZXJhYmxlOiExLGJ5dGVzUGVyRWxlbWVudDpbNF0sdHlwZTpbbnRdfSxlW2tvXT17dGV4dHVyZUZvcm1hdDp0ZSxjb2xvclJlbmRlcmFibGU6ITAsdGV4dHVyZUZpbHRlcmFibGU6ITEsYnl0ZXNQZXJFbGVtZW50Ols4XSx0eXBlOltlZV19LGVbQ29dPXt0ZXh0dXJlRm9ybWF0OnRlLGNvbG9yUmVuZGVyYWJsZTohMCx0ZXh0dXJlRmlsdGVyYWJsZTohMSxieXRlc1BlckVsZW1lbnQ6WzhdLHR5cGU6W3N0XX0sZVtWb109e3RleHR1cmVGb3JtYXQ6UCxjb2xvclJlbmRlcmFibGU6ITAsdGV4dHVyZUZpbHRlcmFibGU6ITAsYnl0ZXNQZXJFbGVtZW50OlszXSx0eXBlOltFXX0sZVtXb109e3RleHR1cmVGb3JtYXQ6UCxjb2xvclJlbmRlcmFibGU6ITEsdGV4dHVyZUZpbHRlcmFibGU6ITAsYnl0ZXNQZXJFbGVtZW50OlszXSx0eXBlOltFXX0sZVtIb109e3RleHR1cmVGb3JtYXQ6UCxjb2xvclJlbmRlcmFibGU6ITAsdGV4dHVyZUZpbHRlcmFibGU6ITAsYnl0ZXNQZXJFbGVtZW50OlszLDJdLHR5cGU6W0UsY25dfSxlW2pvXT17dGV4dHVyZUZvcm1hdDpQLGNvbG9yUmVuZGVyYWJsZTohMSx0ZXh0dXJlRmlsdGVyYWJsZTohMCxieXRlc1BlckVsZW1lbnQ6WzNdLHR5cGU6W1ZdfSxlW1hvXT17dGV4dHVyZUZvcm1hdDpQLGNvbG9yUmVuZGVyYWJsZTohMSx0ZXh0dXJlRmlsdGVyYWJsZTohMCxieXRlc1BlckVsZW1lbnQ6WzEyLDYsNF0sdHlwZTpbQSxrLHdhXX0sZVtZb109e3RleHR1cmVGb3JtYXQ6UCxjb2xvclJlbmRlcmFibGU6ITEsdGV4dHVyZUZpbHRlcmFibGU6ITAsYnl0ZXNQZXJFbGVtZW50OlsxMiw2LDRdLHR5cGU6W0EsayxBYV19LGVbUW9dPXt0ZXh0dXJlRm9ybWF0OlAsY29sb3JSZW5kZXJhYmxlOiExLHRleHR1cmVGaWx0ZXJhYmxlOiEwLGJ5dGVzUGVyRWxlbWVudDpbMTIsNl0sdHlwZTpbQSxrXX0sZVtxb109e3RleHR1cmVGb3JtYXQ6UCxjb2xvclJlbmRlcmFibGU6ITEsdGV4dHVyZUZpbHRlcmFibGU6ITEsYnl0ZXNQZXJFbGVtZW50OlsxMl0sdHlwZTpbQV19LGVbS29dPXt0ZXh0dXJlRm9ybWF0Om5lLGNvbG9yUmVuZGVyYWJsZTohMSx0ZXh0dXJlRmlsdGVyYWJsZTohMSxieXRlc1BlckVsZW1lbnQ6WzNdLHR5cGU6W0VdfSxlW0pvXT17dGV4dHVyZUZvcm1hdDpuZSxjb2xvclJlbmRlcmFibGU6ITEsdGV4dHVyZUZpbHRlcmFibGU6ITEsYnl0ZXNQZXJFbGVtZW50OlszXSx0eXBlOltWXX0sZVtab109e3RleHR1cmVGb3JtYXQ6bmUsY29sb3JSZW5kZXJhYmxlOiExLHRleHR1cmVGaWx0ZXJhYmxlOiExLGJ5dGVzUGVyRWxlbWVudDpbNl0sdHlwZTpbbWVdfSxlW2VhXT17dGV4dHVyZUZvcm1hdDpuZSxjb2xvclJlbmRlcmFibGU6ITEsdGV4dHVyZUZpbHRlcmFibGU6ITEsYnl0ZXNQZXJFbGVtZW50Ols2XSx0eXBlOltudF19LGVbdGFdPXt0ZXh0dXJlRm9ybWF0Om5lLGNvbG9yUmVuZGVyYWJsZTohMSx0ZXh0dXJlRmlsdGVyYWJsZTohMSxieXRlc1BlckVsZW1lbnQ6WzEyXSx0eXBlOltlZV19LGVbcmFdPXt0ZXh0dXJlRm9ybWF0Om5lLGNvbG9yUmVuZGVyYWJsZTohMSx0ZXh0dXJlRmlsdGVyYWJsZTohMSxieXRlc1BlckVsZW1lbnQ6WzEyXSx0eXBlOltzdF19LGVbbmFdPXt0ZXh0dXJlRm9ybWF0OmcsY29sb3JSZW5kZXJhYmxlOiEwLHRleHR1cmVGaWx0ZXJhYmxlOiEwLGJ5dGVzUGVyRWxlbWVudDpbNF0sdHlwZTpbRV19LGVbc2FdPXt0ZXh0dXJlRm9ybWF0OmcsY29sb3JSZW5kZXJhYmxlOiEwLHRleHR1cmVGaWx0ZXJhYmxlOiEwLGJ5dGVzUGVyRWxlbWVudDpbNF0sdHlwZTpbRV19LGVbaWFdPXt0ZXh0dXJlRm9ybWF0OmcsY29sb3JSZW5kZXJhYmxlOiExLHRleHR1cmVGaWx0ZXJhYmxlOiEwLGJ5dGVzUGVyRWxlbWVudDpbNF0sdHlwZTpbVl19LGVbb2FdPXt0ZXh0dXJlRm9ybWF0OmcsY29sb3JSZW5kZXJhYmxlOiEwLHRleHR1cmVGaWx0ZXJhYmxlOiEwLGJ5dGVzUGVyRWxlbWVudDpbNCwyLDRdLHR5cGU6W0UsYW4sS3RdfSxlW2FhXT17dGV4dHVyZUZvcm1hdDpnLGNvbG9yUmVuZGVyYWJsZTohMCx0ZXh0dXJlRmlsdGVyYWJsZTohMCxieXRlc1BlckVsZW1lbnQ6WzQsMl0sdHlwZTpbRSxvbl19LGVbY2FdPXt0ZXh0dXJlRm9ybWF0OmcsY29sb3JSZW5kZXJhYmxlOiEwLHRleHR1cmVGaWx0ZXJhYmxlOiEwLGJ5dGVzUGVyRWxlbWVudDpbNF0sdHlwZTpbS3RdfSxlW3VhXT17dGV4dHVyZUZvcm1hdDpnLGNvbG9yUmVuZGVyYWJsZTohMSx0ZXh0dXJlRmlsdGVyYWJsZTohMCxieXRlc1BlckVsZW1lbnQ6WzE2LDhdLHR5cGU6W0Esa119LGVbZmFdPXt0ZXh0dXJlRm9ybWF0OmcsY29sb3JSZW5kZXJhYmxlOiExLHRleHR1cmVGaWx0ZXJhYmxlOiExLGJ5dGVzUGVyRWxlbWVudDpbMTZdLHR5cGU6W0FdfSxlW2xhXT17dGV4dHVyZUZvcm1hdDpXLGNvbG9yUmVuZGVyYWJsZTohMCx0ZXh0dXJlRmlsdGVyYWJsZTohMSxieXRlc1BlckVsZW1lbnQ6WzRdLHR5cGU6W0VdfSxlW2RhXT17dGV4dHVyZUZvcm1hdDpXLGNvbG9yUmVuZGVyYWJsZTohMCx0ZXh0dXJlRmlsdGVyYWJsZTohMSxieXRlc1BlckVsZW1lbnQ6WzRdLHR5cGU6W1ZdfSxlW2hhXT17dGV4dHVyZUZvcm1hdDpXLGNvbG9yUmVuZGVyYWJsZTohMCx0ZXh0dXJlRmlsdGVyYWJsZTohMSxieXRlc1BlckVsZW1lbnQ6WzRdLHR5cGU6W0t0XX0sZVttYV09e3RleHR1cmVGb3JtYXQ6Vyxjb2xvclJlbmRlcmFibGU6ITAsdGV4dHVyZUZpbHRlcmFibGU6ITEsYnl0ZXNQZXJFbGVtZW50Ols4XSx0eXBlOlttZV19LGVbcGFdPXt0ZXh0dXJlRm9ybWF0OlcsY29sb3JSZW5kZXJhYmxlOiEwLHRleHR1cmVGaWx0ZXJhYmxlOiExLGJ5dGVzUGVyRWxlbWVudDpbOF0sdHlwZTpbbnRdfSxlW3lhXT17dGV4dHVyZUZvcm1hdDpXLGNvbG9yUmVuZGVyYWJsZTohMCx0ZXh0dXJlRmlsdGVyYWJsZTohMSxieXRlc1BlckVsZW1lbnQ6WzE2XSx0eXBlOltzdF19LGVbYmFdPXt0ZXh0dXJlRm9ybWF0OlcsY29sb3JSZW5kZXJhYmxlOiEwLHRleHR1cmVGaWx0ZXJhYmxlOiExLGJ5dGVzUGVyRWxlbWVudDpbMTZdLHR5cGU6W2VlXX0sZVtnYV09e3RleHR1cmVGb3JtYXQ6aGUsY29sb3JSZW5kZXJhYmxlOiEwLHRleHR1cmVGaWx0ZXJhYmxlOiExLGJ5dGVzUGVyRWxlbWVudDpbMiw0XSx0eXBlOlttZSxlZV19LGVbeGFdPXt0ZXh0dXJlRm9ybWF0OmhlLGNvbG9yUmVuZGVyYWJsZTohMCx0ZXh0dXJlRmlsdGVyYWJsZTohMSxieXRlc1BlckVsZW1lbnQ6WzRdLHR5cGU6W2VlXX0sZVtFYV09e3RleHR1cmVGb3JtYXQ6aGUsY29sb3JSZW5kZXJhYmxlOiEwLHRleHR1cmVGaWx0ZXJhYmxlOiExLGJ5dGVzUGVyRWxlbWVudDpbNF0sdHlwZTpbQV19LGVbVGFdPXt0ZXh0dXJlRm9ybWF0Omp0LGNvbG9yUmVuZGVyYWJsZTohMCx0ZXh0dXJlRmlsdGVyYWJsZTohMSxieXRlc1BlckVsZW1lbnQ6WzRdLHR5cGU6W1NhXX0sZVtfYV09e3RleHR1cmVGb3JtYXQ6anQsY29sb3JSZW5kZXJhYmxlOiEwLHRleHR1cmVGaWx0ZXJhYmxlOiExLGJ5dGVzUGVyRWxlbWVudDpbNF0sdHlwZTpbdmFdfSxPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe2NvbnN0IG49ZVtyXTtuLmJ5dGVzUGVyRWxlbWVudE1hcD17fSxuLmJ5dGVzUGVyRWxlbWVudC5mb3JFYWNoKGZ1bmN0aW9uKHMsaSl7Y29uc3QgYT1uLnR5cGVbaV07bi5ieXRlc1BlckVsZW1lbnRNYXBbYV09c30pfSksSnQ9ZX1yZXR1cm4gSnRbdF19ZnVuY3Rpb24gUmEodCxlKXtjb25zdCByPWl0KHQpO2lmKCFyKXRocm93InVua25vd24gaW50ZXJuYWwgZm9ybWF0Ijtjb25zdCBuPXIuYnl0ZXNQZXJFbGVtZW50TWFwW2VdO2lmKG49PT12b2lkIDApdGhyb3cidW5rbm93biBpbnRlcm5hbCBmb3JtYXQiO3JldHVybiBufWZ1bmN0aW9uIEZlKHQpe2NvbnN0IGU9aXQodCk7aWYoIWUpdGhyb3cidW5rbm93biBpbnRlcm5hbCBmb3JtYXQiO3JldHVybntmb3JtYXQ6ZS50ZXh0dXJlRm9ybWF0LHR5cGU6ZS50eXBlWzBdfX1mdW5jdGlvbiB1bih0KXtyZXR1cm4odCZ0LTEpPT09MH1mdW5jdGlvbiBGYSh0LGUscixuKXtpZighQWUodCkpcmV0dXJuIHVuKGUpJiZ1bihyKTtjb25zdCBzPWl0KG4pO2lmKCFzKXRocm93InVua25vd24gaW50ZXJuYWwgZm9ybWF0IjtyZXR1cm4gcy5jb2xvclJlbmRlcmFibGUmJnMudGV4dHVyZUZpbHRlcmFibGV9ZnVuY3Rpb24gUGEodCl7Y29uc3QgZT1pdCh0KTtpZighZSl0aHJvdyJ1bmtub3duIGludGVybmFsIGZvcm1hdCI7cmV0dXJuIGUudGV4dHVyZUZpbHRlcmFibGV9ZnVuY3Rpb24ga2EodCxlLHIpe3JldHVybiB2ZShlKT9MdChlKTpyfHxFfWZ1bmN0aW9uIG90KHQsZSxyLG4scyl7aWYocyUxIT09MCl0aHJvdyJjYW4ndCBndWVzcyBkaW1lbnNpb25zIjtpZighciYmIW4pe2NvbnN0IGk9TWF0aC5zcXJ0KHMvKGU9PT0kPzY6MSkpO2klMT09PTA/KHI9aSxuPWkpOihyPXMsbj0xKX1lbHNlIGlmKG4pe2lmKCFyJiYocj1zL24sciUxKSl0aHJvdyJjYW4ndCBndWVzcyBkaW1lbnNpb25zIn1lbHNlIGlmKG49cy9yLG4lMSl0aHJvdyJjYW4ndCBndWVzcyBkaW1lbnNpb25zIjtyZXR1cm57d2lkdGg6cixoZWlnaHQ6bn19ZnVuY3Rpb24gcGUodCxlKXtlLmNvbG9yc3BhY2VDb252ZXJzaW9uIT09dm9pZCAwJiZ0LnBpeGVsU3RvcmVpKEVvLGUuY29sb3JzcGFjZUNvbnZlcnNpb24pLGUucHJlbXVsdGlwbHlBbHBoYSE9PXZvaWQgMCYmdC5waXhlbFN0b3JlaShfbyxlLnByZW11bHRpcGx5QWxwaGEpLGUuZmxpcFkhPT12b2lkIDAmJnQucGl4ZWxTdG9yZWkoVG8sZS5mbGlwWSl9ZnVuY3Rpb24gZm4odCl7dC5waXhlbFN0b3JlaShxdCw0KSxBZSh0KSYmKHQucGl4ZWxTdG9yZWkoZW4sMCksdC5waXhlbFN0b3JlaSh0biwwKSx0LnBpeGVsU3RvcmVpKHJuLDApLHQucGl4ZWxTdG9yZWkobm4sMCksdC5waXhlbFN0b3JlaShzbiwwKSl9ZnVuY3Rpb24gQ2EodCxlLHIsbil7bi5taW5NYWcmJihyLmNhbGwodCxlLFl0LG4ubWluTWFnKSxyLmNhbGwodCxlLFF0LG4ubWluTWFnKSksbi5taW4mJnIuY2FsbCh0LGUsWXQsbi5taW4pLG4ubWFnJiZyLmNhbGwodCxlLFF0LG4ubWFnKSxuLndyYXAmJihyLmNhbGwodCxlLHR0LG4ud3JhcCksci5jYWxsKHQsZSxydCxuLndyYXApLChlPT09Snx8VWkodCxlKSkmJnIuY2FsbCh0LGUsWnIsbi53cmFwKSksbi53cmFwUiYmci5jYWxsKHQsZSxacixuLndyYXBSKSxuLndyYXBTJiZyLmNhbGwodCxlLHR0LG4ud3JhcFMpLG4ud3JhcFQmJnIuY2FsbCh0LGUscnQsbi53cmFwVCksbi5taW5Mb2QhPT12b2lkIDAmJnIuY2FsbCh0LGUsbW8sbi5taW5Mb2QpLG4ubWF4TG9kIT09dm9pZCAwJiZyLmNhbGwodCxlLHBvLG4ubWF4TG9kKSxuLmJhc2VMZXZlbCE9PXZvaWQgMCYmci5jYWxsKHQsZSx5byxuLmJhc2VMZXZlbCksbi5tYXhMZXZlbCE9PXZvaWQgMCYmci5jYWxsKHQsZSxibyxuLm1heExldmVsKSxuLmNvbXBhcmVGdW5jIT09dm9pZCAwJiZyLmNhbGwodCxlLHhvLG4uY29tcGFyZUZ1bmMpLG4uY29tcGFyZU1vZGUhPT12b2lkIDAmJnIuY2FsbCh0LGUsZ28sbi5jb21wYXJlTW9kZSl9ZnVuY3Rpb24gbG4odCxlLHIpe2NvbnN0IG49ci50YXJnZXR8fEc7dC5iaW5kVGV4dHVyZShuLGUpLENhKHQsbix0LnRleFBhcmFtZXRlcmkscil9ZnVuY3Rpb24gQmEodCl7cmV0dXJuIHQ9dHx8ei50ZXh0dXJlQ29sb3IsdmUodCk/dDpuZXcgVWludDhBcnJheShbdFswXSoyNTUsdFsxXSoyNTUsdFsyXSoyNTUsdFszXSoyNTVdKX1mdW5jdGlvbiBadCh0LGUscixuLHMsaSl7cj1yfHx6LnRleHR1cmVPcHRpb25zLGk9aXx8Zztjb25zdCBhPXIudGFyZ2V0fHxHO2lmKG49bnx8ci53aWR0aCxzPXN8fHIuaGVpZ2h0LHQuYmluZFRleHR1cmUoYSxlKSxGYSh0LG4scyxpKSl0LmdlbmVyYXRlTWlwbWFwKGEpO2Vsc2V7Y29uc3Qgbz1QYShpKT9hbzpvbzt0LnRleFBhcmFtZXRlcmkoYSxZdCxvKSx0LnRleFBhcmFtZXRlcmkoYSxRdCxvKSx0LnRleFBhcmFtZXRlcmkoYSx0dCxldCksdC50ZXhQYXJhbWV0ZXJpKGEscnQsZXQpfX1mdW5jdGlvbiBQZSh0KXtyZXR1cm4gdC5hdXRvPT09ITB8fHQuYXV0bz09PXZvaWQgMCYmdC5sZXZlbD09PXZvaWQgMH1mdW5jdGlvbiBlcih0LGUpe3JldHVybiBlPWV8fHt9LGUuY3ViZUZhY2VPcmRlcnx8W1h0LGNvLHVvLGZvLGxvLGhvXX1mdW5jdGlvbiB0cih0LGUpe2NvbnN0IG49ZXIodCxlKS5tYXAoZnVuY3Rpb24ocyxpKXtyZXR1cm57ZmFjZTpzLG5keDppfX0pO3JldHVybiBuLnNvcnQoZnVuY3Rpb24ocyxpKXtyZXR1cm4gcy5mYWNlLWkuZmFjZX0pLG59ZnVuY3Rpb24gZG4odCxlLHIsbil7bj1ufHx6LnRleHR1cmVPcHRpb25zO2NvbnN0IHM9bi50YXJnZXR8fEcsaT1uLmxldmVsfHwwO2xldCBhPXIud2lkdGgsbz1yLmhlaWdodDtjb25zdCBjPW4uaW50ZXJuYWxGb3JtYXR8fG4uZm9ybWF0fHxnLHU9RmUoYyksZj1uLmZvcm1hdHx8dS5mb3JtYXQsZD1uLnR5cGV8fHUudHlwZTtpZihwZSh0LG4pLHQuYmluZFRleHR1cmUocyxlKSxzPT09JCl7Y29uc3QgaD1yLndpZHRoLHA9ci5oZWlnaHQ7bGV0IGwseTtpZihoLzY9PT1wKWw9cCx5PVswLDAsMSwwLDIsMCwzLDAsNCwwLDUsMF07ZWxzZSBpZihwLzY9PT1oKWw9aCx5PVswLDAsMCwxLDAsMiwwLDMsMCw0LDAsNV07ZWxzZSBpZihoLzM9PT1wLzIpbD1oLzMseT1bMCwwLDEsMCwyLDAsMCwxLDEsMSwyLDFdO2Vsc2UgaWYoaC8yPT09cC8zKWw9aC8yLHk9WzAsMCwxLDAsMCwxLDEsMSwwLDIsMSwyXTtlbHNlIHRocm93ImNhbid0IGZpZ3VyZSBvdXQgY3ViZSBtYXAgZnJvbSBlbGVtZW50OiAiKyhyLnNyYz9yLnNyYzpyLm5vZGVOYW1lKTtjb25zdCBiPUpyKCk7Yj8oYi5jYW52YXMud2lkdGg9bCxiLmNhbnZhcy5oZWlnaHQ9bCxhPWwsbz1sLHRyKHQsbikuZm9yRWFjaChmdW5jdGlvbih4KXtjb25zdCBTPXlbeC5uZHgqMiswXSpsLEY9eVt4Lm5keCoyKzFdKmw7Yi5kcmF3SW1hZ2UocixTLEYsbCxsLDAsMCxsLGwpLHQudGV4SW1hZ2UyRCh4LmZhY2UsaSxjLGYsZCxiLmNhbnZhcyl9KSxiLmNhbnZhcy53aWR0aD0xLGIuY2FudmFzLmhlaWdodD0xKTp0eXBlb2YgY3JlYXRlSW1hZ2VCaXRtYXA8InUiJiYoYT1sLG89bCx0cih0LG4pLmZvckVhY2goZnVuY3Rpb24oeCl7Y29uc3QgUz15W3gubmR4KjIrMF0qbCxGPXlbeC5uZHgqMisxXSpsO3QudGV4SW1hZ2UyRCh4LmZhY2UsaSxjLGwsbCwwLGYsZCxudWxsKSxjcmVhdGVJbWFnZUJpdG1hcChyLFMsRixsLGwse3ByZW11bHRpcGx5QWxwaGE6Im5vbmUiLGNvbG9yU3BhY2VDb252ZXJzaW9uOiJub25lIn0pLnRoZW4oZnVuY3Rpb24oWCl7cGUodCxuKSx0LmJpbmRUZXh0dXJlKHMsZSksdC50ZXhJbWFnZTJEKHguZmFjZSxpLGMsZixkLFgpLFBlKG4pJiZadCh0LGUsbixhLG8sYyl9KX0pKX1lbHNlIGlmKHM9PT1KfHxzPT09Wil7Y29uc3QgaD1NYXRoLm1pbihyLndpZHRoLHIuaGVpZ2h0KSxwPU1hdGgubWF4KHIud2lkdGgsci5oZWlnaHQpLGw9cC9oO2lmKGwlMSE9PTApdGhyb3ciY2FuIG5vdCBjb21wdXRlIDNEIGRpbWVuc2lvbnMgb2YgZWxlbWVudCI7Y29uc3QgeT1yLndpZHRoPT09cD8xOjAsYj1yLmhlaWdodD09PXA/MTowO3QucGl4ZWxTdG9yZWkocXQsMSksdC5waXhlbFN0b3JlaShlbixyLndpZHRoKSx0LnBpeGVsU3RvcmVpKHRuLDApLHQucGl4ZWxTdG9yZWkoc24sMCksdC50ZXhJbWFnZTNEKHMsaSxjLGgsaCxoLDAsZixkLG51bGwpO2ZvcihsZXQgeD0wO3g8bDsrK3gpe2NvbnN0IFM9eCpoKnksRj14KmgqYjt0LnBpeGVsU3RvcmVpKHJuLFMpLHQucGl4ZWxTdG9yZWkobm4sRiksdC50ZXhTdWJJbWFnZTNEKHMsaSwwLDAseCxoLGgsMSxmLGQscil9Zm4odCl9ZWxzZSB0LnRleEltYWdlMkQocyxpLGMsZixkLHIpO1BlKG4pJiZadCh0LGUsbixhLG8sYyksbG4odCxlLG4pfWZ1bmN0aW9uIGtlKCl7fWZ1bmN0aW9uIERhKHQpe2lmKHR5cGVvZiBkb2N1bWVudDwidSIpe2NvbnN0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO3JldHVybiBlLmhyZWY9dCxlLmhvc3RuYW1lPT09bG9jYXRpb24uaG9zdG5hbWUmJmUucG9ydD09PWxvY2F0aW9uLnBvcnQmJmUucHJvdG9jb2w9PT1sb2NhdGlvbi5wcm90b2NvbH1lbHNle2NvbnN0IGU9bmV3IFVSTChsb2NhdGlvbi5ocmVmKS5vcmlnaW47cmV0dXJuIG5ldyBVUkwodCxsb2NhdGlvbi5ocmVmKS5vcmlnaW49PT1lfX1mdW5jdGlvbiBNYSh0LGUpe3JldHVybiBlPT09dm9pZCAwJiYhRGEodCk/ImFub255bW91cyI6ZX1mdW5jdGlvbiBVYSh0LGUscil7cj1yfHxrZTtsZXQgbjtpZihlPWUhPT12b2lkIDA/ZTp6LmNyb3NzT3JpZ2luLGU9TWEodCxlKSx0eXBlb2YgSW1hZ2U8InUiKXtuPW5ldyBJbWFnZSxlIT09dm9pZCAwJiYobi5jcm9zc09yaWdpbj1lKTtjb25zdCBzPWZ1bmN0aW9uKCl7bi5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsaSksbi5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixhKSxuPW51bGx9LGk9ZnVuY3Rpb24oKXtjb25zdCBjPSJjb3VsZG4ndCBsb2FkIGltYWdlOiAiK3Q7VnIoYykscihjLG4pLHMoKX0sYT1mdW5jdGlvbigpe3IobnVsbCxuKSxzKCl9O3JldHVybiBuLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIixpKSxuLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGEpLG4uc3JjPXQsbn1lbHNlIGlmKHR5cGVvZiBJbWFnZUJpdG1hcDwidSIpe2xldCBzLGk7Y29uc3QgYT1mdW5jdGlvbigpe3IocyxpKX0sbz17fTtlJiYoby5tb2RlPSJjb3JzIiksZmV0Y2godCxvKS50aGVuKGZ1bmN0aW9uKGMpe2lmKCFjLm9rKXRocm93IGM7cmV0dXJuIGMuYmxvYigpfSkudGhlbihmdW5jdGlvbihjKXtyZXR1cm4gY3JlYXRlSW1hZ2VCaXRtYXAoYyx7cHJlbXVsdGlwbHlBbHBoYToibm9uZSIsY29sb3JTcGFjZUNvbnZlcnNpb246Im5vbmUifSl9KS50aGVuKGZ1bmN0aW9uKGMpe2k9YyxzZXRUaW1lb3V0KGEpfSkuY2F0Y2goZnVuY3Rpb24oYyl7cz1jLHNldFRpbWVvdXQoYSl9KSxuPW51bGx9cmV0dXJuIG59ZnVuY3Rpb24gaG4odCl7cmV0dXJuIHR5cGVvZiBJbWFnZUJpdG1hcDwidSImJnQgaW5zdGFuY2VvZiBJbWFnZUJpdG1hcHx8dHlwZW9mIEltYWdlRGF0YTwidSImJnQgaW5zdGFuY2VvZiBJbWFnZURhdGF8fHR5cGVvZiBIVE1MRWxlbWVudDwidSImJnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudH1mdW5jdGlvbiBycih0LGUscil7cmV0dXJuIGhuKHQpPyhzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cihudWxsLHQpfSksdCk6VWEodCxlLHIpfWZ1bmN0aW9uIG5yKHQsZSxyKXtyPXJ8fHoudGV4dHVyZU9wdGlvbnM7Y29uc3Qgbj1yLnRhcmdldHx8RztpZih0LmJpbmRUZXh0dXJlKG4sZSksci5jb2xvcj09PSExKXJldHVybjtjb25zdCBzPUJhKHIuY29sb3IpO2lmKG49PT0kKWZvcihsZXQgaT0wO2k8NjsrK2kpdC50ZXhJbWFnZTJEKFh0K2ksMCxnLDEsMSwwLGcsRSxzKTtlbHNlIG49PT1KfHxuPT09Wj90LnRleEltYWdlM0QobiwwLGcsMSwxLDEsMCxnLEUscyk6dC50ZXhJbWFnZTJEKG4sMCxnLDEsMSwwLGcsRSxzKX1mdW5jdGlvbiBOYSh0LGUscixuKXtyZXR1cm4gbj1ufHxrZSxyPXJ8fHoudGV4dHVyZU9wdGlvbnMsbnIodCxlLHIpLHI9T2JqZWN0LmFzc2lnbih7fSxyKSxycihyLnNyYyxyLmNyb3NzT3JpZ2luLGZ1bmN0aW9uKGksYSl7aT9uKGksZSxhKTooZG4odCxlLGEsciksbihudWxsLGUsYSkpfSl9ZnVuY3Rpb24gT2EodCxlLHIsbil7bj1ufHxrZTtjb25zdCBzPXIuc3JjO2lmKHMubGVuZ3RoIT09Nil0aHJvdyJ0aGVyZSBtdXN0IGJlIDYgdXJscyBmb3IgYSBjdWJlbWFwIjtjb25zdCBpPXIubGV2ZWx8fDAsYT1yLmludGVybmFsRm9ybWF0fHxyLmZvcm1hdHx8ZyxvPUZlKGEpLGM9ci5mb3JtYXR8fG8uZm9ybWF0LHU9ci50eXBlfHxFLGY9ci50YXJnZXR8fEc7aWYoZiE9PSQpdGhyb3cidGFyZ2V0IG11c3QgYmUgVEVYVFVSRV9DVUJFX01BUCI7bnIodCxlLHIpLHI9T2JqZWN0LmFzc2lnbih7fSxyKTtsZXQgZD02O2NvbnN0IGg9W10scD1lcih0LHIpO2xldCBsO2Z1bmN0aW9uIHkoYil7cmV0dXJuIGZ1bmN0aW9uKHgsUyl7LS1kLHg/aC5wdXNoKHgpOlMud2lkdGghPT1TLmhlaWdodD9oLnB1c2goImN1YmVtYXAgZmFjZSBpbWcgaXMgbm90IGEgc3F1YXJlOiAiK1Muc3JjKToocGUodCxyKSx0LmJpbmRUZXh0dXJlKGYsZSksZD09PTU/ZXIoKS5mb3JFYWNoKGZ1bmN0aW9uKEYpe3QudGV4SW1hZ2UyRChGLGksYSxjLHUsUyl9KTp0LnRleEltYWdlMkQoYixpLGEsYyx1LFMpLFBlKHIpJiZ0LmdlbmVyYXRlTWlwbWFwKGYpKSxkPT09MCYmbihoLmxlbmd0aD9oOnZvaWQgMCxlLGwpfX1sPXMubWFwKGZ1bmN0aW9uKGIseCl7cmV0dXJuIHJyKGIsci5jcm9zc09yaWdpbix5KHBbeF0pKX0pfWZ1bmN0aW9uIExhKHQsZSxyLG4pe249bnx8a2U7Y29uc3Qgcz1yLnNyYyxpPXIuaW50ZXJuYWxGb3JtYXR8fHIuZm9ybWF0fHxnLGE9RmUoaSksbz1yLmZvcm1hdHx8YS5mb3JtYXQsYz1yLnR5cGV8fEUsdT1yLnRhcmdldHx8WjtpZih1IT09SiYmdSE9PVopdGhyb3cidGFyZ2V0IG11c3QgYmUgVEVYVFVSRV8zRCBvciBURVhUVVJFXzJEX0FSUkFZIjtucih0LGUscikscj1PYmplY3QuYXNzaWduKHt9LHIpO2xldCBmPXMubGVuZ3RoO2NvbnN0IGQ9W107bGV0IGg7Y29uc3QgcD1yLmxldmVsfHwwO2xldCBsPXIud2lkdGgseT1yLmhlaWdodDtjb25zdCBiPXMubGVuZ3RoO2xldCB4PSEwO2Z1bmN0aW9uIFMoRil7cmV0dXJuIGZ1bmN0aW9uKFgsc2Upe2lmKC0tZixYKWQucHVzaChYKTtlbHNle2lmKHBlKHQsciksdC5iaW5kVGV4dHVyZSh1LGUpLHgpe3g9ITEsbD1yLndpZHRofHxzZS53aWR0aCx5PXIuaGVpZ2h0fHxzZS5oZWlnaHQsdC50ZXhJbWFnZTNEKHUscCxpLGwseSxiLDAsbyxjLG51bGwpO2ZvcihsZXQgaWU9MDtpZTxiOysraWUpdC50ZXhTdWJJbWFnZTNEKHUscCwwLDAsaWUsbCx5LDEsbyxjLHNlKX1lbHNle2xldCBpZT1zZSxNOyhzZS53aWR0aCE9PWx8fHNlLmhlaWdodCE9PXkpJiYoTT1KcigpLGllPU0uY2FudmFzLE0uY2FudmFzLndpZHRoPWwsTS5jYW52YXMuaGVpZ2h0PXksTS5kcmF3SW1hZ2Uoc2UsMCwwLGwseSkpLHQudGV4U3ViSW1hZ2UzRCh1LHAsMCwwLEYsbCx5LDEsbyxjLGllKSxNJiZpZT09PU0uY2FudmFzJiYoTS5jYW52YXMud2lkdGg9MCxNLmNhbnZhcy5oZWlnaHQ9MCl9UGUocikmJnQuZ2VuZXJhdGVNaXBtYXAodSl9Zj09PTAmJm4oZC5sZW5ndGg/ZDp2b2lkIDAsZSxoKX19aD1zLm1hcChmdW5jdGlvbihGLFgpe3JldHVybiBycihGLHIuY3Jvc3NPcmlnaW4sUyhYKSl9KX1mdW5jdGlvbiB6YSh0LGUscixuKXtuPW58fHoudGV4dHVyZU9wdGlvbnM7Y29uc3Qgcz1uLnRhcmdldHx8Rzt0LmJpbmRUZXh0dXJlKHMsZSk7bGV0IGk9bi53aWR0aCxhPW4uaGVpZ2h0LG89bi5kZXB0aDtjb25zdCBjPW4ubGV2ZWx8fDAsdT1uLmludGVybmFsRm9ybWF0fHxuLmZvcm1hdHx8ZyxmPUZlKHUpLGQ9bi5mb3JtYXR8fGYuZm9ybWF0LGg9bi50eXBlfHxrYSh0LHIsZi50eXBlKTtpZih2ZShyKSlyIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXkmJihyPW5ldyBVaW50OEFycmF5KHIuYnVmZmVyKSk7ZWxzZXtjb25zdCBiPSRyKGgpO3I9bmV3IGIocil9Y29uc3QgcD1SYSh1LGgpLGw9ci5ieXRlTGVuZ3RoL3A7aWYobCUxKXRocm93Imxlbmd0aCB3cm9uZyBzaXplIGZvciBmb3JtYXQ6ICIrS3IodCxkKTtsZXQgeTtpZihzPT09Snx8cz09PVopaWYoIWkmJiFhJiYhbyl7Y29uc3QgYj1NYXRoLmNicnQobCk7aWYoYiUxIT09MCl0aHJvdyJjYW4ndCBndWVzcyBjdWJlIHNpemUgb2YgYXJyYXkgb2YgbnVtRWxlbWVudHM6ICIrbDtpPWIsYT1iLG89Yn1lbHNlIGkmJighYXx8IW8pPyh5PW90KHQscyxhLG8sbC9pKSxhPXkud2lkdGgsbz15LmhlaWdodCk6YSYmKCFpfHwhbyk/KHk9b3QodCxzLGksbyxsL2EpLGk9eS53aWR0aCxvPXkuaGVpZ2h0KTooeT1vdCh0LHMsaSxhLGwvbyksaT15LndpZHRoLGE9eS5oZWlnaHQpO2Vsc2UgeT1vdCh0LHMsaSxhLGwpLGk9eS53aWR0aCxhPXkuaGVpZ2h0O2lmKGZuKHQpLHQucGl4ZWxTdG9yZWkocXQsbi51bnBhY2tBbGlnbm1lbnR8fDEpLHBlKHQsbikscz09PSQpe2NvbnN0IGI9cC9yLkJZVEVTX1BFUl9FTEVNRU5ULHg9bC82KmI7dHIodCxuKS5mb3JFYWNoKFM9Pntjb25zdCBGPXgqUy5uZHgsWD1yLnN1YmFycmF5KEYsRit4KTt0LnRleEltYWdlMkQoUy5mYWNlLGMsdSxpLGEsMCxkLGgsWCl9KX1lbHNlIHM9PT1KfHxzPT09Wj90LnRleEltYWdlM0QocyxjLHUsaSxhLG8sMCxkLGgscik6dC50ZXhJbWFnZTJEKHMsYyx1LGksYSwwLGQsaCxyKTtyZXR1cm57d2lkdGg6aSxoZWlnaHQ6YSxkZXB0aDpvLHR5cGU6aH19ZnVuY3Rpb24gR2EodCxlLHIpe2NvbnN0IG49ci50YXJnZXR8fEc7dC5iaW5kVGV4dHVyZShuLGUpO2NvbnN0IHM9ci5sZXZlbHx8MCxpPXIuaW50ZXJuYWxGb3JtYXR8fHIuZm9ybWF0fHxnLGE9RmUoaSksbz1yLmZvcm1hdHx8YS5mb3JtYXQsYz1yLnR5cGV8fGEudHlwZTtpZihwZSh0LHIpLG49PT0kKWZvcihsZXQgdT0wO3U8NjsrK3UpdC50ZXhJbWFnZTJEKFh0K3UscyxpLHIud2lkdGgsci5oZWlnaHQsMCxvLGMsbnVsbCk7ZWxzZSBuPT09Snx8bj09PVo/dC50ZXhJbWFnZTNEKG4scyxpLHIud2lkdGgsci5oZWlnaHQsci5kZXB0aCwwLG8sYyxudWxsKTp0LnRleEltYWdlMkQobixzLGksci53aWR0aCxyLmhlaWdodCwwLG8sYyxudWxsKX1mdW5jdGlvbiBtbih0LGUscil7cj1yfHxrZSxlPWV8fHoudGV4dHVyZU9wdGlvbnM7Y29uc3Qgbj10LmNyZWF0ZVRleHR1cmUoKSxzPWUudGFyZ2V0fHxHO2xldCBpPWUud2lkdGh8fDEsYT1lLmhlaWdodHx8MTtjb25zdCBvPWUuaW50ZXJuYWxGb3JtYXR8fGc7dC5iaW5kVGV4dHVyZShzLG4pLHM9PT0kJiYodC50ZXhQYXJhbWV0ZXJpKHMsdHQsZXQpLHQudGV4UGFyYW1ldGVyaShzLHJ0LGV0KSk7bGV0IGM9ZS5zcmM7aWYoYylpZih0eXBlb2YgYz09ImZ1bmN0aW9uIiYmKGM9Yyh0LGUpKSx0eXBlb2YgYz09InN0cmluZyIpTmEodCxuLGUscik7ZWxzZSBpZih2ZShjKXx8QXJyYXkuaXNBcnJheShjKSYmKHR5cGVvZiBjWzBdPT0ibnVtYmVyInx8QXJyYXkuaXNBcnJheShjWzBdKXx8dmUoY1swXSkpKXtjb25zdCB1PXphKHQsbixjLGUpO2k9dS53aWR0aCxhPXUuaGVpZ2h0fWVsc2UgQXJyYXkuaXNBcnJheShjKSYmKHR5cGVvZiBjWzBdPT0ic3RyaW5nInx8aG4oY1swXSkpP3M9PT0kP09hKHQsbixlLHIpOkxhKHQsbixlLHIpOihkbih0LG4sYyxlKSxpPWMud2lkdGgsYT1jLmhlaWdodCk7ZWxzZSBHYSh0LG4sZSk7cmV0dXJuIFBlKGUpJiZadCh0LG4sZSxpLGEsbyksbG4odCxuLGUpLG59Y29uc3Qgc3I9VnI7ZnVuY3Rpb24gcG4odCl7cmV0dXJuIHR5cGVvZiBkb2N1bWVudDwidSImJmRvY3VtZW50LmdldEVsZW1lbnRCeUlkP2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKHQpOm51bGx9Y29uc3QgYXQ9MzM5ODQsY3Q9MzQ5NjIsJGE9MzQ5NjMsVmE9MzU3MTMsV2E9MzU3MTQsSGE9MzU2MzIsamE9MzU2MzMsWGE9MzU5ODEseW49MzU3MTgsWWE9MzU3MjEsUWE9MzU5NzEscWE9MzUzODIsS2E9MzUzOTYsSmE9MzUzOTgsWmE9MzUzOTIsZWM9MzUzOTUsdXQ9NTEyNixibj0zNTY2NCxnbj0zNTY2NSx4bj0zNTY2Nixpcj01MTI0LEVuPTM1NjY3LF9uPTM1NjY4LFRuPTM1NjY5LHduPTM1NjcwLEFuPTM1NjcxLHZuPTM1NjcyLFNuPTM1NjczLEluPTM1Njc0LFJuPTM1Njc1LEZuPTM1Njc2LHRjPTM1Njc4LHJjPTM1NjgwLG5jPTM1Njc5LHNjPTM1NjgyLGljPTM1Njg1LG9jPTM1Njg2LGFjPTM1Njg3LGNjPTM1Njg4LHVjPTM1Njg5LGZjPTM1NjkwLGxjPTM2Mjg5LGRjPTM2MjkyLGhjPTM2MjkzLG9yPTUxMjUsUG49MzYyOTQsa249MzYyOTUsQ249MzYyOTYsbWM9MzYyOTgscGM9MzYyOTkseWM9MzYzMDAsYmM9MzYzMDMsZ2M9MzYzMDYseGM9MzYzMDcsRWM9MzYzMDgsX2M9MzYzMTEsZnQ9MzU1MyxsdD0zNDA2Nyxhcj0zMjg3OSxkdD0zNTg2NixtPXt9O2Z1bmN0aW9uIEJuKHQsZSl7cmV0dXJuIG1bZV0uYmluZFBvaW50fWZ1bmN0aW9uIFRjKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3QudW5pZm9ybTFmKGUscil9fWZ1bmN0aW9uIHdjKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3QudW5pZm9ybTFmdihlLHIpfX1mdW5jdGlvbiBBYyh0LGUpe3JldHVybiBmdW5jdGlvbihyKXt0LnVuaWZvcm0yZnYoZSxyKX19ZnVuY3Rpb24gdmModCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7dC51bmlmb3JtM2Z2KGUscil9fWZ1bmN0aW9uIFNjKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3QudW5pZm9ybTRmdihlLHIpfX1mdW5jdGlvbiBEbih0LGUpe3JldHVybiBmdW5jdGlvbihyKXt0LnVuaWZvcm0xaShlLHIpfX1mdW5jdGlvbiBNbih0LGUpe3JldHVybiBmdW5jdGlvbihyKXt0LnVuaWZvcm0xaXYoZSxyKX19ZnVuY3Rpb24gVW4odCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7dC51bmlmb3JtMml2KGUscil9fWZ1bmN0aW9uIE5uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3QudW5pZm9ybTNpdihlLHIpfX1mdW5jdGlvbiBPbih0LGUpe3JldHVybiBmdW5jdGlvbihyKXt0LnVuaWZvcm00aXYoZSxyKX19ZnVuY3Rpb24gSWModCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7dC51bmlmb3JtMXVpKGUscil9fWZ1bmN0aW9uIFJjKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3QudW5pZm9ybTF1aXYoZSxyKX19ZnVuY3Rpb24gRmModCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7dC51bmlmb3JtMnVpdihlLHIpfX1mdW5jdGlvbiBQYyh0LGUpe3JldHVybiBmdW5jdGlvbihyKXt0LnVuaWZvcm0zdWl2KGUscil9fWZ1bmN0aW9uIGtjKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3QudW5pZm9ybTR1aXYoZSxyKX19ZnVuY3Rpb24gQ2ModCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7dC51bmlmb3JtTWF0cml4MmZ2KGUsITEscil9fWZ1bmN0aW9uIEJjKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3QudW5pZm9ybU1hdHJpeDNmdihlLCExLHIpfX1mdW5jdGlvbiBEYyh0LGUpe3JldHVybiBmdW5jdGlvbihyKXt0LnVuaWZvcm1NYXRyaXg0ZnYoZSwhMSxyKX19ZnVuY3Rpb24gTWModCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7dC51bmlmb3JtTWF0cml4MngzZnYoZSwhMSxyKX19ZnVuY3Rpb24gVWModCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7dC51bmlmb3JtTWF0cml4M3gyZnYoZSwhMSxyKX19ZnVuY3Rpb24gTmModCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7dC51bmlmb3JtTWF0cml4Mng0ZnYoZSwhMSxyKX19ZnVuY3Rpb24gT2ModCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7dC51bmlmb3JtTWF0cml4NHgyZnYoZSwhMSxyKX19ZnVuY3Rpb24gTGModCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7dC51bmlmb3JtTWF0cml4M3g0ZnYoZSwhMSxyKX19ZnVuY3Rpb24gemModCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7dC51bmlmb3JtTWF0cml4NHgzZnYoZSwhMSxyKX19ZnVuY3Rpb24gSSh0LGUscixuKXtjb25zdCBzPUJuKHQsZSk7cmV0dXJuIEFlKHQpP2Z1bmN0aW9uKGkpe2xldCBhLG87IWl8fHp0KHQsaSk/KGE9aSxvPW51bGwpOihhPWkudGV4dHVyZSxvPWkuc2FtcGxlciksdC51bmlmb3JtMWkobixyKSx0LmFjdGl2ZVRleHR1cmUoYXQrciksdC5iaW5kVGV4dHVyZShzLGEpLHQuYmluZFNhbXBsZXIocixvKX06ZnVuY3Rpb24oaSl7dC51bmlmb3JtMWkobixyKSx0LmFjdGl2ZVRleHR1cmUoYXQrciksdC5iaW5kVGV4dHVyZShzLGkpfX1mdW5jdGlvbiBSKHQsZSxyLG4scyl7Y29uc3QgaT1Cbih0LGUpLGE9bmV3IEludDMyQXJyYXkocyk7Zm9yKGxldCBvPTA7bzxzOysrbylhW29dPXIrbztyZXR1cm4gQWUodCk/ZnVuY3Rpb24obyl7dC51bmlmb3JtMWl2KG4sYSksby5mb3JFYWNoKGZ1bmN0aW9uKGMsdSl7dC5hY3RpdmVUZXh0dXJlKGF0K2FbdV0pO2xldCBmLGQ7IWN8fHp0KHQsYyk/KGY9YyxkPW51bGwpOihmPWMudGV4dHVyZSxkPWMuc2FtcGxlciksdC5iaW5kU2FtcGxlcihyLGQpLHQuYmluZFRleHR1cmUoaSxmKX0pfTpmdW5jdGlvbihvKXt0LnVuaWZvcm0xaXYobixhKSxvLmZvckVhY2goZnVuY3Rpb24oYyx1KXt0LmFjdGl2ZVRleHR1cmUoYXQrYVt1XSksdC5iaW5kVGV4dHVyZShpLGMpfSl9fW1bdXRdPXtUeXBlOkZsb2F0MzJBcnJheSxzaXplOjQsc2V0dGVyOlRjLGFycmF5U2V0dGVyOndjfSxtW2JuXT17VHlwZTpGbG9hdDMyQXJyYXksc2l6ZTo4LHNldHRlcjpBYyxjb2xzOjJ9LG1bZ25dPXtUeXBlOkZsb2F0MzJBcnJheSxzaXplOjEyLHNldHRlcjp2Yyxjb2xzOjN9LG1beG5dPXtUeXBlOkZsb2F0MzJBcnJheSxzaXplOjE2LHNldHRlcjpTYyxjb2xzOjR9LG1baXJdPXtUeXBlOkludDMyQXJyYXksc2l6ZTo0LHNldHRlcjpEbixhcnJheVNldHRlcjpNbn0sbVtFbl09e1R5cGU6SW50MzJBcnJheSxzaXplOjgsc2V0dGVyOlVuLGNvbHM6Mn0sbVtfbl09e1R5cGU6SW50MzJBcnJheSxzaXplOjEyLHNldHRlcjpObixjb2xzOjN9LG1bVG5dPXtUeXBlOkludDMyQXJyYXksc2l6ZToxNixzZXR0ZXI6T24sY29sczo0fSxtW29yXT17VHlwZTpVaW50MzJBcnJheSxzaXplOjQsc2V0dGVyOkljLGFycmF5U2V0dGVyOlJjfSxtW1BuXT17VHlwZTpVaW50MzJBcnJheSxzaXplOjgsc2V0dGVyOkZjLGNvbHM6Mn0sbVtrbl09e1R5cGU6VWludDMyQXJyYXksc2l6ZToxMixzZXR0ZXI6UGMsY29sczozfSxtW0NuXT17VHlwZTpVaW50MzJBcnJheSxzaXplOjE2LHNldHRlcjprYyxjb2xzOjR9LG1bd25dPXtUeXBlOlVpbnQzMkFycmF5LHNpemU6NCxzZXR0ZXI6RG4sYXJyYXlTZXR0ZXI6TW59LG1bQW5dPXtUeXBlOlVpbnQzMkFycmF5LHNpemU6OCxzZXR0ZXI6VW4sY29sczoyfSxtW3ZuXT17VHlwZTpVaW50MzJBcnJheSxzaXplOjEyLHNldHRlcjpObixjb2xzOjN9LG1bU25dPXtUeXBlOlVpbnQzMkFycmF5LHNpemU6MTYsc2V0dGVyOk9uLGNvbHM6NH0sbVtJbl09e1R5cGU6RmxvYXQzMkFycmF5LHNpemU6MzIsc2V0dGVyOkNjLHJvd3M6Mixjb2xzOjJ9LG1bUm5dPXtUeXBlOkZsb2F0MzJBcnJheSxzaXplOjQ4LHNldHRlcjpCYyxyb3dzOjMsY29sczozfSxtW0ZuXT17VHlwZTpGbG9hdDMyQXJyYXksc2l6ZTo2NCxzZXR0ZXI6RGMscm93czo0LGNvbHM6NH0sbVtpY109e1R5cGU6RmxvYXQzMkFycmF5LHNpemU6MzIsc2V0dGVyOk1jLHJvd3M6Mixjb2xzOjN9LG1bb2NdPXtUeXBlOkZsb2F0MzJBcnJheSxzaXplOjMyLHNldHRlcjpOYyxyb3dzOjIsY29sczo0fSxtW2FjXT17VHlwZTpGbG9hdDMyQXJyYXksc2l6ZTo0OCxzZXR0ZXI6VWMscm93czozLGNvbHM6Mn0sbVtjY109e1R5cGU6RmxvYXQzMkFycmF5LHNpemU6NDgsc2V0dGVyOkxjLHJvd3M6Myxjb2xzOjR9LG1bdWNdPXtUeXBlOkZsb2F0MzJBcnJheSxzaXplOjY0LHNldHRlcjpPYyxyb3dzOjQsY29sczoyfSxtW2ZjXT17VHlwZTpGbG9hdDMyQXJyYXksc2l6ZTo2NCxzZXR0ZXI6emMscm93czo0LGNvbHM6M30sbVt0Y109e1R5cGU6bnVsbCxzaXplOjAsc2V0dGVyOkksYXJyYXlTZXR0ZXI6UixiaW5kUG9pbnQ6ZnR9LG1bcmNdPXtUeXBlOm51bGwsc2l6ZTowLHNldHRlcjpJLGFycmF5U2V0dGVyOlIsYmluZFBvaW50Omx0fSxtW25jXT17VHlwZTpudWxsLHNpemU6MCxzZXR0ZXI6SSxhcnJheVNldHRlcjpSLGJpbmRQb2ludDphcn0sbVtzY109e1R5cGU6bnVsbCxzaXplOjAsc2V0dGVyOkksYXJyYXlTZXR0ZXI6UixiaW5kUG9pbnQ6ZnR9LG1bbGNdPXtUeXBlOm51bGwsc2l6ZTowLHNldHRlcjpJLGFycmF5U2V0dGVyOlIsYmluZFBvaW50OmR0fSxtW2RjXT17VHlwZTpudWxsLHNpemU6MCxzZXR0ZXI6SSxhcnJheVNldHRlcjpSLGJpbmRQb2ludDpkdH0sbVtoY109e1R5cGU6bnVsbCxzaXplOjAsc2V0dGVyOkksYXJyYXlTZXR0ZXI6UixiaW5kUG9pbnQ6bHR9LG1bbWNdPXtUeXBlOm51bGwsc2l6ZTowLHNldHRlcjpJLGFycmF5U2V0dGVyOlIsYmluZFBvaW50OmZ0fSxtW3BjXT17VHlwZTpudWxsLHNpemU6MCxzZXR0ZXI6SSxhcnJheVNldHRlcjpSLGJpbmRQb2ludDphcn0sbVt5Y109e1R5cGU6bnVsbCxzaXplOjAsc2V0dGVyOkksYXJyYXlTZXR0ZXI6UixiaW5kUG9pbnQ6bHR9LG1bYmNdPXtUeXBlOm51bGwsc2l6ZTowLHNldHRlcjpJLGFycmF5U2V0dGVyOlIsYmluZFBvaW50OmR0fSxtW2djXT17VHlwZTpudWxsLHNpemU6MCxzZXR0ZXI6SSxhcnJheVNldHRlcjpSLGJpbmRQb2ludDpmdH0sbVt4Y109e1R5cGU6bnVsbCxzaXplOjAsc2V0dGVyOkksYXJyYXlTZXR0ZXI6UixiaW5kUG9pbnQ6YXJ9LG1bRWNdPXtUeXBlOm51bGwsc2l6ZTowLHNldHRlcjpJLGFycmF5U2V0dGVyOlIsYmluZFBvaW50Omx0fSxtW19jXT17VHlwZTpudWxsLHNpemU6MCxzZXR0ZXI6SSxhcnJheVNldHRlcjpSLGJpbmRQb2ludDpkdH07ZnVuY3Rpb24gaHQodCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7aWYoci52YWx1ZSlzd2l0Y2godC5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoZSksci52YWx1ZS5sZW5ndGgpe2Nhc2UgNDp0LnZlcnRleEF0dHJpYjRmdihlLHIudmFsdWUpO2JyZWFrO2Nhc2UgMzp0LnZlcnRleEF0dHJpYjNmdihlLHIudmFsdWUpO2JyZWFrO2Nhc2UgMjp0LnZlcnRleEF0dHJpYjJmdihlLHIudmFsdWUpO2JyZWFrO2Nhc2UgMTp0LnZlcnRleEF0dHJpYjFmdihlLHIudmFsdWUpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJ0aGUgbGVuZ3RoIG9mIGEgZmxvYXQgY29uc3RhbnQgdmFsdWUgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDQhIil9ZWxzZSB0LmJpbmRCdWZmZXIoY3Qsci5idWZmZXIpLHQuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoZSksdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGUsci5udW1Db21wb25lbnRzfHxyLnNpemUsci50eXBlfHx1dCxyLm5vcm1hbGl6ZXx8ITEsci5zdHJpZGV8fDAsci5vZmZzZXR8fDApLHQudmVydGV4QXR0cmliRGl2aXNvciYmdC52ZXJ0ZXhBdHRyaWJEaXZpc29yKGUsci5kaXZpc29yfHwwKX19ZnVuY3Rpb24gSCh0LGUpe3JldHVybiBmdW5jdGlvbihyKXtpZihyLnZhbHVlKWlmKHQuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGUpLHIudmFsdWUubGVuZ3RoPT09NCl0LnZlcnRleEF0dHJpYjRpdihlLHIudmFsdWUpO2Vsc2UgdGhyb3cgbmV3IEVycm9yKCJUaGUgbGVuZ3RoIG9mIGFuIGludGVnZXIgY29uc3RhbnQgdmFsdWUgbXVzdCBiZSA0ISIpO2Vsc2UgdC5iaW5kQnVmZmVyKGN0LHIuYnVmZmVyKSx0LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGUpLHQudmVydGV4QXR0cmliSVBvaW50ZXIoZSxyLm51bUNvbXBvbmVudHN8fHIuc2l6ZSxyLnR5cGV8fGlyLHIuc3RyaWRlfHwwLHIub2Zmc2V0fHwwKSx0LnZlcnRleEF0dHJpYkRpdmlzb3ImJnQudmVydGV4QXR0cmliRGl2aXNvcihlLHIuZGl2aXNvcnx8MCl9fWZ1bmN0aW9uIG10KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe2lmKHIudmFsdWUpaWYodC5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoZSksci52YWx1ZS5sZW5ndGg9PT00KXQudmVydGV4QXR0cmliNHVpdihlLHIudmFsdWUpO2Vsc2UgdGhyb3cgbmV3IEVycm9yKCJUaGUgbGVuZ3RoIG9mIGFuIHVuc2lnbmVkIGludGVnZXIgY29uc3RhbnQgdmFsdWUgbXVzdCBiZSA0ISIpO2Vsc2UgdC5iaW5kQnVmZmVyKGN0LHIuYnVmZmVyKSx0LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGUpLHQudmVydGV4QXR0cmliSVBvaW50ZXIoZSxyLm51bUNvbXBvbmVudHN8fHIuc2l6ZSxyLnR5cGV8fG9yLHIuc3RyaWRlfHwwLHIub2Zmc2V0fHwwKSx0LnZlcnRleEF0dHJpYkRpdmlzb3ImJnQudmVydGV4QXR0cmliRGl2aXNvcihlLHIuZGl2aXNvcnx8MCl9fWZ1bmN0aW9uIGNyKHQsZSxyKXtjb25zdCBuPXIuc2l6ZSxzPXIuY291bnQ7cmV0dXJuIGZ1bmN0aW9uKGkpe3QuYmluZEJ1ZmZlcihjdCxpLmJ1ZmZlcik7Y29uc3QgYT1pLnNpemV8fGkubnVtQ29tcG9uZW50c3x8bixvPWEvcyxjPWkudHlwZXx8dXQsZj1tW2NdLnNpemUqYSxkPWkubm9ybWFsaXplfHwhMSxoPWkub2Zmc2V0fHwwLHA9Zi9zO2ZvcihsZXQgbD0wO2w8czsrK2wpdC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShlK2wpLHQudmVydGV4QXR0cmliUG9pbnRlcihlK2wsbyxjLGQsZixoK3AqbCksdC52ZXJ0ZXhBdHRyaWJEaXZpc29yJiZ0LnZlcnRleEF0dHJpYkRpdmlzb3IoZStsLGkuZGl2aXNvcnx8MCl9fWNvbnN0IF89e307X1t1dF09e3NpemU6NCxzZXR0ZXI6aHR9LF9bYm5dPXtzaXplOjgsc2V0dGVyOmh0fSxfW2duXT17c2l6ZToxMixzZXR0ZXI6aHR9LF9beG5dPXtzaXplOjE2LHNldHRlcjpodH0sX1tpcl09e3NpemU6NCxzZXR0ZXI6SH0sX1tFbl09e3NpemU6OCxzZXR0ZXI6SH0sX1tfbl09e3NpemU6MTIsc2V0dGVyOkh9LF9bVG5dPXtzaXplOjE2LHNldHRlcjpIfSxfW29yXT17c2l6ZTo0LHNldHRlcjptdH0sX1tQbl09e3NpemU6OCxzZXR0ZXI6bXR9LF9ba25dPXtzaXplOjEyLHNldHRlcjptdH0sX1tDbl09e3NpemU6MTYsc2V0dGVyOm10fSxfW3duXT17c2l6ZTo0LHNldHRlcjpIfSxfW0FuXT17c2l6ZTo4LHNldHRlcjpIfSxfW3ZuXT17c2l6ZToxMixzZXR0ZXI6SH0sX1tTbl09e3NpemU6MTYsc2V0dGVyOkh9LF9bSW5dPXtzaXplOjQsc2V0dGVyOmNyLGNvdW50OjJ9LF9bUm5dPXtzaXplOjksc2V0dGVyOmNyLGNvdW50OjN9LF9bRm5dPXtzaXplOjE2LHNldHRlcjpjcixjb3VudDo0fTtjb25zdCBHYz0vRVJST1I6XHMqXGQrOihcZCspL2dpO2Z1bmN0aW9uICRjKHQsZT0iIixyPTApe2NvbnN0IG49Wy4uLmUubWF0Y2hBbGwoR2MpXSxzPW5ldyBNYXAobi5tYXAoKGksYSk9Pntjb25zdCBvPXBhcnNlSW50KGlbMV0pLGM9blthKzFdLHU9Yz9jLmluZGV4OmUubGVuZ3RoLGY9ZS5zdWJzdHJpbmcoaS5pbmRleCx1KTtyZXR1cm5bby0xLGZdfSkpO3JldHVybiB0LnNwbGl0KGAKYCkubWFwKChpLGEpPT57Y29uc3Qgbz1zLmdldChhKTtyZXR1cm5gJHthKzErcn06ICR7aX0ke28/YAoKXl5eICR7b31gOiIifWB9KS5qb2luKGAKYCl9Y29uc3QgTG49L15bIFx0XSpcbi87ZnVuY3Rpb24gem4odCl7bGV0IGU9MDtyZXR1cm4gTG4udGVzdCh0KSYmKGU9MSx0PXQucmVwbGFjZShMbiwiIikpLHtsaW5lT2Zmc2V0OmUsc2hhZGVyU291cmNlOnR9fWZ1bmN0aW9uIFZjKHQsZSl7cmV0dXJuIHQuZXJyb3JDYWxsYmFjayhlKSx0LmNhbGxiYWNrJiZzZXRUaW1lb3V0KCgpPT57dC5jYWxsYmFjayhgJHtlfQoke3QuZXJyb3JzLmpvaW4oYApgKX1gKX0pLG51bGx9ZnVuY3Rpb24gV2ModCxlLHIsbil7aWYobj1ufHxzciwhdC5nZXRTaGFkZXJQYXJhbWV0ZXIocixWYSkpe2NvbnN0IGk9dC5nZXRTaGFkZXJJbmZvTG9nKHIpLHtsaW5lT2Zmc2V0OmEsc2hhZGVyU291cmNlOm99PXpuKHQuZ2V0U2hhZGVyU291cmNlKHIpKSxjPWAkeyRjKG8saSxhKX0KRXJyb3IgY29tcGlsaW5nICR7S3IodCxlKX06ICR7aX1gO3JldHVybiBuKGMpLGN9cmV0dXJuIiJ9ZnVuY3Rpb24gdXIodCxlLHIpe2xldCBuLHMsaTtpZih0eXBlb2YgZT09ImZ1bmN0aW9uIiYmKHI9ZSxlPXZvaWQgMCksdHlwZW9mIHQ9PSJmdW5jdGlvbiIpcj10LHQ9dm9pZCAwO2Vsc2UgaWYodCYmIUFycmF5LmlzQXJyYXkodCkpe2NvbnN0IHU9dDtyPXUuZXJyb3JDYWxsYmFjayx0PXUuYXR0cmliTG9jYXRpb25zLG49dS50cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzLHM9dS50cmFuc2Zvcm1GZWVkYmFja01vZGUsaT11LmNhbGxiYWNrfWNvbnN0IGE9cnx8c3Isbz1bXSxjPXtlcnJvckNhbGxiYWNrKHUsLi4uZil7by5wdXNoKHUpLGEodSwuLi5mKX0sdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nczpuLHRyYW5zZm9ybUZlZWRiYWNrTW9kZTpzLGNhbGxiYWNrOmksZXJyb3JzOm99O3tsZXQgdT17fTtBcnJheS5pc0FycmF5KHQpP3QuZm9yRWFjaChmdW5jdGlvbihmLGQpe3VbZl09ZT9lW2RdOmR9KTp1PXR8fHt9LGMuYXR0cmliTG9jYXRpb25zPXV9cmV0dXJuIGN9Y29uc3QgSGM9WyJWRVJURVhfU0hBREVSIiwiRlJBR01FTlRfU0hBREVSIl07ZnVuY3Rpb24gamModCxlKXtpZihlLmluZGV4T2YoImZyYWciKT49MClyZXR1cm4gSGE7aWYoZS5pbmRleE9mKCJ2ZXJ0Iik+PTApcmV0dXJuIGphfWZ1bmN0aW9uIFhjKHQsZSxyKXtjb25zdCBuPXQuZ2V0QXR0YWNoZWRTaGFkZXJzKGUpO2Zvcihjb25zdCBzIG9mIG4pci5oYXMocykmJnQuZGVsZXRlU2hhZGVyKHMpO3QuZGVsZXRlUHJvZ3JhbShlKX1jb25zdCBZYz0odD0wKT0+bmV3IFByb21pc2UoZT0+c2V0VGltZW91dChlLHQpKTtmdW5jdGlvbiBRYyh0LGUscil7Y29uc3Qgbj10LmNyZWF0ZVByb2dyYW0oKSx7YXR0cmliTG9jYXRpb25zOnMsdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nczppLHRyYW5zZm9ybUZlZWRiYWNrTW9kZTphfT11cihyKTtmb3IobGV0IG89MDtvPGUubGVuZ3RoOysrbyl7bGV0IGM9ZVtvXTtpZih0eXBlb2YgYz09InN0cmluZyIpe2NvbnN0IHU9cG4oYyksZj11P3UudGV4dDpjO2xldCBkPXRbSGNbb11dO3UmJnUudHlwZSYmKGQ9amModCx1LnR5cGUpfHxkKSxjPXQuY3JlYXRlU2hhZGVyKGQpLHQuc2hhZGVyU291cmNlKGMsem4oZikuc2hhZGVyU291cmNlKSx0LmNvbXBpbGVTaGFkZXIoYyksdC5hdHRhY2hTaGFkZXIobixjKX19T2JqZWN0LmVudHJpZXMocykuZm9yRWFjaCgoW28sY10pPT50LmJpbmRBdHRyaWJMb2NhdGlvbihuLGMsbykpO3tsZXQgbz1pO28mJihvLmF0dHJpYnMmJihvPW8uYXR0cmlicyksQXJyYXkuaXNBcnJheShvKXx8KG89T2JqZWN0LmtleXMobykpLHQudHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhuLG8sYXx8WGEpKX1yZXR1cm4gdC5saW5rUHJvZ3JhbShuKSxufWZ1bmN0aW9uIHFjKHQsZSxyLG4scyl7Y29uc3QgaT11cihyLG4scyksYT1uZXcgU2V0KGUpLG89UWModCxlLGkpO2Z1bmN0aW9uIGModSxmKXtjb25zdCBkPUpjKHUsZixpLmVycm9yQ2FsbGJhY2spO3JldHVybiBkJiZYYyh1LGYsYSksZH1pZihpLmNhbGxiYWNrKXtLYyh0LG8pLnRoZW4oKCk9Pntjb25zdCB1PWModCxvKTtpLmNhbGxiYWNrKHUsdT92b2lkIDA6byl9KTtyZXR1cm59cmV0dXJuIGModCxvKT92b2lkIDA6b31hc3luYyBmdW5jdGlvbiBLYyh0LGUpe2NvbnN0IHI9dC5nZXRFeHRlbnNpb24oIktIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZSIpLG49cj8oaSxhKT0+aS5nZXRQcm9ncmFtUGFyYW1ldGVyKGEsci5DT01QTEVUSU9OX1NUQVRVU19LSFIpOigpPT4hMDtsZXQgcz0wO2RvIGF3YWl0IFljKHMpLHM9MWUzLzYwO3doaWxlKCFuKHQsZSkpfWZ1bmN0aW9uIEpjKHQsZSxyKXtpZihyPXJ8fHNyLCF0LmdldFByb2dyYW1QYXJhbWV0ZXIoZSxXYSkpe2NvbnN0IHM9dC5nZXRQcm9ncmFtSW5mb0xvZyhlKTtyKGBFcnJvciBpbiBwcm9ncmFtIGxpbmtpbmc6ICR7c31gKTtjb25zdCBhPXQuZ2V0QXR0YWNoZWRTaGFkZXJzKGUpLm1hcChvPT5XYyh0LHQuZ2V0U2hhZGVyUGFyYW1ldGVyKG8sdC5TSEFERVJfVFlQRSksbyxyKSk7cmV0dXJuYCR7c30KJHthLmZpbHRlcihvPT5vKS5qb2luKGAKYCl9YH19ZnVuY3Rpb24gWmModCxlLHIsbixzKXtyZXR1cm4gcWModCxlLHIsbixzKX1mdW5jdGlvbiBHbih0KXtjb25zdCBlPXQubmFtZTtyZXR1cm4gZS5zdGFydHNXaXRoKCJnbF8iKXx8ZS5zdGFydHNXaXRoKCJ3ZWJnbF8iKX1jb25zdCBldT0vKFwufFxbfF18XHcrKS9nLHR1PXQ9PnQ+PSIwIiYmdDw9IjkiO2Z1bmN0aW9uIHJ1KHQsZSxyLG4pe2NvbnN0IHM9dC5zcGxpdChldSkuZmlsdGVyKG89Pm8hPT0iIik7bGV0IGk9MCxhPSIiO2Zvcig7Oyl7Y29uc3Qgbz1zW2krK107YSs9bztjb25zdCBjPXR1KG9bMF0pLHU9Yz9wYXJzZUludChvKTpvO2lmKGMmJihhKz1zW2krK10pLGk9PT1zLmxlbmd0aCl7clt1XT1lO2JyZWFrfWVsc2V7Y29uc3QgZD1zW2krK10saD1kPT09IlsiLHA9clt1XXx8KGg/W106e30pO3JbdV09cCxyPXAsblthXT1uW2FdfHxmdW5jdGlvbihsKXtyZXR1cm4gZnVuY3Rpb24oeSl7JG4obCx5KX19KHApLGErPWR9fX1mdW5jdGlvbiBudSh0LGUpe2xldCByPTA7ZnVuY3Rpb24gbihvLGMsdSl7Y29uc3QgZj1jLm5hbWUuZW5kc1dpdGgoIlswXSIpLGQ9Yy50eXBlLGg9bVtkXTtpZighaCl0aHJvdyBuZXcgRXJyb3IoYHVua25vd24gdHlwZTogMHgke2QudG9TdHJpbmcoMTYpfWApO2xldCBwO2lmKGguYmluZFBvaW50KXtjb25zdCBsPXI7cis9Yy5zaXplLGY/cD1oLmFycmF5U2V0dGVyKHQsZCxsLHUsYy5zaXplKTpwPWguc2V0dGVyKHQsZCxsLHUsYy5zaXplKX1lbHNlIGguYXJyYXlTZXR0ZXImJmY/cD1oLmFycmF5U2V0dGVyKHQsdSk6cD1oLnNldHRlcih0LHUpO3JldHVybiBwLmxvY2F0aW9uPXUscH1jb25zdCBzPXt9LGk9e30sYT10LmdldFByb2dyYW1QYXJhbWV0ZXIoZSx5bik7Zm9yKGxldCBvPTA7bzxhOysrbyl7Y29uc3QgYz10LmdldEFjdGl2ZVVuaWZvcm0oZSxvKTtpZihHbihjKSljb250aW51ZTtsZXQgdT1jLm5hbWU7dS5lbmRzV2l0aCgiWzBdIikmJih1PXUuc3Vic3RyKDAsdS5sZW5ndGgtMykpO2NvbnN0IGY9dC5nZXRVbmlmb3JtTG9jYXRpb24oZSxjLm5hbWUpO2lmKGYpe2NvbnN0IGQ9bihlLGMsZik7c1t1XT1kLHJ1KHUsZCxpLHMpfX1yZXR1cm4gc31mdW5jdGlvbiBzdSh0LGUpe2NvbnN0IHI9e30sbj10LmdldFByb2dyYW1QYXJhbWV0ZXIoZSxRYSk7Zm9yKGxldCBzPTA7czxuOysrcyl7Y29uc3QgaT10LmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhlLHMpO3JbaS5uYW1lXT17aW5kZXg6cyx0eXBlOmkudHlwZSxzaXplOmkuc2l6ZX19cmV0dXJuIHJ9ZnVuY3Rpb24gaXUodCxlKXtjb25zdCByPXQuZ2V0UHJvZ3JhbVBhcmFtZXRlcihlLHluKSxuPVtdLHM9W107Zm9yKGxldCBvPTA7bzxyOysrbyl7cy5wdXNoKG8pLG4ucHVzaCh7fSk7Y29uc3QgYz10LmdldEFjdGl2ZVVuaWZvcm0oZSxvKTtuW29dLm5hbWU9Yy5uYW1lfVtbIlVOSUZPUk1fVFlQRSIsInR5cGUiXSxbIlVOSUZPUk1fU0laRSIsInNpemUiXSxbIlVOSUZPUk1fQkxPQ0tfSU5ERVgiLCJibG9ja05keCJdLFsiVU5JRk9STV9PRkZTRVQiLCJvZmZzZXQiXV0uZm9yRWFjaChmdW5jdGlvbihvKXtjb25zdCBjPW9bMF0sdT1vWzFdO3QuZ2V0QWN0aXZlVW5pZm9ybXMoZSxzLHRbY10pLmZvckVhY2goZnVuY3Rpb24oZixkKXtuW2RdW3VdPWZ9KX0pO2NvbnN0IGk9e30sYT10LmdldFByb2dyYW1QYXJhbWV0ZXIoZSxxYSk7Zm9yKGxldCBvPTA7bzxhOysrbyl7Y29uc3QgYz10LmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoZSxvKSx1PXtpbmRleDp0LmdldFVuaWZvcm1CbG9ja0luZGV4KGUsYyksdXNlZEJ5VmVydGV4U2hhZGVyOnQuZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyKGUsbyxLYSksdXNlZEJ5RnJhZ21lbnRTaGFkZXI6dC5nZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIoZSxvLEphKSxzaXplOnQuZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyKGUsbyxaYSksdW5pZm9ybUluZGljZXM6dC5nZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIoZSxvLGVjKX07dS51c2VkPXUudXNlZEJ5VmVydGV4U2hhZGVyfHx1LnVzZWRCeUZyYWdtZW50U2hhZGVyLGlbY109dX1yZXR1cm57YmxvY2tTcGVjczppLHVuaWZvcm1EYXRhOm59fWZ1bmN0aW9uICRuKHQsZSl7Zm9yKGNvbnN0IHIgaW4gZSl7Y29uc3Qgbj10W3JdO3R5cGVvZiBuPT0iZnVuY3Rpb24iP24oZVtyXSk6JG4odFtyXSxlW3JdKX19ZnVuY3Rpb24gVm4odCwuLi5lKXtjb25zdCByPXQudW5pZm9ybVNldHRlcnN8fHQsbj1lLmxlbmd0aDtmb3IobGV0IHM9MDtzPG47KytzKXtjb25zdCBpPWVbc107aWYoQXJyYXkuaXNBcnJheShpKSl7Y29uc3QgYT1pLmxlbmd0aDtmb3IobGV0IG89MDtvPGE7KytvKVZuKHIsaVtvXSl9ZWxzZSBmb3IoY29uc3QgYSBpbiBpKXtjb25zdCBvPXJbYV07byYmbyhpW2FdKX19fWZ1bmN0aW9uIG91KHQsZSl7Y29uc3Qgcj17fSxuPXQuZ2V0UHJvZ3JhbVBhcmFtZXRlcihlLFlhKTtmb3IobGV0IHM9MDtzPG47KytzKXtjb25zdCBpPXQuZ2V0QWN0aXZlQXR0cmliKGUscyk7aWYoR24oaSkpY29udGludWU7Y29uc3QgYT10LmdldEF0dHJpYkxvY2F0aW9uKGUsaS5uYW1lKSxvPV9baS50eXBlXSxjPW8uc2V0dGVyKHQsYSxvKTtjLmxvY2F0aW9uPWEscltpLm5hbWVdPWN9cmV0dXJuIHJ9ZnVuY3Rpb24gYXUodCxlKXtmb3IoY29uc3QgciBpbiBlKXtjb25zdCBuPXRbcl07biYmbihlW3JdKX19ZnVuY3Rpb24gY3UodCxlLHIpe3IudmVydGV4QXJyYXlPYmplY3Q/dC5iaW5kVmVydGV4QXJyYXkoci52ZXJ0ZXhBcnJheU9iamVjdCk6KGF1KGUuYXR0cmliU2V0dGVyc3x8ZSxyLmF0dHJpYnMpLHIuaW5kaWNlcyYmdC5iaW5kQnVmZmVyKCRhLHIuaW5kaWNlcykpfWZ1bmN0aW9uIFduKHQsZSl7Y29uc3Qgcj1udSh0LGUpLG49b3UodCxlKSxzPXtwcm9ncmFtOmUsdW5pZm9ybVNldHRlcnM6cixhdHRyaWJTZXR0ZXJzOm59O3JldHVybiBBZSh0KSYmKHMudW5pZm9ybUJsb2NrU3BlYz1pdSh0LGUpLHMudHJhbnNmb3JtRmVlZGJhY2tJbmZvPXN1KHQsZSkpLHN9Y29uc3QgdXU9L1xzfHt8fXw7LztmdW5jdGlvbiBmdSh0LGUscixuLHMpe2NvbnN0IGk9dXIocixuLHMpLGE9W107aWYoZT1lLm1hcChmdW5jdGlvbih1KXtpZighdXUudGVzdCh1KSl7Y29uc3QgZj1wbih1KTtpZihmKXU9Zi50ZXh0O2Vsc2V7Y29uc3QgZD1gbm8gZWxlbWVudCB3aXRoIGlkOiAke3V9YDtpLmVycm9yQ2FsbGJhY2soZCksYS5wdXNoKGQpfX1yZXR1cm4gdX0pLGEubGVuZ3RoKXJldHVybiBWYyhpLCIiKTtjb25zdCBvPWkuY2FsbGJhY2s7byYmKGkuY2FsbGJhY2s9KHUsZik9PntvKHUsdT92b2lkIDA6V24odCxmKSl9KTtjb25zdCBjPVpjKHQsZSxpKTtyZXR1cm4gYz9Xbih0LGMpOm51bGx9Y29uc3QgbHU9NCxIbj01MTIzO2Z1bmN0aW9uIGR1KHQsZSxyLG4scyxpKXtyPXI9PT12b2lkIDA/bHU6cjtjb25zdCBhPWUuaW5kaWNlcyxvPWUuZWxlbWVudFR5cGUsYz1uPT09dm9pZCAwP2UubnVtRWxlbWVudHM6bjtzPXM9PT12b2lkIDA/MDpzLG98fGE/aSE9PXZvaWQgMD90LmRyYXdFbGVtZW50c0luc3RhbmNlZChyLGMsbz09PXZvaWQgMD9IbjplLmVsZW1lbnRUeXBlLHMsaSk6dC5kcmF3RWxlbWVudHMocixjLG89PT12b2lkIDA/SG46ZS5lbGVtZW50VHlwZSxzKTppIT09dm9pZCAwP3QuZHJhd0FycmF5c0luc3RhbmNlZChyLHMsYyxpKTp0LmRyYXdBcnJheXMocixzLGMpfWNvbnN0IGpuPTM2MTYwLHB0PTM2MTYxLGh1PTM1NTMsbXU9NTEyMSxwdT02NDAyLHl1PTY0MDgsYnU9MzMxOTAsZ3U9MzYwMTIseHU9MzUwNTYsRXU9MzYwMTMsX3U9MzI4NTQsVHU9MzI4NTUsd3U9MzYxOTQsWG49MzMxODksWW49NjQwMSxRbj0zNjE2OCxmcj0zNDA0MSxscj0zNjA2NCx5dD0zNjA5Nixxbj0zNjEyOCxkcj0zMzMwNixocj0zMzA3MSxtcj05NzI5LEF1PVt7Zm9ybWF0Onl1LHR5cGU6bXUsbWluOm1yLHdyYXA6aHJ9LHtmb3JtYXQ6ZnJ9XSxDPXt9O0NbZnJdPWRyLENbWW5dPXFuLENbUW5dPXFuLENbcHVdPXl0LENbWG5dPXl0LENbYnVdPXl0LENbZ3VdPXl0LENbeHVdPWRyLENbRXVdPWRyO2Z1bmN0aW9uIHZ1KHQsZSl7cmV0dXJuIENbdF18fENbZV19Y29uc3Qgaj17fTtqW191XT0hMCxqW1R1XT0hMCxqW3d1XT0hMCxqW2ZyXT0hMCxqW1huXT0hMCxqW1luXT0hMCxqW1FuXT0hMDtmdW5jdGlvbiBTdSh0KXtyZXR1cm4galt0XX1jb25zdCBJdT0zMjtmdW5jdGlvbiBSdSh0KXtyZXR1cm4gdD49bHImJnQ8bHIrSXV9ZnVuY3Rpb24gS24odCxlLHIsbil7Y29uc3Qgcz1qbixpPXQuY3JlYXRlRnJhbWVidWZmZXIoKTt0LmJpbmRGcmFtZWJ1ZmZlcihzLGkpLHI9cnx8dC5kcmF3aW5nQnVmZmVyV2lkdGgsbj1ufHx0LmRyYXdpbmdCdWZmZXJIZWlnaHQsZT1lfHxBdTtjb25zdCBhPVtdLG89e2ZyYW1lYnVmZmVyOmksYXR0YWNobWVudHM6W10sd2lkdGg6cixoZWlnaHQ6bn07cmV0dXJuIGUuZm9yRWFjaChmdW5jdGlvbihjLHUpe2xldCBmPWMuYXR0YWNobWVudDtjb25zdCBkPWMuc2FtcGxlcyxoPWMuZm9ybWF0O2xldCBwPWMuYXR0YWNobWVudFBvaW50fHx2dShoLGMuaW50ZXJuYWxGb3JtYXQpO2lmKHB8fChwPWxyK3UpLFJ1KHApJiZhLnB1c2gocCksIWYpaWYoZCE9PXZvaWQgMHx8U3UoaCkpZj10LmNyZWF0ZVJlbmRlcmJ1ZmZlcigpLHQuYmluZFJlbmRlcmJ1ZmZlcihwdCxmKSxkPjE/dC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUocHQsZCxoLHIsbik6dC5yZW5kZXJidWZmZXJTdG9yYWdlKHB0LGgscixuKTtlbHNle2NvbnN0IGw9T2JqZWN0LmFzc2lnbih7fSxjKTtsLndpZHRoPXIsbC5oZWlnaHQ9bixsLmF1dG89PT12b2lkIDAmJihsLmF1dG89ITEsbC5taW49bC5taW58fGwubWluTWFnfHxtcixsLm1hZz1sLm1hZ3x8bC5taW5NYWd8fG1yLGwud3JhcFM9bC53cmFwU3x8bC53cmFwfHxocixsLndyYXBUPWwud3JhcFR8fGwud3JhcHx8aHIpLGY9bW4odCxsKX1pZihNaSh0LGYpKXQuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIocyxwLHB0LGYpO2Vsc2UgaWYoenQodCxmKSljLmxheWVyIT09dm9pZCAwP3QuZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIocyxwLGYsYy5sZXZlbHx8MCxjLmxheWVyKTp0LmZyYW1lYnVmZmVyVGV4dHVyZTJEKHMscCxjLnRhcmdldHx8aHUsZixjLmxldmVsfHwwKTtlbHNlIHRocm93IG5ldyBFcnJvcigidW5rbm93biBhdHRhY2htZW50IHR5cGUiKTtvLmF0dGFjaG1lbnRzLnB1c2goZil9KSx0LmRyYXdCdWZmZXJzJiZ0LmRyYXdCdWZmZXJzKGEpLG99ZnVuY3Rpb24gRnUodCxlLHIpe3I9cnx8am4sZT8odC5iaW5kRnJhbWVidWZmZXIocixlLmZyYW1lYnVmZmVyKSx0LnZpZXdwb3J0KDAsMCxlLndpZHRoLGUuaGVpZ2h0KSk6KHQuYmluZEZyYW1lYnVmZmVyKHIsbnVsbCksdC52aWV3cG9ydCgwLDAsdC5kcmF3aW5nQnVmZmVyV2lkdGgsdC5kcmF3aW5nQnVmZmVySGVpZ2h0KSl9ZnVuY3Rpb24gdih0LGUpe3JldHVybigpPT5lIGluc3RhbmNlb2YgV2ViR0xUZXh0dXJlP2U6bW4odCx7c3JjOmUsd3JhcDp0LkNMQU1QX1RPX0VER0V9KX1jb25zdCB5ZT0yO2NsYXNzIENle2NvbnN0cnVjdG9yKGUpe3RoaXMuaWQ9Il8iO2NvbnN0e2NvbnRleHQ6cix3aWR0aDpuLGhlaWdodDpzfT1lO3RoaXMuY29udGV4dD1yLHRoaXMub3B0aW9ucz1lO2NvbnN0IGk9dGhpcy5idWlsZERlZmluZXMoKTt0aGlzLnByb2dyYW1JbmZvPWZ1KHRoaXMuY29udGV4dCxbaSt0aGlzLmdldFZlcnRleFNoYWRlcigpLGkrdGhpcy5nZXRGcmFnbWVudFNoYWRlcigpXSksdGhpcy5idWZmZXJJbmZvPWlvKHRoaXMuY29udGV4dCx0aGlzLmdldEJ1ZmZlcnMoKSksdGhpcy5mYmk9S24odGhpcy5jb250ZXh0LFt7Zm9ybWF0OnRoaXMuY29udGV4dC5SR0JBLHR5cGU6dGhpcy5jb250ZXh0LlVOU0lHTkVEX0JZVEUsbWluOnRoaXMuY29udGV4dC5MSU5FQVIsd3JhcDp0aGlzLmNvbnRleHQuQ0xBTVBfVE9fRURHRX1dLG4scyksdGhpcy5vdXRwdXQ9dGhpcy5mYmkuYXR0YWNobWVudHNbMF19cmVzaXplT3V0cHV0KGUscil7dGhpcy5mYmk9S24odGhpcy5jb250ZXh0LFt7Zm9ybWF0OnRoaXMuY29udGV4dC5SR0JBLHR5cGU6dGhpcy5jb250ZXh0LlVOU0lHTkVEX0JZVEUsbWluOnRoaXMuY29udGV4dC5MSU5FQVIsd3JhcDp0aGlzLmNvbnRleHQuQ0xBTVBfVE9fRURHRX1dLGUsciksdGhpcy5vcHRpb25zLndpZHRoPWUsdGhpcy5vcHRpb25zLmhlaWdodD1yLHRoaXMub3V0cHV0PXRoaXMuZmJpLmF0dGFjaG1lbnRzWzBdfWdldERlZmluZXMoKXtyZXR1cm57fX1nZXRCdWZmZXJzKCl7cmV0dXJue3Bvc2l0aW9uOntudW1Db21wb25lbnRzOjIsZGF0YTpbLTEsLTEsLTEsMSwxLC0xLDEsMSwtMSwxLDEsLTFdfSx0ZXh0dXJlX2Nvb3JkOntudW1Db21wb25lbnRzOjIsZGF0YTpbMCwwLDAsMSwxLDAsMSwxLDAsMSwxLDBdfX19YnVpbGREZWZpbmVzKCl7bGV0IGU9IiI7Y29uc3Qgcj10aGlzLmdldERlZmluZXMoKTtmb3IobGV0IG4gaW4gcillKz1gI2RlZmluZSAke259ICR7cltuXS50b0ZpeGVkKDEpfQpgO3JldHVybiBlfXJ1bihlKXt2YXIgcyxpLGEsbyxjLHU7KHM9dGhpcy5wcm9maWxlcik9PW51bGx8fHMucHVzaENvbnRleHQoYFske3RoaXMuaWR9XSBQUk9HIDogJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9YCksKGk9dGhpcy5wcm9maWxlcik9PW51bGx8fGkucHVzaENvbnRleHQoYFske3RoaXMuaWR9XSBVTklGT1JNU2ApO2Zvcihjb25zdCBmIGluIGUpdHlwZW9mIGVbZl09PSJmdW5jdGlvbiImJigoYT10aGlzLnByb2ZpbGVyKT09bnVsbHx8YS5wdXNoQ29udGV4dChgWyR7dGhpcy5pZH1dIFVOSSA6ICR7Zn1gKSxlW2ZdPWVbZl0oKSwobz10aGlzLnByb2ZpbGVyKT09bnVsbHx8by5wb3BDb250ZXh0KGBbJHt0aGlzLmlkfV0gVU5JIDogJHtmfWApKTsoYz10aGlzLnByb2ZpbGVyKT09bnVsbHx8Yy5wb3BDb250ZXh0KGBbJHt0aGlzLmlkfV0gVU5JRk9STVNgKTtjb25zdCByPURhdGUubm93KCk7bGV0IG49MDt0aGlzLmxhc3RSdW4mJihuPShyLXRoaXMubGFzdFJ1bikvMWUzKSx0aGlzLmxhc3RSdW49cix0aGlzLmNvbnRleHQudmlld3BvcnQoMCwwLHRoaXMuY29udGV4dC5jYW52YXMud2lkdGgsdGhpcy5jb250ZXh0LmNhbnZhcy5oZWlnaHQpLHRoaXMuY29udGV4dC51c2VQcm9ncmFtKHRoaXMucHJvZ3JhbUluZm8ucHJvZ3JhbSksY3UodGhpcy5jb250ZXh0LHRoaXMucHJvZ3JhbUluZm8sdGhpcy5idWZmZXJJbmZvKSxWbih0aGlzLnByb2dyYW1JbmZvLHtkZWx0YTpuLGNhbnZhczpbdGhpcy5jb250ZXh0LmNhbnZhcy53aWR0aCx0aGlzLmNvbnRleHQuY2FudmFzLmhlaWdodF0sLi4uZX0pLEZ1KHRoaXMuY29udGV4dCx0aGlzLm9wdGlvbnMuZGlzYWJsZUZyYW1lYnVmZmVyP251bGw6dGhpcy5mYmkpLGR1KHRoaXMuY29udGV4dCx0aGlzLmJ1ZmZlckluZm8pLCh1PXRoaXMucHJvZmlsZXIpPT1udWxsfHx1LnBvcENvbnRleHQoYFske3RoaXMuaWR9XSBQUk9HIDogJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9YCl9c2V0UHJvZmlsZXIoZSl7dGhpcy5wcm9maWxlcj1lfX12YXIgUHU9YHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoKdmFyeWluZyB2ZWMyIF90ZXh0dXJlX2Nvb3JkOwoKdW5pZm9ybSBzYW1wbGVyMkQgYmFja2dyb3VuZDsKdW5pZm9ybSBzYW1wbGVyMkQgZm9yZWdyb3VuZDsKdW5pZm9ybSBzYW1wbGVyMkQgdGhyZXNob2xkOwoKdm9pZCBtYWluKCkgewogIHZlYzQgYmFja2dyb3VuZENvbG9yID0gdGV4dHVyZTJEKGJhY2tncm91bmQsIF90ZXh0dXJlX2Nvb3JkKTsKICB2ZWM0IGZvcmVncm91bmRDb2xvciA9IHRleHR1cmUyRChmb3JlZ3JvdW5kLCBfdGV4dHVyZV9jb29yZCk7CiAgdmVjNCB0cmVzaG9sZENvbG9yID0gdGV4dHVyZTJEKHRocmVzaG9sZCwgX3RleHR1cmVfY29vcmQpOwogIGdsX0ZyYWdDb2xvciA9IGZvcmVncm91bmRDb2xvciAqIHRyZXNob2xkQ29sb3IuYSArCiAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yICogKDEuIC0gdHJlc2hvbGRDb2xvci5hKTsKfQpgLGt1PWB2YXJ5aW5nIHZlYzIgX3RleHR1cmVfY29vcmQ7CgphdHRyaWJ1dGUgdmVjMiBwb3NpdGlvbjsKYXR0cmlidXRlIHZlYzIgdGV4dHVyZV9jb29yZDsKCnZvaWQgbWFpbigpIHsKICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAuLCAxLik7CiAgX3RleHR1cmVfY29vcmQgPSB0ZXh0dXJlX2Nvb3JkOwogIF90ZXh0dXJlX2Nvb3JkLnkgPSAxLiAtIHRleHR1cmVfY29vcmQueTsKfQpgO2NsYXNzIHByIGV4dGVuZHMgQ2V7Z2V0RnJhZ21lbnRTaGFkZXIoKXtyZXR1cm4gUHV9Z2V0VmVydGV4U2hhZGVyKCl7cmV0dXJuIGt1fX1jbGFzcyB5cntjb25zdHJ1Y3Rvcigpe3RoaXMuc3RlcHM9W119YWRkU3RlcChlKXt0aGlzLnN0ZXBzLnB1c2goZSl9YXN5bmMgcnVuKCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy5zdGVwcyllLnByb2dyYW0ucnVuKGUuZ2V0VW5pZm9ybXMoKSl9cmVzaXplT3V0cHV0KGUscil7dmFyIG4sczsobj10aGlzLnByb2ZpbGVyKT09bnVsbHx8bi5wdXNoQ29udGV4dChgUElQIFske3RoaXMuY29uc3RydWN0b3IubmFtZX1dYCk7Zm9yKGNvbnN0IGkgb2YgdGhpcy5zdGVwcylpLnByZXZlbnRSZXNpemV8fGkucHJvZ3JhbS5yZXNpemVPdXRwdXQoZSxyKTsocz10aGlzLnByb2ZpbGVyKT09bnVsbHx8cy5wb3BDb250ZXh0KGBQSVAgWyR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfV1gKX1zZXRQcm9maWxlcihlKXt0aGlzLnByb2ZpbGVyPWU7Zm9yKGNvbnN0IHIgb2YgdGhpcy5zdGVwcylyLnByb2dyYW0uc2V0UHJvZmlsZXIoZSl9c2V0SWQoZSl7Zm9yKGNvbnN0IHIgb2YgdGhpcy5zdGVwcylyLnByb2dyYW0uaWQ9ZX19Y2xhc3MgYnIgZXh0ZW5kcyB5cntjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5wcmVjaXNlTWFza0VuYWJsZWQ9ITF9fWNsYXNzIEpuIGV4dGVuZHMgYnJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSx0aGlzLmNvbnRleHQ9ZSx0aGlzLnByZWNpc2VNYXNrRW5hYmxlZD0hMDtjb25zdCByPXtjb250ZXh0OmUsaGVpZ2h0OmUuY2FudmFzLmhlaWdodCx3aWR0aDplLmNhbnZhcy53aWR0aH0sbj1uZXcgcHIoey4uLnIsZGlzYWJsZUZyYW1lYnVmZmVyOiEwfSk7dGhpcy5hZGRTdGVwKHtwcm9ncmFtOm4sZ2V0VW5pZm9ybXM6KCk9Pih7YmFja2dyb3VuZDp2KGUsdGhpcy5pbnB1dEJhY2tncm91bmRJbWFnZSksZm9yZWdyb3VuZDp2KGUsdGhpcy5pbnB1dEltYWdlKSx0aHJlc2hvbGQ6dihlLHRoaXMuaW5wdXRNYXNrKX0pfSl9c2V0RGF0YShlLHIpe3RoaXMuaW5wdXRJbWFnZT1lLHRoaXMuaW5wdXRNYXNrPXJ9fXZhciBDdT1gcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cgp2YXJ5aW5nIHZlYzIgX3RleHR1cmVfY29vcmQ7CnVuaWZvcm0gc2FtcGxlcjJEIHRleHR1cmU7Cgp2b2lkIG1haW4oKSB7IGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh0ZXh0dXJlLCBfdGV4dHVyZV9jb29yZCk7IH0KYCxCdT1gdmFyeWluZyB2ZWMyIF90ZXh0dXJlX2Nvb3JkOwoKYXR0cmlidXRlIHZlYzIgcG9zaXRpb247CmF0dHJpYnV0ZSB2ZWMyIHRleHR1cmVfY29vcmQ7CnVuaWZvcm0gYm9vbCBpbnZlcnRfeTsKCnZvaWQgbWFpbigpIHsKICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAuLCAxLik7CiAgX3RleHR1cmVfY29vcmQgPSB0ZXh0dXJlX2Nvb3JkOwogIGlmIChpbnZlcnRfeSkgewogICAgX3RleHR1cmVfY29vcmQueSA9IDEuIC0gdGV4dHVyZV9jb29yZC55OwogIH0KfQpgO2NsYXNzIER1IGV4dGVuZHMgQ2V7Z2V0RnJhZ21lbnRTaGFkZXIoKXtyZXR1cm4gQ3V9Z2V0VmVydGV4U2hhZGVyKCl7cmV0dXJuIEJ1fX1jbGFzcyBNdSBleHRlbmRzIHlye2NvbnN0cnVjdG9yKGUscixuKXtzdXBlcigpLHRoaXMuY29udGV4dD1lO2NvbnN0IHM9e2NvbnRleHQ6ZSxoZWlnaHQ6bix3aWR0aDpyfTt0aGlzLmFkZFN0ZXAoe3Byb2dyYW06bmV3IER1KHsuLi5zLGRpc2FibGVGcmFtZWJ1ZmZlcjohMH0pLGdldFVuaWZvcm1zOigpPT4oe3RleHR1cmU6dihlLHRoaXMuaW5wdXRJbWFnZSksaW52ZXJ0X3k6ITB9KX0pfXNldERhdGEoZSl7dGhpcy5pbnB1dEltYWdlPWV9fWFzeW5jIGZ1bmN0aW9uIFpuKHQpe3JldHVybiBuZXcgUHJvbWlzZShlPT57c2V0VGltZW91dCgoKT0+e2UoKX0sdCl9KX12YXIgVXU9YHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoKdmFyeWluZyB2ZWMyIF90ZXh0dXJlX2Nvb3JkOwoKdW5pZm9ybSB2ZWMyIGNhbnZhczsKdW5pZm9ybSBzYW1wbGVyMkQgdGV4dHVyZTsKCnZlYzQgbG9vcCgpOwoKdm9pZCBtYWluKCkgeyBnbF9GcmFnQ29sb3IgPSBsb29wKCk7IH0KYCxOdT1gdmFyeWluZyB2ZWMyIF90ZXh0dXJlX2Nvb3JkOwoKYXR0cmlidXRlIHZlYzIgcG9zaXRpb247CmF0dHJpYnV0ZSB2ZWMyIHRleHR1cmVfY29vcmQ7Cgp2b2lkIG1haW4oKSB7CiAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLCAwLiwgMS4pOwogIF90ZXh0dXJlX2Nvb3JkID0gdGV4dHVyZV9jb29yZDsKfQpgLGdyPSh0PT4odFt0LkxJTkVBUj0wXT0iTElORUFSIix0W3QuR0FVU1NJQU49MV09IkdBVVNTSUFOIix0KSkoZ3J8fHt9KTtjbGFzcyBlcyBleHRlbmRzIENle2dldERlZmluZXMoKXtyZXR1cm57UkFESVVTOnRoaXMub3B0aW9ucy5yYWRpdXM/PzF9fWdldEZyYWdtZW50U2hhZGVyKCl7cmV0dXJuIFV1K3RoaXMuY3JlYXRlTG9vcEZ1bmN0aW9uKCl9Z2V0VmVydGV4U2hhZGVyKCl7cmV0dXJuIE51fWNyZWF0ZUxvb3BGdW5jdGlvbigpe2xldCBlPXRoaXMub3B0aW9ucy5yYWRpdXM/PzE7cmV0dXJuYAoKICAgICAgICB2ZWM0IGxvb3AoKSB7IAogICAgICAgICAgICB2ZWM0IHJlc3VsdCA9IHZlYzQoMCwwLDAsMCk7CiAgICAgICAgICAgIGZsb2F0IGZhY3RvclN1bSA9IDAuOwoKICAgICAgICAgICAgdmVjMiBub3JtYWxpemVkUmFkaXVzID0gdmVjMigtJHtlfS4pIC8gY2FudmFzOwogICAgICAgICAgICB2ZWMyIG5vcm1hbGl6ZWRJbmNyZW1lbnQgPSB2ZWMyKDEuKSAvIGNhbnZhczsKICAgICAgICAgICAgdmVjMiBkaWZmID0gbm9ybWFsaXplZFJhZGl1czsKCiAgICAgICAgICAgIGZvcihpbnQgeT0tJHtlfTsgeTwke2UrMX07ICsreSkgewogICAgICAgICAgICAgICAgZm9yKGludCB4PS0ke2V9OyB4PCR7ZSsxfTsgKyt4KSB7CiAgICAgICAgICAgICAgICAgICAgZmxvYXQgZmFjdG9yID0gMS47CiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGZhY3RvciAqIHRleHR1cmUyRCh0ZXh0dXJlLCBfdGV4dHVyZV9jb29yZCArIGRpZmYpOwogICAgICAgICAgICAgICAgICAgIGZhY3RvclN1bSArPSBmYWN0b3I7CiAgICAgICAgICAgICAgICAgICAgZGlmZi54ICs9IG5vcm1hbGl6ZWRJbmNyZW1lbnQueDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRpZmYueSArPSBub3JtYWxpemVkSW5jcmVtZW50Lnk7CiAgICAgICAgICAgICAgICBkaWZmLnggPSBub3JtYWxpemVkUmFkaXVzLng7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCAvIGZhY3RvclN1bTsKICAgICAgICB9YH1nZXRGYWN0b3IoZSxyKXtzd2l0Y2godGhpcy5vcHRpb25zLnR5cGUpe2Nhc2UgMTpyZXR1cm4gdGhpcy5nZXRMaW5lYXJGYWN0b3IoZSxyKTtjYXNlIDA6ZGVmYXVsdDpyZXR1cm4gdGhpcy5nZXRMaW5lYXJGYWN0b3IoZSxyKX19Z2V0TGluZWFyRmFjdG9yKGUscil7cmV0dXJuIDF9Z2V0R2F1c3NpYW5GYWN0b3IoZSxyKXtjb25zdCBuPU1hdGguUEkqMixzPU1hdGgubWF4KHRoaXMub3B0aW9ucy5yYWRpdXM/PzEsMSksaT0xLyhuKnMqKjIpLGE9LShlKioyK3IqKjIpLG89aSphO3JldHVybiBpKk1hdGguRSoqb319dmFyIE91PWAjdmVyc2lvbiAzMDAgZXMKLy8gaHR0cHM6Ly9naXRodWIuY29tL1ZvbGNvbWl4L3ZpcnR1YWwtYmFja2dyb3VuZC9ibG9iL21haW4vc3JjL3BpcGVsaW5lcy93ZWJnbDIvam9pbnRCaWxhdGVyYWxGaWx0ZXJTdGFnZS50cwoKcHJlY2lzaW9uIGhpZ2hwIGZsb2F0Owp1bmlmb3JtIHNhbXBsZXIyRCBpbnB1dF9mcmFtZTsKdW5pZm9ybSBzYW1wbGVyMkQgc2VnbWVudGF0aW9uX21hc2s7CnVuaWZvcm0gc2FtcGxlcjJEIHRocmVzaG9sZDsKdW5pZm9ybSB2ZWMyIHRleGVsX3NpemU7CnVuaWZvcm0gZmxvYXQgc3RlcDsKdW5pZm9ybSBmbG9hdCByYWRpdXM7CnVuaWZvcm0gZmxvYXQgb2Zmc2V0Owp1bmlmb3JtIGZsb2F0IHNpZ21hX3RleGVsOwp1bmlmb3JtIGZsb2F0IHNpZ21hX2NvbG9yOwoKaW4gdmVjMiBfdGV4dHVyZV9jb29yZDsKb3V0IHZlYzQgb3V0Q29sb3I7CgpmbG9hdCBnYXVzc2lhbihmbG9hdCB4LCBmbG9hdCBzaWdtYSkgewogIGZsb2F0IGNvZWZmID0gLTAuNSAvIChzaWdtYSAqIHNpZ21hICogNC4wICsgMS4wZS02KTsKICByZXR1cm4gZXhwKCh4ICogeCkgKiBjb2VmZik7Cn0KCnZvaWQgbWFpbigpIHsKICB2ZWMyIGNlbnRlckNvb3JkID0gX3RleHR1cmVfY29vcmQ7CiAgdmVjMyBjZW50ZXJDb2xvciA9IHRleHR1cmUoaW5wdXRfZnJhbWUsIGNlbnRlckNvb3JkKS5yZ2I7CiAgZmxvYXQgbmV3VmFsID0gMC4wOwogIGZsb2F0IHNwYWNlV2VpZ2h0ID0gMC4wOwogIGZsb2F0IGNvbG9yV2VpZ2h0ID0gMC4wOwogIGZsb2F0IHRvdGFsV2VpZ2h0ID0gMC4wOwogIC8vIFN1YnNhbXBsZSBrZXJuZWwgc3BhY2UuCiAgZm9yIChmbG9hdCBpID0gLXJhZGl1cyArIG9mZnNldDsgaSA8PSByYWRpdXM7IGkgKz0gc3RlcCkgewogICAgZm9yIChmbG9hdCBqID0gLXJhZGl1cyArIG9mZnNldDsgaiA8PSByYWRpdXM7IGogKz0gc3RlcCkgewogICAgICB2ZWMyIHNoaWZ0ID0gdmVjMihqLCBpKSAqIHRleGVsX3NpemU7CiAgICAgIHZlYzIgY29vcmQgPSB2ZWMyKGNlbnRlckNvb3JkICsgc2hpZnQpOwogICAgICB2ZWMzIGZyYW1lQ29sb3IgPSB0ZXh0dXJlKGlucHV0X2ZyYW1lLCBjb29yZCkucmdiOwogICAgICBmbG9hdCB0aHJlc2hvbGQgPSB0ZXh0dXJlKHRocmVzaG9sZCwgY29vcmQpLmE7CiAgICAgIGZsb2F0IG91dFZhbCA9IHRleHR1cmUoc2VnbWVudGF0aW9uX21hc2ssIGNvb3JkKS5hOwoKICAgICAgc3BhY2VXZWlnaHQgPSBnYXVzc2lhbihkaXN0YW5jZShjZW50ZXJDb29yZCwgY29vcmQpLCBzaWdtYV90ZXhlbCk7CiAgICAgIGNvbG9yV2VpZ2h0ID0gZ2F1c3NpYW4oZGlzdGFuY2UoY2VudGVyQ29sb3IsIGZyYW1lQ29sb3IpLCBzaWdtYV9jb2xvcik7CiAgICAgIHRvdGFsV2VpZ2h0ICs9IHNwYWNlV2VpZ2h0ICogY29sb3JXZWlnaHQ7CiAgICAgIG5ld1ZhbCArPSBzcGFjZVdlaWdodCAqIGNvbG9yV2VpZ2h0ICogb3V0VmFsICogdGhyZXNob2xkOwogICAgfQogIH0KICBuZXdWYWwgLz0gdG90YWxXZWlnaHQ7CiAgb3V0Q29sb3IgPSB2ZWM0KHZlYzMoMC4pLCBuZXdWYWwpOwp9YCxMdT1gI3ZlcnNpb24gMzAwIGVzCmluIHZlYzIgcG9zaXRpb247CmluIHZlYzIgdGV4dHVyZV9jb29yZDsKb3V0IHZlYzIgX3RleHR1cmVfY29vcmQ7CnZvaWQgbWFpbigpIHsKICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAuMCwgMS4wKTsKICBfdGV4dHVyZV9jb29yZCA9IHRleHR1cmVfY29vcmQ7Cn1gO2NsYXNzIHp1IGV4dGVuZHMgQ2V7Z2V0RnJhZ21lbnRTaGFkZXIoKXtyZXR1cm4gT3V9Z2V0VmVydGV4U2hhZGVyKCl7cmV0dXJuIEx1fX1jbGFzcyBHdSBleHRlbmRzIHlye2NvbnN0cnVjdG9yKGUscixuKXtzdXBlcigpLHRoaXMuY29udGV4dD1lO2NvbnN0IHM9e2NvbnRleHQ6ZSxoZWlnaHQ6bix3aWR0aDpyfSxpPW5ldyBlcyh7Li4ucyxyYWRpdXM6MSx0eXBlOmdyLkdBVVNTSUFOfSk7dGhpcy5qb2ludEJpbGF0ZXJhbD1uZXcgenUocyksdGhpcy5hZGRTdGVwKHtwcm9ncmFtOmksZ2V0VW5pZm9ybXM6KCk9Pih7aW5wdXRzOnYoZSx0aGlzLmlucHV0TWFzayl9KX0pLHRoaXMuYWRkU3RlcCh7cHJvZ3JhbTp0aGlzLmpvaW50QmlsYXRlcmFsLGdldFVuaWZvcm1zOigpPT57dmFyIHAsbCx5LGI7Y29uc3Qgbz0oKHA9dGhpcy5pbnB1dEltYWdlKT09bnVsbD92b2lkIDA6cC53aWR0aCk/PzEsYz0oKGw9dGhpcy5pbnB1dEltYWdlKT09bnVsbD92b2lkIDA6bC5oZWlnaHQpPz8xOyh5PXRoaXMuaW5wdXRNYXNrKT09bnVsbHx8eS53aWR0aCwoYj10aGlzLmlucHV0TWFzayk9PW51bGx8fGIuaGVpZ2h0O2NvbnN0IHU9MyxmPU1hdGgubWF4KDEsTWF0aC5zcXJ0KHUpKi42NiksZD0xL28saD0xL2M7cmV0dXJue2lucHV0X2ZyYW1lOnYoZSx0aGlzLmlucHV0SW1hZ2UpLHNlZ21lbnRhdGlvbl9tYXNrOnYoZSx0aGlzLmlucHV0TWFzayksdGV4ZWxfc2l6ZTpbZCxoXSxzdGVwOmYscmFkaXVzOnUsb2Zmc2V0OmY+MT9mKi41OjAsc2lnbWFfdGV4ZWw6TWF0aC5tYXgoZCxoKSp1LHNpZ21hX2NvbG9yOnV9fX0pLHRoaXMub3V0cHV0PXRoaXMuam9pbnRCaWxhdGVyYWwub3V0cHV0fXNldERhdGEoZSxyKXt0aGlzLnByZXZpb3VzSW5wdXRJbWFnZT10aGlzLmlucHV0SW1hZ2U/dGhpcy5pbnB1dEltYWdlOmUsdGhpcy5wcmV2aW91c0lucHV0TWFzaz10aGlzLmlucHV0TWFzaz90aGlzLmlucHV0TWFzazpyLHRoaXMuaW5wdXRJbWFnZT1lLHRoaXMuaW5wdXRNYXNrPXJ9cmVzaXplT3V0cHV0KGUscil7c3VwZXIucmVzaXplT3V0cHV0KGUsciksdGhpcy5vdXRwdXQ9dGhpcy5qb2ludEJpbGF0ZXJhbC5vdXRwdXR9fWNsYXNzICR1e2NvbnN0cnVjdG9yKGUpe3RoaXMucXVlcmllcz1bXSx0aGlzLmNvbnRleHQ9ZSx0aGlzLmV4dGVuc2lvbj1lLmdldEV4dGVuc2lvbigiRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5X3dlYmdsMiIpfXN0YXJ0KCl7fXN0b3AoKXt0aGlzLmFjdGl2ZVF1ZXJ5JiZ0aGlzLmNvbnRleHQuZW5kUXVlcnkodGhpcy5leHRlbnNpb24uVElNRV9FTEFQU0VEX0VYVCl9cHVzaENvbnRleHQoZSl7dGhpcy5jcmVhdGVRdWVyeSgiUFVTSCIsZSl9cG9wQ29udGV4dChlKXt0aGlzLmNyZWF0ZVF1ZXJ5KCJQT1AiLGUpfWNyZWF0ZVF1ZXJ5KGUscil7dGhpcy5hY3RpdmVRdWVyeSYmdGhpcy5jb250ZXh0LmVuZFF1ZXJ5KHRoaXMuZXh0ZW5zaW9uLlRJTUVfRUxBUFNFRF9FWFQpLHRoaXMuYWN0aXZlUXVlcnk9dGhpcy5jb250ZXh0LmNyZWF0ZVF1ZXJ5KCksdGhpcy5jb250ZXh0LmJlZ2luUXVlcnkodGhpcy5leHRlbnNpb24uVElNRV9FTEFQU0VEX0VYVCx0aGlzLmFjdGl2ZVF1ZXJ5KSx0aGlzLnF1ZXJpZXMucHVzaCh7bmFtZTpyLGFjdGlvbjplLHF1ZXJ5OnRoaXMuYWN0aXZlUXVlcnl9KX1hc3luYyBnZXRSZXNvbHZlZFF1ZXJpZXMoKXtjb25zdCBlPShhd2FpdCBQcm9taXNlLmFsbChbLi4udGhpcy5xdWVyaWVzXS5tYXAocj0+dGhpcy5yZXNvbHZlUXVlcnkocikpKSkuZmlsdGVyKHI9PnIpO2ZvcihsZXQgcj0xO3I8ZS5sZW5ndGg7KytyKWVbcl0udGltZXN0YW1wKz1lW3ItMV0uZHVyYXRpb24rZVtyLTFdLnRpbWVzdGFtcDtyZXR1cm4gZX1hc3luYyByZXNvbHZlUXVlcnkoZSl7aWYoIWF3YWl0IHRoaXMuYXdhaXRRdWVyeUF2YWlsYWJsZShlKSl7Y29uc29sZS5sb2coIlVuYXdhaXRhYmxlIHF1ZXJ5IixlKTtyZXR1cm59aWYodGhpcy5jb250ZXh0LmdldFBhcmFtZXRlcih0aGlzLmV4dGVuc2lvbi5HUFVfRElTSk9JTlRfRVhUKSl7Y29uc29sZS5sb2coIkRpc2pvaW50ZWQgcXVlcnkiLGUpO3JldHVybn1yZXR1cm57Li4uZSxkdXJhdGlvbjp0aGlzLmNvbnRleHQuZ2V0UXVlcnlQYXJhbWV0ZXIoZS5xdWVyeSx0aGlzLmNvbnRleHQuUVVFUllfUkVTVUxUKSx0aW1lc3RhbXA6MH19YXN5bmMgYXdhaXRRdWVyeUF2YWlsYWJsZShlKXtmb3IobGV0IHI9MDtyPDEwOysrcil7aWYodGhpcy5jb250ZXh0LmdldFF1ZXJ5UGFyYW1ldGVyKGUucXVlcnksdGhpcy5jb250ZXh0LlFVRVJZX1JFU1VMVF9BVkFJTEFCTEUpKXJldHVybiBlO2F3YWl0IFpuKDIwMCl9fX1jbGFzcyBidHtjb25zdHJ1Y3Rvcigpe3RoaXMucHJldmlvdXNJbWFnZVdpZHRoPTAsdGhpcy5wcmV2aW91c0ltYWdlSGVpZ2h0PTAsdGhpcy5wcmV2aW91c01hc2tXaWR0aD15ZSx0aGlzLnByZXZpb3VzTWFza0hlaWdodD15ZSx0aGlzLnBvc3RQcm9jZXNzaW5nRW5hYmxlZD0hMDtjb25zdCBlPW5ldyBPZmZzY3JlZW5DYW52YXMoMCwwKSxyPWUuZ2V0Q29udGV4dCgid2ViZ2wyIik7aWYoIXIpdGhyb3ciRmFpbCB0byByZXRyaWV2ZSB3ZWJnbDIgY29udGV4dCI7dGhpcy5jYW52YXM9ZSx0aGlzLmNvbnRleHQ9cix0aGlzLmltcHJvdmVNYXNrPW5ldyBHdSh0aGlzLmNvbnRleHQseWUseWUpfWVuYWJsZVBvc3RQcm9jZXNzaW5nKCl7dGhpcy5wb3N0UHJvY2Vzc2luZ0VuYWJsZWQ9ITB9ZGlzYWJsZVBvc3RQcm9jZXNzaW5nKCl7dGhpcy5wb3N0UHJvY2Vzc2luZ0VuYWJsZWQ9ITF9YXN5bmMgcHJvZmlsZVdlYmdsKGUpe2NvbnN0IHI9bmV3ICR1KHRoaXMuY29udGV4dCk7cmV0dXJuIHRoaXMucHJvZmlsZXI9cixyLnN0YXJ0KCksYXdhaXQgWm4oZSksdGhpcy5wcm9maWxlcj12b2lkIDAsci5zdG9wKCksci5nZXRSZXNvbHZlZFF1ZXJpZXMoKX1hc3luYyByZW5kZXIoZSxyKXt2YXIgYSxvO2lmKCF0aGlzLnBpcGVsaW5lKXRocm93Im1pc3NpbmcgcGlwZWxpbmUiOyh0aGlzLnByZXZpb3VzSW1hZ2VIZWlnaHQhPT1lLmhlaWdodHx8dGhpcy5wcmV2aW91c0ltYWdlV2lkdGghPT1lLndpZHRoKSYmdGhpcy5yZXNpemVPdXRwdXQoZS53aWR0aCxlLmhlaWdodCksKHRoaXMucHJldmlvdXNNYXNrSGVpZ2h0IT09ci5oZWlnaHR8fHRoaXMucHJldmlvdXNNYXNrV2lkdGghPT1yLndpZHRoKSYmKHRoaXMuaW1wcm92ZU1hc2sucmVzaXplT3V0cHV0KHIud2lkdGgsci5oZWlnaHQpLHRoaXMucHJldmlvdXNNYXNrV2lkdGg9ci53aWR0aCx0aGlzLnByZXZpb3VzTWFza0hlaWdodD1yLmhlaWdodCk7Y29uc3Qgbj0icmVuZGVyZXIiOyhhPXRoaXMucHJvZmlsZXIpPT1udWxsfHxhLnB1c2hDb250ZXh0KG4pLHRoaXMuaW1wcm92ZU1hc2suc2V0UHJvZmlsZXIodGhpcy5wcm9maWxlciksdGhpcy5waXBlbGluZS5zZXRQcm9maWxlcih0aGlzLnByb2ZpbGVyKTtjb25zdCBzPWF3YWl0IGNyZWF0ZUltYWdlQml0bWFwKHIpO2xldCBpPXM7cmV0dXJuIHRoaXMucG9zdFByb2Nlc3NpbmdFbmFibGVkJiYodGhpcy5pbXByb3ZlTWFzay5zZXREYXRhKGUscyksdGhpcy5pbXByb3ZlTWFzay5ydW4oKSxpPXRoaXMuaW1wcm92ZU1hc2sub3V0cHV0KSx0aGlzLnBpcGVsaW5lLnNldERhdGEoZSxpKSxhd2FpdCB0aGlzLnBpcGVsaW5lLnJ1bigpLChvPXRoaXMucHJvZmlsZXIpPT1udWxsfHxvLnBvcENvbnRleHQobiksdGhpcy5jYW52YXN9cmVzaXplT3V0cHV0KGUscil7dmFyIG47dGhpcy5jYW52YXMud2lkdGg9ZSx0aGlzLmNhbnZhcy5oZWlnaHQ9ciwobj10aGlzLnBpcGVsaW5lKT09bnVsbHx8bi5yZXNpemVPdXRwdXQoZSxyKSx0aGlzLnByZXZpb3VzSW1hZ2VXaWR0aD1lLHRoaXMucHJldmlvdXNJbWFnZUhlaWdodD1yfWRlc3Ryb3koKXt2YXIgcjtjb25zdCBlPShyPXRoaXMuY29udGV4dCk9PW51bGw/dm9pZCAwOnIuZ2V0RXh0ZW5zaW9uKCJXRUJHTF9sb3NlX2NvbnRleHQiKTtlJiZlLmxvc2VDb250ZXh0KCl9fWNsYXNzIHRzIGV4dGVuZHMgYnR7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMucGlwZWxpbmU9bmV3IEpuKHRoaXMuY29udGV4dCk7Y29uc3QgZT1uZXcgT2Zmc2NyZWVuQ2FudmFzKDAsMCkscj1lLmdldENvbnRleHQoIndlYmdsMiIpO2lmKCFyKXRocm93IkZhaWwgdG8gcmV0cmlldmUgd2ViZ2wgY29udGV4dCI7dGhpcy5iYWNrZ3JvdW5kSW1hZ2VSZXNpemVyQ2FudmFzPWUsdGhpcy5iYWNrZ3JvdW5kSW1hZ2VSZXNpemVyQ29udGV4dD1yLHRoaXMuYmFja2dyb3VuZEltYWdlUmVzaXplcj1uZXcgTXUodGhpcy5iYWNrZ3JvdW5kSW1hZ2VSZXNpemVyQ29udGV4dCwwLDApfXNldEJhY2tncm91bmRJbWFnZShlKXt0aGlzLmJhY2tncm91bmRJbWFnZT1lLHRoaXMudXBkYXRlQmFja2dyb3VuZEltYWdlKCl9dXBkYXRlQmFja2dyb3VuZEltYWdlKCl7Y29uc3R7d2lkdGg6ZSxoZWlnaHQ6cn09dGhpcy5jYW52YXM7dGhpcy5iYWNrZ3JvdW5kSW1hZ2VSZXNpemVyLnJlc2l6ZU91dHB1dChlLHIpLHRoaXMuYmFja2dyb3VuZEltYWdlUmVzaXplci5zZXREYXRhKHRoaXMuYmFja2dyb3VuZEltYWdlKSx0aGlzLmJhY2tncm91bmRJbWFnZVJlc2l6ZXIucnVuKCksdGhpcy5waXBlbGluZS5pbnB1dEJhY2tncm91bmRJbWFnZT10aGlzLmJhY2tncm91bmRJbWFnZVJlc2l6ZXJDYW52YXN9cmVzaXplT3V0cHV0KGUscil7c3VwZXIucmVzaXplT3V0cHV0KGUsciksdGhpcy5iYWNrZ3JvdW5kSW1hZ2VSZXNpemVyQ2FudmFzLndpZHRoPWUsdGhpcy5iYWNrZ3JvdW5kSW1hZ2VSZXNpemVyQ2FudmFzLmhlaWdodD1yLHRoaXMuYmFja2dyb3VuZEltYWdlUmVzaXplci5yZXNpemVPdXRwdXQoZSxyKSx0aGlzLnVwZGF0ZUJhY2tncm91bmRJbWFnZSgpfWRlc3Ryb3koKXt2YXIgcjtjb25zdCBlPShyPXRoaXMuYmFja2dyb3VuZEltYWdlUmVzaXplckNvbnRleHQpPT1udWxsP3ZvaWQgMDpyLmdldEV4dGVuc2lvbigiV0VCR0xfbG9zZV9jb250ZXh0Iik7ZSYmZS5sb3NlQ29udGV4dCgpLHN1cGVyLmRlc3Ryb3koKX19Y2xhc3MgVnUgZXh0ZW5kcyB0c3tzZXRCYWNrZ3JvdW5kVmlkZW8oZSl7dGhpcy5mcmFtZVJlYWRlcj1lfWFzeW5jIHJlbmRlcihlLHIpe3JldHVybiBhd2FpdCB0aGlzLnJlYWROZXh0VmlkZW9GcmFtZSgpLHN1cGVyLnJlbmRlcihlLHIpfWFzeW5jIHJlYWROZXh0VmlkZW9GcmFtZSgpe3ZhciByO2NvbnN0IGU9YXdhaXQoKHI9dGhpcy5mcmFtZVJlYWRlcik9PW51bGw/dm9pZCAwOnIucmVhZCgpKTtpZihlIT1udWxsJiZlLnZhbHVlKXtjb25zdCBuPWF3YWl0IGNyZWF0ZUltYWdlQml0bWFwKGUudmFsdWUpO3RoaXMuc2V0QmFja2dyb3VuZEltYWdlKG4pLGUudmFsdWUuY2xvc2UoKX19fWNsYXNzIHJze2JsdXJCYWNrZ3JvdW5kKGUpe3JldHVybiBuZXcgVGkoZSl9Ymx1clNpbGhvdWV0dGUoZSl7cmV0dXJuIG5ldyB3aShlKX1pbWFnZUJhY2tncm91bmQoKXtyZXR1cm4gbmV3IEFpfXZpZGVvQmFja2dyb3VuZCgpe3JldHVybiBuZXcgVnV9fXZhciBXdT1gcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cgp2YXJ5aW5nIHZlYzIgX3RleHR1cmVfY29vcmQ7Cgp1bmlmb3JtIHZlYzIgY2FudmFzOwp1bmlmb3JtIHNhbXBsZXIyRCB0ZXh0dXJlOwp1bmlmb3JtIHNhbXBsZXIyRCBtYXNrOwoKdmVjNCBsb29wKCk7Cgp2b2lkIG1haW4oKSB7IGdsX0ZyYWdDb2xvciA9IGxvb3AoKTsgfQpgLEh1PWB2YXJ5aW5nIHZlYzIgX3RleHR1cmVfY29vcmQ7CgphdHRyaWJ1dGUgdmVjMiBwb3NpdGlvbjsKYXR0cmlidXRlIHZlYzIgdGV4dHVyZV9jb29yZDsKCnZvaWQgbWFpbigpIHsKICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAuLCAxLik7CiAgX3RleHR1cmVfY29vcmQgPSB0ZXh0dXJlX2Nvb3JkOwp9CmA7Y2xhc3MganUgZXh0ZW5kcyBDZXtnZXREZWZpbmVzKCl7cmV0dXJue1JBRElVUzp0aGlzLm9wdGlvbnMucmFkaXVzPz8xfX1nZXRGcmFnbWVudFNoYWRlcigpe3JldHVybiBXdSt0aGlzLmNyZWF0ZUxvb3BGdW5jdGlvbigpfWdldFZlcnRleFNoYWRlcigpe3JldHVybiBIdX1jcmVhdGVMb29wRnVuY3Rpb24oKXtsZXQgZT10aGlzLm9wdGlvbnMucmFkaXVzPz8xO3JldHVybmAKCiAgICAgICAgdmVjNCBsb29wKCkgeyAKICAgICAgICAgICAgdmVjNCByZXN1bHQgPSB2ZWM0KDAsMCwwLDApOwogICAgICAgICAgICBmbG9hdCBmYWN0b3JTdW0gPSAwLjsKCiAgICAgICAgICAgIHZlYzIgbm9ybWFsaXplZFJhZGl1cyA9IHZlYzIoLSR7ZX0uKSAvIGNhbnZhczsKICAgICAgICAgICAgdmVjMiBub3JtYWxpemVkSW5jcmVtZW50ID0gdmVjMigxLikgLyBjYW52YXM7CiAgICAgICAgICAgIHZlYzIgZGlmZiA9IG5vcm1hbGl6ZWRSYWRpdXM7CiAgICAgICAgICAgIGZsb2F0IG1heExlbmd0aCA9IGxlbmd0aChub3JtYWxpemVkUmFkaXVzKTsKCiAgICAgICAgICAgIGZvcihpbnQgeT0tJHtlfTsgeTwke2UrMX07ICsreSkgewogICAgICAgICAgICAgICAgZm9yKGludCB4PS0ke2V9OyB4PCR7ZSsxfTsgKyt4KSB7CiAgICAgICAgICAgICAgICAgICAgZmxvYXQgZmFjdG9yID0gKDEuLSB0ZXh0dXJlMkQobWFzaywgX3RleHR1cmVfY29vcmQgKyBkaWZmKS5hKSAqIChtYXhMZW5ndGggLSBsZW5ndGgoZGlmZikpIC8gbWF4TGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBmYWN0b3IgKiB0ZXh0dXJlMkQodGV4dHVyZSwgX3RleHR1cmVfY29vcmQgKyBkaWZmKTsKICAgICAgICAgICAgICAgICAgICBmYWN0b3JTdW0gKz0gZmFjdG9yOwogICAgICAgICAgICAgICAgICAgIGRpZmYueCArPSBub3JtYWxpemVkSW5jcmVtZW50Lng7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkaWZmLnkgKz0gbm9ybWFsaXplZEluY3JlbWVudC55OwogICAgICAgICAgICAgICAgZGlmZi54ID0gbm9ybWFsaXplZFJhZGl1cy54OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByZXN1bHQgLyBmYWN0b3JTdW07CiAgICAgICAgfWB9fWNvbnN0IFh1PTEwLFl1PTIsUXU9ODtjbGFzcyBxdSBleHRlbmRzIGJye2NvbnN0cnVjdG9yKGUscil7c3VwZXIoKSx0aGlzLmNvbnRleHQ9ZSx0aGlzLnJhZGl1cz1yO2NvbnN0IG49e2NvbnRleHQ6ZSxoZWlnaHQ6ZS5jYW52YXMuaGVpZ2h0LHdpZHRoOmUuY2FudmFzLndpZHRofTt0aGlzLmJsdXI9bmV3IGp1KHsuLi5uLHJhZGl1czpyLC4uLnRoaXMuZ2V0Qmx1clRleHR1cmVTaXplKGUuY2FudmFzLndpZHRoLGUuY2FudmFzLmhlaWdodCl9KTtjb25zdCBzPW5ldyBwcih7Li4ubixkaXNhYmxlRnJhbWVidWZmZXI6ITB9KTt0aGlzLmFkZFN0ZXAoe3Byb2dyYW06dGhpcy5ibHVyLHByZXZlbnRSZXNpemU6ITAsZ2V0VW5pZm9ybXM6KCk9Pih7dGV4dHVyZTp2KGUsdGhpcy5pbnB1dEltYWdlKSxtYXNrOnYoZSx0aGlzLmlucHV0TWFzayl9KX0pLHRoaXMuYWRkU3RlcCh7cHJvZ3JhbTpzLGdldFVuaWZvcm1zOigpPT4oe2JhY2tncm91bmQ6dihlLHRoaXMuYmx1ci5vdXRwdXQpLGZvcmVncm91bmQ6dihlLHRoaXMuaW5wdXRJbWFnZSksdGhyZXNob2xkOnYoZSx0aGlzLmlucHV0TWFzayl9KX0pfWdldEJsdXJUZXh0dXJlU2l6ZShlLHIpe2NvbnN0IG49dGhpcy5yYWRpdXM+WHU/UXU6WXU7cmV0dXJue3dpZHRoOk1hdGgubWF4KHllLGUvbiksaGVpZ2h0Ok1hdGgubWF4KHllLHIvbil9fXNldERhdGEoZSxyKXt0aGlzLmlucHV0SW1hZ2U9ZSx0aGlzLmlucHV0TWFzaz1yfXJlc2l6ZU91dHB1dChlLHIpe3N1cGVyLnJlc2l6ZU91dHB1dChlLHIpO2NvbnN0IG49dGhpcy5nZXRCbHVyVGV4dHVyZVNpemUoZSxyKTt0aGlzLmJsdXIucmVzaXplT3V0cHV0KG4ud2lkdGgsbi5oZWlnaHQpfX1jbGFzcyBLdSBleHRlbmRzIGJ0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy5waXBlbGluZT1uZXcgcXUodGhpcy5jb250ZXh0LGUpLHRoaXMuZGlzYWJsZVBvc3RQcm9jZXNzaW5nKCl9fWNsYXNzIEp1IGV4dGVuZHMgYnJ7Y29uc3RydWN0b3IoZSxyKXtzdXBlcigpLHRoaXMuY29udGV4dD1lO2NvbnN0IG49e2NvbnRleHQ6ZSxoZWlnaHQ6ZS5jYW52YXMuaGVpZ2h0LHdpZHRoOmUuY2FudmFzLndpZHRofSxzPW5ldyBlcyh7Li4ubixyYWRpdXM6cix0eXBlOmdyLkdBVVNTSUFOfSksaT1uZXcgcHIoey4uLm4sZGlzYWJsZUZyYW1lYnVmZmVyOiEwfSk7dGhpcy5hZGRTdGVwKHtwcm9ncmFtOnMsZ2V0VW5pZm9ybXM6KCk9Pih7dGV4dHVyZTp2KGUsdGhpcy5pbnB1dEltYWdlKX0pfSksdGhpcy5hZGRTdGVwKHtwcm9ncmFtOmksZ2V0VW5pZm9ybXM6KCk9Pih7YmFja2dyb3VuZDp2KGUsdGhpcy5pbnB1dEltYWdlKSxmb3JlZ3JvdW5kOnYoZSxzLm91dHB1dCksdGhyZXNob2xkOnYoZSx0aGlzLmlucHV0TWFzayl9KX0pfXNldERhdGEoZSxyKXt0aGlzLmlucHV0SW1hZ2U9ZSx0aGlzLmlucHV0TWFzaz1yfX1jbGFzcyBadSBleHRlbmRzIGJ0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy5waXBlbGluZT1uZXcgSnUodGhpcy5jb250ZXh0LGUpLHRoaXMuZGlzYWJsZVBvc3RQcm9jZXNzaW5nKCl9fWNsYXNzIGVmIGV4dGVuZHMgSm57Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMucHJlY2lzZU1hc2tFbmFibGVkPSEwfXNldCByZWFkZXIoZSl7dGhpcy5mcmFtZVJlYWRlcj1lfWFzeW5jIHJ1bigpe3RoaXMuZnJhbWVSZWFkZXImJihhd2FpdCB0aGlzLnJlYWROZXh0VmlkZW9GcmFtZSgpLGF3YWl0IHN1cGVyLnJ1bigpKX1hc3luYyByZWFkTmV4dFZpZGVvRnJhbWUoKXt2YXIgcjtjb25zdCBlPWF3YWl0KChyPXRoaXMuZnJhbWVSZWFkZXIpPT1udWxsP3ZvaWQgMDpyLnJlYWQoKSk7ZSE9bnVsbCYmZS52YWx1ZSYmKHRoaXMuaW5wdXRCYWNrZ3JvdW5kSW1hZ2U9YXdhaXQgY3JlYXRlSW1hZ2VCaXRtYXAoZS52YWx1ZSksZS52YWx1ZS5jbG9zZSgpKX19Y2xhc3MgdGYgZXh0ZW5kcyBidHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5waXBlbGluZT1uZXcgZWYodGhpcy5jb250ZXh0KX1zZXRCYWNrZ3JvdW5kVmlkZW8oZSl7dGhpcy5waXBlbGluZS5yZWFkZXI9ZX19Y2xhc3MgbnN7Ymx1ckJhY2tncm91bmQoZSl7cmV0dXJuIG5ldyBLdShlKX1ibHVyU2lsaG91ZXR0ZShlKXtyZXR1cm4gbmV3IFp1KGUpfWltYWdlQmFja2dyb3VuZCgpe3JldHVybiBuZXcgdHN9dmlkZW9CYWNrZ3JvdW5kKCl7cmV0dXJuIG5ldyB0Zn19Y2xhc3MgcmZ7Y29uc3RydWN0b3IoZSl7c3dpdGNoKGUpe2Nhc2UgS2UuQ0FOVkFTOnRoaXMuZmFjdG9yeT1uZXcgcnM7YnJlYWs7Y2FzZSBLZS5XRUJHTDp0aGlzLmZhY3Rvcnk9bmV3IG5zO2JyZWFrO2RlZmF1bHQ6Y29uc3Qgcj1faSgpO3RoaXMuZmFjdG9yeT1yLnN1cHBvcnRlZD9uZXcgbnM6bmV3IHJzfX1ibHVyQmFja2dyb3VuZChlKXtyZXR1cm4gdGhpcy5nZXRGYWN0b3J5KCkuYmx1ckJhY2tncm91bmQoZSl9Ymx1clNpbGhvdWV0dGUoZSl7cmV0dXJuIHRoaXMuZ2V0RmFjdG9yeSgpLmJsdXJTaWxob3VldHRlKGUpfWltYWdlQmFja2dyb3VuZCgpe3JldHVybiB0aGlzLmdldEZhY3RvcnkoKS5pbWFnZUJhY2tncm91bmQoKX12aWRlb0JhY2tncm91bmQoKXtyZXR1cm4gdGhpcy5nZXRGYWN0b3J5KCkudmlkZW9CYWNrZ3JvdW5kKCl9Z2V0RmFjdG9yeSgpe2lmKCF0aGlzLmZhY3RvcnkpdGhyb3ciRmFjdG9yeSBpcyBub3QgaW5pdGlhbGl6ZWQiO3JldHVybiB0aGlzLmZhY3Rvcnl9fWNsYXNzIG5me3NldEJhY2tncm91bmRPcHRpb25zKGUpe3ZhciBuLHM7dGhpcy5yZW5kZXJlciYmdGhpcy5yZW5kZXJlci5kZXN0cm95KCk7Y29uc3Qgcj1uZXcgcmYoKG49ZS5yZW5kZXJpbmdPcHRpb25zKT09bnVsbD92b2lkIDA6bi50eXBlKTtzd2l0Y2goZS50cmFuc2Zvcm1lclR5cGUpe2Nhc2UiQmFja2dyb3VuZEJsdXIiOnRoaXMucmVuZGVyZXI9ci5ibHVyQmFja2dyb3VuZCh0aGlzLmdldEJsdXJTaXplKGUucmFkaXVzKSk7YnJlYWs7Y2FzZSJTaWxob3VldHRlQmx1ciI6dGhpcy5yZW5kZXJlcj1yLmJsdXJTaWxob3VldHRlKHRoaXMuZ2V0Qmx1clNpemUoZS5yYWRpdXMpKTticmVhaztjYXNlIlZpZGVvQmFja2dyb3VuZCI6Y29uc3QgaT1yLnZpZGVvQmFja2dyb3VuZCgpO3RoaXMuYmFja2dyb3VuZFZpZGVvJiZpLnNldEJhY2tncm91bmRWaWRlbyh0aGlzLmJhY2tncm91bmRWaWRlbyksdGhpcy5yZW5kZXJlcj1pO2JyZWFrO2Nhc2UiVmlydHVhbEJhY2tncm91bmQiOmNvbnN0IGE9ci5pbWFnZUJhY2tncm91bmQoKTt0aGlzLmJhY2tncm91bmRJbWFnZSYmYS5zZXRCYWNrZ3JvdW5kSW1hZ2UodGhpcy5iYWNrZ3JvdW5kSW1hZ2UpLHRoaXMucmVuZGVyZXI9YTticmVhaztkZWZhdWx0OnRocm93YFVua25vd24gcmVuZGVyaW5nIHR5cGUgWyR7ZS50cmFuc2Zvcm1lclR5cGV9XWB9KChzPWUucmVuZGVyaW5nT3B0aW9ucyk9PW51bGw/dm9pZCAwOnMudHlwZSk9PT1LZS5XRUJHTCYmKGUucmVuZGVyaW5nT3B0aW9ucy5zZWxmaWVTZWdtZW50YXRpb25UeXBlPT09a3QuUFJFQ0lTRT90aGlzLnJlbmRlcmVyLmVuYWJsZVBvc3RQcm9jZXNzaW5nKCk6ZS5yZW5kZXJpbmdPcHRpb25zLnNlbGZpZVNlZ21lbnRhdGlvblR5cGU9PT1rdC5GQVNUJiZ0aGlzLnJlbmRlcmVyLmRpc2FibGVQb3N0UHJvY2Vzc2luZygpKX1zZXRWaWRlb0JHUmVhZGFibGUoZSl7dGhpcy5iYWNrZ3JvdW5kVmlkZW89ZS5nZXRSZWFkZXIoKTtjb25zdCByPXRoaXMucmVuZGVyZXI7ciE9bnVsbCYmci5zZXRCYWNrZ3JvdW5kVmlkZW8mJnIuc2V0QmFja2dyb3VuZFZpZGVvKHRoaXMuYmFja2dyb3VuZFZpZGVvKX1hc3luYyBzZXRWaXJ0dWFsQkdJbWFnZShlKXtjb25zdCByPXRoaXMucmVuZGVyZXI7ciE9bnVsbCYmci5zZXRCYWNrZ3JvdW5kSW1hZ2UmJnIuc2V0QmFja2dyb3VuZEltYWdlKGUpLHRoaXMuYmFja2dyb3VuZEltYWdlPWV9YXN5bmMgcHJvY2VzcyhlLHIpe2lmKHRoaXMucmVuZGVyZXIpcmV0dXJuIHRoaXMucmVuZGVyZXIucmVuZGVyKGUscil9YXN5bmMgcmVzaXplRm9yZWdyb3VuZChlLHIpe31nZXRCbHVyU2l6ZShlPXFlLkxvdyl7c3dpdGNoKGUpe2Nhc2UgcWUuTG93OnJldHVybiA1O2Nhc2UgcWUuSGlnaDpyZXR1cm4gMTJ9cmV0dXJuIGV9YXN5bmMgcHJvZmlsZShlKXt2YXIgcjtyZXR1cm4oKHI9dGhpcy5yZW5kZXJlcik9PW51bGw/dm9pZCAwOnIucHJvZmlsZVdlYmdsKGUpKT8/W119fWNvbnN0IHNmPS4xLG9mPS43LGFmPSJodHRwczovL2Qzb3Bxam1xenhmMDU3LmNsb3VkZnJvbnQubmV0L21sL3ZvbmFnZV9zZWxmaWVfc2VnbWVudGVyL2Zsb2F0MTYvdjEvdm9uYWdlX3NlbGZpZV9zZWdtZW50ZXIudGZsaXRlIjtjbGFzcyBjZntjb25zdHJ1Y3Rvcigpe3RoaXMuY2FudmFzPW5ldyBPZmZzY3JlZW5DYW52YXMoMCwwKSx0aGlzLmNvbnRleHQ9dGhpcy5jYW52YXMuZ2V0Q29udGV4dCgiMmQiLHt3aWxsUmVhZEZyZXF1ZW50bHk6ITB9KSx0aGlzLndpZHRoPTAsdGhpcy5oZWlnaHQ9MH1hc3luYyBjcmVhdGVJbWFnZVNlZ21lbnRlcigpe2lmKCF0aGlzLkltYWdlU2VnbWVudGVyfHwhdGhpcy53YXNtRmlsZXNldCl7Y29uc29sZS53YXJuKCJNZWRpYXBpcGUgb2JqZWN0cyBub3QgbG9hZGVkIik7cmV0dXJufXRoaXMuaW1hZ2VTZWdtZW50ZXI9YXdhaXQgdGhpcy5JbWFnZVNlZ21lbnRlci5jcmVhdGVGcm9tT3B0aW9ucyh0aGlzLndhc21GaWxlc2V0LHtiYXNlT3B0aW9uczp7bW9kZWxBc3NldFBhdGg6dGhpcy5tb2RlbEFzc2V0VXJpUGF0aCxkZWxlZ2F0ZToiR1BVIn0scnVubmluZ01vZGU6IlZJREVPIixvdXRwdXRDYXRlZ29yeU1hc2s6ITAsb3V0cHV0Q29uZmlkZW5jZU1hc2tzOiEwfSl9YXN5bmMgbG9hZE1lZGlhcGlwZUFzc2V0cyhlLHIpe3RoaXMubW9kZWxBc3NldFVyaVBhdGg9ZXx8YWY7Y29uc3Qgbj1yP2Ake3J9L3Rhc2stdmlzaW9uLmpzYDoiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AbWVkaWFwaXBlL3Rhc2tzLXZpc2lvbkAwLjEwLjIwLytlc20iLHM9cj9gJHtyfS93YXNtYDoiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AbWVkaWFwaXBlL3Rhc2tzLXZpc2lvbkAwLjEwLjIwL3dhc20iLHtGaWxlc2V0UmVzb2x2ZXI6aSxJbWFnZVNlZ21lbnRlcjphfT1hd2FpdCBpbXBvcnQobik7dGhpcy5JbWFnZVNlZ21lbnRlcj1hLHRoaXMud2FzbUZpbGVzZXQ9YXdhaXQgaS5mb3JWaXNpb25UYXNrcyhzKX1hc3luYyBpbml0KGUscil7YXdhaXQgdGhpcy5sb2FkTWVkaWFwaXBlQXNzZXRzKGUsciksZ2xvYmFsVGhpcy5kb2N1bWVudD17fSxhd2FpdCB0aGlzLmNyZWF0ZUltYWdlU2VnbWVudGVyKCl9YXN5bmMgcHJvY2VzcyhlKXt2YXIgYTtpZighdGhpcy5pbWFnZVNlZ21lbnRlcil7Y29uc29sZS53YXJuKCJJbWFnZVNlZ21lbnRlciBpbnN0YW5jZSBub3QgYXZhaWxhYmxlIik7cmV0dXJufSh0aGlzLndpZHRoIT09ZS53aWR0aHx8dGhpcy5oZWlnaHQhPT1lLmhlaWdodCkmJih0aGlzLmNhbnZhcy53aWR0aD10aGlzLndpZHRoPWUud2lkdGgsdGhpcy5jYW52YXMuaGVpZ2h0PXRoaXMuaGVpZ2h0PWUuaGVpZ2h0LHRoaXMubWFzayYmKHRoaXMubWFzaz1uZXcgSW1hZ2VEYXRhKHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpKSksdGhpcy5tYXNrfHwodGhpcy5tYXNrPW5ldyBJbWFnZURhdGEodGhpcy53aWR0aCx0aGlzLmhlaWdodCkpLHRoaXMuY29udGV4dC5kcmF3SW1hZ2UoZSwwLDAsZS53aWR0aCxlLmhlaWdodCk7Y29uc3Qgcj1EYXRlLm5vdygpO2xldCBuO3RyeXsoYT10aGlzLmltYWdlU2VnbWVudGVyKT09bnVsbHx8YS5zZWdtZW50Rm9yVmlkZW8odGhpcy5jb250ZXh0LmdldEltYWdlRGF0YSgwLDAsZS53aWR0aCxlLmhlaWdodCkscixvPT57dmFyIHU7Y29uc3QgYz0odT1vLmNvbmZpZGVuY2VNYXNrcyk9PW51bGw/dm9pZCAwOnVbMF07bj1jPT1udWxsP3ZvaWQgMDpjLmdldEFzRmxvYXQzMkFycmF5KCl9KX1jYXRjaHthd2FpdCB0aGlzLmNyZWF0ZUltYWdlU2VnbWVudGVyKCk7cmV0dXJufWlmKCFuKXJldHVybjtpZighdGhpcy5wcmV2aW91c0NvbmZpZGVuY2VNYXNrKXt0aGlzLnByZXZpb3VzQ29uZmlkZW5jZU1hc2s9bi5zbGljZSgpO3JldHVybn1jb25zdCBzPW4ubWFwKChvLGMpPT57dmFyIGY7Y29uc3QgdT0oZj10aGlzLnByZXZpb3VzQ29uZmlkZW5jZU1hc2spPT1udWxsP3ZvaWQgMDpmW2NdO3JldHVybiB1IT09dm9pZCAwP3RoaXMuYmxlbmQodSxvKTpvfSksaT1bMjU1LDAsMF07Zm9yKGxldCBvPTA7bzwocz09bnVsbD92b2lkIDA6cy5sZW5ndGgpO28rKyl7Y29uc3QgYz0xLXNbb107Yz5zZj8oYzxvZj8odGhpcy5tYXNrLmRhdGFbbyo0XT1pWzBdKmMsdGhpcy5tYXNrLmRhdGFbbyo0KzNdPTI1NSpjKToodGhpcy5tYXNrLmRhdGFbbyo0XT1pWzBdLHRoaXMubWFzay5kYXRhW28qNCszXT0yNTUpLHRoaXMubWFzay5kYXRhW28qNCsxXT1pWzFdLHRoaXMubWFzay5kYXRhW28qNCsyXT1pWzJdKTp0aGlzLm1hc2suZGF0YVtvKjRdPXRoaXMubWFzay5kYXRhW28qNCsxXT10aGlzLm1hc2suZGF0YVtvKjQrMl09dGhpcy5tYXNrLmRhdGFbbyo0KzNdPTB9cmV0dXJuIHRoaXMucHJldmlvdXNDb25maWRlbmNlTWFzaz1zLnNsaWNlKCksdGhpcy5tYXNrfWlzR3B1U3VwcG9ydGVkKCl7cmV0dXJuITB9YmxlbmQoZSxyKXtjb25zdCBzPS0uNzQ4Njk5LGk9LTU3LjgwNTEsYT0yOTEuMzA5LG89LTYyNC43MTcsYz1yLS41LHU9YypjLGY9MS1NYXRoLm1pbigxLHUqKDUuNjg4NDIrdSoocyt1KihpK3UqKGErdSpvKSkpKSk7cmV0dXJuIHIrKGUtcikqKGYqLjkpfX1jbGFzcyB1Zntjb25zdHJ1Y3Rvcigpe3RoaXMucmVwb3J0ZXI9bmV3IHhpLHRoaXMuaXNFbmFibGVkPSEwfWFzeW5jIGluaXQoZSxyKXt2YXIgbjt0aGlzLnNlbGZpZVNlZ21lbnRhdGlvbj1uZXcgY2YsYXdhaXQoKG49dGhpcy5zZWxmaWVTZWdtZW50YXRpb24pPT1udWxsP3ZvaWQgMDpuLmluaXQoci5tb2RlbEFzc2V0VXJpUGF0aCxyLm1lZGlhcGlwZUJhc2VBc3NldHNVcmkpKSx0aGlzLmJhY2tncm91bmRGaWx0ZXI9bmV3IG5mLHRoaXMucmVwb3J0KHt2YXJpYXRpb246IkNyZWF0ZSJ9KX1hc3luYyB0cmFuc2Zvcm0oZSxyKXt2YXIgbyxjO2lmKCF0aGlzLmlzRW5hYmxlZClyZXR1cm4gci5lbnF1ZXVlKGUpO2xldCBuO2NvbnN0IHM9ZS50aW1lc3RhbXA/PzAsaT1hd2FpdCBjcmVhdGVJbWFnZUJpdG1hcChlKSxhPWF3YWl0KChvPXRoaXMuc2VsZmllU2VnbWVudGF0aW9uKT09bnVsbD92b2lkIDA6by5wcm9jZXNzKGkpKTthJiYobj1hd2FpdCgoYz10aGlzLmJhY2tncm91bmRGaWx0ZXIpPT1udWxsP3ZvaWQgMDpjLnByb2Nlc3MoaSxhKSkpLG4/KGUuY2xvc2UoKSxyLmVucXVldWUobmV3IFZpZGVvRnJhbWUobix7dGltZXN0YW1wOnMsYWxwaGE6ImRpc2NhcmQifSkpKTpyLmVucXVldWUoZSl9YXN5bmMgc2V0QmFja2dyb3VuZE9wdGlvbnMoZSl7dmFyIHI7dGhpcy5iYWNrZ3JvdW5kT3B0aW9ucz1lLGF3YWl0KChyPXRoaXMuYmFja2dyb3VuZEZpbHRlcik9PW51bGw/dm9pZCAwOnIuc2V0QmFja2dyb3VuZE9wdGlvbnMoZSkpLHRoaXMucmVwb3J0KHt2YXJpYXRpb246IlVwZGF0ZSJ9KX1hc3luYyBzZXRWaWRlb0JHUmVhZGFibGUoZSl7dmFyIHI7YXdhaXQoKHI9dGhpcy5iYWNrZ3JvdW5kRmlsdGVyKT09bnVsbD92b2lkIDA6ci5zZXRWaWRlb0JHUmVhZGFibGUoZSkpfWFzeW5jIHNldFZpcnR1YWxCR0ltYWdlKGUpe3ZhciByO2F3YWl0KChyPXRoaXMuYmFja2dyb3VuZEZpbHRlcik9PW51bGw/dm9pZCAwOnIuc2V0VmlydHVhbEJHSW1hZ2UoZSkpfWFzeW5jIHByb2ZpbGUoZSl7dmFyIHI7cmV0dXJuKChyPXRoaXMuYmFja2dyb3VuZEZpbHRlcik9PW51bGw/dm9pZCAwOnIucHJvZmlsZShlKSk/P1tdfWdldFRyYW5zZm9ybWVyVHlwZSgpe3ZhciBlO3JldHVybigoZT10aGlzLmJhY2tncm91bmRPcHRpb25zKT09bnVsbD92b2lkIDA6ZS50cmFuc2Zvcm1lclR5cGUpPz8iVW5kZWZpbmVkIn1lbmFibGUoKXt0aGlzLmlzRW5hYmxlZD0hMH1kaXNhYmxlKCl7dGhpcy5pc0VuYWJsZWQ9ITF9cmVwb3J0KGUpe3ZhciByO3RoaXMucmVwb3J0ZXIuc2VuZCh7dmVyc2lvbjpFaSxhY3Rpb246Ik1sVHJhbnNmb3JtZXJzIix0cmFuc2Zvcm1lclR5cGU6KHI9dGhpcy5iYWNrZ3JvdW5kT3B0aW9ucyk9PW51bGw/dm9pZCAwOnIudHJhbnNmb3JtZXJUeXBlLGNvbmZpZzpKU09OLnN0cmluZ2lmeSh0aGlzLmJhY2tncm91bmRPcHRpb25zKSwuLi5lfSl9fWNvbnN0IHhyPWNsYXNzIHhye2NvbnN0cnVjdG9yKCl7dGhpcy5iYWNrZ3JvdW5kVHJhbnNmb3JtZXI9bmV3IHVmLHRoaXMubWVkaWFQcm9jZXNzb3I9bmV3IFFzLHRoaXMucmF0ZT0zMCx0aGlzLmV2ZW50c1F1ZXVlPVtdLHRoaXMuZnJhbWVUcmFuc2Zvcm1MYXRlbmN5TXM9W119YXN5bmMgaW5pdChlLHIpe3RoaXMuZnJhbWVUcmFuc2Zvcm1MYXRlbmN5TXM9W10sYXdhaXQgdGhpcy5iYWNrZ3JvdW5kVHJhbnNmb3JtZXIuaW5pdChlLHIpLGF3YWl0IHRoaXMubWVkaWFQcm9jZXNzb3Iuc2V0VHJhbnNmb3JtZXJzKFt0aGlzLmJhY2tncm91bmRUcmFuc2Zvcm1lcl0pLHRoaXMubWVkaWFQcm9jZXNzb3Iuc2V0VHJhY2tFeHBlY3RlZFJhdGUodGhpcy5yYXRlKSx0aGlzLm1lZGlhUHJvY2Vzc29yLm9uQW55KChuLHMpPT57dGhpcy5yZXNvbHZlT25NZWRpYVByb2Nlc3Nvcj8odGhpcy5yZXNvbHZlT25NZWRpYVByb2Nlc3Nvcih7bmFtZTpuLGRhdGE6c30pLHRoaXMucmVzb2x2ZU9uTWVkaWFQcm9jZXNzb3I9dm9pZCAwKTp0aGlzLmV2ZW50c1F1ZXVlLnB1c2goe25hbWU6bixkYXRhOnN9KX0pfWVuYWJsZSgpe3RoaXMuYmFja2dyb3VuZFRyYW5zZm9ybWVyLmVuYWJsZSgpfWRpc2FibGUoKXt0aGlzLmJhY2tncm91bmRUcmFuc2Zvcm1lci5kaXNhYmxlKCl9YXN5bmMgb25NZWRpYVByb2Nlc3NvckV2ZW50KCl7cmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKGU9Pnt0aGlzLmV2ZW50c1F1ZXVlLmxlbmd0aD4wP2UodGhpcy5ldmVudHNRdWV1ZS5zaGlmdCgpKTp0aGlzLnJlc29sdmVPbk1lZGlhUHJvY2Vzc29yPWV9KX1hc3luYyBzZXRUcmFja0V4cGVjdGVkUmF0ZShlKXt0aGlzLnJhdGU9ZSx0aGlzLm1lZGlhUHJvY2Vzc29yLnNldFRyYWNrRXhwZWN0ZWRSYXRlKGUpfWFzeW5jIHRyYW5zZm9ybShlLHIpe2xldCBuPXBlcmZvcm1hbmNlLm5vdygpO3RoaXMubWVkaWFQcm9jZXNzb3IudHJhbnNmb3JtKGUsciksdGhpcy5mcmFtZVRyYW5zZm9ybUxhdGVuY3lNcy5wdXNoKHBlcmZvcm1hbmNlLm5vdygpLW4pfWFzeW5jIHNldEJhY2tncm91bmRPcHRpb25zKGUpe3ZhciByO2F3YWl0KChyPXRoaXMuYmFja2dyb3VuZFRyYW5zZm9ybWVyKT09bnVsbD92b2lkIDA6ci5zZXRCYWNrZ3JvdW5kT3B0aW9ucyhlKSl9c2V0VmlkZW9CR1JlYWRhYmxlKGUpe3RoaXMuYmFja2dyb3VuZFRyYW5zZm9ybWVyLnNldFZpZGVvQkdSZWFkYWJsZShlKX1hc3luYyBzZXRWaXJ0dWFsQkdJbWFnZShlKXthd2FpdCB0aGlzLmJhY2tncm91bmRUcmFuc2Zvcm1lci5zZXRWaXJ0dWFsQkdJbWFnZShlKX1hc3luYyB0ZXJtaW5hdGUoKXthd2FpdCB0aGlzLm1lZGlhUHJvY2Vzc29yLmRlc3Ryb3koKTtjb25zdCByPXRoaXMuZnJhbWVUcmFuc2Zvcm1MYXRlbmN5TXMucmVkdWNlKChuLHMpPT5uK3MsMCkvdGhpcy5mcmFtZVRyYW5zZm9ybUxhdGVuY3lNcy5sZW5ndGh8fDA7Y29uc29sZS5sb2coYFRyYW5zZm9ybSBsYXRlbmN5IGF2ZXJhZ2UgaXM6ICR7cn0gbXNgKX1zZXRWb25hZ2VNZXRhZGF0YShlKXtWcyhlKX1hc3luYyBwcm9maWxlKGUpe3JldHVybiBKU09OLnN0cmluZ2lmeShhd2FpdCB0aGlzLmJhY2tncm91bmRUcmFuc2Zvcm1lci5wcm9maWxlKGUpKX19O3VzKCJQcm9jZXNzb3JXb3JrZXIiLHhyKTtsZXQgc3M9eHJ9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1wcm9jZXNzb3Itd29ya2VyLThkWk1Ia0NiLmpzLm1hcAo=",No=typeof self<"u"&&self.Blob&&new Blob([(e=>Uint8Array.from(atob(e),e=>e.charCodeAt(0)))(Go)],{type:"text/javascript;charset=utf-8"});function Xo(e){let t;try{if(t=No&&(self.URL||self.webkitURL).createObjectURL(No),!t)throw"";const n=new Worker(t,{name:null==e?void 0:e.name});return n.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(t)}),n}catch(t){return new Worker("data:text/javascript;base64,"+Go,{name:null==e?void 0:e.name})}finally{t&&(self.URL||self.webkitURL).revokeObjectURL(t)}}const ko=function(e){function t(t){var n;return(n=e.call(this)||this).rate=30,n.isEnabled=!0,n.config=t,n}(0,a.default)(t,e);var n=t.prototype;return n.setTrackExpectedRate=function(){var e=(0,c.default)(o.default.mark((function e(t){var n;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.startWorker();case 2:return e.next=4,null==(n=this.worker)?void 0:n.setTrackExpectedRate(t);case 4:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),n.setBackgroundOptions=function(){var e=(0,c.default)(o.default.mark((function e(t){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.backgroundOptions=t,e.next=3,this.updateBackgroundOptions(t);case 3:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),n.transform=function(){var e=(0,c.default)(o.default.mark((function e(t,n){var r;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.startWorker();case 2:return e.next=4,null==(r=this.worker)?void 0:r.transform(t,n);case 4:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),n.destroy=function(){var e=(0,c.default)(o.default.mark((function e(){var t;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,null==(t=this.worker)?void 0:t.terminate();case 2:this.worker=void 0;case 3:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),n.profile=function(){var e=(0,c.default)(o.default.mark((function e(t){var n,r;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,null==(n=this.worker)?void 0:n.profile(t);case 2:return r=e.sent,e.abrupt("return",JSON.parse(null!=r?r:"[]"));case 4:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),n.enable=function(){var e=(0,c.default)(o.default.mark((function e(){var t;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.isEnabled=!0,e.next=3,null==(t=this.worker)?void 0:t.enable();case 3:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),n.disable=function(){var e=(0,c.default)(o.default.mark((function e(){var t;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.isEnabled=!1,e.next=3,null==(t=this.worker)?void 0:t.disable();case 3:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),n.listenWorker=function(){var e=(0,c.default)(o.default.mark((function e(){var t,n,r,i,a;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(null==(t=this.worker)||!t.workerContext.worker){e.next=20;break}return e.next=3,null==(n=this.worker)?void 0:n.onMediaProcessorEvent();case 3:r=e.sent,i=r.name,a=r.data,e.t0=i,e.next="error"===e.t0||"warn"===e.t0?9:"pipelineInfo"===e.t0?11:18;break;case 9:return this.emit(i,a),e.abrupt("break",18);case 11:e.t1=(this.emit(i,a),a),e.next="pipeline_ended"===e.t1||"pipeline_ended_with_error"===e.t1?14:17;break;case 14:return e.next=16,this.destroy();case 16:return e.abrupt("return");case 17:return e.abrupt("break",18);case 18:e.next=0;break;case 20:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),n.startWorker=function(){var e=(0,c.default)(o.default.mark((function e(){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.t0=!this.config||this.worker,e.t0){e.next=20;break}return e.next=4,jt(Jo,Xo);case 4:if(this.worker=e.sent,e.t1=this.isEnabled,e.t1){e.next=9;break}return e.next=9,this.worker.disable();case 9:return e.next=11,this.worker.init("worker_"+t.initCount++,this.config);case 11:if(e.t2=this.backgroundOptions,!e.t2){e.next=15;break}return e.next=15,this.updateBackgroundOptions(this.backgroundOptions);case 15:return e.next=17,this.worker.setVonageMetadata(ge());case 17:return e.next=19,this.setBackgroundOptions(this.config);case 19:this.listenWorker();case 20:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),n.updateBackgroundOptions=function(){var e=(0,c.default)(o.default.mark((function e(t){var n,r,i,a;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.startWorker();case 2:a=t.transformerType,e.t0=a,e.next="VideoBackground"===e.t0?6:"VirtualBackground"===e.t0?18:30;break;case 6:if(null!=(n=this.worker)){e.next=10;break}e.t1=void 0,e.next=15;break;case 10:return e.t2=n,e.next=13,on.createVideoReadable(t.backgroundAssetUri);case 13:e.t3=e.sent,e.t1=e.t2.setVideoBGReadable.call(e.t2,e.t3);case 15:return e.next=17,e.t1;case 17:return e.abrupt("break",30);case 18:if(null!=(r=this.worker)){e.next=22;break}e.t4=void 0,e.next=27;break;case 22:return e.t5=r,e.next=25,on.createImageCanvas(t.backgroundAssetUri);case 25:e.t6=e.sent,e.t4=e.t5.setVirtualBGImage.call(e.t5,e.t6);case 27:return e.next=29,e.t4;case 29:return e.abrupt("break",30);case 30:return e.next=32,null==(i=this.worker)?void 0:i.setBackgroundOptions(t);case 32:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),t}(st);ko.initCount=0;let To=ko,Yo=function(){function e(e){this.queries=e}var t=e.prototype;return t.downloadSpeedscope=function(){var e=(0,c.default)(o.default.mark((function e(){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=this,e.next=3,this.convertToSpeedscope();case 3:e.t1=e.sent,e.t0.download.call(e.t0,e.t1);case 5:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),t.download=function(e){const t=document.createElement("a");t.href=URL.createObjectURL(new Blob([e],{type:"application/json"})),t.download=`profile-${+new Date}.speedscope.json`,document.body.appendChild(t),t.click(),document.body.removeChild(t)},t.convertToSpeedscope=function(){const e=[],t={},n=[];let r=0;for(var i,o=A(this.queries);!(i=o()).done;){const o=[];for(var a,l=A(i.value);!(a=l()).done;){const n=a.value;void 0===t[n.name]&&(t[n.name]=e.length,e.push({name:n.name})),o.push({type:n.action==go.PUSH?"O":"C",frame:t[n.name],at:n.timestamp}),r=Math.max(r,n.timestamp+n.duration)}n.push({events:o,type:"evented",name:"GPU Profile",unit:"nanoseconds",startValue:0,endValue:r})}return JSON.stringify({$schema:"https://www.speedscope.app/file-format-schema.json",shared:{frames:e},profiles:n},null,2)},e}();const wo=function(t){function n(e){var n;return(n=t.call(this)||this).worker=new To(e),n.connector=new Ie(n.worker),n.worker.onAny((e,t)=>n.emit(e,t)),n}(0,a.default)(n,t);var r=n.prototype;return r.setBackgroundOptions=function(){var e=(0,c.default)(o.default.mark((function e(t){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.worker.setBackgroundOptions(t);case 2:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),r.enable=function(){var e=(0,c.default)(o.default.mark((function e(){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.worker.enable();case 2:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),r.disable=function(){var e=(0,c.default)(o.default.mark((function e(){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.worker.disable();case 2:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),r.setTrackExpectedRate=function(e){this.worker.setTrackExpectedRate(e)},r.getConnector=function(){return this.connector},r.profile=function(){var e=(0,c.default)(o.default.mark((function e(t){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.worker.profile(t));case 1:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),n.profile=function(){var t=(0,c.default)(o.default.mark((function t(n){var r;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.all(this.instances.map(e=>e.profile(n)));case 2:return r=t.sent,t.abrupt("return",new Yo(r));case 4:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),n.create=function(){var e=(0,c.default)(o.default.mark((function e(t){var n;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=new this(t),e.abrupt("return",(this.instances.push(n),n));case 2:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),n}(st);wo.instances=[];let Do=wo;function xo(){return(xo=(0,c.default)(o.default.mark((function e(t){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Do.create(t);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})))).apply(this,arguments)}t.VonageMediaProcessor=Do}).call(this,n(2),n(29))},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e,t){void 0===t&&(t={});const n=t.hasE2eeCapability||i.default,r=t.hasOpenTokSupport||o;this.publish=-1!==e.indexOf("publish")?1:0,this.subscribe=-1!==e.indexOf("subscribe")?1:0,this.forceUnpublish=-1!==e.indexOf("forceunpublish")?1:0,this.forceDisconnect=-1!==e.indexOf("forcedisconnect")?1:0,this.forceMute=-1!==e.indexOf("forcemute")?1:0,this.supportsE2ee=n()?1:0,this.supportsWebRTC=r()?1:0,this.permittedTo=e=>Object.prototype.hasOwnProperty.call(this,e)&&1===this[e]};var i=r(n(115));const o=r(n(53)).default.once},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e,t,n,r,o,c,A){const h=this;let g;this.id=e,this.streamId=e,this.name=t,this.creationTime=Number(n),this.initials=A||"",this.connection=r,this.channel=c,this.publisher=a.default.publishers.find({streamId:this.id}),(0,i.default)(this);const F=function(e,t,n,r){let i=t;switch(i){case"active":i="audio"===e.type?"hasAudio":"hasVideo",h[i]=r;break;case"disableWarning":if(i="audio"===e.type?"audioDisableWarning":"videoDisableWarning",h[i]=r,!h["audio"===e.type?"hasAudio":"hasVideo"])return;break;case"fitMode":i="defaultFitMode",h[i]=r;break;case"source":i="audio"===e.type?"audioType":"videoType",h[i]=r;break;case"videoDimensions":h.videoDimensions=r;break;case"orientation":case"width":case"height":return}h.dispatchEvent(new d.StreamUpdatedEvent(h,i,n,r))},Q=function(){return h.publisher?h.publisher:a.default.subscribers.find(e=>e.stream&&e.stream.id===h.id&&e.session.id===o.id)},p=function(){return!h.publisher};this.getChannelsOfType=function(e){return h.channel.filter(t=>t.type===e)},this.getChannel=function(e){for(let t=0;t<h.channel.length;++t)if(h.channel[t].id===e)return h.channel[t];return null};const m=this.getChannelsOfType("audio")[0],U=this.getChannelsOfType("video")[0];this.hasAudio=null!=m&&m.active,this.hasVideo=null!=U&&U.active,this.videoType=U&&U.source,this.defaultFitMode=U&&U.fitMode,this.videoDimensions={},U&&(this.videoDimensions.width=U.width,this.videoDimensions.height=U.height,this.videoDimensions.orientation=U.orientation,U.on("update",F),this.frameRate=U.frameRate);m&&m.on("update",F);this.setChannelActiveState=function(e){let t=e.channelType,n=e.activeState,r=e.activeReason,i=e.congestionLevel,o=e.subscriberId,a=e.isSubscriber;const l={active:n};r&&(l.activeReason=r),void 0!==i&&(l.congestionLevel=i),o&&(l.subscriberId=o),b(t,l,a)},this.setVideoDimensions=function(e,t){b("video",{width:e,height:t,orientation:0})},this.setRestrictFrameRate=function(e){b("video",{restrictFrameRate:e},!0)},this.setPreferredResolution=function(e){if(!p())return void s.warn("setPreferredResolution has no affect when called by a publisher");if(o.sessionInfo.p2pEnabled)return void s.warn("Stream.setPreferredResolution will not work in a P2P Session");if(e&&void 0===e.width&&void 0===e.height)return;const t=h.getChannelsOfType("video")[0];if(t){if(e&&e.width){if(isNaN(parseInt(e.width,10)))throw new l.default.Error("stream preferred width must be an integer","Subscriber");t.preferredWidth=parseInt(e.width,10)}else t.preferredWidth=void 0;if(e&&e.height){if(isNaN(parseInt(e.height,10)))throw new l.default.Error("stream preferred height must be an integer","Subscriber");t.preferredHeight=parseInt(e.height,10)}else t.preferredHeight=void 0;o._.subscriberChannelUpdate(h,Q(),t,{preferredWidth:t.preferredWidth||0,preferredHeight:t.preferredHeight||0})}},this.getPreferredResolution=function(){const e=h.getChannelsOfType("video")[0];if(e&&(e.preferredWidth||e.preferredHeight))return{width:e.preferredWidth,height:e.preferredHeight}},this.setPreferredFrameRate=function(e){if(!p())return void s.warn("setPreferredFrameRate has no affect when called by a publisher");if(o.sessionInfo.p2pEnabled)return void s.warn("Stream.setPreferredFrameRate will not work in a P2P Session");if(e&&isNaN(parseFloat(e)))throw new l.default.Error("stream preferred frameRate must be a number","Subscriber");const t=h.getChannelsOfType("video")[0];t&&(t.preferredFrameRate=e?parseFloat(e):null,o._.subscriberChannelUpdate(h,Q(),t,{preferredFrameRate:t.preferredFrameRate||0}))},this.getPreferredFrameRate=function(){const e=h.getChannelsOfType("video")[0];return e?e.preferredFrameRate:null};const b=function(e,t,n){let r;if(void 0===n&&(n=!1),n){const e=Q();r=n=>o._.subscriberChannelUpdate(h,e,n,t)}else r=e=>o._.streamChannelUpdate(h,e,t);h.getChannelsOfType(e).forEach(r)};this.destroyed=!1,this.destroyedReason=void 0,this.destroy=function(e,t){void 0===e&&(e="clientDisconnected"),g=e,h.destroyed=!0,h.destroyedReason=g,!0!==t&&h.dispatchEvent(new d.DestroyedEvent("destroyed",h,g))},this._={},this._.updateProperty=function(e,t){if(-1===u.indexOf(e))return void s.warn(`Unknown stream property "${e}" was modified to "${t}".`);const n=h[e],r=t;switch(e){case"name":h[e]=r;break;case"archiving":var i=Q();h.publisher&&i&&i._.archivingStatus(r),h[e]=r}const o=new d.StreamUpdatedEvent(h,e,n,r);h.dispatchEvent(o)},this._.update=function(e){for(const t in e)e.hasOwnProperty(t)&&h._.updateProperty(t,e[t])},this._.forceMute=function(e){e.hasOwnProperty("channels")&&e.channels.includes("audio")&&h.publisher&&h.publisher._.forceMuteAudio()},this._.updateChannel=function(e,t){const n=h.getChannel(e);n&&n.update(t)}};var i=r(n(6)),o=r(n(1)),a=r(n(26)),l=r(n(7)),c=r(n(18));const s=(0,o.default)("Stream"),d=(0,c.default)(),u=["name","archiving"]},function(e,t,n){"use strict";t.__esModule=!0,t.default=t.UNSUBSCRIBE=t.SUBSCRIBE=t.STATUS=t.PONG=t.PING=t.MESSAGE=t.DISCONNECT=t.CONNECT=void 0;t.SUBSCRIBE=0;t.UNSUBSCRIBE=1;t.MESSAGE=2;t.CONNECT=3;t.DISCONNECT=4;t.PING=7;t.PONG=8;t.STATUS=9;var r={SUBSCRIBE:0,UNSUBSCRIBE:1,MESSAGE:2,CONNECT:3,DISCONNECT:4,PING:7,PONG:8,STATUS:9};t.default=r},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(9)),o=r(n(6)),a=r(n(184)),l=r(n(18)),c=r(n(801));const s=(0,l.default)();function d(e,t,n,r,i){let l;this.id=e,this.connectionId=e,this.creationTime=t?Number(t):null,this.data=n,this.capabilities=(0,c.default)(r),this.permissions=new a.default(i),this.quality=null,(0,o.default)(this),this.destroy=(e,t)=>{l=e||"clientDisconnected",!0!==t&&this.dispatchEvent(new s.DestroyedEvent("destroyed",this,l))},this.destroyed=()=>void 0!==l,this.destroyedReason=()=>l}d.fromHash=e=>{let t=e.id,n=e.creationTime,r=e.data,o=e.capablities,a=e.permissions;return new d(t,n,r,(0,i.default)(o||{},{supportsWebRTC:!0}),a||[])};var u=d;t.default=u},function(e,t){var n="object"==typeof(void 0!==typeof window?window:global)&&(void 0!==typeof window?window:global)&&(void 0!==typeof window?window:global).Object===Object&&(void 0!==typeof window?window:global);e.exports=n},function(e,t){var n=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return n.call(e)}catch(e){}try{return e+""}catch(e){}}return""}},function(e,t,n){var r=n(43),i=function(){try{var e=r(Object,"defineProperty");return e({},"",{}),e}catch(e){}}();e.exports=i},function(e,t,n){var r=n(45),i=n(34);e.exports=function(e,t){return e&&r(t,i(t),e)}},function(e,t,n){var r=n(392),i=n(65),o=n(14),a=n(66),l=n(67),c=n(88),s=Object.prototype.hasOwnProperty;e.exports=function(e,t){var n=o(e),d=!n&&i(e),u=!n&&!d&&a(e),A=!n&&!d&&!u&&c(e),h=n||d||u||A,g=h?r(e.length,String):[],F=g.length;for(var Q in e)!t&&!s.call(e,Q)||h&&("length"==Q||u&&("offset"==Q||"parent"==Q)||A&&("buffer"==Q||"byteLength"==Q||"byteOffset"==Q)||l(Q,F))||g.push(Q);return g}},function(e,t){e.exports=function(e,t){return function(n){return e(t(n))}}},function(e,t,n){(function(e){var r=n(16),i=t&&!t.nodeType&&t,o=i&&"object"==typeof e&&e&&!e.nodeType&&e,a=o&&o.exports===i?r.Buffer:void 0,l=a?a.allocUnsafe:void 0;e.exports=function(e,t){if(t)return e.slice();var n=e.length,r=l?l(n):new e.constructor(n);return e.copy(r),r}}).call(this,n(87)(e))},function(e,t){e.exports=function(){return[]}},function(e,t,n){var r=n(123),i=n(124),o=n(122),a=n(195),l=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)r(t,o(e)),e=i(e);return t}:a;e.exports=l},function(e,t,n){var r=n(198),i=n(122),o=n(34);e.exports=function(e){return r(e,o,i)}},function(e,t,n){var r=n(123),i=n(14);e.exports=function(e,t,n){var o=t(e);return i(e)?o:r(o,n(e))}},function(e,t,n){var r=n(198),i=n(196),o=n(55);e.exports=function(e){return r(e,o,i)}},function(e,t,n){var r=n(43)(n(16),"Set");e.exports=r},function(e,t,n){var r=n(43)(n(16),"WeakMap");e.exports=r},function(e,t,n){var r=n(16).Uint8Array;e.exports=r},function(e,t,n){var r=n(125);e.exports=function(e,t){var n=t?r(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}},function(e,t,n){var r=n(89),i=n(124),o=n(69);e.exports=function(e){return"function"!=typeof e.constructor||o(e)?{}:r(i(e))}},function(e,t,n){"use strict";(function(e){var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(4)),o=r(n(5)),a=r(n(6)),l=r(n(1)),c=r(n(58)),s=r(n(471)),d=r(n(472)),u=r(n(473)),A=r(n(95)),h=r(n(3)),g=r(n(258)),F=r(n(22)),Q=r(n(107)),p=r(n(145)),m=r(n(146)),U=r(n(565)),b=r(n(586)),Z=r(n(7)),B=r(n(272)),f=r(n(273)),R=r(n(589));const I=(0,F.default)().hasAudioOutputApiSupport,y=Q.default.getCurrentAudioOutputDeviceId;function V(e,t){const n=(0,f.default)();return(0,d.default)(n),n.innerHTML=e,!0===t&&(n.muted="true"),n}function C(){const e=V("");return e.setAttribute("style","display:none"),e}var W=function(t){void 0===t&&(t={});const n=t.audioContext||(0,p.default)(),r=t.canBeOrientatedMixin||U.default,d=t.document||(void 0!==typeof window?window:global).document,F=t.listenForTracksEnded||(0,b.default)(),Q=t.logging||l.default,f=t.OTHelpers||Z.default,W=t.videoElementErrorMap||(0,B.default)(),E=t.WebaudioAudioLevelSampler||m.default,v=t.global||(void 0!==typeof window?window:global);let S=1;return function(){function t(e,t){var n=this;let l=e._inject,s=void 0===l?{}:l,d=s.createVideoElement,u=void 0===d?V:d,A=s.createAudioOnlyVideoElement,F=void 0===A?C:A,p=e.muted,m=e.fallbackText,U=e.widgetType;this._domElement=void 0,this._domAudioOnlyVideoElement=void 0,this._blockedVolume=void 0,this._mediaStoppedListener=void 0,this._audioLevelSampler=void 0,this._playInterrupts=0,this._isVideoLoadedMetaData=!1,this._audioOnlyVideoElementWatcher=void 0,this._blinkStartTime=null,this.logging=Q("NativeVideoElementWrapper:"+S),S+=1,(0,a.default)(this),this._defaultAudioVolume=t,this._widgetType=U,this._emitVideoPlayAttempt=()=>{this._blinkStartTime=(new Date).getTime(),this.trigger("amrLogEvent","AMRTransitionVideo","Attempt")},this._emitVideoPlaySuccess=()=>{const e=(new Date).getTime()-this._blinkStartTime;this.trigger("amrLogEvent","AMRTransitionVideo","Success",{attemptDuration:e}),this._blinkStartTime=null},this._emitVideoPlayFailure=()=>{this.trigger("amrLogEvent","AMRTransitionVideo","Failure")};let b=!1;this._domElement=u(m,p),this.trigger("videoElementCreated",this._domElement),this._domElementEvents=(0,c.default)(this._domElement),this._domElementEvents.on("loadstart",()=>this._onDomElementLoadStart()),this._domElementEvents.on("timeupdate",(function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return n.trigger("timeupdate",...t)})),this._domElementEvents.on("loadedmetadata",(0,o.default)(i.default.mark((function e(){var t,r,o,a,l=arguments;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(n._isVideoLoadedMetaData=!0,t=l.length,r=new Array(t),o=0;o<t;o++)r[o]=l[o];if(n.trigger("loadedmetadata",...r),!n._domAudioOnlyVideoElement){e.next=10;break}if(a=n._domAudioOnlyVideoElement.srcObject,n._removeAudioOnlyVideoElement(),!a){e.next=10;break}return e.next=9,(0,g.default)();case 9:n.play();case 10:case"end":return e.stop()}}),e)}))));this._domElementEvents.on("error",e=>{this.trigger("error",W(e.target.error))},!1),this._domElementEvents.on("pause",()=>{b||(this.logging.warn("Video element paused, auto-resuming. If you intended to do this, use publishVideo(false) or subscribeToVideo(false) instead."),b=!0),this.play()}),this.on("destroyed",()=>{this._domElementEvents.removeAll(),this._domAudioOnlyVideoElementEvents&&this._domAudioOnlyVideoElementEvents.removeAll()}),r(this,()=>this._domElement),h.default.isSafari&&"subscriber"===this._widgetType&&(this._domAudioOnlyVideoElement=F(),this._bindAudioOnlyVideoElementEvents()),null!=h.default&&h.default.isDev&&(0,R.default)(this._domAudioOnlyVideoElement||this._domElement,e=>{this.trigger("mediaElementEvent",e)})}var l=t.prototype;return l._onDomElementLoadStart=function(){var e=(0,o.default)(i.default.mark((function e(){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("subscriber"!==this._widgetType||!I()){e.next=3;break}return e.next=3,this._setActiveAudioOutputDevice();case 3:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),l._setActiveAudioOutputDevice=function(){var e=(0,o.default)(i.default.mark((function e(){var t;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(""!==(t=y())&&"default"!==t){e.next=3;break}return e.abrupt("return");case 3:return e.next=5,this.setSinkId(t);case 5:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),l._rebindSrcObject=function(){this._domElement&&(this._domElement.srcObject=this._domElement.srcObject)},l._pauseAndPlay=function(){this._domElement&&(this._domElement.pause(),this._domElement.play())},l._startAudioOnlyVideoElementWatcher=function(){var e=(0,o.default)(i.default.mark((function e(){var t;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return 1e3,t=h.default.isiOS,this._audioOnlyVideoElementWatcher&&clearInterval(this._audioOnlyVideoElementWatcher),this._audioOnlyVideoElementWatcher=setInterval(()=>{this._domAudioOnlyVideoElement&&this._domAudioOnlyVideoElement.paused&&(this._domAudioOnlyVideoElement.srcObject=this._domAudioOnlyVideoElement.srcObject,t&&this._domAudioOnlyVideoElement.play())},100),e.next=6,(0,A.default)(1e3);case 6:clearInterval(this._audioOnlyVideoElementWatcher),this._audioOnlyVideoElementWatcher=null;case 8:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),l._removeAudioOnlyVideoElement=function(){var e=(0,o.default)(i.default.mark((function e(){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this._domAudioOnlyVideoElement.srcObject=null,this._domAudioOnlyVideoElement.parentNode.removeChild(this._domAudioOnlyVideoElement),this._domAudioOnlyVideoElementEvents&&this._domAudioOnlyVideoElementEvents.removeAll(),this._domAudioOnlyVideoElement=null;case 4:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),l.bindAudioTrackOnly=function(){var e=(0,o.default)(i.default.mark((function e(){var t,n,r,o,a,l,c;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=this._stream.getVideoTracks(),n=this._stream.getAudioTracks(),r=t[0],o=void 0===r?{}:r,a=n[0],l=void 0===a?{}:a,e.next=6,(0,g.default)();case 6:c=!o.enabled&&l.enabled,!this._isVideoLoadedMetaData&&c&&this._domAudioOnlyVideoElement&&(this._domAudioOnlyVideoElement.srcObject=new v.MediaStream(n),this._startAudioOnlyVideoElementWatcher());case 8:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),l._bindAudioOnlyVideoElementEvents=function(){var e=this;this._domAudioOnlyVideoElementEvents=(0,c.default)(this._domAudioOnlyVideoElement),this._domAudioOnlyVideoElementEvents.on("pause",()=>this.play()),this._domAudioOnlyVideoElementEvents.on("timeupdate",(function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return e.trigger("timeupdate",...n)})),this._domAudioOnlyVideoElementEvents.on("loadedmetadata",(function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return e.trigger("loadedmetadata",...n)}))},l.whenTimeIncrements=function(e,t){this.once("timeupdate",()=>{e.call(t,this)})},l.domElement=function(){return this._domElement},l.videoWidth=function(){return this._domElement?Number(this._domElement["video"+(this.isRotated()?"Height":"Width")]):0},l.videoHeight=function(){return this._domElement?Number(this._domElement["video"+(this.isRotated()?"Width":"Height")]):0},l.aspectRatio=function(){return this.videoWidth()/this.videoHeight()},l.imgData=function(){const e=f.createElement("canvas",{width:this.videoWidth(),height:this.videoHeight(),style:{display:"none"}});d.body.appendChild(e);let t=null;try{e.getContext("2d").drawImage(this._domElement,0,0,e.width,e.height),t=e.toDataURL("image/png")}catch(e){}return f.removeElement(e),null===t||"data:,"===t?(this.logging.warn("Cannot get image data yet"),null):t.replace("data:image/png;base64,","").trim()},l.appendTo=function(e){return e.appendChild(this._domElement),this._domAudioOnlyVideoElement&&e.appendChild(this._domAudioOnlyVideoElement),this},l.isAudioBlocked=function(){return void 0!==this._blockedVolume},l.unblockAudio=function(){var e=(0,o.default)(i.default.mark((function e(){var t;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.isAudioBlocked()){e.next=3;break}return this.logging.warn("Unexpected call to unblockAudio() without blocked audio"),e.abrupt("return");case 3:return t=this._blockedVolume,this._blockedVolume=void 0,this.setAudioVolume(t),e.prev=6,e.next=9,this.play();case 9:e.next=16;break;case 11:throw e.prev=11,e.t0=e.catch(6),this._blockedVolume=t,this._domElement.muted=!0,e.t0;case 16:this.trigger("audioUnblocked");case 17:case"end":return e.stop()}}),e,this,[[6,11]])})));return function(){return e.apply(this,arguments)}}(),l.rebind=function(){var e=(0,o.default)(i.default.mark((function e(){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._domElement){e.next=2;break}throw new Error("Can't rebind because _domElement no longer exists");case 2:this._playInterrupts++,this._domElement.srcObject=this._domElement.srcObject,this._hasAudioOnlyVideoElement()&&(this._domAudioOnlyVideoElement.srcObject=this._domAudioOnlyVideoElement.srcObject);case 5:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),l._createAudioLevelSampler=function(){if(this._removeAudioLevelSampler(),this._stream.getAudioTracks().length>0){try{this._audioContext=n()}catch(e){this.logging.warn("Failed to get AudioContext(), audio level visualisation will not work",e)}this._audioContext&&(this._audioLevelSampler=new E(this._audioContext),this._audioLevelSampler.webRTCStream(this._stream))}},l._removeAudioLevelSampler=function(){this._audioContext&&(delete this._audioContext,delete this._audioLevelSampler)},l._toggleVideoTracks=function(){var e=(0,o.default)(i.default.mark((function e(){var t,n;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this._domElement.srcObject.getTracks().filter(e=>e.enabled),!(t.length>1)){e.next=8;break}return(n=t.filter(e=>"video"===e.kind)).forEach(e=>{e.enabled=!1}),e.next=7,(0,g.default)();case 7:n.forEach(e=>{e.enabled=!0});case 8:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),l._hasAudioOnlyVideoElement=function(){return this._domAudioOnlyVideoElement&&this._domAudioOnlyVideoElement.srcObject},l.play=function(){var e=(0,o.default)(i.default.mark((function e(){var t,n,r,o,a,l,c,s,d,A,F;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this._playInterrupts,n=this._hasAudioOnlyVideoElement()?this._domAudioOnlyVideoElement:this._domElement,!h.default.isSafari){e.next=5;break}return e.next=5,(0,g.default)();case 5:if(!h.default.isiOS||!h.default.isSafari){e.next=15;break}if("publisher"!==this._widgetType){e.next=14;break}if(r=h.default.iOSVersion>=14&&h.default.iOSVersion<=14.2,o=this._stream.getVideoTracks(),a=o[0],l=void 0===a?{}:a,c=this._stream.getAudioTracks(),s=c[0],d=void 0===s?{}:s,!r||(0,u.default)(n)||!l.enabled){e.next=12;break}return e.abrupt("return");case 12:if(!d.muted){e.next=14;break}return e.abrupt("return");case 14:this._toggleVideoTracks();case 15:return e.prev=15,this._emitVideoPlayAttempt(),e.next=19,n.play();case 19:return this._emitVideoPlaySuccess(),e.abrupt("return");case 23:if(e.prev=23,e.t0=e.catch(15),this._emitVideoPlayFailure(),A=e.t0||{},F=A.name,"AbortError"===F&&this._playInterrupts++,!(this._playInterrupts>t)){e.next=33;break}return e.next=32,this.play();case 32:return e.abrupt("return");case 33:throw e.t0;case 34:case"end":return e.stop()}}),e,this,[[15,23]])})));return function(){return e.apply(this,arguments)}}(),l._bindToStream=function(e){this._stream=e,this._domElement.srcObject=e,this._domAudioOnlyVideoElement&&this.bindAudioTrackOnly()},l.bindToStream=function(){var e=(0,o.default)(i.default.mark((function e(t){var n,r,a,l=this;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._domElement){e.next=2;break}throw new Error("Can't bind because _domElement no longer exists");case 2:return this._bindToStream(t),(0,o.default)(i.default.mark((function e(){var n;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,l.play();case 3:e.next=26;break;case 5:if(e.prev=5,e.t0=e.catch(0),n=!!t.getAudioTracks().length,!l._hasAudioOnlyVideoElement()||"NotAllowedError"!==e.t0.name){e.next=15;break}return l._domAudioOnlyVideoElement.muted=!0,e.next=12,l.play();case 12:l._domAudioOnlyVideoElement.muted=!1,e.next=26;break;case 15:if(!n){e.next=23;break}return l._blockedVolume=l.getAudioVolume(),l._domElement.muted=!0,e.next=20,l.play();case 20:l.trigger("audioBlocked"),e.next=26;break;case 23:return l._domElement.muted=!0,e.next=26,l.play();case 26:case"end":return e.stop()}}),e,null,[[0,5]])})))().catch(e=>{this.logging.debug(".play() failed: ",e)}),n={width:this._domElement.videoWidth,height:this._domElement.videoHeight},this.trigger("videoDimensionsChanged",Object.assign({},n),Object.assign({},n)),this._domElementEvents.on("resize",()=>{const e=this._domElement,t=e.videoWidth,r=e.videoHeight,i=t!==n.width,o=r!==n.height;(i||o)&&(this.trigger("videoDimensionsChanged",Object.assign({},n),{width:t,height:r}),n.width=t,n.height=r)}),r=()=>{try{this._mediaStoppedListener.stop()}catch(e){return}this._domElement&&(this._domElement.onended=null),this.trigger("mediaStopped")},a=e=>{this.trigger("mediaStopped",e)},this._domElement.onended=()=>r(),this._mediaStoppedListener=F(t,r,a),this._createAudioLevelSampler(),e.abrupt("return",void 0);case 13:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),l.unbindStream=function(){return this._domElement&&(this._domElement.srcObject=null),this._domAudioOnlyVideoElement&&(this._domAudioOnlyVideoElement.srcObject=null),this._removeAudioLevelSampler(),this},l.setAudioVolume=function(e){if(this.isAudioBlocked())return void(this._blockedVolume=e);const t=parseFloat(e)/100,n=[this.domElement()];this._domAudioOnlyVideoElement&&n.push(this._domAudioOnlyVideoElement),n.forEach(e=>{e&&(e.volume=t,e.muted=0===t)})},l.getAudioVolume=function(){if(this.isAudioBlocked())return this._blockedVolume;const e=this.domElement();return e?e.muted?0:100*e.volume:this._defaultAudioVolume},l.audioChannelType=function(e){const t=this.domElement();return void 0!==e&&(t.mozAudioChannelType=e),"mozAudioChannelType"in this._domElement?t.mozAudioChannelType:"unknown"},l.getAudioInputLevel=function(){return this._audioLevelSampler.sample()},l.refreshTracks=function(){this._mediaStoppedListener&&this._mediaStoppedListener.refresh(),this._createAudioLevelSampler()},l.destroy=function(){this._mediaStoppedListener&&this._mediaStoppedListener.stop(),this.logging.debug("removing domElementEvents"),this._domElementEvents.removeAll(),this._domAudioOnlyVideoElementEvents&&this._domAudioOnlyVideoElementEvents.removeAll(),this._audioOnlyVideoElementWatcher&&clearInterval(this._audioOnlyVideoElementWatcher),this.unbindStream(),this._domElement&&(f.removeElement(this._domElement),this._domElement=null),this._domAudioOnlyVideoElement&&(f.removeElement(this._domAudioOnlyVideoElement),this._domAudioOnlyVideoElement=null),this.trigger("destroyed"),(0,s.default)("NativeVideoElementWrapper",this)},l.setSinkId=function(t){const n=[this._domElement,this._domAudioOnlyVideoElement].map(e=>{if(e)return e.setSinkId(t)});return e.all(n)},t}()};t.default=W}).call(this,n(2))},function(e,t,n){var r=n(90),i=n(128);e.exports=function(e){return r((function(t,n){var r=-1,o=n.length,a=o>1?n[o-1]:void 0,l=o>2?n[2]:void 0;for(a=e.length>3&&"function"==typeof a?(o--,a):void 0,l&&i(n[0],n[1],l)&&(a=o<3?void 0:a,o=1),t=Object(t);++r<o;){var c=n[r];c&&e(t,c,r,a)}return t}))}},function(e,t,n){var r=n(126),i=Math.max;e.exports=function(e,t,n){return t=i(void 0===t?e.length-1:t,0),function(){for(var o=arguments,a=-1,l=i(o.length-t,0),c=Array(l);++a<l;)c[a]=o[t+a];a=-1;for(var s=Array(t+1);++a<t;)s[a]=o[a];return s[t]=n(c),r(e,this,s)}}},function(e,t){var n=Date.now;e.exports=function(e){var t=0,r=0;return function(){var i=n(),o=16-(i-r);if(r=i,o>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}},function(e,t,n){"use strict";e.exports=n(422)()?WeakMap:n(423)},function(e,t,n){"use strict";var r=Object.create,i=Object.getPrototypeOf,o={};e.exports=function(){var e=Object.setPrototypeOf,t=arguments[0]||r;return"function"==typeof e&&i(e(t(null),o))===o}},function(e,t,n){"use strict";var r,i=n(212),o=n(35),a=Object.prototype.isPrototypeOf,l=Object.defineProperty,c={configurable:!0,enumerable:!1,writable:!0,value:void 0};r=function(e,t){if(o(e),null===t||i(t))return e;throw new TypeError("Prototype must be null or an object")},e.exports=function(e){var t,n;return e?(2===e.level?e.set?(n=e.set,t=function(e,t){return n.call(r(e,t),t),e}):t=function(e,t){return r(e,t).__proto__=t,e}:t=function e(t,n){var i;return r(t,n),(i=a.call(e.nullPolyfill,t))&&delete e.nullPolyfill.__proto__,null===n&&(n=e.nullPolyfill),t.__proto__=n,i&&l(e.nullPolyfill,"__proto__",c),t},Object.defineProperty(t,"level",{configurable:!1,enumerable:!1,writable:!1,value:e.level})):null}(function(){var e,t=Object.create(null),n={},r=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__");if(r){try{(e=r.set).call(t,n)}catch(e){}if(Object.getPrototypeOf(t)===n)return{set:e,level:2}}return t.__proto__=n,Object.getPrototypeOf(t)===n?{level:2}:((t={}).__proto__=n,Object.getPrototypeOf(t)===n&&{level:1})}()),n(425)},function(e,t,n){"use strict";var r=n(47),i={function:!0,object:!0};e.exports=function(e){return r(e)&&i[typeof e]||!1}},function(e,t,n){"use strict";var r=n(428),i=/^\s*class[\s{/}]/,o=Function.prototype.toString;e.exports=function(e){return!!r(e)&&!i.test(o.call(e))}},function(e,t,n){"use strict";var r=n(47),i=Array.prototype.forEach,o=Object.create,a=function(e,t){var n;for(n in e)t[n]=e[n]};e.exports=function(e){var t=o(null);return i.call(arguments,(function(e){r(e)&&a(Object(e),t)})),t}},function(e,t,n){"use strict";e.exports=n(435)()?String.prototype.contains:n(436)},function(e,t,n){"use strict";var r=n(92),i=n(93),o=n(437),a=n(466),l=n(467),c=n(48).iterator;e.exports=function(e){return"function"==typeof l(e)[c]?e[c]():r(e)?new o(e):i(e)?new a(e):new o(e)}},function(e,t,n){"use strict";var r=n(442);e.exports=function(e){if(!r(e))throw new TypeError(e+" is not a symbol");return e}},function(e,t,n){"use strict";var r,i=n(446),o=n(133),a=n(70),l=n(35),c=n(36),s=n(447),d=n(48),u=Object.defineProperty,A=Object.defineProperties;e.exports=r=function(e,t){if(!(this instanceof r))throw new TypeError("Constructor requires 'new'");A(this,{__list__:c("w",l(e)),__context__:c("w",t),__nextIndex__:c("w",0)}),t&&(a(t.on),t.on("_add",this._onAdd),t.on("_delete",this._onDelete),t.on("_clear",this._onClear))},delete r.prototype.constructor,A(r.prototype,o({_next:c((function(){var e;if(this.__list__)return this.__redo__&&void 0!==(e=this.__redo__.shift())?e:this.__nextIndex__<this.__list__.length?this.__nextIndex__++:void this._unBind()})),next:c((function(){return this._createResult(this._next())})),_createResult:c((function(e){return void 0===e?{done:!0,value:void 0}:{done:!1,value:this._resolve(e)}})),_resolve:c((function(e){return this.__list__[e]})),_unBind:c((function(){this.__list__=null,delete this.__redo__,this.__context__&&(this.__context__.off("_add",this._onAdd),this.__context__.off("_delete",this._onDelete),this.__context__.off("_clear",this._onClear),this.__context__=null)})),toString:c((function(){return"[object "+(this[d.toStringTag]||"Object")+"]"}))},s({_onAdd:c((function(e){e>=this.__nextIndex__||(++this.__nextIndex__,this.__redo__?(this.__redo__.forEach((function(t,n){t>=e&&(this.__redo__[n]=++t)}),this),this.__redo__.push(e)):u(this,"__redo__",c("c",[e])))})),_onDelete:c((function(e){var t;e>=this.__nextIndex__||(--this.__nextIndex__,this.__redo__&&(-1!==(t=this.__redo__.indexOf(e))&&this.__redo__.splice(t,1),this.__redo__.forEach((function(t,n){t>e&&(this.__redo__[n]=--t)}),this)))})),_onClear:c((function(){this.__redo__&&i.call(this.__redo__),this.__nextIndex__=0}))}))),u(r.prototype,d.iterator,c((function(){return this})))},function(e,t,n){"use strict";var r=n(57),i=n(132),o=n(449),a=n(450),l=function(e,t){return e.replace("%v",a(t))};e.exports=function(e,t,n){if(!i(n))throw new TypeError(l(t,e));if(!r(e)){if("default"in n)return n.default;if(n.isOptional)return null}var a=o(n.errorMessage);throw r(a)||(a=t),new TypeError(l(a,e))}},function(e,t,n){e.exports=n(477)},function(e,t,n){"use strict";e.exports=function(e,t){return function(){return e.apply(t,arguments)}}},function(e,t,n){"use strict";var r=n(13),i=n(223);function o(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}e.exports=function(e,t,n){if(!t)return e;var a=e.indexOf("#");-1!==a&&(e=e.slice(0,a));var l,c=n&&n.encode||o,s=n&&n.serialize;return(l=s?s(t,n):r.isURLSearchParams(t)?t.toString():new i(t,n).toString(c))&&(e+=(-1===e.indexOf("?")?"?":"&")+l),e}},function(e,t,n){"use strict";var r=n(96);function i(e){var t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'\(\)~]|%20|%00/g,(function(e){return t[e]}))}function o(e,t){this._pairs=[],e&&r(e,this,t)}var a=o.prototype;a.append=function(e,t){this._pairs.push([e,t])},a.toString=function(e){var t=e?function(t){return e.call(this,t,i)}:i;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")},e.exports=o},function(e,t,n){"use strict";
27
+ const Dn={};{const e=Dn;e[5120]=Int8Array,e[5121]=Uint8Array,e[5122]=Int16Array,e[5123]=Uint16Array,e[5124]=Int32Array,e[5125]=Uint32Array,e[5126]=Float32Array,e[32819]=Uint16Array,e[32820]=Uint16Array,e[33635]=Uint16Array,e[5131]=Uint16Array,e[33640]=Uint32Array,e[35899]=Uint32Array,e[35902]=Uint32Array,e[36269]=Uint32Array,e[34042]=Uint32Array}function xn(e){if(e instanceof Int8Array)return 5120;if(e instanceof Uint8Array||e instanceof Uint8ClampedArray)return 5121;if(e instanceof Int16Array)return 5122;if(e instanceof Uint16Array)return 5123;if(e instanceof Int32Array)return 5124;if(e instanceof Uint32Array)return 5125;if(e instanceof Float32Array)return 5126;throw new Error("unsupported typed array type")}function Mn(e){if(e===Int8Array)return 5120;if(e===Uint8Array||e===Uint8ClampedArray)return 5121;if(e===Int16Array)return 5122;if(e===Uint16Array)return 5123;if(e===Int32Array)return 5124;if(e===Uint32Array)return 5125;if(e===Float32Array)return 5126;throw new Error("unsupported typed array type")}function Hn(e){const t=Dn[e];if(!t)throw new Error("unknown gl type");return t}const Kn=typeof SharedArrayBuffer<"u"?function(e){return e&&e.buffer&&(e.buffer instanceof ArrayBuffer||e.buffer instanceof SharedArrayBuffer)}:function(e){return e&&e.buffer&&e.buffer instanceof ArrayBuffer};function Ln(){console.error(...arguments)}const zn=new Map;function On(e,t){if(!e||"object"!=typeof e)return!1;let n=zn.get(t);n||(n=new WeakMap,zn.set(t,n));let r=n.get(e);if(void 0===r){const i=Object.prototype.toString.call(e);r=i.substring(8,i.length-1)===t,n.set(e,r)}return r}function jn(e,t){return typeof WebGLTexture<"u"&&On(t,"WebGLTexture")}const Pn=34962,_n="";function qn(e,t,n,r){if(function(e,t){return typeof WebGLBuffer<"u"&&On(t,"WebGLBuffer")}(0,t))return t;n=n||Pn;const i=e.createBuffer();return function(e,t,n,r,i){e.bindBuffer(t,n),e.bufferData(t,r,i||35044)}(e,n,i,t,r),i}function $n(e){return"indices"===e}const er=/coord|texture/i,tr=/color|colour/i;function nr(e,t,n){return e.numComponents||e.size||function(e,t){let n;if(n=er.test(e)?2:tr.test(e)?4:3,t%n>0)throw new Error(`Can not guess numComponents for attribute '${e}'. Tried ${n} but ${t} values is not evenly divisible by ${n}. You should specify it.`);return n}(t,n||function(e){return e.length?e:e.data}(e).length)}function rr(e,t){if(Kn(e))return e;if(Kn(e.data))return e.data;Array.isArray(e)&&(e={data:e});let n=e.type?or(e.type):void 0;return n||(n=$n(t)?Uint16Array:Float32Array),new n(e.data)}function ir(e){return"number"==typeof e?e:e?Mn(e):5126}function or(e){return"number"==typeof e?Hn(e):e||Float32Array}function ar(e,t){return{buffer:t.buffer,numValues:24,type:ir(t.type),arrayType:or(t.type)}}function lr(e,t){const n=t.data||t,r=or(t.type),i=n*r.BYTES_PER_ELEMENT,o=e.createBuffer();return e.bindBuffer(Pn,o),e.bufferData(Pn,i,t.drawType||35044),{buffer:o,numValues:n,type:Mn(r),arrayType:r}}function cr(e,t,n){const r=rr(t,n);return{arrayType:r.constructor,buffer:qn(e,r,void 0,t.drawType),type:xn(r),numValues:0}}function sr(e,t){const n={};return Object.keys(t).forEach((function(r){if(!$n(r)){const i=t[r],o=i.attrib||i.name||i.attribName||_n+r;if(i.value){if(!Array.isArray(i.value)&&!Kn(i.value))throw new Error("array.value is not array or typedarray");n[o]={value:i.value}}else{let t;t=i.buffer&&i.buffer instanceof WebGLBuffer?ar:"number"==typeof i||"number"==typeof i.data?lr:cr;const a=t(e,i,r),l=a.buffer,c=a.type,s=a.numValues,d=a.arrayType,u=void 0!==i.normalize?i.normalize:function(e){return e===Int8Array||e===Uint8Array}(d),A=nr(i,r,s);n[o]={buffer:l,numComponents:A,type:c,normalize:u,stride:i.stride||0,offset:i.offset||0,divisor:void 0===i.divisor?void 0:i.divisor,drawType:i.drawType}}}})),e.bindBuffer(Pn,null),n}const dr=["position","positions","a_position"];function ur(e,t,n){const r=sr(e,t),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);const o=t.indices;if(o){const t=rr(o,"indices");i.indices=qn(e,t,34963),i.numElements=t.length,i.elementType=xn(t)}else i.numElements||(i.numElements=function(e,t){let n,r;for(r=0;r<dr.length&&(n=dr[r],!(n in t)&&(n=_n+n,!(n in t)));++r);r===dr.length&&(n=Object.keys(t)[0]);const i=t[n];if(!i.buffer)return 1;e.bindBuffer(Pn,i.buffer);const o=e.getBufferParameter(Pn,34660);e.bindBuffer(Pn,null);const a=o/function(e,t){return 5120===t||5121===t?1:5122===t||5123===t?2:5124===t||5125===t||5126===t?4:0}(0,i.type),l=i.numComponents||i.size,c=a/l;if(c%1!=0)throw new Error(`numComponents ${l} not correct for length ${length}`);return c}(e,i.attribs));return i}function Ar(e){return!!e.texStorage2D}const hr=function(){const e={},t={};return function(n,r){return function(n){const r=n.constructor.name;if(!e[r]){for(const e in n)if("number"==typeof n[e]){const r=t[n[e]];t[n[e]]=r?`${r} | ${e}`:e}e[r]=!0}}(n),t[r]||("number"==typeof r?"0x"+r.toString(16):r)}}(),gr={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},Fr=Kn,Qr=function(){let e;return function(){return e=e||(typeof document<"u"&&document.createElement?document.createElement("canvas").getContext("2d"):null),e}}(),pr=6407,mr=6408,Ur=6402,br=33071,Zr=3553,Br=34067,fr=32879,Rr=35866,Ir=10242,yr=10243,Vr=5120,Cr=5121,Wr=5123,Er=5125,vr=5126,Sr=5131,Jr=36193,Gr=33319,Nr=33320,Xr=6403,kr=36244,Tr=36248,Yr=36249;{const e={};e[6406]={numColorComponents:1},e[6409]={numColorComponents:1},e[6410]={numColorComponents:2},e[pr]={numColorComponents:3},e[mr]={numColorComponents:4},e[Xr]={numColorComponents:1},e[kr]={numColorComponents:1},e[Gr]={numColorComponents:2},e[Nr]={numColorComponents:2},e[pr]={numColorComponents:3},e[Tr]={numColorComponents:3},e[mr]={numColorComponents:4},e[Yr]={numColorComponents:4},e[Ur]={numColorComponents:1},e[34041]={numColorComponents:2}}let wr;function Dr(e){if(!wr){const e={};e[6406]={textureFormat:6406,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[Cr,Sr,Jr,vr]},e[6409]={textureFormat:6409,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[Cr,Sr,Jr,vr]},e[6410]={textureFormat:6410,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[Cr,Sr,Jr,vr]},e[pr]={textureFormat:pr,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[Cr,Sr,Jr,vr,33635]},e[mr]={textureFormat:mr,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[Cr,Sr,Jr,vr,32819,32820]},e[Ur]={textureFormat:Ur,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Er,Wr]},e[33321]={textureFormat:Xr,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[Cr]},e[36756]={textureFormat:Xr,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[Vr]},e[33325]={textureFormat:Xr,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[vr,Sr]},e[33326]={textureFormat:Xr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[vr]},e[33330]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[Cr]},e[33329]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[Vr]},e[33332]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Wr]},e[33331]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[5122]},e[33334]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Er]},e[33333]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[5124]},e[33323]={textureFormat:Gr,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[Cr]},e[36757]={textureFormat:Gr,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[Vr]},e[33327]={textureFormat:Gr,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[vr,Sr]},e[33328]={textureFormat:Gr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[vr]},e[33336]={textureFormat:Nr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Cr]},e[33335]={textureFormat:Nr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Vr]},e[33338]={textureFormat:Nr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Wr]},e[33337]={textureFormat:Nr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[5122]},e[33340]={textureFormat:Nr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Er]},e[33339]={textureFormat:Nr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[5124]},e[32849]={textureFormat:pr,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[Cr]},e[35905]={textureFormat:pr,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[Cr]},e[36194]={textureFormat:pr,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[Cr,33635]},e[36758]={textureFormat:pr,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[Vr]},e[35898]={textureFormat:pr,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[vr,Sr,35899]},e[35901]={textureFormat:pr,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[vr,Sr,35902]},e[34843]={textureFormat:pr,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[vr,Sr]},e[34837]={textureFormat:pr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[vr]},e[36221]={textureFormat:Tr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[Cr]},e[36239]={textureFormat:Tr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[Vr]},e[36215]={textureFormat:Tr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[Wr]},e[36233]={textureFormat:Tr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[5122]},e[36209]={textureFormat:Tr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Er]},e[36227]={textureFormat:Tr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[5124]},e[32856]={textureFormat:mr,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Cr]},e[35907]={textureFormat:mr,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Cr]},e[36759]={textureFormat:mr,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[Vr]},e[32855]={textureFormat:mr,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[Cr,32820,33640]},e[32854]={textureFormat:mr,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[Cr,32819]},e[32857]={textureFormat:mr,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[33640]},e[34842]={textureFormat:mr,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[vr,Sr]},e[34836]={textureFormat:mr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[vr]},e[36220]={textureFormat:Yr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Cr]},e[36238]={textureFormat:Yr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Vr]},e[36975]={textureFormat:Yr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[33640]},e[36214]={textureFormat:Yr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Wr]},e[36232]={textureFormat:Yr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[5122]},e[36226]={textureFormat:Yr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[5124]},e[36208]={textureFormat:Yr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[Er]},e[33189]={textureFormat:Ur,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Wr,Er]},e[33190]={textureFormat:Ur,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Er]},e[36012]={textureFormat:Ur,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[vr]},e[35056]={textureFormat:34041,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[34042]},e[36013]={textureFormat:34041,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[36269]},Object.keys(e).forEach((function(t){const n=e[t];n.bytesPerElementMap={},n.bytesPerElement.forEach((function(e,t){const r=n.type[t];n.bytesPerElementMap[r]=e}))})),wr=e}return wr[e]}function xr(e){const t=Dr(e);if(!t)throw"unknown internal format";return{format:t.textureFormat,type:t.type[0]}}function Mr(e){return 0==(e&e-1)}function Hr(e,t,n,r,i){if(i%1!=0)throw"can't guess dimensions";if(n||r){if(r){if(!n&&(n=i/r)%1)throw"can't guess dimensions"}else if((r=i/n)%1)throw"can't guess dimensions"}else{const e=Math.sqrt(i/(t===Br?6:1));e%1==0?(n=e,r=e):(n=i,r=1)}return{width:n,height:r}}function Kr(e,t){void 0!==t.colorspaceConversion&&e.pixelStorei(37443,t.colorspaceConversion),void 0!==t.premultiplyAlpha&&e.pixelStorei(37441,t.premultiplyAlpha),void 0!==t.flipY&&e.pixelStorei(37440,t.flipY)}function Lr(e){e.pixelStorei(3317,4),Ar(e)&&(e.pixelStorei(3314,0),e.pixelStorei(32878,0),e.pixelStorei(3316,0),e.pixelStorei(3315,0),e.pixelStorei(32877,0))}function zr(e,t,n,r){r.minMag&&(n.call(e,t,10241,r.minMag),n.call(e,t,10240,r.minMag)),r.min&&n.call(e,t,10241,r.min),r.mag&&n.call(e,t,10240,r.mag),r.wrap&&(n.call(e,t,Ir,r.wrap),n.call(e,t,yr,r.wrap),(t===fr||function(e,t){return typeof WebGLSampler<"u"&&On(t,"WebGLSampler")}(0,t))&&n.call(e,t,32882,r.wrap)),r.wrapR&&n.call(e,t,32882,r.wrapR),r.wrapS&&n.call(e,t,Ir,r.wrapS),r.wrapT&&n.call(e,t,yr,r.wrapT),void 0!==r.minLod&&n.call(e,t,33082,r.minLod),void 0!==r.maxLod&&n.call(e,t,33083,r.maxLod),void 0!==r.baseLevel&&n.call(e,t,33084,r.baseLevel),void 0!==r.maxLevel&&n.call(e,t,33085,r.maxLevel),void 0!==r.compareFunc&&n.call(e,t,34893,r.compareFunc),void 0!==r.compareMode&&n.call(e,t,34892,r.compareMode)}function Or(e,t,n){const r=n.target||Zr;e.bindTexture(r,t),zr(e,r,e.texParameteri,n)}function jr(e,t,n,r,i,o){o=o||mr;const a=(n=n||gr.textureOptions).target||Zr;if(r=r||n.width,i=i||n.height,e.bindTexture(a,t),function(e,t,n,r){if(!Ar(e))return Mr(t)&&Mr(n);const i=Dr(r);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}(e,r,i,o))e.generateMipmap(a);else{const t=function(e){const t=Dr(e);if(!t)throw"unknown internal format";return t.textureFilterable}(o)?9729:9728;e.texParameteri(a,10241,t),e.texParameteri(a,10240,t),e.texParameteri(a,Ir,br),e.texParameteri(a,yr,br)}}function Pr(e){return!0===e.auto||void 0===e.auto&&void 0===e.level}function _r(e,t){return(t=t||{}).cubeFaceOrder||[34069,34070,34071,34072,34073,34074]}function qr(e,t){const n=_r(0,t).map((function(e,t){return{face:e,ndx:t}}));return n.sort((function(e,t){return e.face-t.face})),n}function $r(e,t,n,r){const i=(r=r||gr.textureOptions).target||Zr,o=r.level||0;let a=n.width,l=n.height;const c=r.internalFormat||r.format||mr,s=xr(c),d=r.format||s.format,u=r.type||s.type;if(Kr(e,r),e.bindTexture(i,t),i===Br){const s=n.width,A=n.height;let h,g;if(s/6===A)h=A,g=[0,0,1,0,2,0,3,0,4,0,5,0];else if(A/6===s)h=s,g=[0,0,0,1,0,2,0,3,0,4,0,5];else if(s/3==A/2)h=s/3,g=[0,0,1,0,2,0,0,1,1,1,2,1];else{if(s/2!=A/3)throw"can't figure out cube map from element: "+(n.src?n.src:n.nodeName);h=s/2,g=[0,0,1,0,0,1,1,1,0,2,1,2]}const F=Qr();F?(F.canvas.width=h,F.canvas.height=h,a=h,l=h,qr(0,r).forEach((function(t){const r=g[2*t.ndx+0]*h,i=g[2*t.ndx+1]*h;F.drawImage(n,r,i,h,h,0,0,h,h),e.texImage2D(t.face,o,c,d,u,F.canvas)})),F.canvas.width=1,F.canvas.height=1):typeof createImageBitmap<"u"&&(a=h,l=h,qr(0,r).forEach((function(s){const A=g[2*s.ndx+0]*h,F=g[2*s.ndx+1]*h;e.texImage2D(s.face,o,c,h,h,0,d,u,null),createImageBitmap(n,A,F,h,h,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then((function(n){Kr(e,r),e.bindTexture(i,t),e.texImage2D(s.face,o,c,d,u,n),Pr(r)&&jr(e,t,r,a,l,c)}))})))}else if(i===fr||i===Rr){const t=Math.min(n.width,n.height),r=Math.max(n.width,n.height),a=r/t;if(a%1!=0)throw"can not compute 3D dimensions of element";const l=n.width===r?1:0,s=n.height===r?1:0;e.pixelStorei(3317,1),e.pixelStorei(3314,n.width),e.pixelStorei(32878,0),e.pixelStorei(32877,0),e.texImage3D(i,o,c,t,t,t,0,d,u,null);for(let r=0;r<a;++r){const a=r*t*l,c=r*t*s;e.pixelStorei(3316,a),e.pixelStorei(3315,c),e.texSubImage3D(i,o,0,0,r,t,t,1,d,u,n)}Lr(e)}else e.texImage2D(i,o,c,d,u,n);Pr(r)&&jr(e,t,r,a,l,c),Or(e,t,r)}function ei(){}function ti(e,t){return void 0!==t||function(e){if(typeof document<"u"){const t=document.createElement("a");return t.href=e,t.hostname===location.hostname&&t.port===location.port&&t.protocol===location.protocol}{const t=new URL(location.href).origin;return new URL(e,location.href).origin===t}}(e)?t:"anonymous"}function ni(e){return typeof ImageBitmap<"u"&&e instanceof ImageBitmap||typeof ImageData<"u"&&e instanceof ImageData||typeof HTMLElement<"u"&&e instanceof HTMLElement}function ri(e,t,n){return ni(e)?(setTimeout((function(){n(null,e)})),e):function(e,t,n){let r;if(n=n||ei,t=ti(e,t=void 0!==t?t:gr.crossOrigin),typeof Image<"u"){r=new Image,void 0!==t&&(r.crossOrigin=t);const i=function(){r.removeEventListener("error",o),r.removeEventListener("load",a),r=null},o=function(){const t="couldn't load image: "+e;Ln(t),n(t,r),i()},a=function(){n(null,r),i()};return r.addEventListener("error",o),r.addEventListener("load",a),r.src=e,r}if(typeof ImageBitmap<"u"){let i,o;const a=function(){n(i,o)},l={};t&&(l.mode="cors"),fetch(e,l).then((function(e){if(!e.ok)throw e;return e.blob()})).then((function(e){return createImageBitmap(e,{premultiplyAlpha:"none",colorSpaceConversion:"none"})})).then((function(e){o=e,setTimeout(a)})).catch((function(e){i=e,setTimeout(a)})),r=null}return r}(e,t,n)}function ii(e,t,n){const r=(n=n||gr.textureOptions).target||Zr;if(e.bindTexture(r,t),!1===n.color)return;const i=function(e){return Fr(e=e||gr.textureColor)?e:new Uint8Array([255*e[0],255*e[1],255*e[2],255*e[3]])}(n.color);if(r===Br)for(let t=0;t<6;++t)e.texImage2D(34069+t,0,mr,1,1,0,mr,Cr,i);else r===fr||r===Rr?e.texImage3D(r,0,mr,1,1,1,0,mr,Cr,i):e.texImage2D(r,0,mr,1,1,0,mr,Cr,i)}function oi(e,t,n,r){r=r||ei;const i=n.src;if(6!==i.length)throw"there must be 6 urls for a cubemap";const o=n.level||0,a=n.internalFormat||n.format||mr,l=xr(a),c=n.format||l.format,s=n.type||Cr,d=n.target||Zr;if(d!==Br)throw"target must be TEXTURE_CUBE_MAP";ii(e,t,n),n=Object.assign({},n);let u=6;const A=[],h=_r(0,n);let g;g=i.map((function(i,l){return ri(i,n.crossOrigin,function(i){return function(l,h){--u,l?A.push(l):h.width!==h.height?A.push("cubemap face img is not a square: "+h.src):(Kr(e,n),e.bindTexture(d,t),5===u?_r().forEach((function(t){e.texImage2D(t,o,a,c,s,h)})):e.texImage2D(i,o,a,c,s,h),Pr(n)&&e.generateMipmap(d)),0===u&&r(A.length?A:void 0,t,g)}}(h[l]))}))}function ai(e,t,n,r){r=r||ei;const i=n.src,o=n.internalFormat||n.format||mr,a=xr(o),l=n.format||a.format,c=n.type||Cr,s=n.target||Rr;if(s!==fr&&s!==Rr)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";ii(e,t,n),n=Object.assign({},n);let d=i.length;const u=[];let A;const h=n.level||0;let g=n.width,F=n.height;const Q=i.length;let p=!0;A=i.map((function(i,a){return ri(i,n.crossOrigin,function(i){return function(a,m){if(--d,a)u.push(a);else{if(Kr(e,n),e.bindTexture(s,t),p){p=!1,g=n.width||m.width,F=n.height||m.height,e.texImage3D(s,h,o,g,F,Q,0,l,c,null);for(let t=0;t<Q;++t)e.texSubImage3D(s,h,0,0,t,g,F,1,l,c,m)}else{let t,n=m;(m.width!==g||m.height!==F)&&(t=Qr(),n=t.canvas,t.canvas.width=g,t.canvas.height=F,t.drawImage(m,0,0,g,F)),e.texSubImage3D(s,h,0,0,i,g,F,1,l,c,n),t&&n===t.canvas&&(t.canvas.width=0,t.canvas.height=0)}Pr(n)&&e.generateMipmap(s)}0===d&&r(u.length?u:void 0,t,A)}}(a))}))}function li(e,t,n,r){const i=(r=r||gr.textureOptions).target||Zr;e.bindTexture(i,t);let o=r.width,a=r.height,l=r.depth;const c=r.level||0,s=r.internalFormat||r.format||mr,d=xr(s),u=r.format||d.format,A=r.type||function(e,t,n){return Fr(t)?xn(t):n||Cr}(0,n,d.type);if(Fr(n))n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer));else{const e=Hn(A);n=new e(n)}const h=function(e,t){const n=Dr(e);if(!n)throw"unknown internal format";const r=n.bytesPerElementMap[t];if(void 0===r)throw"unknown internal format";return r}(s,A),g=n.byteLength/h;if(g%1)throw"length wrong size for format: "+hr(e,u);let F;if(i===fr||i===Rr)if(o||a||l)!o||a&&l?!a||o&&l?(F=Hr(0,i,o,a,g/l),o=F.width,a=F.height):(F=Hr(0,i,o,l,g/a),o=F.width,l=F.height):(F=Hr(0,i,a,l,g/o),a=F.width,l=F.height);else{const e=Math.cbrt(g);if(e%1!=0)throw"can't guess cube size of array of numElements: "+g;o=e,a=e,l=e}else F=Hr(0,i,o,a,g),o=F.width,a=F.height;if(Lr(e),e.pixelStorei(3317,r.unpackAlignment||1),Kr(e,r),i===Br){const t=g/6*(h/n.BYTES_PER_ELEMENT);qr(0,r).forEach(r=>{const i=t*r.ndx,l=n.subarray(i,i+t);e.texImage2D(r.face,c,s,o,a,0,u,A,l)})}else i===fr||i===Rr?e.texImage3D(i,c,s,o,a,l,0,u,A,n):e.texImage2D(i,c,s,o,a,0,u,A,n);return{width:o,height:a,depth:l,type:A}}function ci(e,t,n){n=n||ei,t=t||gr.textureOptions;const r=e.createTexture(),i=t.target||Zr;let o=t.width||1,a=t.height||1;const l=t.internalFormat||mr;e.bindTexture(i,r),i===Br&&(e.texParameteri(i,Ir,br),e.texParameteri(i,yr,br));let c=t.src;if(c)if("function"==typeof c&&(c=c(e,t)),"string"==typeof c)!function(e,t,n,r){r=r||ei,ii(e,t,n=n||gr.textureOptions),ri((n=Object.assign({},n)).src,n.crossOrigin,(function(i,o){i?r(i,t,o):($r(e,t,o,n),r(null,t,o))}))}(e,r,t,n);else if(Fr(c)||Array.isArray(c)&&("number"==typeof c[0]||Array.isArray(c[0])||Fr(c[0]))){const n=li(e,r,c,t);o=n.width,a=n.height}else Array.isArray(c)&&("string"==typeof c[0]||ni(c[0]))?i===Br?oi(e,r,t,n):ai(e,r,t,n):($r(e,r,c,t),o=c.width,a=c.height);else!function(e,t,n){const r=n.target||Zr;e.bindTexture(r,t);const i=n.level||0,o=n.internalFormat||n.format||mr,a=xr(o),l=n.format||a.format,c=n.type||a.type;if(Kr(e,n),r===Br)for(let t=0;t<6;++t)e.texImage2D(34069+t,i,o,n.width,n.height,0,l,c,null);else r===fr||r===Rr?e.texImage3D(r,i,o,n.width,n.height,n.depth,0,l,c,null):e.texImage2D(r,i,o,n.width,n.height,0,l,c,null)}(e,r,t);return Pr(t)&&jr(e,r,t,o,a,l),Or(e,r,t),r}const si=Ln;function di(e){return typeof document<"u"&&document.getElementById?document.getElementById(e):null}const ui=33984,Ai=34962,hi=34067,gi=35866,Fi={};function Qi(e,t){return Fi[t].bindPoint}function pi(e,t){return function(n){e.uniform1i(t,n)}}function mi(e,t){return function(n){e.uniform1iv(t,n)}}function Ui(e,t){return function(n){e.uniform2iv(t,n)}}function bi(e,t){return function(n){e.uniform3iv(t,n)}}function Zi(e,t){return function(n){e.uniform4iv(t,n)}}function Bi(e,t,n,r){const i=Qi(0,t);return Ar(e)?function(t){let o,a;!t||jn(0,t)?(o=t,a=null):(o=t.texture,a=t.sampler),e.uniform1i(r,n),e.activeTexture(ui+n),e.bindTexture(i,o),e.bindSampler(n,a)}:function(t){e.uniform1i(r,n),e.activeTexture(ui+n),e.bindTexture(i,t)}}function fi(e,t,n,r,i){const o=Qi(0,t),a=new Int32Array(i);for(let e=0;e<i;++e)a[e]=n+e;return Ar(e)?function(t){e.uniform1iv(r,a),t.forEach((function(t,r){let i,l;e.activeTexture(ui+a[r]),!t||jn(0,t)?(i=t,l=null):(i=t.texture,l=t.sampler),e.bindSampler(n,l),e.bindTexture(o,i)}))}:function(t){e.uniform1iv(r,a),t.forEach((function(t,n){e.activeTexture(ui+a[n]),e.bindTexture(o,t)}))}}function Ri(e,t){return function(n){if(n.value)switch(e.disableVertexAttribArray(t),n.value.length){case 4:e.vertexAttrib4fv(t,n.value);break;case 3:e.vertexAttrib3fv(t,n.value);break;case 2:e.vertexAttrib2fv(t,n.value);break;case 1:e.vertexAttrib1fv(t,n.value);break;default:throw new Error("the length of a float constant value must be between 1 and 4!")}else e.bindBuffer(Ai,n.buffer),e.enableVertexAttribArray(t),e.vertexAttribPointer(t,n.numComponents||n.size,n.type||5126,n.normalize||!1,n.stride||0,n.offset||0),e.vertexAttribDivisor&&e.vertexAttribDivisor(t,n.divisor||0)}}function Ii(e,t){return function(n){if(n.value){if(e.disableVertexAttribArray(t),4!==n.value.length)throw new Error("The length of an integer constant value must be 4!");e.vertexAttrib4iv(t,n.value)}else e.bindBuffer(Ai,n.buffer),e.enableVertexAttribArray(t),e.vertexAttribIPointer(t,n.numComponents||n.size,n.type||5124,n.stride||0,n.offset||0),e.vertexAttribDivisor&&e.vertexAttribDivisor(t,n.divisor||0)}}function yi(e,t){return function(n){if(n.value){if(e.disableVertexAttribArray(t),4!==n.value.length)throw new Error("The length of an unsigned integer constant value must be 4!");e.vertexAttrib4uiv(t,n.value)}else e.bindBuffer(Ai,n.buffer),e.enableVertexAttribArray(t),e.vertexAttribIPointer(t,n.numComponents||n.size,n.type||5125,n.stride||0,n.offset||0),e.vertexAttribDivisor&&e.vertexAttribDivisor(t,n.divisor||0)}}function Vi(e,t,n){const r=n.size,i=n.count;return function(n){e.bindBuffer(Ai,n.buffer);const o=n.size||n.numComponents||r,a=o/i,l=n.type||5126,c=Fi[l].size*o,s=n.normalize||!1,d=n.offset||0,u=c/i;for(let r=0;r<i;++r)e.enableVertexAttribArray(t+r),e.vertexAttribPointer(t+r,a,l,s,c,d+u*r),e.vertexAttribDivisor&&e.vertexAttribDivisor(t+r,n.divisor||0)}}Fi[5126]={Type:Float32Array,size:4,setter:function(e,t){return function(n){e.uniform1f(t,n)}},arraySetter:function(e,t){return function(n){e.uniform1fv(t,n)}}},Fi[35664]={Type:Float32Array,size:8,setter:function(e,t){return function(n){e.uniform2fv(t,n)}},cols:2},Fi[35665]={Type:Float32Array,size:12,setter:function(e,t){return function(n){e.uniform3fv(t,n)}},cols:3},Fi[35666]={Type:Float32Array,size:16,setter:function(e,t){return function(n){e.uniform4fv(t,n)}},cols:4},Fi[5124]={Type:Int32Array,size:4,setter:pi,arraySetter:mi},Fi[35667]={Type:Int32Array,size:8,setter:Ui,cols:2},Fi[35668]={Type:Int32Array,size:12,setter:bi,cols:3},Fi[35669]={Type:Int32Array,size:16,setter:Zi,cols:4},Fi[5125]={Type:Uint32Array,size:4,setter:function(e,t){return function(n){e.uniform1ui(t,n)}},arraySetter:function(e,t){return function(n){e.uniform1uiv(t,n)}}},Fi[36294]={Type:Uint32Array,size:8,setter:function(e,t){return function(n){e.uniform2uiv(t,n)}},cols:2},Fi[36295]={Type:Uint32Array,size:12,setter:function(e,t){return function(n){e.uniform3uiv(t,n)}},cols:3},Fi[36296]={Type:Uint32Array,size:16,setter:function(e,t){return function(n){e.uniform4uiv(t,n)}},cols:4},Fi[35670]={Type:Uint32Array,size:4,setter:pi,arraySetter:mi},Fi[35671]={Type:Uint32Array,size:8,setter:Ui,cols:2},Fi[35672]={Type:Uint32Array,size:12,setter:bi,cols:3},Fi[35673]={Type:Uint32Array,size:16,setter:Zi,cols:4},Fi[35674]={Type:Float32Array,size:32,setter:function(e,t){return function(n){e.uniformMatrix2fv(t,!1,n)}},rows:2,cols:2},Fi[35675]={Type:Float32Array,size:48,setter:function(e,t){return function(n){e.uniformMatrix3fv(t,!1,n)}},rows:3,cols:3},Fi[35676]={Type:Float32Array,size:64,setter:function(e,t){return function(n){e.uniformMatrix4fv(t,!1,n)}},rows:4,cols:4},Fi[35685]={Type:Float32Array,size:32,setter:function(e,t){return function(n){e.uniformMatrix2x3fv(t,!1,n)}},rows:2,cols:3},Fi[35686]={Type:Float32Array,size:32,setter:function(e,t){return function(n){e.uniformMatrix2x4fv(t,!1,n)}},rows:2,cols:4},Fi[35687]={Type:Float32Array,size:48,setter:function(e,t){return function(n){e.uniformMatrix3x2fv(t,!1,n)}},rows:3,cols:2},Fi[35688]={Type:Float32Array,size:48,setter:function(e,t){return function(n){e.uniformMatrix3x4fv(t,!1,n)}},rows:3,cols:4},Fi[35689]={Type:Float32Array,size:64,setter:function(e,t){return function(n){e.uniformMatrix4x2fv(t,!1,n)}},rows:4,cols:2},Fi[35690]={Type:Float32Array,size:64,setter:function(e,t){return function(n){e.uniformMatrix4x3fv(t,!1,n)}},rows:4,cols:3},Fi[35678]={Type:null,size:0,setter:Bi,arraySetter:fi,bindPoint:3553},Fi[35680]={Type:null,size:0,setter:Bi,arraySetter:fi,bindPoint:hi},Fi[35679]={Type:null,size:0,setter:Bi,arraySetter:fi,bindPoint:32879},Fi[35682]={Type:null,size:0,setter:Bi,arraySetter:fi,bindPoint:3553},Fi[36289]={Type:null,size:0,setter:Bi,arraySetter:fi,bindPoint:gi},Fi[36292]={Type:null,size:0,setter:Bi,arraySetter:fi,bindPoint:gi},Fi[36293]={Type:null,size:0,setter:Bi,arraySetter:fi,bindPoint:hi},Fi[36298]={Type:null,size:0,setter:Bi,arraySetter:fi,bindPoint:3553},Fi[36299]={Type:null,size:0,setter:Bi,arraySetter:fi,bindPoint:32879},Fi[36300]={Type:null,size:0,setter:Bi,arraySetter:fi,bindPoint:hi},Fi[36303]={Type:null,size:0,setter:Bi,arraySetter:fi,bindPoint:gi},Fi[36306]={Type:null,size:0,setter:Bi,arraySetter:fi,bindPoint:3553},Fi[36307]={Type:null,size:0,setter:Bi,arraySetter:fi,bindPoint:32879},Fi[36308]={Type:null,size:0,setter:Bi,arraySetter:fi,bindPoint:hi},Fi[36311]={Type:null,size:0,setter:Bi,arraySetter:fi,bindPoint:gi};const Ci={};Ci[5126]={size:4,setter:Ri},Ci[35664]={size:8,setter:Ri},Ci[35665]={size:12,setter:Ri},Ci[35666]={size:16,setter:Ri},Ci[5124]={size:4,setter:Ii},Ci[35667]={size:8,setter:Ii},Ci[35668]={size:12,setter:Ii},Ci[35669]={size:16,setter:Ii},Ci[5125]={size:4,setter:yi},Ci[36294]={size:8,setter:yi},Ci[36295]={size:12,setter:yi},Ci[36296]={size:16,setter:yi},Ci[35670]={size:4,setter:Ii},Ci[35671]={size:8,setter:Ii},Ci[35672]={size:12,setter:Ii},Ci[35673]={size:16,setter:Ii},Ci[35674]={size:4,setter:Vi,count:2},Ci[35675]={size:9,setter:Vi,count:3},Ci[35676]={size:16,setter:Vi,count:4};const Wi=/ERROR:\s*\d+:(\d+)/gi;const Ei=/^[ \t]*\n/;function vi(e){let t=0;return Ei.test(e)&&(t=1,e=e.replace(Ei,"")),{lineOffset:t,shaderSource:e}}function Si(e,t,n,r){if(r=r||si,!e.getShaderParameter(n,35713)){const i=e.getShaderInfoLog(n),o=vi(e.getShaderSource(n)),a=o.lineOffset,l=`${function(e,t,n){void 0===t&&(t=""),void 0===n&&(n=0);const r=[...t.matchAll(Wi)],i=new Map(r.map((e,n)=>{const i=parseInt(e[1]),o=r[n+1],a=o?o.index:t.length;return[i-1,t.substring(e.index,a)]}));return e.split("\n").map((e,t)=>{const r=i.get(t);return`${t+1+n}: ${e}${r?"\n\n^^^ "+r:""}`}).join("\n")}(o.shaderSource,i,a)}\nError compiling ${hr(e,t)}: ${i}`;return r(l),l}return""}function Ji(e,t,n){let r,i,o;if("function"==typeof t&&(n=t,t=void 0),"function"==typeof e)n=e,e=void 0;else if(e&&!Array.isArray(e)){const t=e;n=t.errorCallback,e=t.attribLocations,r=t.transformFeedbackVaryings,i=t.transformFeedbackMode,o=t.callback}const a=n||si,l=[],c={errorCallback(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];l.push(e),a(e,...n)},transformFeedbackVaryings:r,transformFeedbackMode:i,callback:o,errors:l};{let n={};Array.isArray(e)?e.forEach((function(e,r){n[e]=t?t[r]:r})):n=e||{},c.attribLocations=n}return c}const Gi=["VERTEX_SHADER","FRAGMENT_SHADER"];function Ni(e,t){return t.indexOf("frag")>=0?35632:t.indexOf("vert")>=0?35633:void 0}const Xi=function(t){return void 0===t&&(t=0),new e(e=>setTimeout(e,t))};function ki(e,t,n,r,i){const o=Ji(n,r,i),a=new Set(t),l=function(e,t,n){const r=e.createProgram(),i=Ji(n),o=i.attribLocations,a=i.transformFeedbackVaryings,l=i.transformFeedbackMode;for(let n=0;n<t.length;++n){let i=t[n];if("string"==typeof i){const t=di(i),o=t?t.text:i;let a=e[Gi[n]];t&&t.type&&(a=Ni(0,t.type)||a),i=e.createShader(a),e.shaderSource(i,vi(o).shaderSource),e.compileShader(i),e.attachShader(r,i)}}Object.entries(o).forEach(t=>{let n=t[0],i=t[1];return e.bindAttribLocation(r,i,n)});{let t=a;t&&(t.attribs&&(t=t.attribs),Array.isArray(t)||(t=Object.keys(t)),e.transformFeedbackVaryings(r,t,l||35981))}return e.linkProgram(r),r}(e,t,o);function c(e,t){const n=function(e,t,n){if(n=n||si,!e.getProgramParameter(t,35714)){const r=e.getProgramInfoLog(t);n("Error in program linking: "+r);const i=e.getAttachedShaders(t).map(t=>Si(e,e.getShaderParameter(t,e.SHADER_TYPE),t,n));return`${r}\n${i.filter(e=>e).join("\n")}`}}(e,t,o.errorCallback);return n&&function(e,t,n){for(var r,i=A(e.getAttachedShaders(t));!(r=i()).done;){const t=r.value;n.has(t)&&e.deleteShader(t)}e.deleteProgram(t)}(e,t,a),n}if(!o.callback)return c(e,l)?void 0:l;(function(e,t){return Ti.apply(this,arguments)})(e,l).then(()=>{const t=c(e,l);o.callback(t,t?void 0:l)})}function Ti(){return(Ti=(0,c.default)(o.default.mark((function e(t,n){var r,i,a;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=t.getExtension("KHR_parallel_shader_compile"),i=r?(e,t)=>e.getProgramParameter(t,r.COMPLETION_STATUS_KHR):()=>!0,a=0;case 2:return e.next=4,Xi(a);case 4:a=1e3/60;case 5:if(!i(t,n)){e.next=2;break}case 6:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Yi(e){const t=e.name;return t.startsWith("gl_")||t.startsWith("webgl_")}const wi=/(\.|\[|]|\w+)/g,Di=e=>e>="0"&&e<="9";function xi(e,t,n,r){const i=e.split(wi).filter(e=>""!==e);let o=0,a="";for(;;){const e=i[o++];a+=e;const l=Di(e[0]),c=l?parseInt(e):e;if(l&&(a+=i[o++]),o===i.length){n[c]=t;break}{const e=i[o++],t="["===e,l=n[c]||(t?[]:{});n[c]=l,n=l,r[a]=r[a]||function(e){return function(t){Mi(e,t)}}(l),a+=e}}}function Mi(e,t){for(const n in t){const r=e[n];"function"==typeof r?r(t[n]):Mi(e[n],t[n])}}function Hi(e,t){const n=function(e,t){let n=0;function r(t,r,i){const o=r.name.endsWith("[0]"),a=r.type,l=Fi[a];if(!l)throw new Error("unknown type: 0x"+a.toString(16));let c;if(l.bindPoint){const t=n;n+=r.size,c=o?l.arraySetter(e,a,t,i,r.size):l.setter(e,a,t,i,r.size)}else c=l.arraySetter&&o?l.arraySetter(e,i):l.setter(e,i);return c.location=i,c}const i={},o={},a=e.getProgramParameter(t,35718);for(let n=0;n<a;++n){const a=e.getActiveUniform(t,n);if(Yi(a))continue;let l=a.name;l.endsWith("[0]")&&(l=l.substr(0,l.length-3));const c=e.getUniformLocation(t,a.name);if(c){const e=r(0,a,c);i[l]=e,xi(l,e,o,i)}}return i}(e,t),r=function(e,t){const n={},r=e.getProgramParameter(t,35721);for(let i=0;i<r;++i){const r=e.getActiveAttrib(t,i);if(Yi(r))continue;const o=e.getAttribLocation(t,r.name),a=Ci[r.type],l=a.setter(e,o,a);l.location=o,n[r.name]=l}return n}(e,t),i={program:t,uniformSetters:n,attribSetters:r};return Ar(e)&&(i.uniformBlockSpec=function(e,t){const n=e.getProgramParameter(t,35718),r=[],i=[];for(let o=0;o<n;++o){i.push(o),r.push({});const n=e.getActiveUniform(t,o);r[o].name=n.name}[["UNIFORM_TYPE","type"],["UNIFORM_SIZE","size"],["UNIFORM_BLOCK_INDEX","blockNdx"],["UNIFORM_OFFSET","offset"]].forEach((function(n){const o=n[0],a=n[1];e.getActiveUniforms(t,i,e[o]).forEach((function(e,t){r[t][a]=e}))}));const o={},a=e.getProgramParameter(t,35382);for(let n=0;n<a;++n){const r=e.getActiveUniformBlockName(t,n),i={index:e.getUniformBlockIndex(t,r),usedByVertexShader:e.getActiveUniformBlockParameter(t,n,35396),usedByFragmentShader:e.getActiveUniformBlockParameter(t,n,35398),size:e.getActiveUniformBlockParameter(t,n,35392),uniformIndices:e.getActiveUniformBlockParameter(t,n,35395)};i.used=i.usedByVertexShader||i.usedByFragmentShader,o[r]=i}return{blockSpecs:o,uniformData:r}}(e,t),i.transformFeedbackInfo=function(e,t){const n={},r=e.getProgramParameter(t,35971);for(let i=0;i<r;++i){const r=e.getTransformFeedbackVarying(t,i);n[r.name]={index:i,type:r.type,size:r.size}}return n}(e,t)),i}const Ki=/\s|{|}|;/;function Li(e,t,n,r,i){const o=Ji(n,r,i),a=[];if(t=t.map((function(e){if(!Ki.test(e)){const t=di(e);if(t)e=t.text;else{const t="no element with id: "+e;o.errorCallback(t),a.push(t)}}return e})),a.length)return function(e,t){return e.errorCallback(t),e.callback&&setTimeout(()=>{e.callback(`${t}\n${e.errors.join("\n")}`)}),null}(o,"");const l=o.callback;l&&(o.callback=(t,n)=>{l(t,t?void 0:Hi(e,n))});const c=function(e,t,n,r,i){return ki(e,t,n,r,i)}(e,t,o);return c?Hi(e,c):null}const zi=36161,Oi=36096,ji=[{format:6408,type:5121,min:9729,wrap:33071},{format:34041}],Pi={};Pi[34041]=33306,Pi[6401]=36128,Pi[36168]=36128,Pi[6402]=Oi,Pi[33189]=Oi,Pi[33190]=Oi,Pi[36012]=Oi,Pi[35056]=33306,Pi[36013]=33306;const _i={};_i[32854]=!0,_i[32855]=!0,_i[36194]=!0,_i[34041]=!0,_i[33189]=!0,_i[6401]=!0,_i[36168]=!0;function qi(e,t,n,r){const i=36160,o=e.createFramebuffer();e.bindFramebuffer(i,o),n=n||e.drawingBufferWidth,r=r||e.drawingBufferHeight;const a=[],l={framebuffer:o,attachments:[],width:n,height:r};return(t=t||ji).forEach((function(t,o){let c=t.attachment;const s=t.samples,d=t.format;let u=t.attachmentPoint||function(e,t){return Pi[e]||Pi[t]}(d,t.internalFormat);if(u||(u=36064+o),function(e){return e>=36064&&e<36096}(u)&&a.push(u),!c)if(void 0!==s||function(e){return _i[e]}(d))c=e.createRenderbuffer(),e.bindRenderbuffer(zi,c),s>1?e.renderbufferStorageMultisample(zi,s,d,n,r):e.renderbufferStorage(zi,d,n,r);else{const i=Object.assign({},t);i.width=n,i.height=r,void 0===i.auto&&(i.auto=!1,i.min=i.min||i.minMag||9729,i.mag=i.mag||i.minMag||9729,i.wrapS=i.wrapS||i.wrap||33071,i.wrapT=i.wrapT||i.wrap||33071),c=ci(e,i)}if(function(e,t){return typeof WebGLRenderbuffer<"u"&&On(t,"WebGLRenderbuffer")}(0,c))e.framebufferRenderbuffer(i,u,zi,c);else{if(!jn(0,c))throw new Error("unknown attachment type");void 0!==t.layer?e.framebufferTextureLayer(i,u,c,t.level||0,t.layer):e.framebufferTexture2D(i,u,t.target||3553,c,t.level||0)}l.attachments.push(c)})),e.drawBuffers&&e.drawBuffers(a),l}function $i(e,t){return()=>t instanceof WebGLTexture?t:ci(e,{src:t,wrap:e.CLAMP_TO_EDGE})}let eo=function(){function e(e){this.id="_";const t=e.context,n=e.width,r=e.height;this.context=t,this.options=e;const i=this.buildDefines();this.programInfo=Li(this.context,[i+this.getVertexShader(),i+this.getFragmentShader()]),this.bufferInfo=ur(this.context,this.getBuffers()),this.fbi=qi(this.context,[{format:this.context.RGBA,type:this.context.UNSIGNED_BYTE,min:this.context.LINEAR,wrap:this.context.CLAMP_TO_EDGE}],n,r),this.output=this.fbi.attachments[0]}var t=e.prototype;return t.resizeOutput=function(e,t){this.fbi=qi(this.context,[{format:this.context.RGBA,type:this.context.UNSIGNED_BYTE,min:this.context.LINEAR,wrap:this.context.CLAMP_TO_EDGE}],e,t),this.options.width=e,this.options.height=t,this.output=this.fbi.attachments[0]},t.getDefines=function(){return{}},t.getBuffers=function(){return{position:{numComponents:2,data:[-1,-1,-1,1,1,-1,1,1,-1,1,1,-1]},texture_coord:{numComponents:2,data:[0,0,0,1,1,0,1,1,0,1,1,0]}}},t.buildDefines=function(){let e="";const t=this.getDefines();for(let n in t)e+=`#define ${n} ${t[n].toFixed(1)}\n`;return e},t.run=function(e){var t,n,r,i,o,a;null==(t=this.profiler)||t.pushContext(`[${this.id}] PROG : ${this.constructor.name}`),null==(n=this.profiler)||n.pushContext(`[${this.id}] UNIFORMS`);for(const t in e)"function"==typeof e[t]&&(null==(r=this.profiler)||r.pushContext(`[${this.id}] UNI : ${t}`),e[t]=e[t](),null==(i=this.profiler)||i.popContext(`[${this.id}] UNI : ${t}`));null==(o=this.profiler)||o.popContext(`[${this.id}] UNIFORMS`);const l=Date.now();let c=0;this.lastRun&&(c=(l-this.lastRun)/1e3),this.lastRun=l,this.context.viewport(0,0,this.context.canvas.width,this.context.canvas.height),this.context.useProgram(this.programInfo.program),function(e,t,n){n.vertexArrayObject?e.bindVertexArray(n.vertexArrayObject):(function(e,t){for(const n in t){const r=e[n];r&&r(t[n])}}(t.attribSetters||t,n.attribs),n.indices&&e.bindBuffer(34963,n.indices))}(this.context,this.programInfo,this.bufferInfo),function e(t){const n=t.uniformSetters||t,r=arguments.length<=1?0:arguments.length-1;for(let t=0;t<r;++t){const r=t+1<1||arguments.length<=t+1?void 0:arguments[t+1];if(Array.isArray(r)){const t=r.length;for(let i=0;i<t;++i)e(n,r[i])}else for(const e in r){const t=n[e];t&&t(r[e])}}}(this.programInfo,Object.assign({delta:c,canvas:[this.context.canvas.width,this.context.canvas.height]},e)),function(e,t,n){n=n||36160,t?(e.bindFramebuffer(n,t.framebuffer),e.viewport(0,0,t.width,t.height)):(e.bindFramebuffer(n,null),e.viewport(0,0,e.drawingBufferWidth,e.drawingBufferHeight))}(this.context,this.options.disableFramebuffer?null:this.fbi),function(e,t,n,r,i,o){n=void 0===n?4:n;const a=t.indices,l=t.elementType,c=void 0===r?t.numElements:r;i=void 0===i?0:i,l||a?void 0!==o?e.drawElementsInstanced(n,c,void 0===l?5123:t.elementType,i,o):e.drawElements(n,c,void 0===l?5123:t.elementType,i):void 0!==o?e.drawArraysInstanced(n,i,c,o):e.drawArrays(n,i,c)}(this.context,this.bufferInfo),null==(a=this.profiler)||a.popContext(`[${this.id}] PROG : ${this.constructor.name}`)},t.setProfiler=function(e){this.profiler=e},e}();let to=function(e){function t(){return e.apply(this,arguments)||this}(0,a.default)(t,e);var n=t.prototype;return n.getFragmentShader=function(){return"precision mediump float;\n\nvarying vec2 _texture_coord;\n\nuniform sampler2D background;\nuniform sampler2D foreground;\nuniform sampler2D threshold;\n\nvoid main() {\n vec4 backgroundColor = texture2D(background, _texture_coord);\n vec4 foregroundColor = texture2D(foreground, _texture_coord);\n vec4 tresholdColor = texture2D(threshold, _texture_coord);\n gl_FragColor = foregroundColor * tresholdColor.a +\n backgroundColor * (1. - tresholdColor.a);\n}\n"},n.getVertexShader=function(){return"varying vec2 _texture_coord;\n\nattribute vec2 position;\nattribute vec2 texture_coord;\n\nvoid main() {\n gl_Position = vec4(position, 0., 1.);\n _texture_coord = texture_coord;\n _texture_coord.y = 1. - texture_coord.y;\n}\n"},t}(eo),no=function(){function e(){this.steps=[]}var t=e.prototype;return t.addStep=function(e){this.steps.push(e)},t.run=function(){var e=(0,c.default)(o.default.mark((function e(){var t,n,r;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(t=A(this.steps);!(n=t()).done;)(r=n.value).program.run(r.getUniforms());case 1:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),t.resizeOutput=function(e,t){var n,r;null==(n=this.profiler)||n.pushContext(`PIP [${this.constructor.name}]`);for(var i,o=A(this.steps);!(i=o()).done;){const n=i.value;n.preventResize||n.program.resizeOutput(e,t)}null==(r=this.profiler)||r.popContext(`PIP [${this.constructor.name}]`)},t.setProfiler=function(e){this.profiler=e;for(var t,n=A(this.steps);!(t=n()).done;){t.value.program.setProfiler(e)}},t.setId=function(e){for(var t,n=A(this.steps);!(t=n()).done;){t.value.program.id=e}},e}(),ro=function(e){function t(){var t;return(t=e.apply(this,arguments)||this).preciseMaskEnabled=!1,t}return(0,a.default)(t,e),t}(no),io=function(e){function t(t){var n;(n=e.call(this)||this).context=t,n.preciseMaskEnabled=!0;const r={context:t,height:t.canvas.height,width:t.canvas.width},i=new to(Object.assign({},r,{disableFramebuffer:!0}));return n.addStep({program:i,getUniforms:()=>({background:$i(t,n.inputBackgroundImage),foreground:$i(t,n.inputImage),threshold:$i(t,n.inputMask)})}),n}return(0,a.default)(t,e),t.prototype.setData=function(e,t){this.inputImage=e,this.inputMask=t},t}(ro);let oo=function(e){function t(){return e.apply(this,arguments)||this}(0,a.default)(t,e);var n=t.prototype;return n.getFragmentShader=function(){return"precision mediump float;\n\nvarying vec2 _texture_coord;\nuniform sampler2D texture;\n\nvoid main() { gl_FragColor = texture2D(texture, _texture_coord); }\n"},n.getVertexShader=function(){return"varying vec2 _texture_coord;\n\nattribute vec2 position;\nattribute vec2 texture_coord;\nuniform bool invert_y;\n\nvoid main() {\n gl_Position = vec4(position, 0., 1.);\n _texture_coord = texture_coord;\n if (invert_y) {\n _texture_coord.y = 1. - texture_coord.y;\n }\n}\n"},t}(eo),ao=function(e){function t(t,n,r){var i;(i=e.call(this)||this).context=t;const o={context:t,height:r,width:n};return i.addStep({program:new oo(Object.assign({},o,{disableFramebuffer:!0})),getUniforms:()=>({texture:$i(t,i.inputImage),invert_y:!0})}),i}return(0,a.default)(t,e),t.prototype.setData=function(e){this.inputImage=e},t}(no);function lo(e){return co.apply(this,arguments)}function co(){return(co=(0,c.default)(o.default.mark((function t(n){return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",new e(e=>{setTimeout(()=>{e()},n)}));case 1:case"end":return t.stop()}}),t)})))).apply(this,arguments)}var so=(e=>(e[e.LINEAR=0]="LINEAR",e[e.GAUSSIAN=1]="GAUSSIAN",e))(so||{});let uo=function(e){function t(){return e.apply(this,arguments)||this}(0,a.default)(t,e);var n=t.prototype;return n.getDefines=function(){var e;return{RADIUS:null!=(e=this.options.radius)?e:1}},n.getFragmentShader=function(){return"precision mediump float;\n\nvarying vec2 _texture_coord;\n\nuniform vec2 canvas;\nuniform sampler2D texture;\n\nvec4 loop();\n\nvoid main() { gl_FragColor = loop(); }\n"+this.createLoopFunction()},n.getVertexShader=function(){return"varying vec2 _texture_coord;\n\nattribute vec2 position;\nattribute vec2 texture_coord;\n\nvoid main() {\n gl_Position = vec4(position, 0., 1.);\n _texture_coord = texture_coord;\n}\n"},n.createLoopFunction=function(){var e;let t=null!=(e=this.options.radius)?e:1;return`\n\n vec4 loop() { \n vec4 result = vec4(0,0,0,0);\n float factorSum = 0.;\n\n vec2 normalizedRadius = vec2(-${t}.) / canvas;\n vec2 normalizedIncrement = vec2(1.) / canvas;\n vec2 diff = normalizedRadius;\n\n for(int y=-${t}; y<${t+1}; ++y) {\n for(int x=-${t}; x<${t+1}; ++x) {\n float factor = 1.;\n result += factor * texture2D(texture, _texture_coord + diff);\n factorSum += factor;\n diff.x += normalizedIncrement.x;\n }\n diff.y += normalizedIncrement.y;\n diff.x = normalizedRadius.x;\n }\n return result / factorSum;\n }`},n.getFactor=function(e,t){switch(this.options.type){case 1:return this.getLinearFactor(e,t);case 0:default:return this.getLinearFactor(e,t)}},n.getLinearFactor=function(e,t){return 1},n.getGaussianFactor=function(e,t){var n;const r=2*Math.PI,i=Math.max(null!=(n=this.options.radius)?n:1,1),o=1/(r*Math.pow(i,2)),a=o*-(Math.pow(e,2)+Math.pow(t,2));return o*Math.pow(Math.E,a)},t}(eo);let Ao=function(e){function t(){return e.apply(this,arguments)||this}(0,a.default)(t,e);var n=t.prototype;return n.getFragmentShader=function(){return"#version 300 es\n// https://github.com/Volcomix/virtual-background/blob/main/src/pipelines/webgl2/jointBilateralFilterStage.ts\n\nprecision highp float;\nuniform sampler2D input_frame;\nuniform sampler2D segmentation_mask;\nuniform sampler2D threshold;\nuniform vec2 texel_size;\nuniform float step;\nuniform float radius;\nuniform float offset;\nuniform float sigma_texel;\nuniform float sigma_color;\n\nin vec2 _texture_coord;\nout vec4 outColor;\n\nfloat gaussian(float x, float sigma) {\n float coeff = -0.5 / (sigma * sigma * 4.0 + 1.0e-6);\n return exp((x * x) * coeff);\n}\n\nvoid main() {\n vec2 centerCoord = _texture_coord;\n vec3 centerColor = texture(input_frame, centerCoord).rgb;\n float newVal = 0.0;\n float spaceWeight = 0.0;\n float colorWeight = 0.0;\n float totalWeight = 0.0;\n // Subsample kernel space.\n for (float i = -radius + offset; i <= radius; i += step) {\n for (float j = -radius + offset; j <= radius; j += step) {\n vec2 shift = vec2(j, i) * texel_size;\n vec2 coord = vec2(centerCoord + shift);\n vec3 frameColor = texture(input_frame, coord).rgb;\n float threshold = texture(threshold, coord).a;\n float outVal = texture(segmentation_mask, coord).a;\n\n spaceWeight = gaussian(distance(centerCoord, coord), sigma_texel);\n colorWeight = gaussian(distance(centerColor, frameColor), sigma_color);\n totalWeight += spaceWeight * colorWeight;\n newVal += spaceWeight * colorWeight * outVal * threshold;\n }\n }\n newVal /= totalWeight;\n outColor = vec4(vec3(0.), newVal);\n}"},n.getVertexShader=function(){return"#version 300 es\nin vec2 position;\nin vec2 texture_coord;\nout vec2 _texture_coord;\nvoid main() {\n gl_Position = vec4(position, 0.0, 1.0);\n _texture_coord = texture_coord;\n}"},t}(eo),ho=function(e){function t(t,n,r){var i;(i=e.call(this)||this).context=t;const o={context:t,height:r,width:n},a=new uo(Object.assign({},o,{radius:1,type:so.GAUSSIAN}));return i.jointBilateral=new Ao(o),i.addStep({program:a,getUniforms:()=>({inputs:$i(t,i.inputMask)})}),i.addStep({program:i.jointBilateral,getUniforms:()=>{var e,n,r,o,a,l;const c=null!=(e=null==(r=i.inputImage)?void 0:r.width)?e:1,s=null!=(n=null==(o=i.inputImage)?void 0:o.height)?n:1;null==(a=i.inputMask)||a.width,null==(l=i.inputMask)||l.height;const d=Math.max(1,.66*Math.sqrt(3)),u=1/c,A=1/s;return{input_frame:$i(t,i.inputImage),segmentation_mask:$i(t,i.inputMask),texel_size:[u,A],step:d,radius:3,offset:d>1?.5*d:0,sigma_texel:3*Math.max(u,A),sigma_color:3}}}),i.output=i.jointBilateral.output,i}(0,a.default)(t,e);var n=t.prototype;return n.setData=function(e,t){this.previousInputImage=this.inputImage?this.inputImage:e,this.previousInputMask=this.inputMask?this.inputMask:t,this.inputImage=e,this.inputMask=t},n.resizeOutput=function(t,n){e.prototype.resizeOutput.call(this,t,n),this.output=this.jointBilateral.output},t}(no);var go=(e=>(e.PUSH="PUSH",e.POP="POP",e))(go||{});let Fo=function(){function t(e){this.queries=[],this.context=e,this.extension=e.getExtension("EXT_disjoint_timer_query_webgl2")}var n=t.prototype;return n.start=function(){},n.stop=function(){this.activeQuery&&this.context.endQuery(this.extension.TIME_ELAPSED_EXT)},n.pushContext=function(e){this.createQuery("PUSH",e)},n.popContext=function(e){this.createQuery("POP",e)},n.createQuery=function(e,t){this.activeQuery&&this.context.endQuery(this.extension.TIME_ELAPSED_EXT),this.activeQuery=this.context.createQuery(),this.context.beginQuery(this.extension.TIME_ELAPSED_EXT,this.activeQuery),this.queries.push({name:t,action:e,query:this.activeQuery})},n.getResolvedQueries=function(){var t=(0,c.default)(o.default.mark((function t(){var n,r;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.all([...this.queries].map(e=>this.resolveQuery(e)));case 2:for(n=t.sent.filter(e=>e),r=1;r<n.length;++r)n[r].timestamp+=n[r-1].duration+n[r-1].timestamp;return t.abrupt("return",n);case 5:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),n.resolveQuery=function(){var e=(0,c.default)(o.default.mark((function e(t){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.awaitQueryAvailable(t);case 2:if(e.sent){e.next=5;break}return console.log("Unawaitable query",t),e.abrupt("return");case 5:if(!this.context.getParameter(this.extension.GPU_DISJOINT_EXT)){e.next=8;break}return console.log("Disjointed query",t),e.abrupt("return");case 8:return e.abrupt("return",Object.assign({},t,{duration:this.context.getQueryParameter(t.query,this.context.QUERY_RESULT),timestamp:0}));case 9:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),n.awaitQueryAvailable=function(){var e=(0,c.default)(o.default.mark((function e(t){var n;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=0;case 1:if(!(n<10)){e.next=9;break}if(!this.context.getQueryParameter(t.query,this.context.QUERY_RESULT_AVAILABLE)){e.next=4;break}return e.abrupt("return",t);case 4:return e.next=6,lo(200);case 6:++n,e.next=1;break;case 9:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),t}(),Qo=function(){function e(){this.previousImageWidth=0,this.previousImageHeight=0,this.previousMaskWidth=2,this.previousMaskHeight=2,this.postProcessingEnabled=!0;const e=new OffscreenCanvas(0,0),t=e.getContext("webgl2");if(!t)throw"Fail to retrieve webgl2 context";this.canvas=e,this.context=t,this.improveMask=new ho(this.context,2,2)}var t=e.prototype;return t.enablePostProcessing=function(){this.postProcessingEnabled=!0},t.disablePostProcessing=function(){this.postProcessingEnabled=!1},t.profileWebgl=function(){var e=(0,c.default)(o.default.mark((function e(t){var n;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=new Fo(this.context),this.profiler=n,n.start(),e.next=5,lo(t);case 5:return this.profiler=void 0,n.stop(),e.abrupt("return",n.getResolvedQueries());case 8:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),t.render=function(){var e=(0,c.default)(o.default.mark((function e(t,n){var r,i,a,l,c;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.pipeline){e.next=2;break}throw"missing pipeline";case 2:return(this.previousImageHeight!==t.height||this.previousImageWidth!==t.width)&&this.resizeOutput(t.width,t.height),(this.previousMaskHeight!==n.height||this.previousMaskWidth!==n.width)&&(this.improveMask.resizeOutput(n.width,n.height),this.previousMaskWidth=n.width,this.previousMaskHeight=n.height),a="renderer",null==(r=this.profiler)||r.pushContext(a),this.improveMask.setProfiler(this.profiler),this.pipeline.setProfiler(this.profiler),e.next=7,createImageBitmap(n);case 7:return l=e.sent,c=l,this.postProcessingEnabled&&(this.improveMask.setData(t,l),this.improveMask.run(),c=this.improveMask.output),this.pipeline.setData(t,c),e.next=13,this.pipeline.run();case 13:return null==(i=this.profiler)||i.popContext(a),e.abrupt("return",this.canvas);case 15:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),t.resizeOutput=function(e,t){var n;this.canvas.width=e,this.canvas.height=t,null==(n=this.pipeline)||n.resizeOutput(e,t),this.previousImageWidth=e,this.previousImageHeight=t},t.destroy=function(){var e;const t=null==(e=this.context)?void 0:e.getExtension("WEBGL_lose_context");t&&t.loseContext()},e}(),po=function(e){function t(){var t;(t=e.call(this)||this).pipeline=new io(t.context);const n=new OffscreenCanvas(0,0),r=n.getContext("webgl2");if(!r)throw"Fail to retrieve webgl context";return t.backgroundImageResizerCanvas=n,t.backgroundImageResizerContext=r,t.backgroundImageResizer=new ao(t.backgroundImageResizerContext,0,0),t}(0,a.default)(t,e);var n=t.prototype;return n.setBackgroundImage=function(e){this.backgroundImage=e,this.updateBackgroundImage()},n.updateBackgroundImage=function(){const e=this.canvas,t=e.width,n=e.height;this.backgroundImageResizer.resizeOutput(t,n),this.backgroundImageResizer.setData(this.backgroundImage),this.backgroundImageResizer.run(),this.pipeline.inputBackgroundImage=this.backgroundImageResizerCanvas},n.resizeOutput=function(t,n){e.prototype.resizeOutput.call(this,t,n),this.backgroundImageResizerCanvas.width=t,this.backgroundImageResizerCanvas.height=n,this.backgroundImageResizer.resizeOutput(t,n),this.updateBackgroundImage()},n.destroy=function(){var t;const n=null==(t=this.backgroundImageResizerContext)?void 0:t.getExtension("WEBGL_lose_context");n&&n.loseContext(),e.prototype.destroy.call(this)},t}(Qo),mo=function(e){function t(){return e.apply(this,arguments)||this}(0,a.default)(t,e);var n=t.prototype;return n.setBackgroundVideo=function(e){this.frameReader=e},n.render=function(){var t=(0,c.default)(o.default.mark((function t(n,r){return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.readNextVideoFrame();case 2:return t.abrupt("return",e.prototype.render.call(this,n,r));case 3:case"end":return t.stop()}}),t,this)})));return function(e,n){return t.apply(this,arguments)}}(),n.readNextVideoFrame=function(){var e=(0,c.default)(o.default.mark((function e(){var t,n,r;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,null==(t=this.frameReader)?void 0:t.read();case 2:if(null==(n=e.sent)||!n.value){e.next=8;break}return e.next=6,createImageBitmap(n.value);case 6:r=e.sent,this.setBackgroundImage(r),n.value.close();case 8:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),t}(po),Uo=function(){function e(){}var t=e.prototype;return t.blurBackground=function(e){return new Tn(e)},t.blurSilhouette=function(e){return new Yn(e)},t.imageBackground=function(){return new wn},t.videoBackground=function(){return new mo},e}();let bo=function(e){function t(){return e.apply(this,arguments)||this}(0,a.default)(t,e);var n=t.prototype;return n.getDefines=function(){var e;return{RADIUS:null!=(e=this.options.radius)?e:1}},n.getFragmentShader=function(){return"precision mediump float;\n\nvarying vec2 _texture_coord;\n\nuniform vec2 canvas;\nuniform sampler2D texture;\nuniform sampler2D mask;\n\nvec4 loop();\n\nvoid main() { gl_FragColor = loop(); }\n"+this.createLoopFunction()},n.getVertexShader=function(){return"varying vec2 _texture_coord;\n\nattribute vec2 position;\nattribute vec2 texture_coord;\n\nvoid main() {\n gl_Position = vec4(position, 0., 1.);\n _texture_coord = texture_coord;\n}\n"},n.createLoopFunction=function(){var e;let t=null!=(e=this.options.radius)?e:1;return`\n\n vec4 loop() { \n vec4 result = vec4(0,0,0,0);\n float factorSum = 0.;\n\n vec2 normalizedRadius = vec2(-${t}.) / canvas;\n vec2 normalizedIncrement = vec2(1.) / canvas;\n vec2 diff = normalizedRadius;\n float maxLength = length(normalizedRadius);\n\n for(int y=-${t}; y<${t+1}; ++y) {\n for(int x=-${t}; x<${t+1}; ++x) {\n float factor = (1.- texture2D(mask, _texture_coord + diff).a) * (maxLength - length(diff)) / maxLength;\n result += factor * texture2D(texture, _texture_coord + diff);\n factorSum += factor;\n diff.x += normalizedIncrement.x;\n }\n diff.y += normalizedIncrement.y;\n diff.x = normalizedRadius.x;\n }\n return result / factorSum;\n }`},t}(eo);let Zo=function(e){function t(t,n){var r;(r=e.call(this)||this).context=t,r.radius=n;const i={context:t,height:t.canvas.height,width:t.canvas.width};r.blur=new bo(Object.assign({},i,{radius:n},r.getBlurTextureSize(t.canvas.width,t.canvas.height)));const o=new to(Object.assign({},i,{disableFramebuffer:!0}));return r.addStep({program:r.blur,preventResize:!0,getUniforms:()=>({texture:$i(t,r.inputImage),mask:$i(t,r.inputMask)})}),r.addStep({program:o,getUniforms:()=>({background:$i(t,r.blur.output),foreground:$i(t,r.inputImage),threshold:$i(t,r.inputMask)})}),r}(0,a.default)(t,e);var n=t.prototype;return n.getBlurTextureSize=function(e,t){const n=this.radius>10?8:2;return{width:Math.max(2,e/n),height:Math.max(2,t/n)}},n.setData=function(e,t){this.inputImage=e,this.inputMask=t},n.resizeOutput=function(t,n){e.prototype.resizeOutput.call(this,t,n);const r=this.getBlurTextureSize(t,n);this.blur.resizeOutput(r.width,r.height)},t}(ro),Bo=function(e){function t(t){var n;return(n=e.call(this)||this).pipeline=new Zo(n.context,t),n.disablePostProcessing(),n}return(0,a.default)(t,e),t}(Qo),fo=function(e){function t(t,n){var r;(r=e.call(this)||this).context=t;const i={context:t,height:t.canvas.height,width:t.canvas.width},o=new uo(Object.assign({},i,{radius:n,type:so.GAUSSIAN})),a=new to(Object.assign({},i,{disableFramebuffer:!0}));return r.addStep({program:o,getUniforms:()=>({texture:$i(t,r.inputImage)})}),r.addStep({program:a,getUniforms:()=>({background:$i(t,r.inputImage),foreground:$i(t,o.output),threshold:$i(t,r.inputMask)})}),r}return(0,a.default)(t,e),t.prototype.setData=function(e,t){this.inputImage=e,this.inputMask=t},t}(ro),Ro=function(e){function t(t){var n;return(n=e.call(this)||this).pipeline=new fo(n.context,t),n.disablePostProcessing(),n}return(0,a.default)(t,e),t}(Qo),Io=function(e){function t(){var t;return(t=e.apply(this,arguments)||this).preciseMaskEnabled=!0,t}(0,a.default)(t,e);var n=t.prototype;return n.run=function(){var t=(0,c.default)(o.default.mark((function t(){return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(t.t0=this.frameReader,!t.t0){t.next=6;break}return t.next=4,this.readNextVideoFrame();case 4:return t.next=6,e.prototype.run.call(this);case 6:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),n.readNextVideoFrame=function(){var e=(0,c.default)(o.default.mark((function e(){var t,n;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,null==(t=this.frameReader)?void 0:t.read();case 2:if(n=e.sent,e.t0=null!=n&&n.value,!e.t0){e.next=9;break}return e.next=7,createImageBitmap(n.value);case 7:this.inputBackgroundImage=e.sent,n.value.close();case 9:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),(0,l.default)(t,[{key:"reader",set:function(e){this.frameReader=e}}]),t}(io),yo=function(e){function t(){var t;return(t=e.call(this)||this).pipeline=new Io(t.context),t}return(0,a.default)(t,e),t.prototype.setBackgroundVideo=function(e){this.pipeline.reader=e},t}(Qo),Vo=function(){function e(){}var t=e.prototype;return t.blurBackground=function(e){return new Bo(e)},t.blurSilhouette=function(e){return new Ro(e)},t.imageBackground=function(){return new po},t.videoBackground=function(){return new yo},e}(),Co=function(){function e(e){switch(e){case We.CANVAS:this.factory=new Uo;break;case We.WEBGL:this.factory=new Vo;break;default:const e=Ne();this.factory=e.supported?new Vo:new Uo}}var t=e.prototype;return t.blurBackground=function(e){return this.getFactory().blurBackground(e)},t.blurSilhouette=function(e){return this.getFactory().blurSilhouette(e)},t.imageBackground=function(){return this.getFactory().imageBackground()},t.videoBackground=function(){return this.getFactory().videoBackground()},t.getFactory=function(){if(!this.factory)throw"Factory is not initialized";return this.factory},e}(),Wo=function(){function e(){}var t=e.prototype;return t.setBackgroundOptions=function(e){var t,n;this.renderer&&this.renderer.destroy();const r=new Co(null==(t=e.renderingOptions)?void 0:t.type);switch(e.transformerType){case"BackgroundBlur":this.renderer=r.blurBackground(this.getBlurSize(e.radius));break;case"SilhouetteBlur":this.renderer=r.blurSilhouette(this.getBlurSize(e.radius));break;case"VideoBackground":const t=r.videoBackground();this.backgroundVideo&&t.setBackgroundVideo(this.backgroundVideo),this.renderer=t;break;case"VirtualBackground":const n=r.imageBackground();this.backgroundImage&&n.setBackgroundImage(this.backgroundImage),this.renderer=n;break;default:throw`Unknown rendering type [${e.transformerType}]`}(null==(n=e.renderingOptions)?void 0:n.type)===We.WEBGL&&(e.renderingOptions.selfieSegmentationType===Ce.PRECISE?this.renderer.enablePostProcessing():e.renderingOptions.selfieSegmentationType===Ce.FAST&&this.renderer.disablePostProcessing())},t.setVideoBGReadable=function(e){this.backgroundVideo=e.getReader();const t=this.renderer;null!=t&&t.setBackgroundVideo&&t.setBackgroundVideo(this.backgroundVideo)},t.setVirtualBGImage=function(){var e=(0,c.default)(o.default.mark((function e(t){var n;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:null!=(n=this.renderer)&&n.setBackgroundImage&&n.setBackgroundImage(t),this.backgroundImage=t;case 2:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),t.process=function(){var e=(0,c.default)(o.default.mark((function e(t,n){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.renderer){e.next=2;break}return e.abrupt("return",this.renderer.render(t,n));case 2:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),t.resizeForeground=function(){var e=(0,c.default)(o.default.mark((function e(t,n){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),t.getBlurSize=function(e){switch(void 0===e&&(e=ye.Low),e){case ye.Low:return 5;case ye.High:return 12}return e},t.profile=function(){var e=(0,c.default)(o.default.mark((function e(t){var n,r;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",null!=(n=null==(r=this.renderer)?void 0:r.profileWebgl(t))?n:[]);case 1:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),e}();let Eo=function(){function t(){this.canvas=new OffscreenCanvas(0,0),this.context=this.canvas.getContext("2d",{willReadFrequently:!0}),this.width=0,this.height=0}var r=t.prototype;return r.createImageSegmenter=function(){var e=(0,c.default)(o.default.mark((function e(){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.ImageSegmenter&&this.wasmFileset){e.next=3;break}return console.warn("Mediapipe objects not loaded"),e.abrupt("return");case 3:return e.next=5,this.ImageSegmenter.createFromOptions(this.wasmFileset,{baseOptions:{modelAssetPath:this.modelAssetUriPath,delegate:"GPU"},runningMode:"VIDEO",outputCategoryMask:!0,outputConfidenceMasks:!0});case 5:this.imageSegmenter=e.sent;case 6:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),r.loadMediapipeAssets=function(){var t=(0,c.default)(o.default.mark((function t(r,i){var a,l,c,s,d;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return this.modelAssetUriPath=r||"https://d3opqjmqzxf057.cloudfront.net/ml/vonage_selfie_segmenter/float16/v1/vonage_selfie_segmenter.tflite",a=i?i+"/task-vision.js":"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@0.10.20/+esm",l=i?i+"/wasm":"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@0.10.20/wasm",t.next=5,(t=>new e(e=>e(""+t)).then(e=>u(n(751)(e))))(a);case 5:return c=t.sent,s=c.FilesetResolver,d=c.ImageSegmenter,this.ImageSegmenter=d,t.next=11,s.forVisionTasks(l);case 11:this.wasmFileset=t.sent;case 12:case"end":return t.stop()}}),t,this)})));return function(e,n){return t.apply(this,arguments)}}(),r.init=function(){var e=(0,c.default)(o.default.mark((function e(t,n){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.loadMediapipeAssets(t,n);case 2:return s.document={},e.next=5,this.createImageSegmenter();case 5:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),r.process=function(){var e=(0,c.default)(o.default.mark((function e(t){var n,r,i,a,l,c,s;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.imageSegmenter){e.next=3;break}return console.warn("ImageSegmenter instance not available"),e.abrupt("return");case 3:(this.width!==t.width||this.height!==t.height)&&(this.canvas.width=this.width=t.width,this.canvas.height=this.height=t.height,this.mask&&(this.mask=new ImageData(this.width,this.height))),this.mask||(this.mask=new ImageData(this.width,this.height)),this.context.drawImage(t,0,0,t.width,t.height),r=Date.now(),e.prev=5,null==(n=this.imageSegmenter)||n.segmentForVideo(this.context.getImageData(0,0,t.width,t.height),r,e=>{var t;const n=null==(t=e.confidenceMasks)?void 0:t[0];i=null==n?void 0:n.getAsFloat32Array()}),e.next=14;break;case 9:return e.prev=9,e.t0=e.catch(5),e.next=13,this.createImageSegmenter();case 13:return e.abrupt("return");case 14:if(i){e.next=16;break}return e.abrupt("return");case 16:if(this.previousConfidenceMask){e.next=19;break}return this.previousConfidenceMask=i.slice(),e.abrupt("return");case 19:for(a=i.map((e,t)=>{var n;const r=null==(n=this.previousConfidenceMask)?void 0:n[t];return void 0!==r?this.blend(r,e):e}),l=[255,0,0],c=0;c<(null==a?void 0:a.length);c++)(s=1-a[c])>.1?(s<.7?(this.mask.data[4*c]=l[0]*s,this.mask.data[4*c+3]=255*s):(this.mask.data[4*c]=l[0],this.mask.data[4*c+3]=255),this.mask.data[4*c+1]=l[1],this.mask.data[4*c+2]=l[2]):this.mask.data[4*c]=this.mask.data[4*c+1]=this.mask.data[4*c+2]=this.mask.data[4*c+3]=0;return e.abrupt("return",(this.previousConfidenceMask=a.slice(),this.mask));case 22:case"end":return e.stop()}}),e,this,[[5,9]])})));return function(t){return e.apply(this,arguments)}}(),r.isGpuSupported=function(){return!0},r.blend=function(e,t){const n=t-.5,r=n*n;return t+.9*(1-Math.min(1,r*(5.68842+r*(r*(r*(291.309+-624.717*r)-57.8051)-.748699))))*(e-t)},t}(),vo=function(){function e(){this.reporter=new Xn,this.isEnabled=!0}var t=e.prototype;return t.init=function(){var e=(0,c.default)(o.default.mark((function e(t,n){var r;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.selfieSegmentation=new Eo,e.next=3,null==(r=this.selfieSegmentation)?void 0:r.init(n.modelAssetUriPath,n.mediapipeBaseAssetsUri);case 3:this.backgroundFilter=new Wo,this.report({variation:"Create"});case 5:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),t.transform=function(){var e=(0,c.default)(o.default.mark((function e(t,n){var r,i,a,l,c,s,d;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.isEnabled){e.next=2;break}return e.abrupt("return",n.enqueue(t));case 2:return c=null!=(r=t.timestamp)?r:0,e.next=5,createImageBitmap(t);case 5:return s=e.sent,e.next=8,null==(i=this.selfieSegmentation)?void 0:i.process(s);case 8:if(d=e.sent,e.t0=d,!e.t0){e.next=14;break}return e.next=13,null==(a=this.backgroundFilter)?void 0:a.process(s,d);case 13:l=e.sent;case 14:l?(t.close(),n.enqueue(new VideoFrame(l,{timestamp:c,alpha:"discard"}))):n.enqueue(t);case 15:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),t.setBackgroundOptions=function(){var e=(0,c.default)(o.default.mark((function e(t){var n;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.backgroundOptions=t,e.next=3,null==(n=this.backgroundFilter)?void 0:n.setBackgroundOptions(t);case 3:this.report({variation:"Update"});case 4:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),t.setVideoBGReadable=function(){var e=(0,c.default)(o.default.mark((function e(t){var n;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,null==(n=this.backgroundFilter)?void 0:n.setVideoBGReadable(t);case 2:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),t.setVirtualBGImage=function(){var e=(0,c.default)(o.default.mark((function e(t){var n;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,null==(n=this.backgroundFilter)?void 0:n.setVirtualBGImage(t);case 2:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),t.profile=function(){var e=(0,c.default)(o.default.mark((function e(t){var n,r;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",null!=(n=null==(r=this.backgroundFilter)?void 0:r.profile(t))?n:[]);case 1:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),t.getTransformerType=function(){var e,t;return null!=(e=null==(t=this.backgroundOptions)?void 0:t.transformerType)?e:"Undefined"},t.enable=function(){this.isEnabled=!0},t.disable=function(){this.isEnabled=!1},t.report=function(e){var t;this.reporter.send(Object.assign({version:"6.0.0-alpha.2",action:"MlTransformers",transformerType:null==(t=this.backgroundOptions)?void 0:t.transformerType,config:JSON.stringify(this.backgroundOptions)},e))},e}();t.BackgroundTransformer=vo;const So=function(){function t(){this.backgroundTransformer=new vo,this.mediaProcessor=new fe,this.rate=30,this.eventsQueue=[],this.frameTransformLatencyMs=[]}var n=t.prototype;return n.init=function(){var e=(0,c.default)(o.default.mark((function e(t,n){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.frameTransformLatencyMs=[],e.next=3,this.backgroundTransformer.init(t,n);case 3:return e.next=5,this.mediaProcessor.setTransformers([this.backgroundTransformer]);case 5:this.mediaProcessor.setTrackExpectedRate(this.rate),this.mediaProcessor.onAny((e,t)=>{this.resolveOnMediaProcessor?(this.resolveOnMediaProcessor({name:e,data:t}),this.resolveOnMediaProcessor=void 0):this.eventsQueue.push({name:e,data:t})});case 7:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),n.enable=function(){this.backgroundTransformer.enable()},n.disable=function(){this.backgroundTransformer.disable()},n.onMediaProcessorEvent=function(){var t=(0,c.default)(o.default.mark((function t(){return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,new e(e=>{this.eventsQueue.length>0?e(this.eventsQueue.shift()):this.resolveOnMediaProcessor=e});case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),n.setTrackExpectedRate=function(){var e=(0,c.default)(o.default.mark((function e(t){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this.rate=t,this.mediaProcessor.setTrackExpectedRate(t);case 1:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),n.transform=function(){var e=(0,c.default)(o.default.mark((function e(t,n){var r;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=performance.now(),this.mediaProcessor.transform(t,n),this.frameTransformLatencyMs.push(performance.now()-r);case 2:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),n.setBackgroundOptions=function(){var e=(0,c.default)(o.default.mark((function e(t){var n;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,null==(n=this.backgroundTransformer)?void 0:n.setBackgroundOptions(t);case 2:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),n.setVideoBGReadable=function(e){this.backgroundTransformer.setVideoBGReadable(e)},n.setVirtualBGImage=function(){var e=(0,c.default)(o.default.mark((function e(t){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.backgroundTransformer.setVirtualBGImage(t);case 2:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),n.terminate=function(){var e=(0,c.default)(o.default.mark((function e(){var t;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.mediaProcessor.destroy();case 2:t=this.frameTransformLatencyMs.reduce((e,t)=>e+t,0)/this.frameTransformLatencyMs.length||0,console.log(`Transform latency average is: ${t} ms`);case 4:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),n.setVonageMetadata=function(e){!function(e){Ae(e)}(e)},n.profile=function(){var e=(0,c.default)(o.default.mark((function e(t){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=JSON,e.next=3,this.backgroundTransformer.profile(t);case 3:return e.t1=e.sent,e.abrupt("return",e.t0.stringify.call(e.t0,e.t1));case 5:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),t}();!function(e,t){t.workerId=e,Ut()&&($t[t.workerId]=t)}("ProcessorWorker",So);let Jo=So;const Go="KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGd0KHQsZSl7Z2xvYmFsVGhpcy52b25hZ2V8fChnbG9iYWxUaGlzLnZvbmFnZT17fSksZ2xvYmFsVGhpcy52b25hZ2Uud29ya2VyaXplcnx8KGdsb2JhbFRoaXMudm9uYWdlLndvcmtlcml6ZXI9e30pO2xldCByPWdsb2JhbFRoaXMudm9uYWdlLndvcmtlcml6ZXI7cmV0dXJuIHJbdF18fChyW3RdPWUpLHJbdF19Y29uc3QgX3I9Z3QoImdsb2JhbHMiLHt9KTt2YXIgb2U9KHQ9Pih0LklOSVQ9IklOSVQiLHQuRk9SV0FSRD0iRk9SV0FSRCIsdC5URVJNSU5BVEU9IlRFUk1JTkFURSIsdC5HTE9CQUxTX1NZTkM9IkdMT0JBTFNfU1lOQyIsdC5FVkVOVD0iRVZFTlQiLHQpKShvZXx8e30pO2Z1bmN0aW9uIGlzKHQpe3JldHVybltJbWFnZUJpdG1hcCxSZWFkYWJsZVN0cmVhbSxXcml0YWJsZVN0cmVhbV0uc29tZShyPT50IGluc3RhbmNlb2Ygcil9ZnVuY3Rpb24gYmUodCxlKXtjb25zdHtpZDpyLHR5cGU6bn09dCxzPUFycmF5LmlzQXJyYXkoZSk/ZTpbZV07cG9zdE1lc3NhZ2Uoe2lkOnIsdHlwZTpuLHJlc3VsdDplfSxzLmZpbHRlcihpPT5pcyhpKSkpfWd0KCJ3b3JrZXJpemVkIix7fSk7ZnVuY3Rpb24gVHIoKXtyZXR1cm4gdHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlPCJ1IiYmc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlfWZ1bmN0aW9uIEJlKHQsZSl7aWYoQXJyYXkuaXNBcnJheShlKSllLnNwbGljZSgwLGUubGVuZ3RoKTtlbHNlIGlmKHR5cGVvZiBlPT0ib2JqZWN0Iilmb3IoY29uc3QgciBpbiBlKWRlbGV0ZSBlW3JdO2Zvcihjb25zdCByIGluIHQpQXJyYXkuaXNBcnJheSh0W3JdKT8oZVtyXT1bXSxCZSh0W3JdLGVbcl0pKTp0eXBlb2YgdFtyXT09Im9iamVjdCI/KGVbcl09e30sQmUodFtyXSxlW3JdKSk6ZVtyXT10W3JdfWNvbnN0IFU9bmV3IFdlYWtNYXAsWT1uZXcgV2Vha01hcCxCPW5ldyBXZWFrTWFwLERlPVN5bWJvbCgiYW55UHJvZHVjZXIiKSx3cj1Qcm9taXNlLnJlc29sdmUoKSxNZT1TeW1ib2woImxpc3RlbmVyQWRkZWQiKSxVZT1TeW1ib2woImxpc3RlbmVyUmVtb3ZlZCIpO2xldCBOZT0hMSx4dD0hMTtmdW5jdGlvbiBhZSh0KXtpZih0eXBlb2YgdCE9InN0cmluZyImJnR5cGVvZiB0IT0ic3ltYm9sIiYmdHlwZW9mIHQhPSJudW1iZXIiKXRocm93IG5ldyBUeXBlRXJyb3IoImBldmVudE5hbWVgIG11c3QgYmUgYSBzdHJpbmcsIHN5bWJvbCwgb3IgbnVtYmVyIil9ZnVuY3Rpb24gT2UodCl7aWYodHlwZW9mIHQhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigibGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gY2UodCxlKXtjb25zdCByPVkuZ2V0KHQpO2lmKHIuaGFzKGUpKXJldHVybiByLmdldChlKX1mdW5jdGlvbiBnZSh0LGUpe2NvbnN0IHI9dHlwZW9mIGU9PSJzdHJpbmcifHx0eXBlb2YgZT09InN5bWJvbCJ8fHR5cGVvZiBlPT0ibnVtYmVyIj9lOkRlLG49Qi5nZXQodCk7aWYobi5oYXMocikpcmV0dXJuIG4uZ2V0KHIpfWZ1bmN0aW9uIG9zKHQsZSxyKXtjb25zdCBuPUIuZ2V0KHQpO2lmKG4uaGFzKGUpKWZvcihjb25zdCBzIG9mIG4uZ2V0KGUpKXMuZW5xdWV1ZShyKTtpZihuLmhhcyhEZSkpe2NvbnN0IHM9UHJvbWlzZS5hbGwoW2Uscl0pO2Zvcihjb25zdCBpIG9mIG4uZ2V0KERlKSlpLmVucXVldWUocyl9fWZ1bmN0aW9uIEFyKHQsZSl7ZT1BcnJheS5pc0FycmF5KGUpP2U6W2VdO2xldCByPSExLG49KCk9Pnt9LHM9W107Y29uc3QgaT17ZW5xdWV1ZShhKXtzLnB1c2goYSksbigpfSxmaW5pc2goKXtyPSEwLG4oKX19O2Zvcihjb25zdCBhIG9mIGUpe2xldCBvPWdlKHQsYSk7b3x8KG89bmV3IFNldCxCLmdldCh0KS5zZXQoYSxvKSksby5hZGQoaSl9cmV0dXJue2FzeW5jIG5leHQoKXtyZXR1cm4gcz9zLmxlbmd0aD09PTA/cj8ocz12b2lkIDAsdGhpcy5uZXh0KCkpOihhd2FpdCBuZXcgUHJvbWlzZShhPT57bj1hfSksdGhpcy5uZXh0KCkpOntkb25lOiExLHZhbHVlOmF3YWl0IHMuc2hpZnQoKX06e2RvbmU6ITB9fSxhc3luYyByZXR1cm4oYSl7cz12b2lkIDA7Zm9yKGNvbnN0IG8gb2YgZSl7Y29uc3QgYz1nZSh0LG8pO2MmJihjLmRlbGV0ZShpKSxjLnNpemU9PT0wJiZCLmdldCh0KS5kZWxldGUobykpfXJldHVybiBuKCksYXJndW1lbnRzLmxlbmd0aD4wP3tkb25lOiEwLHZhbHVlOmF3YWl0IGF9Ontkb25lOiEwfX0sW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpe3JldHVybiB0aGlzfX19ZnVuY3Rpb24gdnIodCl7aWYodD09PXZvaWQgMClyZXR1cm4gU3I7aWYoIUFycmF5LmlzQXJyYXkodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYG1ldGhvZE5hbWVzYCBtdXN0IGJlIGFuIGFycmF5IG9mIHN0cmluZ3MiKTtmb3IoY29uc3QgZSBvZiB0KWlmKCFTci5pbmNsdWRlcyhlKSl0aHJvdyB0eXBlb2YgZSE9InN0cmluZyI/bmV3IFR5cGVFcnJvcigiYG1ldGhvZE5hbWVzYCBlbGVtZW50IG11c3QgYmUgYSBzdHJpbmciKTpuZXcgRXJyb3IoYCR7ZX0gaXMgbm90IEVtaXR0ZXJ5IG1ldGhvZGApO3JldHVybiB0fWNvbnN0IHVlPXQ9PnQ9PT1NZXx8dD09PVVlO2Z1bmN0aW9uIExlKHQsZSxyKXtpZih1ZShlKSl0cnl7TmU9ITAsdC5lbWl0KGUscil9ZmluYWxseXtOZT0hMX19Y2xhc3MgZmV7c3RhdGljIG1peGluKGUscil7cmV0dXJuIHI9dnIociksbj0+e2lmKHR5cGVvZiBuIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoImB0YXJnZXRgIG11c3QgYmUgZnVuY3Rpb24iKTtmb3IoY29uc3QgYSBvZiByKWlmKG4ucHJvdG90eXBlW2FdIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcihgVGhlIHByb3BlcnR5IFxgJHthfVxgIGFscmVhZHkgZXhpc3RzIG9uIFxgdGFyZ2V0XGBgKTtmdW5jdGlvbiBzKCl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLGUse2VudW1lcmFibGU6ITEsdmFsdWU6bmV3IGZlfSksdGhpc1tlXX1PYmplY3QuZGVmaW5lUHJvcGVydHkobi5wcm90b3R5cGUsZSx7ZW51bWVyYWJsZTohMSxnZXQ6c30pO2NvbnN0IGk9YT0+ZnVuY3Rpb24oLi4ubyl7cmV0dXJuIHRoaXNbZV1bYV0oLi4ubyl9O2Zvcihjb25zdCBhIG9mIHIpT2JqZWN0LmRlZmluZVByb3BlcnR5KG4ucHJvdG90eXBlLGEse2VudW1lcmFibGU6ITEsdmFsdWU6aShhKX0pO3JldHVybiBufX1zdGF0aWMgZ2V0IGlzRGVidWdFbmFibGVkKCl7dmFyIGUscjtpZih0eXBlb2YoKGU9Z2xvYmFsVGhpcy5wcm9jZXNzKT09bnVsbD92b2lkIDA6ZS5lbnYpIT0ib2JqZWN0IilyZXR1cm4geHQ7Y29uc3R7ZW52Om59PShyPWdsb2JhbFRoaXMucHJvY2VzcykhPW51bGw/cjp7ZW52Ont9fTtyZXR1cm4gbi5ERUJVRz09PSJlbWl0dGVyeSJ8fG4uREVCVUc9PT0iKiJ8fHh0fXN0YXRpYyBzZXQgaXNEZWJ1Z0VuYWJsZWQoZSl7eHQ9ZX1jb25zdHJ1Y3RvcihlPXt9KXt2YXIgcjtVLnNldCh0aGlzLG5ldyBTZXQpLFkuc2V0KHRoaXMsbmV3IE1hcCksQi5zZXQodGhpcyxuZXcgTWFwKSxCLmdldCh0aGlzKS5zZXQoRGUsbmV3IFNldCksdGhpcy5kZWJ1Zz0ocj1lLmRlYnVnKSE9bnVsbD9yOnt9LHRoaXMuZGVidWcuZW5hYmxlZD09PXZvaWQgMCYmKHRoaXMuZGVidWcuZW5hYmxlZD0hMSksdGhpcy5kZWJ1Zy5sb2dnZXJ8fCh0aGlzLmRlYnVnLmxvZ2dlcj0obixzLGksYSk9Pnt0cnl7YT1KU09OLnN0cmluZ2lmeShhKX1jYXRjaHthPWBPYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIGtleXMgZmFpbGVkIHRvIHN0cmluZ2lmeTogJHtPYmplY3Qua2V5cyhhKS5qb2luKCIsIil9YH0odHlwZW9mIGk9PSJzeW1ib2wifHx0eXBlb2YgaT09Im51bWJlciIpJiYoaT1pLnRvU3RyaW5nKCkpO2NvbnN0IG89bmV3IERhdGUsYz1gJHtvLmdldEhvdXJzKCl9OiR7by5nZXRNaW51dGVzKCl9OiR7by5nZXRTZWNvbmRzKCl9LiR7by5nZXRNaWxsaXNlY29uZHMoKX1gO2NvbnNvbGUubG9nKGBbJHtjfV1bZW1pdHRlcnk6JHtufV1bJHtzfV0gRXZlbnQgTmFtZTogJHtpfQoJZGF0YTogJHthfWApfSl9bG9nSWZEZWJ1Z0VuYWJsZWQoZSxyLG4peyhmZS5pc0RlYnVnRW5hYmxlZHx8dGhpcy5kZWJ1Zy5lbmFibGVkKSYmdGhpcy5kZWJ1Zy5sb2dnZXIoZSx0aGlzLmRlYnVnLm5hbWUscixuKX1vbihlLHIpe09lKHIpLGU9QXJyYXkuaXNBcnJheShlKT9lOltlXTtmb3IoY29uc3QgbiBvZiBlKXthZShuKTtsZXQgcz1jZSh0aGlzLG4pO3N8fChzPW5ldyBTZXQsWS5nZXQodGhpcykuc2V0KG4scykpLHMuYWRkKHIpLHRoaXMubG9nSWZEZWJ1Z0VuYWJsZWQoInN1YnNjcmliZSIsbix2b2lkIDApLHVlKG4pfHxMZSh0aGlzLE1lLHtldmVudE5hbWU6bixsaXN0ZW5lcjpyfSl9cmV0dXJuIHRoaXMub2ZmLmJpbmQodGhpcyxlLHIpfW9mZihlLHIpe09lKHIpLGU9QXJyYXkuaXNBcnJheShlKT9lOltlXTtmb3IoY29uc3QgbiBvZiBlKXthZShuKTtjb25zdCBzPWNlKHRoaXMsbik7cyYmKHMuZGVsZXRlKHIpLHMuc2l6ZT09PTAmJlkuZ2V0KHRoaXMpLmRlbGV0ZShuKSksdGhpcy5sb2dJZkRlYnVnRW5hYmxlZCgidW5zdWJzY3JpYmUiLG4sdm9pZCAwKSx1ZShuKXx8TGUodGhpcyxVZSx7ZXZlbnROYW1lOm4sbGlzdGVuZXI6cn0pfX1vbmNlKGUpe2xldCByO2NvbnN0IG49bmV3IFByb21pc2Uocz0+e3I9dGhpcy5vbihlLGk9PntyKCkscyhpKX0pfSk7cmV0dXJuIG4ub2ZmPXIsbn1ldmVudHMoZSl7ZT1BcnJheS5pc0FycmF5KGUpP2U6W2VdO2Zvcihjb25zdCByIG9mIGUpYWUocik7cmV0dXJuIEFyKHRoaXMsZSl9YXN5bmMgZW1pdChlLHIpe3ZhciBuO2lmKGFlKGUpLHVlKGUpJiYhTmUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYGV2ZW50TmFtZWAgY2Fubm90IGJlIG1ldGEgZXZlbnQgYGxpc3RlbmVyQWRkZWRgIG9yIGBsaXN0ZW5lclJlbW92ZWRgIik7dGhpcy5sb2dJZkRlYnVnRW5hYmxlZCgiZW1pdCIsZSxyKSxvcyh0aGlzLGUscik7Y29uc3Qgcz0obj1jZSh0aGlzLGUpKSE9bnVsbD9uOm5ldyBTZXQsaT1VLmdldCh0aGlzKSxhPVsuLi5zXSxvPXVlKGUpP1tdOlsuLi5pXTthd2FpdCB3cixhd2FpdCBQcm9taXNlLmFsbChbLi4uYS5tYXAoYXN5bmMgYz0+e2lmKHMuaGFzKGMpKXJldHVybiBjKHIpfSksLi4uby5tYXAoYXN5bmMgYz0+e2lmKGkuaGFzKGMpKXJldHVybiBjKGUscil9KV0pfWFzeW5jIGVtaXRTZXJpYWwoZSxyKXt2YXIgbjtpZihhZShlKSx1ZShlKSYmIU5lKXRocm93IG5ldyBUeXBlRXJyb3IoImBldmVudE5hbWVgIGNhbm5vdCBiZSBtZXRhIGV2ZW50IGBsaXN0ZW5lckFkZGVkYCBvciBgbGlzdGVuZXJSZW1vdmVkYCIpO3RoaXMubG9nSWZEZWJ1Z0VuYWJsZWQoImVtaXRTZXJpYWwiLGUscik7Y29uc3Qgcz0obj1jZSh0aGlzLGUpKSE9bnVsbD9uOm5ldyBTZXQsaT1VLmdldCh0aGlzKSxhPVsuLi5zXSxvPVsuLi5pXTthd2FpdCB3cjtmb3IoY29uc3QgYyBvZiBhKXMuaGFzKGMpJiZhd2FpdCBjKHIpO2Zvcihjb25zdCBjIG9mIG8paS5oYXMoYykmJmF3YWl0IGMoZSxyKX1vbkFueShlKXtyZXR1cm4gT2UoZSksdGhpcy5sb2dJZkRlYnVnRW5hYmxlZCgic3Vic2NyaWJlQW55Iix2b2lkIDAsdm9pZCAwKSxVLmdldCh0aGlzKS5hZGQoZSksTGUodGhpcyxNZSx7bGlzdGVuZXI6ZX0pLHRoaXMub2ZmQW55LmJpbmQodGhpcyxlKX1hbnlFdmVudCgpe3JldHVybiBBcih0aGlzKX1vZmZBbnkoZSl7T2UoZSksdGhpcy5sb2dJZkRlYnVnRW5hYmxlZCgidW5zdWJzY3JpYmVBbnkiLHZvaWQgMCx2b2lkIDApLExlKHRoaXMsVWUse2xpc3RlbmVyOmV9KSxVLmdldCh0aGlzKS5kZWxldGUoZSl9Y2xlYXJMaXN0ZW5lcnMoZSl7ZT1BcnJheS5pc0FycmF5KGUpP2U6W2VdO2Zvcihjb25zdCByIG9mIGUpaWYodGhpcy5sb2dJZkRlYnVnRW5hYmxlZCgiY2xlYXIiLHIsdm9pZCAwKSx0eXBlb2Ygcj09InN0cmluZyJ8fHR5cGVvZiByPT0ic3ltYm9sInx8dHlwZW9mIHI9PSJudW1iZXIiKXtjb25zdCBuPWNlKHRoaXMscik7biYmbi5jbGVhcigpO2NvbnN0IHM9Z2UodGhpcyxyKTtpZihzKXtmb3IoY29uc3QgaSBvZiBzKWkuZmluaXNoKCk7cy5jbGVhcigpfX1lbHNle1UuZ2V0KHRoaXMpLmNsZWFyKCk7Zm9yKGNvbnN0W24sc11vZiBZLmdldCh0aGlzKS5lbnRyaWVzKCkpcy5jbGVhcigpLFkuZ2V0KHRoaXMpLmRlbGV0ZShuKTtmb3IoY29uc3RbbixzXW9mIEIuZ2V0KHRoaXMpLmVudHJpZXMoKSl7Zm9yKGNvbnN0IGkgb2YgcylpLmZpbmlzaCgpO3MuY2xlYXIoKSxCLmdldCh0aGlzKS5kZWxldGUobil9fX1saXN0ZW5lckNvdW50KGUpe3ZhciByLG4scyxpLGEsbztlPUFycmF5LmlzQXJyYXkoZSk/ZTpbZV07bGV0IGM9MDtmb3IoY29uc3QgdSBvZiBlKXtpZih0eXBlb2YgdT09InN0cmluZyIpe2MrPVUuZ2V0KHRoaXMpLnNpemUrKChuPShyPWNlKHRoaXMsdSkpPT1udWxsP3ZvaWQgMDpyLnNpemUpIT1udWxsP246MCkrKChpPShzPWdlKHRoaXMsdSkpPT1udWxsP3ZvaWQgMDpzLnNpemUpIT1udWxsP2k6MCkrKChvPShhPWdlKHRoaXMpKT09bnVsbD92b2lkIDA6YS5zaXplKSE9bnVsbD9vOjApO2NvbnRpbnVlfXR5cGVvZiB1PCJ1IiYmYWUodSksYys9VS5nZXQodGhpcykuc2l6ZTtmb3IoY29uc3QgZiBvZiBZLmdldCh0aGlzKS52YWx1ZXMoKSljKz1mLnNpemU7Zm9yKGNvbnN0IGYgb2YgQi5nZXQodGhpcykudmFsdWVzKCkpYys9Zi5zaXplfXJldHVybiBjfWJpbmRNZXRob2RzKGUscil7aWYodHlwZW9mIGUhPSJvYmplY3QifHxlPT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJgdGFyZ2V0YCBtdXN0IGJlIGFuIG9iamVjdCIpO3I9dnIocik7Zm9yKGNvbnN0IG4gb2Ygcil7aWYoZVtuXSE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoYFRoZSBwcm9wZXJ0eSBcYCR7bn1cYCBhbHJlYWR5IGV4aXN0cyBvbiBcYHRhcmdldFxgYCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7ZW51bWVyYWJsZTohMSx2YWx1ZTp0aGlzW25dLmJpbmQodGhpcyl9KX19fWNvbnN0IFNyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGZlLnByb3RvdHlwZSkuZmlsdGVyKHQ9PnQhPT0iY29uc3RydWN0b3IiKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZmUsImxpc3RlbmVyQWRkZWQiLHt2YWx1ZTpNZSx3cml0YWJsZTohMSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmZSwibGlzdGVuZXJSZW1vdmVkIix7dmFsdWU6VWUsd3JpdGFibGU6ITEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITF9KTtmdW5jdGlvbiBhcyh0KXtyZXR1cm4gdC5vbkFueSYmdC5lbWl0fWFzeW5jIGZ1bmN0aW9uIGNzKHQsZSl7Y29uc3R7ZnVuY3Rpb25OYW1lOnIsYXJnczpufT10O2lmKCFlLmluc3RhbmNlKXRocm93Imluc3RhbmNlIG5vdCBpbml0aWFsaXplZCI7aWYoIXIpdGhyb3cibWlzc2luZyBmdW5jdGlvbiBuYW1lIHRvIGNhbGwiO2lmKCFlLmluc3RhbmNlW3JdKXRocm93YHVuZGVmaW5lZCBmdW5jdGlvbiBbJHtyfV0gaW4gY2xhc3MgJHtlLmluc3RhbmNlLmNvbnN0cnVjdG9yLndvcmtlcklkfWA7YmUodCxhd2FpdCBlLmluc3RhbmNlW3JdKC4uLm4/P1tdKSl9Y29uc3QgSXI9Z3QoInJlZ2lzdGVyZWRXb3JrZXJzIix7fSk7ZnVuY3Rpb24gdXModCxlKXtlLndvcmtlcklkPXQsVHIoKSYmKElyW2Uud29ya2VySWRdPWUpfWZ1bmN0aW9uIGZzKHQsZSl7aWYoIXQuYXJncyl0aHJvdyJNaXNzaW5nIGNsYXNzTmFtZSB3aGlsZSBpbml0aWFsaXppbmcgd29ya2VyIjtjb25zdFtyLG5dPXQuYXJncyxzPUlyW3JdO2lmKHMpZS5pbnN0YW5jZT1uZXcgcyh0LmFyZ3Muc2xpY2UoMSkpO2Vsc2UgdGhyb3dgdW5rbm93biB3b3JrZXIgY2xhc3MgJHtyfWA7QmUobixfciksYXMoZS5pbnN0YW5jZSkmJmUuaW5zdGFuY2Uub25BbnkoKGksYSk9PntiZSh7dHlwZTpvZS5FVkVOVH0se25hbWU6aSxkYXRhOmF9KX0pLGJlKHQsdHlwZW9mIGUuaW5zdGFuY2UhPT12b2lkIDApfWFzeW5jIGZ1bmN0aW9uIGxzKHQsZSl7Y29uc3R7YXJnczpyfT10O2lmKCFlLmluc3RhbmNlKXRocm93Imluc3RhbmNlIG5vdCBpbml0aWFsaXplZCI7bGV0IG47ZS5pbnN0YW5jZS50ZXJtaW5hdGUmJihuPWF3YWl0IGUuaW5zdGFuY2UudGVybWluYXRlKC4uLnI/P1tdKSksYmUodCxuKX1mdW5jdGlvbiBkcyh0KXtpZighdC5hcmdzKXRocm93Ik1pc3NpbmcgZ2xvYmFscyB3aGlsZSBzeW5jaW5nIjtCZSh0LmFyZ3NbMF0sX3IpLGJlKHQse30pfWZ1bmN0aW9uIGhzKCl7Y29uc3QgdD17fTtvbm1lc3NhZ2U9YXN5bmMgZT0+e2NvbnN0IHI9ZS5kYXRhO3N3aXRjaChyLnR5cGUpe2Nhc2Ugb2UuSU5JVDpmcyhyLHQpO2JyZWFrO2Nhc2Ugb2UuRk9SV0FSRDpjcyhyLHQpO2JyZWFrO2Nhc2Ugb2UuVEVSTUlOQVRFOmxzKHIsdCk7YnJlYWs7Y2FzZSBvZS5HTE9CQUxTX1NZTkM6ZHMocik7YnJlYWt9fX1UcigpJiZocygpO2NsYXNzIER7fUQudXBkYXRlcz17dHJhbnNmb3JtZXJfbmV3OiJOZXcgdHJhbnNmb3JtZXIiLHRyYW5zZm9ybWVyX251bGw6Ik51bGwgdHJhbnNmb3JtZXIifSxELmVycm9ycz17dHJhbnNmb3JtZXJfbm9uZToiTm8gdHJhbnNmb3JtZXJzIHByb3ZpZGVkIix0cmFuc2Zvcm1lcl9zdGFydDoiQ2Fubm90IHN0YXJ0IHRyYW5zZm9ybWVyIix0cmFuc2Zvcm1lcl90cmFuc2Zvcm06IkNhbm5vdCB0cmFuc2Zvcm0gZnJhbWUiLHRyYW5zZm9ybWVyX2ZsdXNoOiJDYW5ub3QgZmx1c2ggdHJhbnNmb3JtZXIiLHJlYWRhYmxlX251bGw6IlJlYWRhYmxlIGlzIG51bGwiLHdyaXRhYmxlX251bGw6IldyaXRhYmxlIGlzIG51bGwifTtmdW5jdGlvbiBtcyh0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCwiZGVmYXVsdCIpP3QuZGVmYXVsdDp0fWNvbnN0IE49bmV3IFdlYWtNYXAsemU9bmV3IFdlYWtNYXAseGU9bmV3IFdlYWtNYXAsRXQ9U3ltYm9sKCJhbnlQcm9kdWNlciIpLFJyPVByb21pc2UucmVzb2x2ZSgpLEdlPVN5bWJvbCgibGlzdGVuZXJBZGRlZCIpLCRlPVN5bWJvbCgibGlzdGVuZXJSZW1vdmVkIik7bGV0IF90PSExO2Z1bmN0aW9uIGxlKHQpe2lmKHR5cGVvZiB0IT0ic3RyaW5nIiYmdHlwZW9mIHQhPSJzeW1ib2wiKXRocm93IG5ldyBUeXBlRXJyb3IoImV2ZW50TmFtZSBtdXN0IGJlIGEgc3RyaW5nIG9yIGEgc3ltYm9sIil9ZnVuY3Rpb24gVmUodCl7aWYodHlwZW9mIHQhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigibGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gZGUodCxlKXtjb25zdCByPXplLmdldCh0KTtyZXR1cm4gci5oYXMoZSl8fHIuc2V0KGUsbmV3IFNldCksci5nZXQoZSl9ZnVuY3Rpb24gRWUodCxlKXtjb25zdCByPXR5cGVvZiBlPT0ic3RyaW5nInx8dHlwZW9mIGU9PSJzeW1ib2wiP2U6RXQsbj14ZS5nZXQodCk7cmV0dXJuIG4uaGFzKHIpfHxuLnNldChyLG5ldyBTZXQpLG4uZ2V0KHIpfWZ1bmN0aW9uIHBzKHQsZSxyKXtjb25zdCBuPXhlLmdldCh0KTtpZihuLmhhcyhlKSlmb3IoY29uc3QgcyBvZiBuLmdldChlKSlzLmVucXVldWUocik7aWYobi5oYXMoRXQpKXtjb25zdCBzPVByb21pc2UuYWxsKFtlLHJdKTtmb3IoY29uc3QgaSBvZiBuLmdldChFdCkpaS5lbnF1ZXVlKHMpfX1mdW5jdGlvbiBGcih0LGUpe2U9QXJyYXkuaXNBcnJheShlKT9lOltlXTtsZXQgcj0hMSxuPSgpPT57fSxzPVtdO2NvbnN0IGk9e2VucXVldWUoYSl7cy5wdXNoKGEpLG4oKX0sZmluaXNoKCl7cj0hMCxuKCl9fTtmb3IoY29uc3QgYSBvZiBlKUVlKHQsYSkuYWRkKGkpO3JldHVybnthc3luYyBuZXh0KCl7cmV0dXJuIHM/cy5sZW5ndGg9PT0wP3I/KHM9dm9pZCAwLHRoaXMubmV4dCgpKTooYXdhaXQgbmV3IFByb21pc2UoYT0+e249YX0pLHRoaXMubmV4dCgpKTp7ZG9uZTohMSx2YWx1ZTphd2FpdCBzLnNoaWZ0KCl9Ontkb25lOiEwfX0sYXN5bmMgcmV0dXJuKGEpe3M9dm9pZCAwO2Zvcihjb25zdCBvIG9mIGUpRWUodCxvKS5kZWxldGUoaSk7cmV0dXJuIG4oKSxhcmd1bWVudHMubGVuZ3RoPjA/e2RvbmU6ITAsdmFsdWU6YXdhaXQgYX06e2RvbmU6ITB9fSxbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCl7cmV0dXJuIHRoaXN9fX1mdW5jdGlvbiBQcih0KXtpZih0PT09dm9pZCAwKXJldHVybiBrcjtpZighQXJyYXkuaXNBcnJheSh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJgbWV0aG9kTmFtZXNgIG11c3QgYmUgYW4gYXJyYXkgb2Ygc3RyaW5ncyIpO2Zvcihjb25zdCBlIG9mIHQpaWYoIWtyLmluY2x1ZGVzKGUpKXRocm93IHR5cGVvZiBlIT0ic3RyaW5nIj9uZXcgVHlwZUVycm9yKCJgbWV0aG9kTmFtZXNgIGVsZW1lbnQgbXVzdCBiZSBhIHN0cmluZyIpOm5ldyBFcnJvcihgJHtlfSBpcyBub3QgRW1pdHRlcnkgbWV0aG9kYCk7cmV0dXJuIHR9Y29uc3QgVHQ9dD0+dD09PUdlfHx0PT09JGU7bGV0IFdlPWNsYXNzIEVye3N0YXRpYyBtaXhpbihlLHIpe3JldHVybiByPVByKHIpLG49PntpZih0eXBlb2YgbiE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJgdGFyZ2V0YCBtdXN0IGJlIGZ1bmN0aW9uIik7Zm9yKGNvbnN0IGEgb2YgcilpZihuLnByb3RvdHlwZVthXSE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoYFRoZSBwcm9wZXJ0eSBcYCR7YX1cYCBhbHJlYWR5IGV4aXN0cyBvbiBcYHRhcmdldFxgYCk7ZnVuY3Rpb24gcygpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxlLHtlbnVtZXJhYmxlOiExLHZhbHVlOm5ldyBFcn0pLHRoaXNbZV19T2JqZWN0LmRlZmluZVByb3BlcnR5KG4ucHJvdG90eXBlLGUse2VudW1lcmFibGU6ITEsZ2V0OnN9KTtjb25zdCBpPWE9PmZ1bmN0aW9uKC4uLm8pe3JldHVybiB0aGlzW2VdW2FdKC4uLm8pfTtmb3IoY29uc3QgYSBvZiByKU9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLnByb3RvdHlwZSxhLHtlbnVtZXJhYmxlOiExLHZhbHVlOmkoYSl9KTtyZXR1cm4gbn19c3RhdGljIGdldCBpc0RlYnVnRW5hYmxlZCgpe2lmKHR5cGVvZiBwcm9jZXNzIT0ib2JqZWN0IilyZXR1cm4gX3Q7Y29uc3R7ZW52OmV9PXByb2Nlc3N8fHtlbnY6e319O3JldHVybiBlLkRFQlVHPT09ImVtaXR0ZXJ5Inx8ZS5ERUJVRz09PSIqInx8X3R9c3RhdGljIHNldCBpc0RlYnVnRW5hYmxlZChlKXtfdD1lfWNvbnN0cnVjdG9yKGU9e30pe04uc2V0KHRoaXMsbmV3IFNldCksemUuc2V0KHRoaXMsbmV3IE1hcCkseGUuc2V0KHRoaXMsbmV3IE1hcCksdGhpcy5kZWJ1Zz1lLmRlYnVnfHx7fSx0aGlzLmRlYnVnLmVuYWJsZWQ9PT12b2lkIDAmJih0aGlzLmRlYnVnLmVuYWJsZWQ9ITEpLHRoaXMuZGVidWcubG9nZ2VyfHwodGhpcy5kZWJ1Zy5sb2dnZXI9KHIsbixzLGkpPT57dHJ5e2k9SlNPTi5zdHJpbmdpZnkoaSl9Y2F0Y2h7aT1gT2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZyBrZXlzIGZhaWxlZCB0byBzdHJpbmdpZnk6ICR7T2JqZWN0LmtleXMoaSkuam9pbigiLCIpfWB9dHlwZW9mIHM9PSJzeW1ib2wiJiYocz1zLnRvU3RyaW5nKCkpO2NvbnN0IGE9bmV3IERhdGUsbz1gJHthLmdldEhvdXJzKCl9OiR7YS5nZXRNaW51dGVzKCl9OiR7YS5nZXRTZWNvbmRzKCl9LiR7YS5nZXRNaWxsaXNlY29uZHMoKX1gO2NvbnNvbGUubG9nKGBbJHtvfV1bZW1pdHRlcnk6JHtyfV1bJHtufV0gRXZlbnQgTmFtZTogJHtzfQoJZGF0YTogJHtpfWApfSl9bG9nSWZEZWJ1Z0VuYWJsZWQoZSxyLG4peyhFci5pc0RlYnVnRW5hYmxlZHx8dGhpcy5kZWJ1Zy5lbmFibGVkKSYmdGhpcy5kZWJ1Zy5sb2dnZXIoZSx0aGlzLmRlYnVnLm5hbWUscixuKX1vbihlLHIpe1ZlKHIpLGU9QXJyYXkuaXNBcnJheShlKT9lOltlXTtmb3IoY29uc3QgbiBvZiBlKWxlKG4pLGRlKHRoaXMsbikuYWRkKHIpLHRoaXMubG9nSWZEZWJ1Z0VuYWJsZWQoInN1YnNjcmliZSIsbix2b2lkIDApLFR0KG4pfHx0aGlzLmVtaXQoR2Use2V2ZW50TmFtZTpuLGxpc3RlbmVyOnJ9KTtyZXR1cm4gdGhpcy5vZmYuYmluZCh0aGlzLGUscil9b2ZmKGUscil7VmUociksZT1BcnJheS5pc0FycmF5KGUpP2U6W2VdO2Zvcihjb25zdCBuIG9mIGUpbGUobiksZGUodGhpcyxuKS5kZWxldGUociksdGhpcy5sb2dJZkRlYnVnRW5hYmxlZCgidW5zdWJzY3JpYmUiLG4sdm9pZCAwKSxUdChuKXx8dGhpcy5lbWl0KCRlLHtldmVudE5hbWU6bixsaXN0ZW5lcjpyfSl9b25jZShlKXtyZXR1cm4gbmV3IFByb21pc2Uocj0+e2NvbnN0IG49dGhpcy5vbihlLHM9PntuKCkscihzKX0pfSl9ZXZlbnRzKGUpe2U9QXJyYXkuaXNBcnJheShlKT9lOltlXTtmb3IoY29uc3QgciBvZiBlKWxlKHIpO3JldHVybiBGcih0aGlzLGUpfWFzeW5jIGVtaXQoZSxyKXtsZShlKSx0aGlzLmxvZ0lmRGVidWdFbmFibGVkKCJlbWl0IixlLHIpLHBzKHRoaXMsZSxyKTtjb25zdCBuPWRlKHRoaXMsZSkscz1OLmdldCh0aGlzKSxpPVsuLi5uXSxhPVR0KGUpP1tdOlsuLi5zXTthd2FpdCBScixhd2FpdCBQcm9taXNlLmFsbChbLi4uaS5tYXAoYXN5bmMgbz0+e2lmKG4uaGFzKG8pKXJldHVybiBvKHIpfSksLi4uYS5tYXAoYXN5bmMgbz0+e2lmKHMuaGFzKG8pKXJldHVybiBvKGUscil9KV0pfWFzeW5jIGVtaXRTZXJpYWwoZSxyKXtsZShlKSx0aGlzLmxvZ0lmRGVidWdFbmFibGVkKCJlbWl0U2VyaWFsIixlLHIpO2NvbnN0IG49ZGUodGhpcyxlKSxzPU4uZ2V0KHRoaXMpLGk9Wy4uLm5dLGE9Wy4uLnNdO2F3YWl0IFJyO2Zvcihjb25zdCBvIG9mIGkpbi5oYXMobykmJmF3YWl0IG8ocik7Zm9yKGNvbnN0IG8gb2YgYSlzLmhhcyhvKSYmYXdhaXQgbyhlLHIpfW9uQW55KGUpe3JldHVybiBWZShlKSx0aGlzLmxvZ0lmRGVidWdFbmFibGVkKCJzdWJzY3JpYmVBbnkiLHZvaWQgMCx2b2lkIDApLE4uZ2V0KHRoaXMpLmFkZChlKSx0aGlzLmVtaXQoR2Use2xpc3RlbmVyOmV9KSx0aGlzLm9mZkFueS5iaW5kKHRoaXMsZSl9YW55RXZlbnQoKXtyZXR1cm4gRnIodGhpcyl9b2ZmQW55KGUpe1ZlKGUpLHRoaXMubG9nSWZEZWJ1Z0VuYWJsZWQoInVuc3Vic2NyaWJlQW55Iix2b2lkIDAsdm9pZCAwKSx0aGlzLmVtaXQoJGUse2xpc3RlbmVyOmV9KSxOLmdldCh0aGlzKS5kZWxldGUoZSl9Y2xlYXJMaXN0ZW5lcnMoZSl7ZT1BcnJheS5pc0FycmF5KGUpP2U6W2VdO2Zvcihjb25zdCByIG9mIGUpaWYodGhpcy5sb2dJZkRlYnVnRW5hYmxlZCgiY2xlYXIiLHIsdm9pZCAwKSx0eXBlb2Ygcj09InN0cmluZyJ8fHR5cGVvZiByPT0ic3ltYm9sIil7ZGUodGhpcyxyKS5jbGVhcigpO2NvbnN0IG49RWUodGhpcyxyKTtmb3IoY29uc3QgcyBvZiBuKXMuZmluaXNoKCk7bi5jbGVhcigpfWVsc2V7Ti5nZXQodGhpcykuY2xlYXIoKTtmb3IoY29uc3QgbiBvZiB6ZS5nZXQodGhpcykudmFsdWVzKCkpbi5jbGVhcigpO2Zvcihjb25zdCBuIG9mIHhlLmdldCh0aGlzKS52YWx1ZXMoKSl7Zm9yKGNvbnN0IHMgb2YgbilzLmZpbmlzaCgpO24uY2xlYXIoKX19fWxpc3RlbmVyQ291bnQoZSl7ZT1BcnJheS5pc0FycmF5KGUpP2U6W2VdO2xldCByPTA7Zm9yKGNvbnN0IG4gb2YgZSl7aWYodHlwZW9mIG49PSJzdHJpbmciKXtyKz1OLmdldCh0aGlzKS5zaXplK2RlKHRoaXMsbikuc2l6ZStFZSh0aGlzLG4pLnNpemUrRWUodGhpcykuc2l6ZTtjb250aW51ZX10eXBlb2YgbjwidSImJmxlKG4pLHIrPU4uZ2V0KHRoaXMpLnNpemU7Zm9yKGNvbnN0IHMgb2YgemUuZ2V0KHRoaXMpLnZhbHVlcygpKXIrPXMuc2l6ZTtmb3IoY29uc3QgcyBvZiB4ZS5nZXQodGhpcykudmFsdWVzKCkpcis9cy5zaXplfXJldHVybiByfWJpbmRNZXRob2RzKGUscil7aWYodHlwZW9mIGUhPSJvYmplY3QifHxlPT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJgdGFyZ2V0YCBtdXN0IGJlIGFuIG9iamVjdCIpO3I9UHIocik7Zm9yKGNvbnN0IG4gb2Ygcil7aWYoZVtuXSE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoYFRoZSBwcm9wZXJ0eSBcYCR7bn1cYCBhbHJlYWR5IGV4aXN0cyBvbiBcYHRhcmdldFxgYCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7ZW51bWVyYWJsZTohMSx2YWx1ZTp0aGlzW25dLmJpbmQodGhpcyl9KX19fTtjb25zdCBrcj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhXZS5wcm90b3R5cGUpLmZpbHRlcih0PT50IT09ImNvbnN0cnVjdG9yIik7T2JqZWN0LmRlZmluZVByb3BlcnR5KFdlLCJsaXN0ZW5lckFkZGVkIix7dmFsdWU6R2Usd3JpdGFibGU6ITEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITF9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoV2UsImxpc3RlbmVyUmVtb3ZlZCIse3ZhbHVlOiRlLHdyaXRhYmxlOiExLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiExfSk7dmFyIHlzPVdlO2NvbnN0IHd0PW1zKHlzKTtmdW5jdGlvbiBicyh0KXtyZXR1cm4gdHlwZW9mIHQ9PSJvYmplY3QiJiZ0IT09bnVsbCYmIm1lc3NhZ2UiaW4gdCYmdHlwZW9mIHQubWVzc2FnZT09InN0cmluZyJ9ZnVuY3Rpb24gZ3ModCl7aWYoYnModCkpcmV0dXJuIHQ7dHJ5e3JldHVybiBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkodCkpfWNhdGNoe3JldHVybiBuZXcgRXJyb3IoU3RyaW5nKHQpKX19ZnVuY3Rpb24gQXQodCl7cmV0dXJuIGdzKHQpLm1lc3NhZ2V9dmFyIHhzPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxFcz0odCxlLHIpPT5lIGluIHQ/eHModCxlLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpyfSk6dFtlXT1yLF9zPSh0LGUscik9PihFcyh0LGUrIiIscikscik7Y29uc3QgVHM9ImhsZy50b2tib3guY29tL3Byb2QvbG9nZ2luZy92Y3Bfd2VicnRjIix3cz0iaHR0cHM6Ly8iLEFzPTFlNDtsZXQgSGU7Y29uc3QgdnM9bmV3IFVpbnQ4QXJyYXkoMTYpO2Z1bmN0aW9uIFNzKCl7aWYoIUhlJiYoSGU9dHlwZW9mIGNyeXB0bzwidSImJmNyeXB0by5nZXRSYW5kb21WYWx1ZXMmJmNyeXB0by5nZXRSYW5kb21WYWx1ZXMuYmluZChjcnlwdG8pLCFIZSkpdGhyb3cgbmV3IEVycm9yKCJjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKCkgbm90IHN1cHBvcnRlZC4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS91dWlkanMvdXVpZCNnZXRyYW5kb212YWx1ZXMtbm90LXN1cHBvcnRlZCIpO3JldHVybiBIZSh2cyl9Y29uc3QgVD1bXTtmb3IobGV0IHQ9MDt0PDI1NjsrK3QpVC5wdXNoKCh0KzI1NikudG9TdHJpbmcoMTYpLnNsaWNlKDEpKTtmdW5jdGlvbiBJcyh0LGU9MCl7cmV0dXJuKFRbdFtlKzBdXStUW3RbZSsxXV0rVFt0W2UrMl1dK1RbdFtlKzNdXSsiLSIrVFt0W2UrNF1dK1RbdFtlKzVdXSsiLSIrVFt0W2UrNl1dK1RbdFtlKzddXSsiLSIrVFt0W2UrOF1dK1RbdFtlKzldXSsiLSIrVFt0W2UrMTBdXStUW3RbZSsxMV1dK1RbdFtlKzEyXV0rVFt0W2UrMTNdXStUW3RbZSsxNF1dK1RbdFtlKzE1XV0pLnRvTG93ZXJDYXNlKCl9Y29uc3QgUnM9dHlwZW9mIGNyeXB0bzwidSImJmNyeXB0by5yYW5kb21VVUlEJiZjcnlwdG8ucmFuZG9tVVVJRC5iaW5kKGNyeXB0byksQ3I9e3JhbmRvbVVVSUQ6UnN9O2Z1bmN0aW9uIEZzKHQsZSxyKXtpZihDci5yYW5kb21VVUlEJiYhZSYmIXQpcmV0dXJuIENyLnJhbmRvbVVVSUQoKTt0PXR8fHt9O2NvbnN0IG49dC5yYW5kb218fCh0LnJuZ3x8U3MpKCk7cmV0dXJuIG5bNl09bls2XSYxNXw2NCxuWzhdPW5bOF0mNjN8MTI4LElzKG4pfWZ1bmN0aW9uIHZ0KHQsZSl7Z2xvYmFsVGhpcy52b25hZ2V8fChnbG9iYWxUaGlzLnZvbmFnZT17fSksZ2xvYmFsVGhpcy52b25hZ2Uud29ya2VyaXplcnx8KGdsb2JhbFRoaXMudm9uYWdlLndvcmtlcml6ZXI9e30pO2xldCByPWdsb2JhbFRoaXMudm9uYWdlLndvcmtlcml6ZXI7cmV0dXJuIHJbdF18fChyW3RdPWUpLHJbdF19Y29uc3QgTz12dCgiZ2xvYmFscyIse30pO3ZhciBRPSh0PT4odC5JTklUPSJJTklUIix0LkZPUldBUkQ9IkZPUldBUkQiLHQuVEVSTUlOQVRFPSJURVJNSU5BVEUiLHQuR0xPQkFMU19TWU5DPSJHTE9CQUxTX1NZTkMiLHQpKShRfHx7fSk7ZnVuY3Rpb24gQnIodCl7cmV0dXJuW0ltYWdlQml0bWFwLFJlYWRhYmxlU3RyZWFtLFdyaXRhYmxlU3RyZWFtXS5zb21lKGU9PnQgaW5zdGFuY2VvZiBlKX1sZXQgUHM9MDtmdW5jdGlvbiBrcyh0LGUscixuLHMpe2NvbnN0IGk9UHMrKztyZXR1cm4gdC5wb3N0TWVzc2FnZSh7aWQ6aSx0eXBlOmUsZnVuY3Rpb25OYW1lOnIsYXJnczpufSxuLmZpbHRlcihhPT5CcihhKSkpLG5ldyBQcm9taXNlKGE9PntzPT1udWxsfHxzLnNldChpLGEpfSl9ZnVuY3Rpb24gX2UodCxlKXtjb25zdHtpZDpyLHR5cGU6bn09dCxzPUFycmF5LmlzQXJyYXkoZSk/ZTpbZV07cG9zdE1lc3NhZ2Uoe2lkOnIsdHlwZTpuLHJlc3VsdDplfSxzLmZpbHRlcihpPT5CcihpKSkpfWNvbnN0IERyPXZ0KCJ3b3JrZXJpemVkIix7fSk7ZnVuY3Rpb24gTXIoKXtyZXR1cm4gdHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlPCJ1IiYmc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlfWFzeW5jIGZ1bmN0aW9uIENzKCl7aWYoTXIoKSlfZSh7dHlwZTpRLkdMT0JBTFNfU1lOQ30sTyk7ZWxzZXtjb25zdCB0PVtdO2Zvcihjb25zdCBlIGluIERyKXtjb25zdHt3b3JrZXI6cixyZXNvbHZlcnM6bn09RHJbZV0ud29ya2VyQ29udGV4dDtyJiZ0LnB1c2goa3MocixRLkdMT0JBTFNfU1lOQywiIixbT10sbikpfWF3YWl0IFByb21pc2UuYWxsKHQpfX1mdW5jdGlvbiBqZSh0LGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpZS5zcGxpY2UoMCxlLmxlbmd0aCk7ZWxzZSBpZih0eXBlb2YgZT09Im9iamVjdCIpZm9yKGNvbnN0IHIgaW4gZSlkZWxldGUgZVtyXTtmb3IoY29uc3QgciBpbiB0KUFycmF5LmlzQXJyYXkodFtyXSk/KGVbcl09W10samUodFtyXSxlW3JdKSk6dHlwZW9mIHRbcl09PSJvYmplY3QiPyhlW3JdPXt9LGplKHRbcl0sZVtyXSkpOmVbcl09dFtyXX1hc3luYyBmdW5jdGlvbiBCcyh0LGUpe2NvbnN0e2Z1bmN0aW9uTmFtZTpyLGFyZ3M6bn09dDtpZighZS5pbnN0YW5jZSl0aHJvdyJpbnN0YW5jZSBub3QgaW5pdGlhbGl6ZWQiO2lmKCFyKXRocm93Im1pc3NpbmcgZnVuY3Rpb24gbmFtZSB0byBjYWxsIjtpZighZS5pbnN0YW5jZVtyXSl0aHJvd2B1bmRlZmluZWQgZnVuY3Rpb24gWyR7cn1dIGluIGNsYXNzICR7ZS5pbnN0YW5jZS5jb25zdHJ1Y3Rvci53b3JrZXJJZH1gO19lKHQsYXdhaXQgZS5pbnN0YW5jZVtyXSguLi5uPz9bXSkpfWNvbnN0IERzPXZ0KCJyZWdpc3RlcmVkV29ya2VycyIse30pO2Z1bmN0aW9uIE1zKHQsZSl7aWYoIXQuYXJncyl0aHJvdyJNaXNzaW5nIGNsYXNzTmFtZSB3aGlsZSBpbml0aWFsaXppbmcgd29ya2VyIjtjb25zdFtyLG5dPXQuYXJncyxzPURzW3JdO2lmKHMpZS5pbnN0YW5jZT1uZXcgcyh0LmFyZ3Muc2xpY2UoMSkpO2Vsc2UgdGhyb3dgdW5rbm93biB3b3JrZXIgY2xhc3MgJHtyfWA7amUobixPKSxfZSh0LHR5cGVvZiBlLmluc3RhbmNlIT09dm9pZCAwKX1hc3luYyBmdW5jdGlvbiBVcyh0LGUpe2NvbnN0e2FyZ3M6cn09dDtpZighZS5pbnN0YW5jZSl0aHJvdyJpbnN0YW5jZSBub3QgaW5pdGlhbGl6ZWQiO2xldCBuO2UuaW5zdGFuY2UudGVybWluYXRlJiYobj1hd2FpdCBlLmluc3RhbmNlLnRlcm1pbmF0ZSguLi5yPz9bXSkpLF9lKHQsbil9ZnVuY3Rpb24gTnModCl7aWYoIXQuYXJncyl0aHJvdyJNaXNzaW5nIGdsb2JhbHMgd2hpbGUgc3luY2luZyI7amUodC5hcmdzWzBdLE8pLF9lKHQse30pfWZ1bmN0aW9uIE9zKCl7Y29uc3QgdD17fTtvbm1lc3NhZ2U9YXN5bmMgZT0+e2NvbnN0IHI9ZS5kYXRhO3N3aXRjaChyLnR5cGUpe2Nhc2UgUS5JTklUOk1zKHIsdCk7YnJlYWs7Y2FzZSBRLkZPUldBUkQ6QnMocix0KTticmVhaztjYXNlIFEuVEVSTUlOQVRFOlVzKHIsdCk7YnJlYWs7Y2FzZSBRLkdMT0JBTFNfU1lOQzpOcyhyKTticmVha319fU1yKCkmJk9zKCk7ZnVuY3Rpb24gTHModCxlKXtyZXR1cm4gT1t0XXx8KE9bdF09ZSksWygpPT5PW3RdLGFzeW5jIHI9PntPW3RdPXIsYXdhaXQgQ3MoKX1dfWZ1bmN0aW9uIHpzKHQsZSl7cmV0dXJuIExzKHQsZSl9Y29uc3RbR3MsJHNdPXpzKCJtZXRhZGF0YSIpO2Z1bmN0aW9uIFZzKHQpeyRzKHQpfWZ1bmN0aW9uIFN0KCl7cmV0dXJuIEdzKCl9bGV0IEl0PWNsYXNze2NvbnN0cnVjdG9yKGUscil7X3ModGhpcywidXVpZCIpLHRoaXMuY29uZmlnPWUsdGhpcy51dWlkPXI/P0ZzKCl9YXN5bmMgc2VuZChlKXt2YXIgcixuLHM7Y29uc3R7YXBwSWQ6aSxzb3VyY2VUeXBlOmF9PShyPVN0KCkpIT1udWxsP3I6e307aWYoIWl8fCFhKXJldHVybiJtZXRhZGF0YSBtaXNzaW5nIjtjb25zdCBvPW5ldyBBYm9ydENvbnRyb2xsZXIsYz1zZXRUaW1lb3V0KCgpPT5vLmFib3J0KCksQXMpO3JldHVybiBhd2FpdCgocz0obj10aGlzLmNvbmZpZyk9PW51bGw/dm9pZCAwOm4uZmV0Y2gpIT1udWxsP3M6ZmV0Y2gpKHRoaXMuZ2V0VXJsKCkse21ldGhvZDoiUE9TVCIsaGVhZGVyczp0aGlzLmdldEhlYWRlcnMoKSxib2R5OkpTT04uc3RyaW5naWZ5KHRoaXMuYnVpbGRSZXBvcnQoZSkpLHNpZ25hbDpvLnNpZ25hbH0pLGNsZWFyVGltZW91dChjKSwic3VjY2VzcyJ9Z2V0VXJsKCl7dmFyIGU7bGV0IHI9KGU9U3QoKS5wcm94eVVybCkhPW51bGw/ZTp3cztyZXR1cm4gcis9KHIuYXQoLTEpPT09Ii8iPyIiOiIvIikrVHMscn1nZXRIZWFkZXJzKCl7cmV0dXJueyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn19YnVpbGRSZXBvcnQoZSl7Y29uc3Qgcj1TdCgpO3JldHVybntndWlkOnRoaXMudXVpZCwuLi5lLGFwcGxpY2F0aW9uSWQ6ci5hcHBJZCx0aW1lc3RhbXA6RGF0ZS5ub3coKSxwcm94eVVybDpyLnByb3h5VXJsLHNvdXJjZTpyLnNvdXJjZVR5cGV9fX07Y29uc3QgWGU9IjIuMC40IjtjbGFzcyBXc3tjb25zdHJ1Y3RvcihlLHIpe3RoaXMuY29uZmlnPWUsdGhpcy5mcmFtZVRyYW5zZm9ybWVkQ291bnQ9MCx0aGlzLmZyYW1lRnJvbVNvdXJjZUNvdW50PTAsdGhpcy5zdGFydEF0PTAsdGhpcy5yZXBvcnRlcj1uZXcgSXQoZSxyKX1hc3luYyBvbkZyYW1lRnJvbVNvdXJjZSgpe3RoaXMuZnJhbWVGcm9tU291cmNlQ291bnQrK31nZXQgZnBzKCl7Y29uc3R7c3RhcnRBdDplLGZyYW1lRnJvbVNvdXJjZUNvdW50OnJ9PXRoaXMsbj0oRGF0ZS5ub3coKS1lKS8xZTM7cmV0dXJuIHIvbn1hc3luYyBvbkZyYW1lVHJhbnNmb3JtZWQoZT17fSxyPSExKXt0aGlzLnN0YXJ0QXQ9PT0wJiYodGhpcy5zdGFydEF0PURhdGUubm93KCkpLHRoaXMuZnJhbWVUcmFuc2Zvcm1lZENvdW50Kys7Y29uc3R7c3RhcnRBdDpuLGZyYW1lVHJhbnNmb3JtZWRDb3VudDpzLGZyYW1lRnJvbVNvdXJjZUNvdW50Oml9PXRoaXMsYT1EYXRlLm5vdygpLG89KGEtbikvMWUzLGM9cy9vLHU9aS9vO3JldHVybiByfHx0aGlzLmZyYW1lVHJhbnNmb3JtZWRDb3VudD49dGhpcy5jb25maWcubG9nZ2luZ0ludGVydmFsRnJhbWVDb3VudD8odGhpcy5mcmFtZUZyb21Tb3VyY2VDb3VudD0wLHRoaXMuZnJhbWVUcmFuc2Zvcm1lZENvdW50PTAsdGhpcy5zdGFydEF0PWEsdGhpcy5yZXBvcnRlci5jb25maWc9dGhpcy5jb25maWcsdGhpcy5yZXBvcnRlci5zZW5kKHsuLi50aGlzLmNvbmZpZy5yZXBvcnQsdmFyaWF0aW9uOiJRb1MiLGZwczp1LHRyYW5zZm9ybWVkRnBzOmMsZnJhbWVzVHJhbnNmb3JtZWQ6cywuLi5lfSkpOiJzdWNjZXNzIn19dmFyIFJ0PSh0PT4odC5waXBlbGluZV9lbmRlZD0icGlwZWxpbmVfZW5kZWQiLHQucGlwZWxpbmVfZW5kZWRfd2l0aF9lcnJvcj0icGlwZWxpbmVfZW5kZWRfd2l0aF9lcnJvciIsdC5waXBlbGluZV9zdGFydGVkPSJwaXBlbGluZV9zdGFydGVkIix0LnBpcGVsaW5lX3N0YXJ0ZWRfd2l0aF9lcnJvcj0icGlwZWxpbmVfc3RhcnRlZF93aXRoX2Vycm9yIix0LnBpcGVsaW5lX3Jlc3RhcnRlZD0icGlwZWxpbmVfcmVzdGFydGVkIix0LnBpcGVsaW5lX3Jlc3RhcnRlZF93aXRoX2Vycm9yPSJwaXBlbGluZV9yZXN0YXJ0ZWRfd2l0aF9lcnJvciIsdCkpKFJ0fHx7fSk7Y29uc3QgSHM9NTAwLGpzPS44O2NsYXNzIFhzIGV4dGVuZHMgd3R7Y29uc3RydWN0b3IoZSxyKXtzdXBlcigpLHRoaXMucmVwb3J0ZXJfPW5ldyBJdCx0aGlzLnJlcG9ydGVyUW9zXz1uZXcgV3Moe2xvZ2dpbmdJbnRlcnZhbEZyYW1lQ291bnQ6SHMscmVwb3J0Ont2ZXJzaW9uOlhlfX0pLHRoaXMuaW5kZXhfPXIsdGhpcy50cmFuc2Zvcm1lcl89ZSx0aGlzLnNob3VsZFN0b3BfPSExLHRoaXMuaXNGbGFzaGVkXz0hMSx0aGlzLm1lZGlhVHJhbnNmb3JtZXJRb3NSZXBvcnRTdGFydFRpbWVzdGFtcF89MCx0aGlzLnZpZGVvSGVpZ2h0Xz0wLHRoaXMudmlkZW9XaWR0aF89MCx0aGlzLnRyYWNrRXhwZWN0ZWRSYXRlXz0tMSx0aGlzLnRyYW5zZm9ybWVyVHlwZV89IkN1c3RvbSIsImdldFRyYW5zZm9ybWVyVHlwZSJpbiBlJiYodGhpcy50cmFuc2Zvcm1lclR5cGVfPWUuZ2V0VHJhbnNmb3JtZXJUeXBlKCkpLHRoaXMucmVwb3J0KHt2YXJpYXRpb246IkNyZWF0ZSJ9KX1zZXRUcmFja0V4cGVjdGVkUmF0ZShlKXt0aGlzLnRyYWNrRXhwZWN0ZWRSYXRlXz1lfWFzeW5jIHN0YXJ0KGUpe2lmKHRoaXMuY29udHJvbGxlcl89ZSx0aGlzLnRyYW5zZm9ybWVyXyYmdHlwZW9mIHRoaXMudHJhbnNmb3JtZXJfLnN0YXJ0PT0iZnVuY3Rpb24iKXRyeXthd2FpdCB0aGlzLnRyYW5zZm9ybWVyXy5zdGFydChlKX1jYXRjaChyKXt0aGlzLnJlcG9ydCh7bWVzc2FnZTpELmVycm9ycy50cmFuc2Zvcm1lcl9zdGFydCx2YXJpYXRpb246IkVycm9yIixlcnJvcjpBdChyKX0pO2NvbnN0IG49e2V2ZW50TWV0YURhdGE6e3RyYW5zZm9ybWVySW5kZXg6dGhpcy5pbmRleF99LGVycm9yOnIsZnVuY3Rpb246InN0YXJ0In07dGhpcy5lbWl0KCJlcnJvciIsbil9fWFzeW5jIHRyYW5zZm9ybShlLHIpe3ZhciBuLHM7aWYodGhpcy5tZWRpYVRyYW5zZm9ybWVyUW9zUmVwb3J0U3RhcnRUaW1lc3RhbXBfPT09MCYmKHRoaXMubWVkaWFUcmFuc2Zvcm1lclFvc1JlcG9ydFN0YXJ0VGltZXN0YW1wXz1EYXRlLm5vdygpKSxlIGluc3RhbmNlb2YgVmlkZW9GcmFtZSYmKHRoaXMudmlkZW9IZWlnaHRfPShlPT1udWxsP3ZvaWQgMDplLmRpc3BsYXlIZWlnaHQpPz8wLHRoaXMudmlkZW9XaWR0aF89KGU9PW51bGw/dm9pZCAwOmUuZGlzcGxheVdpZHRoKT8/MCksdGhpcy5yZXBvcnRlclFvc18ub25GcmFtZUZyb21Tb3VyY2UoKSx0aGlzLnRyYW5zZm9ybWVyXylpZih0aGlzLnNob3VsZFN0b3BfKWNvbnNvbGUud2FybigiW1BpcGVsaW5lXSBmbHVzaCBmcm9tIHRyYW5zZm9ybSIpLGUuY2xvc2UoKSx0aGlzLmZsdXNoKHIpLHIudGVybWluYXRlKCk7ZWxzZXt0cnl7YXdhaXQoKHM9KG49dGhpcy50cmFuc2Zvcm1lcl8pLnRyYW5zZm9ybSk9PW51bGw/dm9pZCAwOnMuY2FsbChuLGUscikpLHRoaXMucmVwb3J0UW9zKCl9Y2F0Y2goaSl7dGhpcy5yZXBvcnQoe21lc3NhZ2U6RC5lcnJvcnMudHJhbnNmb3JtZXJfdHJhbnNmb3JtLHZhcmlhdGlvbjoiRXJyb3IiLGVycm9yOkF0KGkpfSk7Y29uc3QgYT17ZXZlbnRNZXRhRGF0YTp7dHJhbnNmb3JtZXJJbmRleDp0aGlzLmluZGV4X30sZXJyb3I6aSxmdW5jdGlvbjoidHJhbnNmb3JtIn07dGhpcy5lbWl0KCJlcnJvciIsYSl9aWYodGhpcy50cmFja0V4cGVjdGVkUmF0ZV8hPS0xJiZ0aGlzLnRyYWNrRXhwZWN0ZWRSYXRlXypqcz50aGlzLnJlcG9ydGVyUW9zXy5mcHMpe2NvbnN0IGk9e2V2ZW50TWV0YURhdGE6e3RyYW5zZm9ybWVySW5kZXg6dGhpcy5pbmRleF99LHdhcm5pbmdUeXBlOiJmcHNfZHJvcCIsZHJvcEluZm86e3JlcXVlc3RlZDp0aGlzLnRyYWNrRXhwZWN0ZWRSYXRlXyxjdXJyZW50OnRoaXMucmVwb3J0ZXJRb3NfLmZwc319O3RoaXMuZW1pdCgid2FybiIsaSl9fX1hc3luYyBmbHVzaChlKXtpZih0aGlzLnRyYW5zZm9ybWVyXyYmdHlwZW9mIHRoaXMudHJhbnNmb3JtZXJfLmZsdXNoPT0iZnVuY3Rpb24iJiYhdGhpcy5pc0ZsYXNoZWRfKXt0aGlzLmlzRmxhc2hlZF89ITA7dHJ5e2F3YWl0IHRoaXMudHJhbnNmb3JtZXJfLmZsdXNoKGUpfWNhdGNoKHIpe3RoaXMucmVwb3J0KHttZXNzYWdlOkQuZXJyb3JzLnRyYW5zZm9ybWVyX2ZsdXNoLHZhcmlhdGlvbjoiRXJyb3IiLGVycm9yOkF0KHIpfSk7Y29uc3Qgbj17ZXZlbnRNZXRhRGF0YTp7dHJhbnNmb3JtZXJJbmRleDp0aGlzLmluZGV4X30sZXJyb3I6cixmdW5jdGlvbjoiZmx1c2gifTt0aGlzLmVtaXQoImVycm9yIixuKX19dGhpcy5yZXBvcnRRb3MoITApLHRoaXMucmVwb3J0KHt2YXJpYXRpb246IkRlbGV0ZSJ9KX1zdG9wKCl7Y29uc29sZS5sb2coIltQaXBlbGluZV0gU3RvcCBzdHJlYW0uIiksdGhpcy5jb250cm9sbGVyXyYmKHRoaXMuZmx1c2godGhpcy5jb250cm9sbGVyXyksdGhpcy5jb250cm9sbGVyXy50ZXJtaW5hdGUoKSksdGhpcy5zaG91bGRTdG9wXz0hMH1yZXBvcnQoZSl7dGhpcy5yZXBvcnRlcl8uc2VuZCh7dmVyc2lvbjpYZSxhY3Rpb246Ik1lZGlhVHJhbnNmb3JtZXIiLHRyYW5zZm9ybWVyVHlwZTp0aGlzLnRyYW5zZm9ybWVyVHlwZV8sLi4uZX0pfXJlcG9ydFFvcyhlPSExKXt0aGlzLnJlcG9ydGVyUW9zXy5jb25maWc9ey4uLnRoaXMucmVwb3J0ZXJRb3NfLmNvbmZpZ30sdGhpcy5yZXBvcnRlclFvc18ub25GcmFtZVRyYW5zZm9ybWVkKHt2ZXJzaW9uOlhlLGFjdGlvbjoiTWVkaWFUcmFuc2Zvcm1lciIsdHJhbnNmb3JtZXJUeXBlOnRoaXMudHJhbnNmb3JtZXJUeXBlXyx2aWRlb1dpZHRoOnRoaXMudmlkZW9XaWR0aF8sdmlkZW9IZWlnaHQ6dGhpcy52aWRlb0hlaWdodF99LGUpfX1jbGFzcyBZcyBleHRlbmRzIHd0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy50cmFuc2Zvcm1lcnNfPVtdLHRoaXMudHJhY2tFeHBlY3RlZFJhdGVfPS0xO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKXtsZXQgbj1uZXcgWHMoZVtyXSxyKTtuLm9uKCJlcnJvciIscz0+e3RoaXMuZW1pdCgiZXJyb3IiLHMpfSksbi5vbigid2FybiIscz0+e3RoaXMuZW1pdCgid2FybiIscyl9KSx0aGlzLnRyYW5zZm9ybWVyc18ucHVzaChuKX19c2V0VHJhY2tFeHBlY3RlZFJhdGUoZSl7dGhpcy50cmFja0V4cGVjdGVkUmF0ZV89ZTtmb3IobGV0IHIgb2YgdGhpcy50cmFuc2Zvcm1lcnNfKXIuc2V0VHJhY2tFeHBlY3RlZFJhdGUodGhpcy50cmFja0V4cGVjdGVkUmF0ZV8pfWFzeW5jIHN0YXJ0KGUscil7aWYoIXRoaXMudHJhbnNmb3JtZXJzX3x8dGhpcy50cmFuc2Zvcm1lcnNfLmxlbmd0aD09PTApe2NvbnNvbGUubG9nKCJbUGlwZWxpbmVdIE5vIHRyYW5zZm9ybWVycy4iKTtyZXR1cm59dHJ5e2xldCBuPWU7Zm9yKGxldCBzIG9mIHRoaXMudHJhbnNmb3JtZXJzXyllPWUucGlwZVRocm91Z2gobmV3IFRyYW5zZm9ybVN0cmVhbShzKSk7ZS5waXBlVG8ocikudGhlbihhc3luYygpPT57Y29uc29sZS5sb2coIltQaXBlbGluZV0gU2V0dXAuIiksYXdhaXQgci5hYm9ydCgpLGF3YWl0IG4uY2FuY2VsKCksdGhpcy5lbWl0KCJwaXBlbGluZUluZm8iLCJwaXBlbGluZV9lbmRlZCIpfSkuY2F0Y2goYXN5bmMgcz0+e2UuY2FuY2VsKCkudGhlbigoKT0+e2NvbnNvbGUubG9nKCJbUGlwZWxpbmVdIFNodXR0aW5nIGRvd24gc3RyZWFtcyBhZnRlciBhYm9ydC4iKX0pLmNhdGNoKGk9Pntjb25zb2xlLmVycm9yKCJbUGlwZWxpbmVdIEVycm9yIGZyb20gc3RyZWFtIHRyYW5zZm9ybToiLGkpfSksYXdhaXQgci5hYm9ydChzKSxhd2FpdCBuLmNhbmNlbChzKSx0aGlzLmVtaXQoInBpcGVsaW5lSW5mbyIsInBpcGVsaW5lX2VuZGVkX3dpdGhfZXJyb3IiKX0pfWNhdGNoe3RoaXMuZW1pdCgicGlwZWxpbmVJbmZvIiwicGlwZWxpbmVfc3RhcnRlZF93aXRoX2Vycm9yIiksdGhpcy5kZXN0cm95KCk7cmV0dXJufXRoaXMuZW1pdCgicGlwZWxpbmVJbmZvIiwicGlwZWxpbmVfc3RhcnRlZCIpLGNvbnNvbGUubG9nKCJbUGlwZWxpbmVdIFBpcGVsaW5lIHN0YXJ0ZWQuIil9YXN5bmMgZGVzdHJveSgpe2NvbnNvbGUubG9nKCJbUGlwZWxpbmVdIERlc3Ryb3lpbmcgUGlwZWxpbmUuIik7Zm9yKGxldCBlIG9mIHRoaXMudHJhbnNmb3JtZXJzXyllLnN0b3AoKX19Y2xhc3MgUXMgZXh0ZW5kcyB3dHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5yZXBvcnRlcl89bmV3IEl0LHRoaXMudHJhY2tFeHBlY3RlZFJhdGVfPS0xLHRoaXMucmVwb3J0KHt2YXJpYXRpb246IkNyZWF0ZSJ9KX1zZXRUcmFja0V4cGVjdGVkUmF0ZShlKXt0aGlzLnRyYWNrRXhwZWN0ZWRSYXRlXz1lLHRoaXMucGlwZWxpbmVfJiZ0aGlzLnBpcGVsaW5lXy5zZXRUcmFja0V4cGVjdGVkUmF0ZSh0aGlzLnRyYWNrRXhwZWN0ZWRSYXRlXyl9dHJhbnNmb3JtKGUscil7cmV0dXJuIHRoaXMucmVhZGFibGVfPWUsdGhpcy53cml0YWJsZV89cix0aGlzLnRyYW5zZm9ybUludGVybmFsKCl9dHJhbnNmb3JtSW50ZXJuYWwoKXtyZXR1cm4gbmV3IFByb21pc2UoYXN5bmMoZSxyKT0+e2lmKCF0aGlzLnRyYW5zZm9ybWVyc198fHRoaXMudHJhbnNmb3JtZXJzXy5sZW5ndGg9PT0wKXt0aGlzLnJlcG9ydCh7bWVzc2FnZTpELmVycm9ycy50cmFuc2Zvcm1lcl9ub25lLHZhcmlhdGlvbjoiRXJyb3IifSkscigiW01lZGlhUHJvY2Vzc29yXSBOZWVkIHRvIHNldCB0cmFuc2Zvcm1lcnMuIik7cmV0dXJufWlmKCF0aGlzLnJlYWRhYmxlXyl7dGhpcy5yZXBvcnQoe3ZhcmlhdGlvbjoiRXJyb3IiLG1lc3NhZ2U6RC5lcnJvcnMucmVhZGFibGVfbnVsbH0pLHIoIltNZWRpYVByb2Nlc3Nvcl0gUmVhZGFibGUgaXMgbnVsbC4iKTtyZXR1cm59aWYoIXRoaXMud3JpdGFibGVfKXt0aGlzLnJlcG9ydCh7dmFyaWF0aW9uOiJFcnJvciIsbWVzc2FnZTpELmVycm9ycy53cml0YWJsZV9udWxsfSkscigiW01lZGlhUHJvY2Vzc29yXSBXcml0YWJsZSBpcyBudWxsLiIpO3JldHVybn1sZXQgbj0hMTt0aGlzLnBpcGVsaW5lXyYmKG49ITAsdGhpcy5waXBlbGluZV8uY2xlYXJMaXN0ZW5lcnMoKSx0aGlzLnBpcGVsaW5lXy5kZXN0cm95KCkpLHRoaXMucGlwZWxpbmVfPW5ldyBZcyh0aGlzLnRyYW5zZm9ybWVyc18pLHRoaXMucGlwZWxpbmVfLm9uKCJ3YXJuIixzPT57dGhpcy5lbWl0KCJ3YXJuIixzKX0pLHRoaXMucGlwZWxpbmVfLm9uKCJlcnJvciIscz0+e3RoaXMuZW1pdCgiZXJyb3IiLHMpfSksdGhpcy5waXBlbGluZV8ub24oInBpcGVsaW5lSW5mbyIscz0+e24mJihzPT09InBpcGVsaW5lX3N0YXJ0ZWQiP3M9UnQucGlwZWxpbmVfcmVzdGFydGVkOnM9PT0icGlwZWxpbmVfc3RhcnRlZF93aXRoX2Vycm9yIiYmKHM9UnQucGlwZWxpbmVfcmVzdGFydGVkX3dpdGhfZXJyb3IpKSx0aGlzLmVtaXQoInBpcGVsaW5lSW5mbyIscyl9KSx0aGlzLnRyYWNrRXhwZWN0ZWRSYXRlXyE9LTEmJnRoaXMucGlwZWxpbmVfLnNldFRyYWNrRXhwZWN0ZWRSYXRlKHRoaXMudHJhY2tFeHBlY3RlZFJhdGVfKSx0aGlzLnBpcGVsaW5lXy5zdGFydCh0aGlzLnJlYWRhYmxlXyx0aGlzLndyaXRhYmxlXykudGhlbigoKT0+e2UoKX0pLmNhdGNoKHM9PntyKHMpfSl9KX1zZXRUcmFuc2Zvcm1lcnMoZSl7cmV0dXJuIHRoaXMucmVwb3J0KHt2YXJpYXRpb246IlVwZGF0ZSIsbWVzc2FnZTpELnVwZGF0ZXMudHJhbnNmb3JtZXJfbmV3fSksdGhpcy50cmFuc2Zvcm1lcnNfPWUsdGhpcy5yZWFkYWJsZV8mJnRoaXMud3JpdGFibGVfP3RoaXMudHJhbnNmb3JtSW50ZXJuYWwoKTpQcm9taXNlLnJlc29sdmUoKX1kZXN0cm95KCl7cmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIGU9Pnt0aGlzLnBpcGVsaW5lXyYmdGhpcy5waXBlbGluZV8uZGVzdHJveSgpLHRoaXMucmVwb3J0KHt2YXJpYXRpb246IkRlbGV0ZSJ9KSxlKCl9KX1yZXBvcnQoZSl7dGhpcy5yZXBvcnRlcl8uc2VuZCh7dmVyc2lvbjpYZSxhY3Rpb246Ik1lZGlhUHJvY2Vzc29yIiwuLi5lfSl9fXZhciBxcz1PYmplY3QuZGVmaW5lUHJvcGVydHksS3M9KHQsZSxyKT0+ZSBpbiB0P3FzKHQsZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6cn0pOnRbZV09cixKcz0odCxlLHIpPT4oS3ModCxlKyIiLHIpLHIpO2NvbnN0IFpzPSJobGcudG9rYm94LmNvbS9wcm9kL2xvZ2dpbmcvdmNwX3dlYnJ0YyIsZWk9Imh0dHBzOi8vIix0aT0xZTQ7bGV0IFllO2NvbnN0IHJpPW5ldyBVaW50OEFycmF5KDE2KTtmdW5jdGlvbiBuaSgpe2lmKCFZZSYmKFllPXR5cGVvZiBjcnlwdG88InUiJiZjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzJiZjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzLmJpbmQoY3J5cHRvKSwhWWUpKXRocm93IG5ldyBFcnJvcigiY3J5cHRvLmdldFJhbmRvbVZhbHVlcygpIG5vdCBzdXBwb3J0ZWQuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdXVpZGpzL3V1aWQjZ2V0cmFuZG9tdmFsdWVzLW5vdC1zdXBwb3J0ZWQiKTtyZXR1cm4gWWUocmkpfWNvbnN0IHc9W107Zm9yKGxldCB0PTA7dDwyNTY7Kyt0KXcucHVzaCgodCsyNTYpLnRvU3RyaW5nKDE2KS5zbGljZSgxKSk7ZnVuY3Rpb24gc2kodCxlPTApe3JldHVybih3W3RbZSswXV0rd1t0W2UrMV1dK3dbdFtlKzJdXSt3W3RbZSszXV0rIi0iK3dbdFtlKzRdXSt3W3RbZSs1XV0rIi0iK3dbdFtlKzZdXSt3W3RbZSs3XV0rIi0iK3dbdFtlKzhdXSt3W3RbZSs5XV0rIi0iK3dbdFtlKzEwXV0rd1t0W2UrMTFdXSt3W3RbZSsxMl1dK3dbdFtlKzEzXV0rd1t0W2UrMTRdXSt3W3RbZSsxNV1dKS50b0xvd2VyQ2FzZSgpfWNvbnN0IGlpPXR5cGVvZiBjcnlwdG88InUiJiZjcnlwdG8ucmFuZG9tVVVJRCYmY3J5cHRvLnJhbmRvbVVVSUQuYmluZChjcnlwdG8pLFVyPXtyYW5kb21VVUlEOmlpfTtmdW5jdGlvbiBvaSh0LGUscil7aWYoVXIucmFuZG9tVVVJRCYmIWUmJiF0KXJldHVybiBVci5yYW5kb21VVUlEKCk7dD10fHx7fTtjb25zdCBuPXQucmFuZG9tfHwodC5ybmd8fG5pKSgpO3JldHVybiBuWzZdPW5bNl0mMTV8NjQsbls4XT1uWzhdJjYzfDEyOCxzaShuKX1mdW5jdGlvbiBGdCh0LGUpe2dsb2JhbFRoaXMudm9uYWdlfHwoZ2xvYmFsVGhpcy52b25hZ2U9e30pLGdsb2JhbFRoaXMudm9uYWdlLndvcmtlcml6ZXJ8fChnbG9iYWxUaGlzLnZvbmFnZS53b3JrZXJpemVyPXt9KTtsZXQgcj1nbG9iYWxUaGlzLnZvbmFnZS53b3JrZXJpemVyO3JldHVybiByW3RdfHwoclt0XT1lKSxyW3RdfWNvbnN0IEw9RnQoImdsb2JhbHMiLHt9KTt2YXIgcT0odD0+KHQuSU5JVD0iSU5JVCIsdC5GT1JXQVJEPSJGT1JXQVJEIix0LlRFUk1JTkFURT0iVEVSTUlOQVRFIix0LkdMT0JBTFNfU1lOQz0iR0xPQkFMU19TWU5DIix0KSkocXx8e30pO2Z1bmN0aW9uIE5yKHQpe3JldHVybltJbWFnZUJpdG1hcCxSZWFkYWJsZVN0cmVhbSxXcml0YWJsZVN0cmVhbV0uc29tZShlPT50IGluc3RhbmNlb2YgZSl9bGV0IGFpPTA7ZnVuY3Rpb24gY2kodCxlLHIsbixzKXtjb25zdCBpPWFpKys7cmV0dXJuIHQucG9zdE1lc3NhZ2Uoe2lkOmksdHlwZTplLGZ1bmN0aW9uTmFtZTpyLGFyZ3M6bn0sbi5maWx0ZXIoYT0+TnIoYSkpKSxuZXcgUHJvbWlzZShhPT57cz09bnVsbHx8cy5zZXQoaSxhKX0pfWZ1bmN0aW9uIFRlKHQsZSl7Y29uc3R7aWQ6cix0eXBlOm59PXQscz1BcnJheS5pc0FycmF5KGUpP2U6W2VdO3Bvc3RNZXNzYWdlKHtpZDpyLHR5cGU6bixyZXN1bHQ6ZX0scy5maWx0ZXIoaT0+TnIoaSkpKX1jb25zdCBPcj1GdCgid29ya2VyaXplZCIse30pO2Z1bmN0aW9uIExyKCl7cmV0dXJuIHR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZTwidSImJnNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZX1hc3luYyBmdW5jdGlvbiB1aSgpe2lmKExyKCkpVGUoe3R5cGU6cS5HTE9CQUxTX1NZTkN9LEwpO2Vsc2V7Y29uc3QgdD1bXTtmb3IoY29uc3QgZSBpbiBPcil7Y29uc3R7d29ya2VyOnIscmVzb2x2ZXJzOm59PU9yW2VdLndvcmtlckNvbnRleHQ7ciYmdC5wdXNoKGNpKHIscS5HTE9CQUxTX1NZTkMsIiIsW0xdLG4pKX1hd2FpdCBQcm9taXNlLmFsbCh0KX19ZnVuY3Rpb24gUWUodCxlKXtpZihBcnJheS5pc0FycmF5KGUpKWUuc3BsaWNlKDAsZS5sZW5ndGgpO2Vsc2UgaWYodHlwZW9mIGU9PSJvYmplY3QiKWZvcihjb25zdCByIGluIGUpZGVsZXRlIGVbcl07Zm9yKGNvbnN0IHIgaW4gdClBcnJheS5pc0FycmF5KHRbcl0pPyhlW3JdPVtdLFFlKHRbcl0sZVtyXSkpOnR5cGVvZiB0W3JdPT0ib2JqZWN0Ij8oZVtyXT17fSxRZSh0W3JdLGVbcl0pKTplW3JdPXRbcl19YXN5bmMgZnVuY3Rpb24gZmkodCxlKXtjb25zdHtmdW5jdGlvbk5hbWU6cixhcmdzOm59PXQ7aWYoIWUuaW5zdGFuY2UpdGhyb3ciaW5zdGFuY2Ugbm90IGluaXRpYWxpemVkIjtpZighcil0aHJvdyJtaXNzaW5nIGZ1bmN0aW9uIG5hbWUgdG8gY2FsbCI7aWYoIWUuaW5zdGFuY2Vbcl0pdGhyb3dgdW5kZWZpbmVkIGZ1bmN0aW9uIFske3J9XSBpbiBjbGFzcyAke2UuaW5zdGFuY2UuY29uc3RydWN0b3Iud29ya2VySWR9YDtUZSh0LGF3YWl0IGUuaW5zdGFuY2Vbcl0oLi4ubj8/W10pKX1jb25zdCBsaT1GdCgicmVnaXN0ZXJlZFdvcmtlcnMiLHt9KTtmdW5jdGlvbiBkaSh0LGUpe2lmKCF0LmFyZ3MpdGhyb3ciTWlzc2luZyBjbGFzc05hbWUgd2hpbGUgaW5pdGlhbGl6aW5nIHdvcmtlciI7Y29uc3RbcixuXT10LmFyZ3Mscz1saVtyXTtpZihzKWUuaW5zdGFuY2U9bmV3IHModC5hcmdzLnNsaWNlKDEpKTtlbHNlIHRocm93YHVua25vd24gd29ya2VyIGNsYXNzICR7cn1gO1FlKG4sTCksVGUodCx0eXBlb2YgZS5pbnN0YW5jZSE9PXZvaWQgMCl9YXN5bmMgZnVuY3Rpb24gaGkodCxlKXtjb25zdHthcmdzOnJ9PXQ7aWYoIWUuaW5zdGFuY2UpdGhyb3ciaW5zdGFuY2Ugbm90IGluaXRpYWxpemVkIjtsZXQgbjtlLmluc3RhbmNlLnRlcm1pbmF0ZSYmKG49YXdhaXQgZS5pbnN0YW5jZS50ZXJtaW5hdGUoLi4ucj8/W10pKSxUZSh0LG4pfWZ1bmN0aW9uIG1pKHQpe2lmKCF0LmFyZ3MpdGhyb3ciTWlzc2luZyBnbG9iYWxzIHdoaWxlIHN5bmNpbmciO1FlKHQuYXJnc1swXSxMKSxUZSh0LHt9KX1mdW5jdGlvbiBwaSgpe2NvbnN0IHQ9e307b25tZXNzYWdlPWFzeW5jIGU9Pntjb25zdCByPWUuZGF0YTtzd2l0Y2goci50eXBlKXtjYXNlIHEuSU5JVDpkaShyLHQpO2JyZWFrO2Nhc2UgcS5GT1JXQVJEOmZpKHIsdCk7YnJlYWs7Y2FzZSBxLlRFUk1JTkFURTpoaShyLHQpO2JyZWFrO2Nhc2UgcS5HTE9CQUxTX1NZTkM6bWkocik7YnJlYWt9fX1McigpJiZwaSgpO2Z1bmN0aW9uIHlpKHQsZSl7cmV0dXJuIExbdF18fChMW3RdPWUpLFsoKT0+TFt0XSxhc3luYyByPT57TFt0XT1yLGF3YWl0IHVpKCl9XX1mdW5jdGlvbiBiaSh0LGUpe3JldHVybiB5aSh0LGUpfWNvbnN0W2dpLGZmXT1iaSgibWV0YWRhdGEiKTtmdW5jdGlvbiBQdCgpe3JldHVybiBnaSgpfWNsYXNzIHhpe2NvbnN0cnVjdG9yKGUpe0pzKHRoaXMsInV1aWQiLG9pKCkpLHRoaXMuY29uZmlnPWV9YXN5bmMgc2VuZChlKXt2YXIgcixuLHM7Y29uc3R7YXBwSWQ6aSxzb3VyY2VUeXBlOmF9PShyPVB0KCkpIT1udWxsP3I6e307aWYoIWl8fCFhKXJldHVybiJtZXRhZGF0YSBtaXNzaW5nIjtjb25zdCBvPW5ldyBBYm9ydENvbnRyb2xsZXIsYz1zZXRUaW1lb3V0KCgpPT5vLmFib3J0KCksdGkpO3JldHVybiBhd2FpdCgocz0obj10aGlzLmNvbmZpZyk9PW51bGw/dm9pZCAwOm4uZmV0Y2gpIT1udWxsP3M6ZmV0Y2gpKHRoaXMuZ2V0VXJsKCkse21ldGhvZDoiUE9TVCIsaGVhZGVyczp0aGlzLmdldEhlYWRlcnMoKSxib2R5OkpTT04uc3RyaW5naWZ5KHRoaXMuYnVpbGRSZXBvcnQoZSkpLHNpZ25hbDpvLnNpZ25hbH0pLGNsZWFyVGltZW91dChjKSwic3VjY2VzcyJ9Z2V0VXJsKCl7dmFyIGU7bGV0IHI9KGU9UHQoKS5wcm94eVVybCkhPW51bGw/ZTplaTtyZXR1cm4gcis9KHIuYXQoLTEpPT09Ii8iPyIiOiIvIikrWnMscn1nZXRIZWFkZXJzKCl7cmV0dXJueyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn19YnVpbGRSZXBvcnQoZSl7Y29uc3Qgcj1QdCgpO3JldHVybntndWlkOnRoaXMudXVpZCwuLi5lLGFwcGxpY2F0aW9uSWQ6ci5hcHBJZCx0aW1lc3RhbXA6RGF0ZS5ub3coKSxwcm94eVVybDpyLnByb3h5VXJsLHNvdXJjZTpyLnNvdXJjZVR5cGV9fX1jb25zdCBFaT0iNi4wLjAtYWxwaGEuMiI7dmFyIHFlPSh0PT4odC5Mb3c9IkxvdyIsdC5IaWdoPSJIaWdoIix0KSkocWV8fHt9KSxrdD0odD0+KHQuRkFTVD0iRkFTVCIsdC5QUkVDSVNFPSJQUkVDSVNFIix0KSkoa3R8fHt9KSxLZT0odD0+KHQuQ0FOVkFTPSJDQU5WQVMiLHQuV0VCR0w9IldFQkdMIix0KSkoS2V8fHt9KTtmdW5jdGlvbiBfaSgpe2NvbnN0IGU9bmV3IE9mZnNjcmVlbkNhbnZhcygwLDApLmdldENvbnRleHQoIndlYmdsMiIse2ZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQ6ITB9KTtpZihlKXtjb25zdCByPWU9PW51bGw/dm9pZCAwOmUuZ2V0RXh0ZW5zaW9uKCJXRUJHTF9sb3NlX2NvbnRleHQiKTtyJiZyLmxvc2VDb250ZXh0KCl9ZWxzZSByZXR1cm57c3VwcG9ydGVkOiExLG1lc3NhZ2U6IllvdXIgaGFyZHdhcmUgZG9lcyBub3QgcGVyZm9ybSBnb29kIGVub3VnaCB0byBydW4gdGhlIGxpYnJhcnkgZWZmaWNpZW50bHkifTtyZXR1cm57c3VwcG9ydGVkOiEwfX1jbGFzcyBDdHtjb25zdHJ1Y3Rvcigpe2NvbnN0IGU9bmV3IE9mZnNjcmVlbkNhbnZhcygwLDApLHI9ZS5nZXRDb250ZXh0KCIyZCIse3dpbGxSZWFkRnJlcXVlbnRseTohMH0pO2lmKCFyKXRocm93IkZhaWwgdG8gcmV0cmlldmUgMmQgY29udGV4dCI7dGhpcy5jYW52YXM9ZSx0aGlzLmNvbnRleHQ9cn1zZXRGbGlja2VyaW5nT3B0aW9ucyhlKXt9ZW5hYmxlUG9zdFByb2Nlc3NpbmcoKXt9ZGlzYWJsZVBvc3RQcm9jZXNzaW5nKCl7fWFzeW5jIHByb2ZpbGVXZWJnbChlKXtyZXR1cm5bXX1hc3luYyByZW5kZXIoZSxyKXtyZXR1cm4gdGhpcy5jYW52YXN9cmVzaXplQ2FudmFzKGUpe2NvbnN0e3dpZHRoOnIsaGVpZ2h0Om59PWU7dGhpcy5jYW52YXMud2lkdGg9cix0aGlzLmNhbnZhcy5oZWlnaHQ9bn1yZW5kZXJTaWxob3VldHRlKGUscixuPSJub25lIil7Y29uc3R7d2lkdGg6cyxoZWlnaHQ6aX09ZTt0aGlzLmNvbnRleHQuc2F2ZSgpLHRoaXMuY29udGV4dC5kcmF3SW1hZ2UociwwLDAsci53aWR0aCxyLmhlaWdodCwwLDAscyxpKSx0aGlzLmNvbnRleHQuZmlsdGVyPSJibHVyKDVweCkiLHRoaXMuY29udGV4dC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb249InNvdXJjZS1pbiIsdGhpcy5jb250ZXh0LmRyYXdJbWFnZShyLDAsMCxyLndpZHRoLHIuaGVpZ2h0LDAsMCxzLGkpLHRoaXMuY29udGV4dC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb249InNvdXJjZS1pbiIsdGhpcy5jb250ZXh0LmZpbHRlcj1uLHRoaXMuY29udGV4dC5kcmF3SW1hZ2UoZSwwLDAscyxpLDAsMCx0aGlzLmNhbnZhcy53aWR0aCx0aGlzLmNhbnZhcy5oZWlnaHQpLHRoaXMuY29udGV4dC5yZXN0b3JlKCl9ZGVzdHJveSgpe319Y2xhc3MgVGkgZXh0ZW5kcyBDdHtjb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMucmFkaXVzPWV9YXN5bmMgcmVuZGVyKGUscil7c3VwZXIucmVzaXplQ2FudmFzKGUpO2NvbnN0IG49YXdhaXQgY3JlYXRlSW1hZ2VCaXRtYXAocik7cmV0dXJuIHRoaXMucmVuZGVyU2lsaG91ZXR0ZShlLG4pLHRoaXMuY29udGV4dC5zYXZlKCksdGhpcy5jb250ZXh0LmZpbHRlcj1gYmx1cigke3RoaXMucmFkaXVzfXB4KWAsdGhpcy5jb250ZXh0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj0iZGVzdGluYXRpb24tb3ZlciIsdGhpcy5jb250ZXh0LmRyYXdJbWFnZShlLDAsMCxlLndpZHRoLGUuaGVpZ2h0KSx0aGlzLmNvbnRleHQucmVzdG9yZSgpLHN1cGVyLnJlbmRlcihlLHIpfX1jbGFzcyB3aSBleHRlbmRzIEN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy5yYWRpdXM9ZX1hc3luYyByZW5kZXIoZSxyKXtzdXBlci5yZXNpemVDYW52YXMoZSk7Y29uc3Qgbj1hd2FpdCBjcmVhdGVJbWFnZUJpdG1hcChyKTtyZXR1cm4gdGhpcy5yZW5kZXJTaWxob3VldHRlKGUsbixgYmx1cigke3RoaXMucmFkaXVzfXB4KWApLHRoaXMuY29udGV4dC5zYXZlKCksdGhpcy5jb250ZXh0LmZpbHRlcj0ibm9uZSIsdGhpcy5jb250ZXh0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj0iZGVzdGluYXRpb24tb3ZlciIsdGhpcy5jb250ZXh0LmRyYXdJbWFnZShlLDAsMCxlLndpZHRoLGUuaGVpZ2h0KSx0aGlzLmNvbnRleHQucmVzdG9yZSgpLHN1cGVyLnJlbmRlcihlLHIpfX1jbGFzcyBBaSBleHRlbmRzIEN0e3NldEJhY2tncm91bmRJbWFnZShlKXt0aGlzLmJhY2tncm91bmRJbWFnZT1lfWFzeW5jIHJlbmRlcihlLHIpe3N1cGVyLnJlc2l6ZUNhbnZhcyhlKTtjb25zdCBuPWF3YWl0IGNyZWF0ZUltYWdlQml0bWFwKHIpO3JldHVybiB0aGlzLnJlbmRlclNpbGhvdWV0dGUoZSxuKSx0aGlzLmJhY2tncm91bmRJbWFnZSYmKHRoaXMuY29udGV4dC5zYXZlKCksdGhpcy5jb250ZXh0LmZpbHRlcj0ibm9uZSIsdGhpcy5jb250ZXh0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj0iZGVzdGluYXRpb24tb3ZlciIsdGhpcy5jb250ZXh0LmRyYXdJbWFnZSh0aGlzLmJhY2tncm91bmRJbWFnZSwwLDAsdGhpcy5iYWNrZ3JvdW5kSW1hZ2Uud2lkdGgsdGhpcy5iYWNrZ3JvdW5kSW1hZ2UuaGVpZ2h0LDAsMCxlLndpZHRoLGUuaGVpZ2h0KSx0aGlzLmNvbnRleHQucmVzdG9yZSgpKSxzdXBlci5yZW5kZXIoZSxyKX19LyogQGxpY2Vuc2UgdHdnbC5qcyA1LjUuMSBDb3B5cmlnaHQgKGMpIDIwMTUsIEdyZWdnIFRhdmFyZXMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KQXZhaWxhYmxlIHZpYSB0aGUgTUlUIGxpY2Vuc2UuCnNlZTogaHR0cDovL2dpdGh1Yi5jb20vZ3JlZ2dtYW4vdHdnbC5qcyBmb3IgZGV0YWlscyAqL2NvbnN0IEJ0PTUxMjAsd2U9NTEyMSxEdD01MTIyLE10PTUxMjMsVXQ9NTEyNCxOdD01MTI1LE90PTUxMjYsdmk9MzI4MTksU2k9MzI4MjAsSWk9MzM2MzUsUmk9NTEzMSxGaT0zMzY0MCxQaT0zNTg5OSxraT0zNTkwMixDaT0zNjI2OSxCaT0zNDA0Mix6cj17fTt7Y29uc3QgdD16cjt0W0J0XT1JbnQ4QXJyYXksdFt3ZV09VWludDhBcnJheSx0W0R0XT1JbnQxNkFycmF5LHRbTXRdPVVpbnQxNkFycmF5LHRbVXRdPUludDMyQXJyYXksdFtOdF09VWludDMyQXJyYXksdFtPdF09RmxvYXQzMkFycmF5LHRbdmldPVVpbnQxNkFycmF5LHRbU2ldPVVpbnQxNkFycmF5LHRbSWldPVVpbnQxNkFycmF5LHRbUmldPVVpbnQxNkFycmF5LHRbRmldPVVpbnQzMkFycmF5LHRbUGldPVVpbnQzMkFycmF5LHRba2ldPVVpbnQzMkFycmF5LHRbQ2ldPVVpbnQzMkFycmF5LHRbQmldPVVpbnQzMkFycmF5fWZ1bmN0aW9uIEx0KHQpe2lmKHQgaW5zdGFuY2VvZiBJbnQ4QXJyYXkpcmV0dXJuIEJ0O2lmKHQgaW5zdGFuY2VvZiBVaW50OEFycmF5fHx0IGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXkpcmV0dXJuIHdlO2lmKHQgaW5zdGFuY2VvZiBJbnQxNkFycmF5KXJldHVybiBEdDtpZih0IGluc3RhbmNlb2YgVWludDE2QXJyYXkpcmV0dXJuIE10O2lmKHQgaW5zdGFuY2VvZiBJbnQzMkFycmF5KXJldHVybiBVdDtpZih0IGluc3RhbmNlb2YgVWludDMyQXJyYXkpcmV0dXJuIE50O2lmKHQgaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXkpcmV0dXJuIE90O3Rocm93IG5ldyBFcnJvcigidW5zdXBwb3J0ZWQgdHlwZWQgYXJyYXkgdHlwZSIpfWZ1bmN0aW9uIEdyKHQpe2lmKHQ9PT1JbnQ4QXJyYXkpcmV0dXJuIEJ0O2lmKHQ9PT1VaW50OEFycmF5fHx0PT09VWludDhDbGFtcGVkQXJyYXkpcmV0dXJuIHdlO2lmKHQ9PT1JbnQxNkFycmF5KXJldHVybiBEdDtpZih0PT09VWludDE2QXJyYXkpcmV0dXJuIE10O2lmKHQ9PT1JbnQzMkFycmF5KXJldHVybiBVdDtpZih0PT09VWludDMyQXJyYXkpcmV0dXJuIE50O2lmKHQ9PT1GbG9hdDMyQXJyYXkpcmV0dXJuIE90O3Rocm93IG5ldyBFcnJvcigidW5zdXBwb3J0ZWQgdHlwZWQgYXJyYXkgdHlwZSIpfWZ1bmN0aW9uICRyKHQpe2NvbnN0IGU9enJbdF07aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIGdsIHR5cGUiKTtyZXR1cm4gZX1jb25zdCBKZT10eXBlb2YgU2hhcmVkQXJyYXlCdWZmZXI8InUiP2Z1bmN0aW9uKGUpe3JldHVybiBlJiZlLmJ1ZmZlciYmKGUuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXJ8fGUuYnVmZmVyIGluc3RhbmNlb2YgU2hhcmVkQXJyYXlCdWZmZXIpfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5idWZmZXImJmUuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXJ9O2Z1bmN0aW9uIFZyKC4uLnQpe2NvbnNvbGUuZXJyb3IoLi4udCl9Y29uc3QgV3I9bmV3IE1hcDtmdW5jdGlvbiBaZSh0LGUpe2lmKCF0fHx0eXBlb2YgdCE9Im9iamVjdCIpcmV0dXJuITE7bGV0IHI9V3IuZ2V0KGUpO3J8fChyPW5ldyBXZWFrTWFwLFdyLnNldChlLHIpKTtsZXQgbj1yLmdldCh0KTtpZihuPT09dm9pZCAwKXtjb25zdCBzPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KTtuPXMuc3Vic3RyaW5nKDgscy5sZW5ndGgtMSk9PT1lLHIuc2V0KHQsbil9cmV0dXJuIG59ZnVuY3Rpb24gRGkodCxlKXtyZXR1cm4gdHlwZW9mIFdlYkdMQnVmZmVyPCJ1IiYmWmUoZSwiV2ViR0xCdWZmZXIiKX1mdW5jdGlvbiBNaSh0LGUpe3JldHVybiB0eXBlb2YgV2ViR0xSZW5kZXJidWZmZXI8InUiJiZaZShlLCJXZWJHTFJlbmRlcmJ1ZmZlciIpfWZ1bmN0aW9uIHp0KHQsZSl7cmV0dXJuIHR5cGVvZiBXZWJHTFRleHR1cmU8InUiJiZaZShlLCJXZWJHTFRleHR1cmUiKX1mdW5jdGlvbiBVaSh0LGUpe3JldHVybiB0eXBlb2YgV2ViR0xTYW1wbGVyPCJ1IiYmWmUoZSwiV2ViR0xTYW1wbGVyIil9Y29uc3QgSHI9MzUwNDQsSz0zNDk2MixOaT0zNDk2MyxPaT0zNDY2MCxMaT01MTIwLHppPTUxMjEsR2k9NTEyMiwkaT01MTIzLFZpPTUxMjQsV2k9NTEyNSxqcj01MTI2LFhyPXthdHRyaWJQcmVmaXg6IiJ9O2Z1bmN0aW9uIEhpKHQsZSxyLG4scyl7dC5iaW5kQnVmZmVyKGUsciksdC5idWZmZXJEYXRhKGUsbixzfHxIcil9ZnVuY3Rpb24gWXIodCxlLHIsbil7aWYoRGkodCxlKSlyZXR1cm4gZTtyPXJ8fEs7Y29uc3Qgcz10LmNyZWF0ZUJ1ZmZlcigpO3JldHVybiBIaSh0LHIscyxlLG4pLHN9ZnVuY3Rpb24gUXIodCl7cmV0dXJuIHQ9PT0iaW5kaWNlcyJ9ZnVuY3Rpb24gamkodCl7cmV0dXJuIHQ9PT1JbnQ4QXJyYXl8fHQ9PT1VaW50OEFycmF5fWZ1bmN0aW9uIFhpKHQpe3JldHVybiB0Lmxlbmd0aD90OnQuZGF0YX1jb25zdCBZaT0vY29vcmR8dGV4dHVyZS9pLFFpPS9jb2xvcnxjb2xvdXIvaTtmdW5jdGlvbiBxaSh0LGUpe2xldCByO2lmKFlpLnRlc3QodCk/cj0yOlFpLnRlc3QodCk/cj00OnI9MyxlJXI+MCl0aHJvdyBuZXcgRXJyb3IoYENhbiBub3QgZ3Vlc3MgbnVtQ29tcG9uZW50cyBmb3IgYXR0cmlidXRlICcke3R9Jy4gVHJpZWQgJHtyfSBidXQgJHtlfSB2YWx1ZXMgaXMgbm90IGV2ZW5seSBkaXZpc2libGUgYnkgJHtyfS4gWW91IHNob3VsZCBzcGVjaWZ5IGl0LmApO3JldHVybiByfWZ1bmN0aW9uIEtpKHQsZSxyKXtyZXR1cm4gdC5udW1Db21wb25lbnRzfHx0LnNpemV8fHFpKGUscnx8WGkodCkubGVuZ3RoKX1mdW5jdGlvbiBxcih0LGUpe2lmKEplKHQpKXJldHVybiB0O2lmKEplKHQuZGF0YSkpcmV0dXJuIHQuZGF0YTtBcnJheS5pc0FycmF5KHQpJiYodD17ZGF0YTp0fSk7bGV0IHI9dC50eXBlP0d0KHQudHlwZSk6dm9pZCAwO3JldHVybiByfHwoUXIoZSk/cj1VaW50MTZBcnJheTpyPUZsb2F0MzJBcnJheSksbmV3IHIodC5kYXRhKX1mdW5jdGlvbiBKaSh0KXtyZXR1cm4gdHlwZW9mIHQ9PSJudW1iZXIiP3Q6dD9Hcih0KTpqcn1mdW5jdGlvbiBHdCh0KXtyZXR1cm4gdHlwZW9mIHQ9PSJudW1iZXIiPyRyKHQpOnR8fEZsb2F0MzJBcnJheX1mdW5jdGlvbiBaaSh0LGUpe3JldHVybntidWZmZXI6ZS5idWZmZXIsbnVtVmFsdWVzOjIqMyo0LHR5cGU6SmkoZS50eXBlKSxhcnJheVR5cGU6R3QoZS50eXBlKX19ZnVuY3Rpb24gZW8odCxlKXtjb25zdCByPWUuZGF0YXx8ZSxuPUd0KGUudHlwZSkscz1yKm4uQllURVNfUEVSX0VMRU1FTlQsaT10LmNyZWF0ZUJ1ZmZlcigpO3JldHVybiB0LmJpbmRCdWZmZXIoSyxpKSx0LmJ1ZmZlckRhdGEoSyxzLGUuZHJhd1R5cGV8fEhyKSx7YnVmZmVyOmksbnVtVmFsdWVzOnIsdHlwZTpHcihuKSxhcnJheVR5cGU6bn19ZnVuY3Rpb24gdG8odCxlLHIpe2NvbnN0IG49cXIoZSxyKTtyZXR1cm57YXJyYXlUeXBlOm4uY29uc3RydWN0b3IsYnVmZmVyOllyKHQsbix2b2lkIDAsZS5kcmF3VHlwZSksdHlwZTpMdChuKSxudW1WYWx1ZXM6MH19ZnVuY3Rpb24gcm8odCxlKXtjb25zdCByPXt9O3JldHVybiBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe2lmKCFRcihuKSl7Y29uc3Qgcz1lW25dLGk9cy5hdHRyaWJ8fHMubmFtZXx8cy5hdHRyaWJOYW1lfHxYci5hdHRyaWJQcmVmaXgrbjtpZihzLnZhbHVlKXtpZighQXJyYXkuaXNBcnJheShzLnZhbHVlKSYmIUplKHMudmFsdWUpKXRocm93IG5ldyBFcnJvcigiYXJyYXkudmFsdWUgaXMgbm90IGFycmF5IG9yIHR5cGVkYXJyYXkiKTtyW2ldPXt2YWx1ZTpzLnZhbHVlfX1lbHNle2xldCBhO3MuYnVmZmVyJiZzLmJ1ZmZlciBpbnN0YW5jZW9mIFdlYkdMQnVmZmVyP2E9Wmk6dHlwZW9mIHM9PSJudW1iZXIifHx0eXBlb2Ygcy5kYXRhPT0ibnVtYmVyIj9hPWVvOmE9dG87Y29uc3R7YnVmZmVyOm8sdHlwZTpjLG51bVZhbHVlczp1LGFycmF5VHlwZTpmfT1hKHQscyxuKSxkPXMubm9ybWFsaXplIT09dm9pZCAwP3Mubm9ybWFsaXplOmppKGYpLGg9S2kocyxuLHUpO3JbaV09e2J1ZmZlcjpvLG51bUNvbXBvbmVudHM6aCx0eXBlOmMsbm9ybWFsaXplOmQsc3RyaWRlOnMuc3RyaWRlfHwwLG9mZnNldDpzLm9mZnNldHx8MCxkaXZpc29yOnMuZGl2aXNvcj09PXZvaWQgMD92b2lkIDA6cy5kaXZpc29yLGRyYXdUeXBlOnMuZHJhd1R5cGV9fX19KSx0LmJpbmRCdWZmZXIoSyxudWxsKSxyfWZ1bmN0aW9uIG5vKHQsZSl7cmV0dXJuIGU9PT1MaXx8ZT09PXppPzE6ZT09PUdpfHxlPT09JGk/MjplPT09Vml8fGU9PT1XaXx8ZT09PWpyPzQ6MH1jb25zdCAkdD1bInBvc2l0aW9uIiwicG9zaXRpb25zIiwiYV9wb3NpdGlvbiJdO2Z1bmN0aW9uIHNvKHQsZSl7bGV0IHIsbjtmb3Iobj0wO248JHQubGVuZ3RoJiYocj0kdFtuXSwhKHIgaW4gZXx8KHI9WHIuYXR0cmliUHJlZml4K3IsciBpbiBlKSkpOysrbik7bj09PSR0Lmxlbmd0aCYmKHI9T2JqZWN0LmtleXMoZSlbMF0pO2NvbnN0IHM9ZVtyXTtpZighcy5idWZmZXIpcmV0dXJuIDE7dC5iaW5kQnVmZmVyKEsscy5idWZmZXIpO2NvbnN0IGk9dC5nZXRCdWZmZXJQYXJhbWV0ZXIoSyxPaSk7dC5iaW5kQnVmZmVyKEssbnVsbCk7Y29uc3QgYT1ubyh0LHMudHlwZSksbz1pL2EsYz1zLm51bUNvbXBvbmVudHN8fHMuc2l6ZSx1PW8vYztpZih1JTEhPT0wKXRocm93IG5ldyBFcnJvcihgbnVtQ29tcG9uZW50cyAke2N9IG5vdCBjb3JyZWN0IGZvciBsZW5ndGggJHtsZW5ndGh9YCk7cmV0dXJuIHV9ZnVuY3Rpb24gaW8odCxlLHIpe2NvbnN0IG49cm8odCxlKSxzPU9iamVjdC5hc3NpZ24oe30scnx8e30pO3MuYXR0cmlicz1PYmplY3QuYXNzaWduKHt9LHI/ci5hdHRyaWJzOnt9LG4pO2NvbnN0IGk9ZS5pbmRpY2VzO2lmKGkpe2NvbnN0IGE9cXIoaSwiaW5kaWNlcyIpO3MuaW5kaWNlcz1Zcih0LGEsTmkpLHMubnVtRWxlbWVudHM9YS5sZW5ndGgscy5lbGVtZW50VHlwZT1MdChhKX1lbHNlIHMubnVtRWxlbWVudHN8fChzLm51bUVsZW1lbnRzPXNvKHQscy5hdHRyaWJzKSk7cmV0dXJuIHN9ZnVuY3Rpb24gQWUodCl7cmV0dXJuISF0LnRleFN0b3JhZ2UyRH1jb25zdCBLcj1mdW5jdGlvbigpe2NvbnN0IHQ9e30sZT17fTtmdW5jdGlvbiByKG4pe2NvbnN0IHM9bi5jb25zdHJ1Y3Rvci5uYW1lO2lmKCF0W3NdKXtmb3IoY29uc3QgaSBpbiBuKWlmKHR5cGVvZiBuW2ldPT0ibnVtYmVyIil7Y29uc3QgYT1lW25baV1dO2VbbltpXV09YT9gJHthfSB8ICR7aX1gOml9dFtzXT0hMH19cmV0dXJuIGZ1bmN0aW9uKHMsaSl7cmV0dXJuIHIocyksZVtpXXx8KHR5cGVvZiBpPT0ibnVtYmVyIj9gMHgke2kudG9TdHJpbmcoMTYpfWA6aSl9fSgpLHo9e3RleHR1cmVDb2xvcjpuZXcgVWludDhBcnJheShbMTI4LDE5MiwyNTUsMjU1XSksdGV4dHVyZU9wdGlvbnM6e30sY3Jvc3NPcmlnaW46dm9pZCAwfSx2ZT1KZSxKcj1mdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0PXR8fCh0eXBlb2YgZG9jdW1lbnQ8InUiJiZkb2N1bWVudC5jcmVhdGVFbGVtZW50P2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLmdldENvbnRleHQoIjJkIik6bnVsbCksdH19KCksVnQ9NjQwNixQPTY0MDcsZz02NDA4LFd0PTY0MDksSHQ9NjQxMCxoZT02NDAyLGp0PTM0MDQxLGV0PTMzMDcxLG9vPTk3MjgsYW89OTcyOSxHPTM1NTMsJD0zNDA2NyxKPTMyODc5LFo9MzU4NjYsWHQ9MzQwNjksY289MzQwNzAsdW89MzQwNzEsZm89MzQwNzIsbG89MzQwNzMsaG89MzQwNzQsWXQ9MTAyNDEsUXQ9MTAyNDAsdHQ9MTAyNDIscnQ9MTAyNDMsWnI9MzI4ODIsbW89MzMwODIscG89MzMwODMseW89MzMwODQsYm89MzMwODUsZ289MzQ4OTIseG89MzQ4OTMscXQ9MzMxNyxlbj0zMzE0LHRuPTMyODc4LHJuPTMzMTYsbm49MzMxNSxzbj0zMjg3NyxFbz0zNzQ0Myxfbz0zNzQ0MSxUbz0zNzQ0MCx3bz0zMzMyMSxBbz0zNjc1Nix2bz0zMzMyNSxTbz0zMzMyNixJbz0zMzMzMCxSbz0zMzMyOSxGbz0zMzMzOCxQbz0zMzMzNyxrbz0zMzM0MCxDbz0zMzMzOSxCbz0zMzMyMyxEbz0zNjc1NyxNbz0zMzMyNyxVbz0zMzMyOCxObz0zMzMzNixPbz0zMzMzNSxMbz0zMzMzMix6bz0zMzMzMSxHbz0zMzMzNCwkbz0zMzMzMyxWbz0zMjg0OSxXbz0zNTkwNSxIbz0zNjE5NCxqbz0zNjc1OCxYbz0zNTg5OCxZbz0zNTkwMSxRbz0zNDg0Myxxbz0zNDgzNyxLbz0zNjIyMSxKbz0zNjIzOSxabz0zNjIxNSxlYT0zNjIzMyx0YT0zNjIwOSxyYT0zNjIyNyxuYT0zMjg1NixzYT0zNTkwNyxpYT0zNjc1OSxvYT0zMjg1NSxhYT0zMjg1NCxjYT0zMjg1Nyx1YT0zNDg0MixmYT0zNDgzNixsYT0zNjIyMCxkYT0zNjIzOCxoYT0zNjk3NSxtYT0zNjIxNCxwYT0zNjIzMix5YT0zNjIyNixiYT0zNjIwOCxnYT0zMzE4OSx4YT0zMzE5MCxFYT0zNjAxMixfYT0zNjAxMyxUYT0zNTA1NixWPTUxMjAsRT01MTIxLG50PTUxMjIsbWU9NTEyMyxzdD01MTI0LGVlPTUxMjUsQT01MTI2LG9uPTMyODE5LGFuPTMyODIwLGNuPTMzNjM1LGs9NTEzMSxTZT0zNjE5MyxLdD0zMzY0MCx3YT0zNTg5OSxBYT0zNTkwMix2YT0zNjI2OSxTYT0zNDA0MixJZT0zMzMxOSx0ZT0zMzMyMCxSZT02NDAzLHJlPTM2MjQ0LG5lPTM2MjQ4LFc9MzYyNDksSWE9e307e2NvbnN0IHQ9SWE7dFtWdF09e251bUNvbG9yQ29tcG9uZW50czoxfSx0W1d0XT17bnVtQ29sb3JDb21wb25lbnRzOjF9LHRbSHRdPXtudW1Db2xvckNvbXBvbmVudHM6Mn0sdFtQXT17bnVtQ29sb3JDb21wb25lbnRzOjN9LHRbZ109e251bUNvbG9yQ29tcG9uZW50czo0fSx0W1JlXT17bnVtQ29sb3JDb21wb25lbnRzOjF9LHRbcmVdPXtudW1Db2xvckNvbXBvbmVudHM6MX0sdFtJZV09e251bUNvbG9yQ29tcG9uZW50czoyfSx0W3RlXT17bnVtQ29sb3JDb21wb25lbnRzOjJ9LHRbUF09e251bUNvbG9yQ29tcG9uZW50czozfSx0W25lXT17bnVtQ29sb3JDb21wb25lbnRzOjN9LHRbZ109e251bUNvbG9yQ29tcG9uZW50czo0fSx0W1ddPXtudW1Db2xvckNvbXBvbmVudHM6NH0sdFtoZV09e251bUNvbG9yQ29tcG9uZW50czoxfSx0W2p0XT17bnVtQ29sb3JDb21wb25lbnRzOjJ9fWxldCBKdDtmdW5jdGlvbiBpdCh0KXtpZighSnQpe2NvbnN0IGU9e307ZVtWdF09e3RleHR1cmVGb3JtYXQ6VnQsY29sb3JSZW5kZXJhYmxlOiEwLHRleHR1cmVGaWx0ZXJhYmxlOiEwLGJ5dGVzUGVyRWxlbWVudDpbMSwyLDIsNF0sdHlwZTpbRSxrLFNlLEFdfSxlW1d0XT17dGV4dHVyZUZvcm1hdDpXdCxjb2xvclJlbmRlcmFibGU6ITAsdGV4dHVyZUZpbHRlcmFibGU6ITAsYnl0ZXNQZXJFbGVtZW50OlsxLDIsMiw0XSx0eXBlOltFLGssU2UsQV19LGVbSHRdPXt0ZXh0dXJlRm9ybWF0Okh0LGNvbG9yUmVuZGVyYWJsZTohMCx0ZXh0dXJlRmlsdGVyYWJsZTohMCxieXRlc1BlckVsZW1lbnQ6WzIsNCw0LDhdLHR5cGU6W0UsayxTZSxBXX0sZVtQXT17dGV4dHVyZUZvcm1hdDpQLGNvbG9yUmVuZGVyYWJsZTohMCx0ZXh0dXJlRmlsdGVyYWJsZTohMCxieXRlc1BlckVsZW1lbnQ6WzMsNiw2LDEyLDJdLHR5cGU6W0UsayxTZSxBLGNuXX0sZVtnXT17dGV4dHVyZUZvcm1hdDpnLGNvbG9yUmVuZGVyYWJsZTohMCx0ZXh0dXJlRmlsdGVyYWJsZTohMCxieXRlc1BlckVsZW1lbnQ6WzQsOCw4LDE2LDIsMl0sdHlwZTpbRSxrLFNlLEEsb24sYW5dfSxlW2hlXT17dGV4dHVyZUZvcm1hdDpoZSxjb2xvclJlbmRlcmFibGU6ITAsdGV4dHVyZUZpbHRlcmFibGU6ITEsYnl0ZXNQZXJFbGVtZW50OlsyLDRdLHR5cGU6W2VlLG1lXX0sZVt3b109e3RleHR1cmVGb3JtYXQ6UmUsY29sb3JSZW5kZXJhYmxlOiEwLHRleHR1cmVGaWx0ZXJhYmxlOiEwLGJ5dGVzUGVyRWxlbWVudDpbMV0sdHlwZTpbRV19LGVbQW9dPXt0ZXh0dXJlRm9ybWF0OlJlLGNvbG9yUmVuZGVyYWJsZTohMSx0ZXh0dXJlRmlsdGVyYWJsZTohMCxieXRlc1BlckVsZW1lbnQ6WzFdLHR5cGU6W1ZdfSxlW3ZvXT17dGV4dHVyZUZvcm1hdDpSZSxjb2xvclJlbmRlcmFibGU6ITEsdGV4dHVyZUZpbHRlcmFibGU6ITAsYnl0ZXNQZXJFbGVtZW50Ols0LDJdLHR5cGU6W0Esa119LGVbU29dPXt0ZXh0dXJlRm9ybWF0OlJlLGNvbG9yUmVuZGVyYWJsZTohMSx0ZXh0dXJlRmlsdGVyYWJsZTohMSxieXRlc1BlckVsZW1lbnQ6WzRdLHR5cGU6W0FdfSxlW0lvXT17dGV4dHVyZUZvcm1hdDpyZSxjb2xvclJlbmRlcmFibGU6ITAsdGV4dHVyZUZpbHRlcmFibGU6ITEsYnl0ZXNQZXJFbGVtZW50OlsxXSx0eXBlOltFXX0sZVtSb109e3RleHR1cmVGb3JtYXQ6cmUsY29sb3JSZW5kZXJhYmxlOiEwLHRleHR1cmVGaWx0ZXJhYmxlOiExLGJ5dGVzUGVyRWxlbWVudDpbMV0sdHlwZTpbVl19LGVbTG9dPXt0ZXh0dXJlRm9ybWF0OnJlLGNvbG9yUmVuZGVyYWJsZTohMCx0ZXh0dXJlRmlsdGVyYWJsZTohMSxieXRlc1BlckVsZW1lbnQ6WzJdLHR5cGU6W21lXX0sZVt6b109e3RleHR1cmVGb3JtYXQ6cmUsY29sb3JSZW5kZXJhYmxlOiEwLHRleHR1cmVGaWx0ZXJhYmxlOiExLGJ5dGVzUGVyRWxlbWVudDpbMl0sdHlwZTpbbnRdfSxlW0dvXT17dGV4dHVyZUZvcm1hdDpyZSxjb2xvclJlbmRlcmFibGU6ITAsdGV4dHVyZUZpbHRlcmFibGU6ITEsYnl0ZXNQZXJFbGVtZW50Ols0XSx0eXBlOltlZV19LGVbJG9dPXt0ZXh0dXJlRm9ybWF0OnJlLGNvbG9yUmVuZGVyYWJsZTohMCx0ZXh0dXJlRmlsdGVyYWJsZTohMSxieXRlc1BlckVsZW1lbnQ6WzRdLHR5cGU6W3N0XX0sZVtCb109e3RleHR1cmVGb3JtYXQ6SWUsY29sb3JSZW5kZXJhYmxlOiEwLHRleHR1cmVGaWx0ZXJhYmxlOiEwLGJ5dGVzUGVyRWxlbWVudDpbMl0sdHlwZTpbRV19LGVbRG9dPXt0ZXh0dXJlRm9ybWF0OkllLGNvbG9yUmVuZGVyYWJsZTohMSx0ZXh0dXJlRmlsdGVyYWJsZTohMCxieXRlc1BlckVsZW1lbnQ6WzJdLHR5cGU6W1ZdfSxlW01vXT17dGV4dHVyZUZvcm1hdDpJZSxjb2xvclJlbmRlcmFibGU6ITEsdGV4dHVyZUZpbHRlcmFibGU6ITAsYnl0ZXNQZXJFbGVtZW50Ols4LDRdLHR5cGU6W0Esa119LGVbVW9dPXt0ZXh0dXJlRm9ybWF0OkllLGNvbG9yUmVuZGVyYWJsZTohMSx0ZXh0dXJlRmlsdGVyYWJsZTohMSxieXRlc1BlckVsZW1lbnQ6WzhdLHR5cGU6W0FdfSxlW05vXT17dGV4dHVyZUZvcm1hdDp0ZSxjb2xvclJlbmRlcmFibGU6ITAsdGV4dHVyZUZpbHRlcmFibGU6ITEsYnl0ZXNQZXJFbGVtZW50OlsyXSx0eXBlOltFXX0sZVtPb109e3RleHR1cmVGb3JtYXQ6dGUsY29sb3JSZW5kZXJhYmxlOiEwLHRleHR1cmVGaWx0ZXJhYmxlOiExLGJ5dGVzUGVyRWxlbWVudDpbMl0sdHlwZTpbVl19LGVbRm9dPXt0ZXh0dXJlRm9ybWF0OnRlLGNvbG9yUmVuZGVyYWJsZTohMCx0ZXh0dXJlRmlsdGVyYWJsZTohMSxieXRlc1BlckVsZW1lbnQ6WzRdLHR5cGU6W21lXX0sZVtQb109e3RleHR1cmVGb3JtYXQ6dGUsY29sb3JSZW5kZXJhYmxlOiEwLHRleHR1cmVGaWx0ZXJhYmxlOiExLGJ5dGVzUGVyRWxlbWVudDpbNF0sdHlwZTpbbnRdfSxlW2tvXT17dGV4dHVyZUZvcm1hdDp0ZSxjb2xvclJlbmRlcmFibGU6ITAsdGV4dHVyZUZpbHRlcmFibGU6ITEsYnl0ZXNQZXJFbGVtZW50Ols4XSx0eXBlOltlZV19LGVbQ29dPXt0ZXh0dXJlRm9ybWF0OnRlLGNvbG9yUmVuZGVyYWJsZTohMCx0ZXh0dXJlRmlsdGVyYWJsZTohMSxieXRlc1BlckVsZW1lbnQ6WzhdLHR5cGU6W3N0XX0sZVtWb109e3RleHR1cmVGb3JtYXQ6UCxjb2xvclJlbmRlcmFibGU6ITAsdGV4dHVyZUZpbHRlcmFibGU6ITAsYnl0ZXNQZXJFbGVtZW50OlszXSx0eXBlOltFXX0sZVtXb109e3RleHR1cmVGb3JtYXQ6UCxjb2xvclJlbmRlcmFibGU6ITEsdGV4dHVyZUZpbHRlcmFibGU6ITAsYnl0ZXNQZXJFbGVtZW50OlszXSx0eXBlOltFXX0sZVtIb109e3RleHR1cmVGb3JtYXQ6UCxjb2xvclJlbmRlcmFibGU6ITAsdGV4dHVyZUZpbHRlcmFibGU6ITAsYnl0ZXNQZXJFbGVtZW50OlszLDJdLHR5cGU6W0UsY25dfSxlW2pvXT17dGV4dHVyZUZvcm1hdDpQLGNvbG9yUmVuZGVyYWJsZTohMSx0ZXh0dXJlRmlsdGVyYWJsZTohMCxieXRlc1BlckVsZW1lbnQ6WzNdLHR5cGU6W1ZdfSxlW1hvXT17dGV4dHVyZUZvcm1hdDpQLGNvbG9yUmVuZGVyYWJsZTohMSx0ZXh0dXJlRmlsdGVyYWJsZTohMCxieXRlc1BlckVsZW1lbnQ6WzEyLDYsNF0sdHlwZTpbQSxrLHdhXX0sZVtZb109e3RleHR1cmVGb3JtYXQ6UCxjb2xvclJlbmRlcmFibGU6ITEsdGV4dHVyZUZpbHRlcmFibGU6ITAsYnl0ZXNQZXJFbGVtZW50OlsxMiw2LDRdLHR5cGU6W0EsayxBYV19LGVbUW9dPXt0ZXh0dXJlRm9ybWF0OlAsY29sb3JSZW5kZXJhYmxlOiExLHRleHR1cmVGaWx0ZXJhYmxlOiEwLGJ5dGVzUGVyRWxlbWVudDpbMTIsNl0sdHlwZTpbQSxrXX0sZVtxb109e3RleHR1cmVGb3JtYXQ6UCxjb2xvclJlbmRlcmFibGU6ITEsdGV4dHVyZUZpbHRlcmFibGU6ITEsYnl0ZXNQZXJFbGVtZW50OlsxMl0sdHlwZTpbQV19LGVbS29dPXt0ZXh0dXJlRm9ybWF0Om5lLGNvbG9yUmVuZGVyYWJsZTohMSx0ZXh0dXJlRmlsdGVyYWJsZTohMSxieXRlc1BlckVsZW1lbnQ6WzNdLHR5cGU6W0VdfSxlW0pvXT17dGV4dHVyZUZvcm1hdDpuZSxjb2xvclJlbmRlcmFibGU6ITEsdGV4dHVyZUZpbHRlcmFibGU6ITEsYnl0ZXNQZXJFbGVtZW50OlszXSx0eXBlOltWXX0sZVtab109e3RleHR1cmVGb3JtYXQ6bmUsY29sb3JSZW5kZXJhYmxlOiExLHRleHR1cmVGaWx0ZXJhYmxlOiExLGJ5dGVzUGVyRWxlbWVudDpbNl0sdHlwZTpbbWVdfSxlW2VhXT17dGV4dHVyZUZvcm1hdDpuZSxjb2xvclJlbmRlcmFibGU6ITEsdGV4dHVyZUZpbHRlcmFibGU6ITEsYnl0ZXNQZXJFbGVtZW50Ols2XSx0eXBlOltudF19LGVbdGFdPXt0ZXh0dXJlRm9ybWF0Om5lLGNvbG9yUmVuZGVyYWJsZTohMSx0ZXh0dXJlRmlsdGVyYWJsZTohMSxieXRlc1BlckVsZW1lbnQ6WzEyXSx0eXBlOltlZV19LGVbcmFdPXt0ZXh0dXJlRm9ybWF0Om5lLGNvbG9yUmVuZGVyYWJsZTohMSx0ZXh0dXJlRmlsdGVyYWJsZTohMSxieXRlc1BlckVsZW1lbnQ6WzEyXSx0eXBlOltzdF19LGVbbmFdPXt0ZXh0dXJlRm9ybWF0OmcsY29sb3JSZW5kZXJhYmxlOiEwLHRleHR1cmVGaWx0ZXJhYmxlOiEwLGJ5dGVzUGVyRWxlbWVudDpbNF0sdHlwZTpbRV19LGVbc2FdPXt0ZXh0dXJlRm9ybWF0OmcsY29sb3JSZW5kZXJhYmxlOiEwLHRleHR1cmVGaWx0ZXJhYmxlOiEwLGJ5dGVzUGVyRWxlbWVudDpbNF0sdHlwZTpbRV19LGVbaWFdPXt0ZXh0dXJlRm9ybWF0OmcsY29sb3JSZW5kZXJhYmxlOiExLHRleHR1cmVGaWx0ZXJhYmxlOiEwLGJ5dGVzUGVyRWxlbWVudDpbNF0sdHlwZTpbVl19LGVbb2FdPXt0ZXh0dXJlRm9ybWF0OmcsY29sb3JSZW5kZXJhYmxlOiEwLHRleHR1cmVGaWx0ZXJhYmxlOiEwLGJ5dGVzUGVyRWxlbWVudDpbNCwyLDRdLHR5cGU6W0UsYW4sS3RdfSxlW2FhXT17dGV4dHVyZUZvcm1hdDpnLGNvbG9yUmVuZGVyYWJsZTohMCx0ZXh0dXJlRmlsdGVyYWJsZTohMCxieXRlc1BlckVsZW1lbnQ6WzQsMl0sdHlwZTpbRSxvbl19LGVbY2FdPXt0ZXh0dXJlRm9ybWF0OmcsY29sb3JSZW5kZXJhYmxlOiEwLHRleHR1cmVGaWx0ZXJhYmxlOiEwLGJ5dGVzUGVyRWxlbWVudDpbNF0sdHlwZTpbS3RdfSxlW3VhXT17dGV4dHVyZUZvcm1hdDpnLGNvbG9yUmVuZGVyYWJsZTohMSx0ZXh0dXJlRmlsdGVyYWJsZTohMCxieXRlc1BlckVsZW1lbnQ6WzE2LDhdLHR5cGU6W0Esa119LGVbZmFdPXt0ZXh0dXJlRm9ybWF0OmcsY29sb3JSZW5kZXJhYmxlOiExLHRleHR1cmVGaWx0ZXJhYmxlOiExLGJ5dGVzUGVyRWxlbWVudDpbMTZdLHR5cGU6W0FdfSxlW2xhXT17dGV4dHVyZUZvcm1hdDpXLGNvbG9yUmVuZGVyYWJsZTohMCx0ZXh0dXJlRmlsdGVyYWJsZTohMSxieXRlc1BlckVsZW1lbnQ6WzRdLHR5cGU6W0VdfSxlW2RhXT17dGV4dHVyZUZvcm1hdDpXLGNvbG9yUmVuZGVyYWJsZTohMCx0ZXh0dXJlRmlsdGVyYWJsZTohMSxieXRlc1BlckVsZW1lbnQ6WzRdLHR5cGU6W1ZdfSxlW2hhXT17dGV4dHVyZUZvcm1hdDpXLGNvbG9yUmVuZGVyYWJsZTohMCx0ZXh0dXJlRmlsdGVyYWJsZTohMSxieXRlc1BlckVsZW1lbnQ6WzRdLHR5cGU6W0t0XX0sZVttYV09e3RleHR1cmVGb3JtYXQ6Vyxjb2xvclJlbmRlcmFibGU6ITAsdGV4dHVyZUZpbHRlcmFibGU6ITEsYnl0ZXNQZXJFbGVtZW50Ols4XSx0eXBlOlttZV19LGVbcGFdPXt0ZXh0dXJlRm9ybWF0OlcsY29sb3JSZW5kZXJhYmxlOiEwLHRleHR1cmVGaWx0ZXJhYmxlOiExLGJ5dGVzUGVyRWxlbWVudDpbOF0sdHlwZTpbbnRdfSxlW3lhXT17dGV4dHVyZUZvcm1hdDpXLGNvbG9yUmVuZGVyYWJsZTohMCx0ZXh0dXJlRmlsdGVyYWJsZTohMSxieXRlc1BlckVsZW1lbnQ6WzE2XSx0eXBlOltzdF19LGVbYmFdPXt0ZXh0dXJlRm9ybWF0OlcsY29sb3JSZW5kZXJhYmxlOiEwLHRleHR1cmVGaWx0ZXJhYmxlOiExLGJ5dGVzUGVyRWxlbWVudDpbMTZdLHR5cGU6W2VlXX0sZVtnYV09e3RleHR1cmVGb3JtYXQ6aGUsY29sb3JSZW5kZXJhYmxlOiEwLHRleHR1cmVGaWx0ZXJhYmxlOiExLGJ5dGVzUGVyRWxlbWVudDpbMiw0XSx0eXBlOlttZSxlZV19LGVbeGFdPXt0ZXh0dXJlRm9ybWF0OmhlLGNvbG9yUmVuZGVyYWJsZTohMCx0ZXh0dXJlRmlsdGVyYWJsZTohMSxieXRlc1BlckVsZW1lbnQ6WzRdLHR5cGU6W2VlXX0sZVtFYV09e3RleHR1cmVGb3JtYXQ6aGUsY29sb3JSZW5kZXJhYmxlOiEwLHRleHR1cmVGaWx0ZXJhYmxlOiExLGJ5dGVzUGVyRWxlbWVudDpbNF0sdHlwZTpbQV19LGVbVGFdPXt0ZXh0dXJlRm9ybWF0Omp0LGNvbG9yUmVuZGVyYWJsZTohMCx0ZXh0dXJlRmlsdGVyYWJsZTohMSxieXRlc1BlckVsZW1lbnQ6WzRdLHR5cGU6W1NhXX0sZVtfYV09e3RleHR1cmVGb3JtYXQ6anQsY29sb3JSZW5kZXJhYmxlOiEwLHRleHR1cmVGaWx0ZXJhYmxlOiExLGJ5dGVzUGVyRWxlbWVudDpbNF0sdHlwZTpbdmFdfSxPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe2NvbnN0IG49ZVtyXTtuLmJ5dGVzUGVyRWxlbWVudE1hcD17fSxuLmJ5dGVzUGVyRWxlbWVudC5mb3JFYWNoKGZ1bmN0aW9uKHMsaSl7Y29uc3QgYT1uLnR5cGVbaV07bi5ieXRlc1BlckVsZW1lbnRNYXBbYV09c30pfSksSnQ9ZX1yZXR1cm4gSnRbdF19ZnVuY3Rpb24gUmEodCxlKXtjb25zdCByPWl0KHQpO2lmKCFyKXRocm93InVua25vd24gaW50ZXJuYWwgZm9ybWF0Ijtjb25zdCBuPXIuYnl0ZXNQZXJFbGVtZW50TWFwW2VdO2lmKG49PT12b2lkIDApdGhyb3cidW5rbm93biBpbnRlcm5hbCBmb3JtYXQiO3JldHVybiBufWZ1bmN0aW9uIEZlKHQpe2NvbnN0IGU9aXQodCk7aWYoIWUpdGhyb3cidW5rbm93biBpbnRlcm5hbCBmb3JtYXQiO3JldHVybntmb3JtYXQ6ZS50ZXh0dXJlRm9ybWF0LHR5cGU6ZS50eXBlWzBdfX1mdW5jdGlvbiB1bih0KXtyZXR1cm4odCZ0LTEpPT09MH1mdW5jdGlvbiBGYSh0LGUscixuKXtpZighQWUodCkpcmV0dXJuIHVuKGUpJiZ1bihyKTtjb25zdCBzPWl0KG4pO2lmKCFzKXRocm93InVua25vd24gaW50ZXJuYWwgZm9ybWF0IjtyZXR1cm4gcy5jb2xvclJlbmRlcmFibGUmJnMudGV4dHVyZUZpbHRlcmFibGV9ZnVuY3Rpb24gUGEodCl7Y29uc3QgZT1pdCh0KTtpZighZSl0aHJvdyJ1bmtub3duIGludGVybmFsIGZvcm1hdCI7cmV0dXJuIGUudGV4dHVyZUZpbHRlcmFibGV9ZnVuY3Rpb24ga2EodCxlLHIpe3JldHVybiB2ZShlKT9MdChlKTpyfHxFfWZ1bmN0aW9uIG90KHQsZSxyLG4scyl7aWYocyUxIT09MCl0aHJvdyJjYW4ndCBndWVzcyBkaW1lbnNpb25zIjtpZighciYmIW4pe2NvbnN0IGk9TWF0aC5zcXJ0KHMvKGU9PT0kPzY6MSkpO2klMT09PTA/KHI9aSxuPWkpOihyPXMsbj0xKX1lbHNlIGlmKG4pe2lmKCFyJiYocj1zL24sciUxKSl0aHJvdyJjYW4ndCBndWVzcyBkaW1lbnNpb25zIn1lbHNlIGlmKG49cy9yLG4lMSl0aHJvdyJjYW4ndCBndWVzcyBkaW1lbnNpb25zIjtyZXR1cm57d2lkdGg6cixoZWlnaHQ6bn19ZnVuY3Rpb24gcGUodCxlKXtlLmNvbG9yc3BhY2VDb252ZXJzaW9uIT09dm9pZCAwJiZ0LnBpeGVsU3RvcmVpKEVvLGUuY29sb3JzcGFjZUNvbnZlcnNpb24pLGUucHJlbXVsdGlwbHlBbHBoYSE9PXZvaWQgMCYmdC5waXhlbFN0b3JlaShfbyxlLnByZW11bHRpcGx5QWxwaGEpLGUuZmxpcFkhPT12b2lkIDAmJnQucGl4ZWxTdG9yZWkoVG8sZS5mbGlwWSl9ZnVuY3Rpb24gZm4odCl7dC5waXhlbFN0b3JlaShxdCw0KSxBZSh0KSYmKHQucGl4ZWxTdG9yZWkoZW4sMCksdC5waXhlbFN0b3JlaSh0biwwKSx0LnBpeGVsU3RvcmVpKHJuLDApLHQucGl4ZWxTdG9yZWkobm4sMCksdC5waXhlbFN0b3JlaShzbiwwKSl9ZnVuY3Rpb24gQ2EodCxlLHIsbil7bi5taW5NYWcmJihyLmNhbGwodCxlLFl0LG4ubWluTWFnKSxyLmNhbGwodCxlLFF0LG4ubWluTWFnKSksbi5taW4mJnIuY2FsbCh0LGUsWXQsbi5taW4pLG4ubWFnJiZyLmNhbGwodCxlLFF0LG4ubWFnKSxuLndyYXAmJihyLmNhbGwodCxlLHR0LG4ud3JhcCksci5jYWxsKHQsZSxydCxuLndyYXApLChlPT09Snx8VWkodCxlKSkmJnIuY2FsbCh0LGUsWnIsbi53cmFwKSksbi53cmFwUiYmci5jYWxsKHQsZSxacixuLndyYXBSKSxuLndyYXBTJiZyLmNhbGwodCxlLHR0LG4ud3JhcFMpLG4ud3JhcFQmJnIuY2FsbCh0LGUscnQsbi53cmFwVCksbi5taW5Mb2QhPT12b2lkIDAmJnIuY2FsbCh0LGUsbW8sbi5taW5Mb2QpLG4ubWF4TG9kIT09dm9pZCAwJiZyLmNhbGwodCxlLHBvLG4ubWF4TG9kKSxuLmJhc2VMZXZlbCE9PXZvaWQgMCYmci5jYWxsKHQsZSx5byxuLmJhc2VMZXZlbCksbi5tYXhMZXZlbCE9PXZvaWQgMCYmci5jYWxsKHQsZSxibyxuLm1heExldmVsKSxuLmNvbXBhcmVGdW5jIT09dm9pZCAwJiZyLmNhbGwodCxlLHhvLG4uY29tcGFyZUZ1bmMpLG4uY29tcGFyZU1vZGUhPT12b2lkIDAmJnIuY2FsbCh0LGUsZ28sbi5jb21wYXJlTW9kZSl9ZnVuY3Rpb24gbG4odCxlLHIpe2NvbnN0IG49ci50YXJnZXR8fEc7dC5iaW5kVGV4dHVyZShuLGUpLENhKHQsbix0LnRleFBhcmFtZXRlcmkscil9ZnVuY3Rpb24gQmEodCl7cmV0dXJuIHQ9dHx8ei50ZXh0dXJlQ29sb3IsdmUodCk/dDpuZXcgVWludDhBcnJheShbdFswXSoyNTUsdFsxXSoyNTUsdFsyXSoyNTUsdFszXSoyNTVdKX1mdW5jdGlvbiBadCh0LGUscixuLHMsaSl7cj1yfHx6LnRleHR1cmVPcHRpb25zLGk9aXx8Zztjb25zdCBhPXIudGFyZ2V0fHxHO2lmKG49bnx8ci53aWR0aCxzPXN8fHIuaGVpZ2h0LHQuYmluZFRleHR1cmUoYSxlKSxGYSh0LG4scyxpKSl0LmdlbmVyYXRlTWlwbWFwKGEpO2Vsc2V7Y29uc3Qgbz1QYShpKT9hbzpvbzt0LnRleFBhcmFtZXRlcmkoYSxZdCxvKSx0LnRleFBhcmFtZXRlcmkoYSxRdCxvKSx0LnRleFBhcmFtZXRlcmkoYSx0dCxldCksdC50ZXhQYXJhbWV0ZXJpKGEscnQsZXQpfX1mdW5jdGlvbiBQZSh0KXtyZXR1cm4gdC5hdXRvPT09ITB8fHQuYXV0bz09PXZvaWQgMCYmdC5sZXZlbD09PXZvaWQgMH1mdW5jdGlvbiBlcih0LGUpe3JldHVybiBlPWV8fHt9LGUuY3ViZUZhY2VPcmRlcnx8W1h0LGNvLHVvLGZvLGxvLGhvXX1mdW5jdGlvbiB0cih0LGUpe2NvbnN0IG49ZXIodCxlKS5tYXAoZnVuY3Rpb24ocyxpKXtyZXR1cm57ZmFjZTpzLG5keDppfX0pO3JldHVybiBuLnNvcnQoZnVuY3Rpb24ocyxpKXtyZXR1cm4gcy5mYWNlLWkuZmFjZX0pLG59ZnVuY3Rpb24gZG4odCxlLHIsbil7bj1ufHx6LnRleHR1cmVPcHRpb25zO2NvbnN0IHM9bi50YXJnZXR8fEcsaT1uLmxldmVsfHwwO2xldCBhPXIud2lkdGgsbz1yLmhlaWdodDtjb25zdCBjPW4uaW50ZXJuYWxGb3JtYXR8fG4uZm9ybWF0fHxnLHU9RmUoYyksZj1uLmZvcm1hdHx8dS5mb3JtYXQsZD1uLnR5cGV8fHUudHlwZTtpZihwZSh0LG4pLHQuYmluZFRleHR1cmUocyxlKSxzPT09JCl7Y29uc3QgaD1yLndpZHRoLHA9ci5oZWlnaHQ7bGV0IGwseTtpZihoLzY9PT1wKWw9cCx5PVswLDAsMSwwLDIsMCwzLDAsNCwwLDUsMF07ZWxzZSBpZihwLzY9PT1oKWw9aCx5PVswLDAsMCwxLDAsMiwwLDMsMCw0LDAsNV07ZWxzZSBpZihoLzM9PT1wLzIpbD1oLzMseT1bMCwwLDEsMCwyLDAsMCwxLDEsMSwyLDFdO2Vsc2UgaWYoaC8yPT09cC8zKWw9aC8yLHk9WzAsMCwxLDAsMCwxLDEsMSwwLDIsMSwyXTtlbHNlIHRocm93ImNhbid0IGZpZ3VyZSBvdXQgY3ViZSBtYXAgZnJvbSBlbGVtZW50OiAiKyhyLnNyYz9yLnNyYzpyLm5vZGVOYW1lKTtjb25zdCBiPUpyKCk7Yj8oYi5jYW52YXMud2lkdGg9bCxiLmNhbnZhcy5oZWlnaHQ9bCxhPWwsbz1sLHRyKHQsbikuZm9yRWFjaChmdW5jdGlvbih4KXtjb25zdCBTPXlbeC5uZHgqMiswXSpsLEY9eVt4Lm5keCoyKzFdKmw7Yi5kcmF3SW1hZ2UocixTLEYsbCxsLDAsMCxsLGwpLHQudGV4SW1hZ2UyRCh4LmZhY2UsaSxjLGYsZCxiLmNhbnZhcyl9KSxiLmNhbnZhcy53aWR0aD0xLGIuY2FudmFzLmhlaWdodD0xKTp0eXBlb2YgY3JlYXRlSW1hZ2VCaXRtYXA8InUiJiYoYT1sLG89bCx0cih0LG4pLmZvckVhY2goZnVuY3Rpb24oeCl7Y29uc3QgUz15W3gubmR4KjIrMF0qbCxGPXlbeC5uZHgqMisxXSpsO3QudGV4SW1hZ2UyRCh4LmZhY2UsaSxjLGwsbCwwLGYsZCxudWxsKSxjcmVhdGVJbWFnZUJpdG1hcChyLFMsRixsLGwse3ByZW11bHRpcGx5QWxwaGE6Im5vbmUiLGNvbG9yU3BhY2VDb252ZXJzaW9uOiJub25lIn0pLnRoZW4oZnVuY3Rpb24oWCl7cGUodCxuKSx0LmJpbmRUZXh0dXJlKHMsZSksdC50ZXhJbWFnZTJEKHguZmFjZSxpLGMsZixkLFgpLFBlKG4pJiZadCh0LGUsbixhLG8sYyl9KX0pKX1lbHNlIGlmKHM9PT1KfHxzPT09Wil7Y29uc3QgaD1NYXRoLm1pbihyLndpZHRoLHIuaGVpZ2h0KSxwPU1hdGgubWF4KHIud2lkdGgsci5oZWlnaHQpLGw9cC9oO2lmKGwlMSE9PTApdGhyb3ciY2FuIG5vdCBjb21wdXRlIDNEIGRpbWVuc2lvbnMgb2YgZWxlbWVudCI7Y29uc3QgeT1yLndpZHRoPT09cD8xOjAsYj1yLmhlaWdodD09PXA/MTowO3QucGl4ZWxTdG9yZWkocXQsMSksdC5waXhlbFN0b3JlaShlbixyLndpZHRoKSx0LnBpeGVsU3RvcmVpKHRuLDApLHQucGl4ZWxTdG9yZWkoc24sMCksdC50ZXhJbWFnZTNEKHMsaSxjLGgsaCxoLDAsZixkLG51bGwpO2ZvcihsZXQgeD0wO3g8bDsrK3gpe2NvbnN0IFM9eCpoKnksRj14KmgqYjt0LnBpeGVsU3RvcmVpKHJuLFMpLHQucGl4ZWxTdG9yZWkobm4sRiksdC50ZXhTdWJJbWFnZTNEKHMsaSwwLDAseCxoLGgsMSxmLGQscil9Zm4odCl9ZWxzZSB0LnRleEltYWdlMkQocyxpLGMsZixkLHIpO1BlKG4pJiZadCh0LGUsbixhLG8sYyksbG4odCxlLG4pfWZ1bmN0aW9uIGtlKCl7fWZ1bmN0aW9uIERhKHQpe2lmKHR5cGVvZiBkb2N1bWVudDwidSIpe2NvbnN0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO3JldHVybiBlLmhyZWY9dCxlLmhvc3RuYW1lPT09bG9jYXRpb24uaG9zdG5hbWUmJmUucG9ydD09PWxvY2F0aW9uLnBvcnQmJmUucHJvdG9jb2w9PT1sb2NhdGlvbi5wcm90b2NvbH1lbHNle2NvbnN0IGU9bmV3IFVSTChsb2NhdGlvbi5ocmVmKS5vcmlnaW47cmV0dXJuIG5ldyBVUkwodCxsb2NhdGlvbi5ocmVmKS5vcmlnaW49PT1lfX1mdW5jdGlvbiBNYSh0LGUpe3JldHVybiBlPT09dm9pZCAwJiYhRGEodCk/ImFub255bW91cyI6ZX1mdW5jdGlvbiBVYSh0LGUscil7cj1yfHxrZTtsZXQgbjtpZihlPWUhPT12b2lkIDA/ZTp6LmNyb3NzT3JpZ2luLGU9TWEodCxlKSx0eXBlb2YgSW1hZ2U8InUiKXtuPW5ldyBJbWFnZSxlIT09dm9pZCAwJiYobi5jcm9zc09yaWdpbj1lKTtjb25zdCBzPWZ1bmN0aW9uKCl7bi5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsaSksbi5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixhKSxuPW51bGx9LGk9ZnVuY3Rpb24oKXtjb25zdCBjPSJjb3VsZG4ndCBsb2FkIGltYWdlOiAiK3Q7VnIoYykscihjLG4pLHMoKX0sYT1mdW5jdGlvbigpe3IobnVsbCxuKSxzKCl9O3JldHVybiBuLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIixpKSxuLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGEpLG4uc3JjPXQsbn1lbHNlIGlmKHR5cGVvZiBJbWFnZUJpdG1hcDwidSIpe2xldCBzLGk7Y29uc3QgYT1mdW5jdGlvbigpe3IocyxpKX0sbz17fTtlJiYoby5tb2RlPSJjb3JzIiksZmV0Y2godCxvKS50aGVuKGZ1bmN0aW9uKGMpe2lmKCFjLm9rKXRocm93IGM7cmV0dXJuIGMuYmxvYigpfSkudGhlbihmdW5jdGlvbihjKXtyZXR1cm4gY3JlYXRlSW1hZ2VCaXRtYXAoYyx7cHJlbXVsdGlwbHlBbHBoYToibm9uZSIsY29sb3JTcGFjZUNvbnZlcnNpb246Im5vbmUifSl9KS50aGVuKGZ1bmN0aW9uKGMpe2k9YyxzZXRUaW1lb3V0KGEpfSkuY2F0Y2goZnVuY3Rpb24oYyl7cz1jLHNldFRpbWVvdXQoYSl9KSxuPW51bGx9cmV0dXJuIG59ZnVuY3Rpb24gaG4odCl7cmV0dXJuIHR5cGVvZiBJbWFnZUJpdG1hcDwidSImJnQgaW5zdGFuY2VvZiBJbWFnZUJpdG1hcHx8dHlwZW9mIEltYWdlRGF0YTwidSImJnQgaW5zdGFuY2VvZiBJbWFnZURhdGF8fHR5cGVvZiBIVE1MRWxlbWVudDwidSImJnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudH1mdW5jdGlvbiBycih0LGUscil7cmV0dXJuIGhuKHQpPyhzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cihudWxsLHQpfSksdCk6VWEodCxlLHIpfWZ1bmN0aW9uIG5yKHQsZSxyKXtyPXJ8fHoudGV4dHVyZU9wdGlvbnM7Y29uc3Qgbj1yLnRhcmdldHx8RztpZih0LmJpbmRUZXh0dXJlKG4sZSksci5jb2xvcj09PSExKXJldHVybjtjb25zdCBzPUJhKHIuY29sb3IpO2lmKG49PT0kKWZvcihsZXQgaT0wO2k8NjsrK2kpdC50ZXhJbWFnZTJEKFh0K2ksMCxnLDEsMSwwLGcsRSxzKTtlbHNlIG49PT1KfHxuPT09Wj90LnRleEltYWdlM0QobiwwLGcsMSwxLDEsMCxnLEUscyk6dC50ZXhJbWFnZTJEKG4sMCxnLDEsMSwwLGcsRSxzKX1mdW5jdGlvbiBOYSh0LGUscixuKXtyZXR1cm4gbj1ufHxrZSxyPXJ8fHoudGV4dHVyZU9wdGlvbnMsbnIodCxlLHIpLHI9T2JqZWN0LmFzc2lnbih7fSxyKSxycihyLnNyYyxyLmNyb3NzT3JpZ2luLGZ1bmN0aW9uKGksYSl7aT9uKGksZSxhKTooZG4odCxlLGEsciksbihudWxsLGUsYSkpfSl9ZnVuY3Rpb24gT2EodCxlLHIsbil7bj1ufHxrZTtjb25zdCBzPXIuc3JjO2lmKHMubGVuZ3RoIT09Nil0aHJvdyJ0aGVyZSBtdXN0IGJlIDYgdXJscyBmb3IgYSBjdWJlbWFwIjtjb25zdCBpPXIubGV2ZWx8fDAsYT1yLmludGVybmFsRm9ybWF0fHxyLmZvcm1hdHx8ZyxvPUZlKGEpLGM9ci5mb3JtYXR8fG8uZm9ybWF0LHU9ci50eXBlfHxFLGY9ci50YXJnZXR8fEc7aWYoZiE9PSQpdGhyb3cidGFyZ2V0IG11c3QgYmUgVEVYVFVSRV9DVUJFX01BUCI7bnIodCxlLHIpLHI9T2JqZWN0LmFzc2lnbih7fSxyKTtsZXQgZD02O2NvbnN0IGg9W10scD1lcih0LHIpO2xldCBsO2Z1bmN0aW9uIHkoYil7cmV0dXJuIGZ1bmN0aW9uKHgsUyl7LS1kLHg/aC5wdXNoKHgpOlMud2lkdGghPT1TLmhlaWdodD9oLnB1c2goImN1YmVtYXAgZmFjZSBpbWcgaXMgbm90IGEgc3F1YXJlOiAiK1Muc3JjKToocGUodCxyKSx0LmJpbmRUZXh0dXJlKGYsZSksZD09PTU/ZXIoKS5mb3JFYWNoKGZ1bmN0aW9uKEYpe3QudGV4SW1hZ2UyRChGLGksYSxjLHUsUyl9KTp0LnRleEltYWdlMkQoYixpLGEsYyx1LFMpLFBlKHIpJiZ0LmdlbmVyYXRlTWlwbWFwKGYpKSxkPT09MCYmbihoLmxlbmd0aD9oOnZvaWQgMCxlLGwpfX1sPXMubWFwKGZ1bmN0aW9uKGIseCl7cmV0dXJuIHJyKGIsci5jcm9zc09yaWdpbix5KHBbeF0pKX0pfWZ1bmN0aW9uIExhKHQsZSxyLG4pe249bnx8a2U7Y29uc3Qgcz1yLnNyYyxpPXIuaW50ZXJuYWxGb3JtYXR8fHIuZm9ybWF0fHxnLGE9RmUoaSksbz1yLmZvcm1hdHx8YS5mb3JtYXQsYz1yLnR5cGV8fEUsdT1yLnRhcmdldHx8WjtpZih1IT09SiYmdSE9PVopdGhyb3cidGFyZ2V0IG11c3QgYmUgVEVYVFVSRV8zRCBvciBURVhUVVJFXzJEX0FSUkFZIjtucih0LGUscikscj1PYmplY3QuYXNzaWduKHt9LHIpO2xldCBmPXMubGVuZ3RoO2NvbnN0IGQ9W107bGV0IGg7Y29uc3QgcD1yLmxldmVsfHwwO2xldCBsPXIud2lkdGgseT1yLmhlaWdodDtjb25zdCBiPXMubGVuZ3RoO2xldCB4PSEwO2Z1bmN0aW9uIFMoRil7cmV0dXJuIGZ1bmN0aW9uKFgsc2Upe2lmKC0tZixYKWQucHVzaChYKTtlbHNle2lmKHBlKHQsciksdC5iaW5kVGV4dHVyZSh1LGUpLHgpe3g9ITEsbD1yLndpZHRofHxzZS53aWR0aCx5PXIuaGVpZ2h0fHxzZS5oZWlnaHQsdC50ZXhJbWFnZTNEKHUscCxpLGwseSxiLDAsbyxjLG51bGwpO2ZvcihsZXQgaWU9MDtpZTxiOysraWUpdC50ZXhTdWJJbWFnZTNEKHUscCwwLDAsaWUsbCx5LDEsbyxjLHNlKX1lbHNle2xldCBpZT1zZSxNOyhzZS53aWR0aCE9PWx8fHNlLmhlaWdodCE9PXkpJiYoTT1KcigpLGllPU0uY2FudmFzLE0uY2FudmFzLndpZHRoPWwsTS5jYW52YXMuaGVpZ2h0PXksTS5kcmF3SW1hZ2Uoc2UsMCwwLGwseSkpLHQudGV4U3ViSW1hZ2UzRCh1LHAsMCwwLEYsbCx5LDEsbyxjLGllKSxNJiZpZT09PU0uY2FudmFzJiYoTS5jYW52YXMud2lkdGg9MCxNLmNhbnZhcy5oZWlnaHQ9MCl9UGUocikmJnQuZ2VuZXJhdGVNaXBtYXAodSl9Zj09PTAmJm4oZC5sZW5ndGg/ZDp2b2lkIDAsZSxoKX19aD1zLm1hcChmdW5jdGlvbihGLFgpe3JldHVybiBycihGLHIuY3Jvc3NPcmlnaW4sUyhYKSl9KX1mdW5jdGlvbiB6YSh0LGUscixuKXtuPW58fHoudGV4dHVyZU9wdGlvbnM7Y29uc3Qgcz1uLnRhcmdldHx8Rzt0LmJpbmRUZXh0dXJlKHMsZSk7bGV0IGk9bi53aWR0aCxhPW4uaGVpZ2h0LG89bi5kZXB0aDtjb25zdCBjPW4ubGV2ZWx8fDAsdT1uLmludGVybmFsRm9ybWF0fHxuLmZvcm1hdHx8ZyxmPUZlKHUpLGQ9bi5mb3JtYXR8fGYuZm9ybWF0LGg9bi50eXBlfHxrYSh0LHIsZi50eXBlKTtpZih2ZShyKSlyIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXkmJihyPW5ldyBVaW50OEFycmF5KHIuYnVmZmVyKSk7ZWxzZXtjb25zdCBiPSRyKGgpO3I9bmV3IGIocil9Y29uc3QgcD1SYSh1LGgpLGw9ci5ieXRlTGVuZ3RoL3A7aWYobCUxKXRocm93Imxlbmd0aCB3cm9uZyBzaXplIGZvciBmb3JtYXQ6ICIrS3IodCxkKTtsZXQgeTtpZihzPT09Snx8cz09PVopaWYoIWkmJiFhJiYhbyl7Y29uc3QgYj1NYXRoLmNicnQobCk7aWYoYiUxIT09MCl0aHJvdyJjYW4ndCBndWVzcyBjdWJlIHNpemUgb2YgYXJyYXkgb2YgbnVtRWxlbWVudHM6ICIrbDtpPWIsYT1iLG89Yn1lbHNlIGkmJighYXx8IW8pPyh5PW90KHQscyxhLG8sbC9pKSxhPXkud2lkdGgsbz15LmhlaWdodCk6YSYmKCFpfHwhbyk/KHk9b3QodCxzLGksbyxsL2EpLGk9eS53aWR0aCxvPXkuaGVpZ2h0KTooeT1vdCh0LHMsaSxhLGwvbyksaT15LndpZHRoLGE9eS5oZWlnaHQpO2Vsc2UgeT1vdCh0LHMsaSxhLGwpLGk9eS53aWR0aCxhPXkuaGVpZ2h0O2lmKGZuKHQpLHQucGl4ZWxTdG9yZWkocXQsbi51bnBhY2tBbGlnbm1lbnR8fDEpLHBlKHQsbikscz09PSQpe2NvbnN0IGI9cC9yLkJZVEVTX1BFUl9FTEVNRU5ULHg9bC82KmI7dHIodCxuKS5mb3JFYWNoKFM9Pntjb25zdCBGPXgqUy5uZHgsWD1yLnN1YmFycmF5KEYsRit4KTt0LnRleEltYWdlMkQoUy5mYWNlLGMsdSxpLGEsMCxkLGgsWCl9KX1lbHNlIHM9PT1KfHxzPT09Wj90LnRleEltYWdlM0QocyxjLHUsaSxhLG8sMCxkLGgscik6dC50ZXhJbWFnZTJEKHMsYyx1LGksYSwwLGQsaCxyKTtyZXR1cm57d2lkdGg6aSxoZWlnaHQ6YSxkZXB0aDpvLHR5cGU6aH19ZnVuY3Rpb24gR2EodCxlLHIpe2NvbnN0IG49ci50YXJnZXR8fEc7dC5iaW5kVGV4dHVyZShuLGUpO2NvbnN0IHM9ci5sZXZlbHx8MCxpPXIuaW50ZXJuYWxGb3JtYXR8fHIuZm9ybWF0fHxnLGE9RmUoaSksbz1yLmZvcm1hdHx8YS5mb3JtYXQsYz1yLnR5cGV8fGEudHlwZTtpZihwZSh0LHIpLG49PT0kKWZvcihsZXQgdT0wO3U8NjsrK3UpdC50ZXhJbWFnZTJEKFh0K3UscyxpLHIud2lkdGgsci5oZWlnaHQsMCxvLGMsbnVsbCk7ZWxzZSBuPT09Snx8bj09PVo/dC50ZXhJbWFnZTNEKG4scyxpLHIud2lkdGgsci5oZWlnaHQsci5kZXB0aCwwLG8sYyxudWxsKTp0LnRleEltYWdlMkQobixzLGksci53aWR0aCxyLmhlaWdodCwwLG8sYyxudWxsKX1mdW5jdGlvbiBtbih0LGUscil7cj1yfHxrZSxlPWV8fHoudGV4dHVyZU9wdGlvbnM7Y29uc3Qgbj10LmNyZWF0ZVRleHR1cmUoKSxzPWUudGFyZ2V0fHxHO2xldCBpPWUud2lkdGh8fDEsYT1lLmhlaWdodHx8MTtjb25zdCBvPWUuaW50ZXJuYWxGb3JtYXR8fGc7dC5iaW5kVGV4dHVyZShzLG4pLHM9PT0kJiYodC50ZXhQYXJhbWV0ZXJpKHMsdHQsZXQpLHQudGV4UGFyYW1ldGVyaShzLHJ0LGV0KSk7bGV0IGM9ZS5zcmM7aWYoYylpZih0eXBlb2YgYz09ImZ1bmN0aW9uIiYmKGM9Yyh0LGUpKSx0eXBlb2YgYz09InN0cmluZyIpTmEodCxuLGUscik7ZWxzZSBpZih2ZShjKXx8QXJyYXkuaXNBcnJheShjKSYmKHR5cGVvZiBjWzBdPT0ibnVtYmVyInx8QXJyYXkuaXNBcnJheShjWzBdKXx8dmUoY1swXSkpKXtjb25zdCB1PXphKHQsbixjLGUpO2k9dS53aWR0aCxhPXUuaGVpZ2h0fWVsc2UgQXJyYXkuaXNBcnJheShjKSYmKHR5cGVvZiBjWzBdPT0ic3RyaW5nInx8aG4oY1swXSkpP3M9PT0kP09hKHQsbixlLHIpOkxhKHQsbixlLHIpOihkbih0LG4sYyxlKSxpPWMud2lkdGgsYT1jLmhlaWdodCk7ZWxzZSBHYSh0LG4sZSk7cmV0dXJuIFBlKGUpJiZadCh0LG4sZSxpLGEsbyksbG4odCxuLGUpLG59Y29uc3Qgc3I9VnI7ZnVuY3Rpb24gcG4odCl7cmV0dXJuIHR5cGVvZiBkb2N1bWVudDwidSImJmRvY3VtZW50LmdldEVsZW1lbnRCeUlkP2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKHQpOm51bGx9Y29uc3QgYXQ9MzM5ODQsY3Q9MzQ5NjIsJGE9MzQ5NjMsVmE9MzU3MTMsV2E9MzU3MTQsSGE9MzU2MzIsamE9MzU2MzMsWGE9MzU5ODEseW49MzU3MTgsWWE9MzU3MjEsUWE9MzU5NzEscWE9MzUzODIsS2E9MzUzOTYsSmE9MzUzOTgsWmE9MzUzOTIsZWM9MzUzOTUsdXQ9NTEyNixibj0zNTY2NCxnbj0zNTY2NSx4bj0zNTY2Nixpcj01MTI0LEVuPTM1NjY3LF9uPTM1NjY4LFRuPTM1NjY5LHduPTM1NjcwLEFuPTM1NjcxLHZuPTM1NjcyLFNuPTM1NjczLEluPTM1Njc0LFJuPTM1Njc1LEZuPTM1Njc2LHRjPTM1Njc4LHJjPTM1NjgwLG5jPTM1Njc5LHNjPTM1NjgyLGljPTM1Njg1LG9jPTM1Njg2LGFjPTM1Njg3LGNjPTM1Njg4LHVjPTM1Njg5LGZjPTM1NjkwLGxjPTM2Mjg5LGRjPTM2MjkyLGhjPTM2MjkzLG9yPTUxMjUsUG49MzYyOTQsa249MzYyOTUsQ249MzYyOTYsbWM9MzYyOTgscGM9MzYyOTkseWM9MzYzMDAsYmM9MzYzMDMsZ2M9MzYzMDYseGM9MzYzMDcsRWM9MzYzMDgsX2M9MzYzMTEsZnQ9MzU1MyxsdD0zNDA2Nyxhcj0zMjg3OSxkdD0zNTg2NixtPXt9O2Z1bmN0aW9uIEJuKHQsZSl7cmV0dXJuIG1bZV0uYmluZFBvaW50fWZ1bmN0aW9uIFRjKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3QudW5pZm9ybTFmKGUscil9fWZ1bmN0aW9uIHdjKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3QudW5pZm9ybTFmdihlLHIpfX1mdW5jdGlvbiBBYyh0LGUpe3JldHVybiBmdW5jdGlvbihyKXt0LnVuaWZvcm0yZnYoZSxyKX19ZnVuY3Rpb24gdmModCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7dC51bmlmb3JtM2Z2KGUscil9fWZ1bmN0aW9uIFNjKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3QudW5pZm9ybTRmdihlLHIpfX1mdW5jdGlvbiBEbih0LGUpe3JldHVybiBmdW5jdGlvbihyKXt0LnVuaWZvcm0xaShlLHIpfX1mdW5jdGlvbiBNbih0LGUpe3JldHVybiBmdW5jdGlvbihyKXt0LnVuaWZvcm0xaXYoZSxyKX19ZnVuY3Rpb24gVW4odCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7dC51bmlmb3JtMml2KGUscil9fWZ1bmN0aW9uIE5uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3QudW5pZm9ybTNpdihlLHIpfX1mdW5jdGlvbiBPbih0LGUpe3JldHVybiBmdW5jdGlvbihyKXt0LnVuaWZvcm00aXYoZSxyKX19ZnVuY3Rpb24gSWModCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7dC51bmlmb3JtMXVpKGUscil9fWZ1bmN0aW9uIFJjKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3QudW5pZm9ybTF1aXYoZSxyKX19ZnVuY3Rpb24gRmModCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7dC51bmlmb3JtMnVpdihlLHIpfX1mdW5jdGlvbiBQYyh0LGUpe3JldHVybiBmdW5jdGlvbihyKXt0LnVuaWZvcm0zdWl2KGUscil9fWZ1bmN0aW9uIGtjKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3QudW5pZm9ybTR1aXYoZSxyKX19ZnVuY3Rpb24gQ2ModCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7dC51bmlmb3JtTWF0cml4MmZ2KGUsITEscil9fWZ1bmN0aW9uIEJjKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3QudW5pZm9ybU1hdHJpeDNmdihlLCExLHIpfX1mdW5jdGlvbiBEYyh0LGUpe3JldHVybiBmdW5jdGlvbihyKXt0LnVuaWZvcm1NYXRyaXg0ZnYoZSwhMSxyKX19ZnVuY3Rpb24gTWModCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7dC51bmlmb3JtTWF0cml4MngzZnYoZSwhMSxyKX19ZnVuY3Rpb24gVWModCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7dC51bmlmb3JtTWF0cml4M3gyZnYoZSwhMSxyKX19ZnVuY3Rpb24gTmModCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7dC51bmlmb3JtTWF0cml4Mng0ZnYoZSwhMSxyKX19ZnVuY3Rpb24gT2ModCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7dC51bmlmb3JtTWF0cml4NHgyZnYoZSwhMSxyKX19ZnVuY3Rpb24gTGModCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7dC51bmlmb3JtTWF0cml4M3g0ZnYoZSwhMSxyKX19ZnVuY3Rpb24gemModCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7dC51bmlmb3JtTWF0cml4NHgzZnYoZSwhMSxyKX19ZnVuY3Rpb24gSSh0LGUscixuKXtjb25zdCBzPUJuKHQsZSk7cmV0dXJuIEFlKHQpP2Z1bmN0aW9uKGkpe2xldCBhLG87IWl8fHp0KHQsaSk/KGE9aSxvPW51bGwpOihhPWkudGV4dHVyZSxvPWkuc2FtcGxlciksdC51bmlmb3JtMWkobixyKSx0LmFjdGl2ZVRleHR1cmUoYXQrciksdC5iaW5kVGV4dHVyZShzLGEpLHQuYmluZFNhbXBsZXIocixvKX06ZnVuY3Rpb24oaSl7dC51bmlmb3JtMWkobixyKSx0LmFjdGl2ZVRleHR1cmUoYXQrciksdC5iaW5kVGV4dHVyZShzLGkpfX1mdW5jdGlvbiBSKHQsZSxyLG4scyl7Y29uc3QgaT1Cbih0LGUpLGE9bmV3IEludDMyQXJyYXkocyk7Zm9yKGxldCBvPTA7bzxzOysrbylhW29dPXIrbztyZXR1cm4gQWUodCk/ZnVuY3Rpb24obyl7dC51bmlmb3JtMWl2KG4sYSksby5mb3JFYWNoKGZ1bmN0aW9uKGMsdSl7dC5hY3RpdmVUZXh0dXJlKGF0K2FbdV0pO2xldCBmLGQ7IWN8fHp0KHQsYyk/KGY9YyxkPW51bGwpOihmPWMudGV4dHVyZSxkPWMuc2FtcGxlciksdC5iaW5kU2FtcGxlcihyLGQpLHQuYmluZFRleHR1cmUoaSxmKX0pfTpmdW5jdGlvbihvKXt0LnVuaWZvcm0xaXYobixhKSxvLmZvckVhY2goZnVuY3Rpb24oYyx1KXt0LmFjdGl2ZVRleHR1cmUoYXQrYVt1XSksdC5iaW5kVGV4dHVyZShpLGMpfSl9fW1bdXRdPXtUeXBlOkZsb2F0MzJBcnJheSxzaXplOjQsc2V0dGVyOlRjLGFycmF5U2V0dGVyOndjfSxtW2JuXT17VHlwZTpGbG9hdDMyQXJyYXksc2l6ZTo4LHNldHRlcjpBYyxjb2xzOjJ9LG1bZ25dPXtUeXBlOkZsb2F0MzJBcnJheSxzaXplOjEyLHNldHRlcjp2Yyxjb2xzOjN9LG1beG5dPXtUeXBlOkZsb2F0MzJBcnJheSxzaXplOjE2LHNldHRlcjpTYyxjb2xzOjR9LG1baXJdPXtUeXBlOkludDMyQXJyYXksc2l6ZTo0LHNldHRlcjpEbixhcnJheVNldHRlcjpNbn0sbVtFbl09e1R5cGU6SW50MzJBcnJheSxzaXplOjgsc2V0dGVyOlVuLGNvbHM6Mn0sbVtfbl09e1R5cGU6SW50MzJBcnJheSxzaXplOjEyLHNldHRlcjpObixjb2xzOjN9LG1bVG5dPXtUeXBlOkludDMyQXJyYXksc2l6ZToxNixzZXR0ZXI6T24sY29sczo0fSxtW29yXT17VHlwZTpVaW50MzJBcnJheSxzaXplOjQsc2V0dGVyOkljLGFycmF5U2V0dGVyOlJjfSxtW1BuXT17VHlwZTpVaW50MzJBcnJheSxzaXplOjgsc2V0dGVyOkZjLGNvbHM6Mn0sbVtrbl09e1R5cGU6VWludDMyQXJyYXksc2l6ZToxMixzZXR0ZXI6UGMsY29sczozfSxtW0NuXT17VHlwZTpVaW50MzJBcnJheSxzaXplOjE2LHNldHRlcjprYyxjb2xzOjR9LG1bd25dPXtUeXBlOlVpbnQzMkFycmF5LHNpemU6NCxzZXR0ZXI6RG4sYXJyYXlTZXR0ZXI6TW59LG1bQW5dPXtUeXBlOlVpbnQzMkFycmF5LHNpemU6OCxzZXR0ZXI6VW4sY29sczoyfSxtW3ZuXT17VHlwZTpVaW50MzJBcnJheSxzaXplOjEyLHNldHRlcjpObixjb2xzOjN9LG1bU25dPXtUeXBlOlVpbnQzMkFycmF5LHNpemU6MTYsc2V0dGVyOk9uLGNvbHM6NH0sbVtJbl09e1R5cGU6RmxvYXQzMkFycmF5LHNpemU6MzIsc2V0dGVyOkNjLHJvd3M6Mixjb2xzOjJ9LG1bUm5dPXtUeXBlOkZsb2F0MzJBcnJheSxzaXplOjQ4LHNldHRlcjpCYyxyb3dzOjMsY29sczozfSxtW0ZuXT17VHlwZTpGbG9hdDMyQXJyYXksc2l6ZTo2NCxzZXR0ZXI6RGMscm93czo0LGNvbHM6NH0sbVtpY109e1R5cGU6RmxvYXQzMkFycmF5LHNpemU6MzIsc2V0dGVyOk1jLHJvd3M6Mixjb2xzOjN9LG1bb2NdPXtUeXBlOkZsb2F0MzJBcnJheSxzaXplOjMyLHNldHRlcjpOYyxyb3dzOjIsY29sczo0fSxtW2FjXT17VHlwZTpGbG9hdDMyQXJyYXksc2l6ZTo0OCxzZXR0ZXI6VWMscm93czozLGNvbHM6Mn0sbVtjY109e1R5cGU6RmxvYXQzMkFycmF5LHNpemU6NDgsc2V0dGVyOkxjLHJvd3M6Myxjb2xzOjR9LG1bdWNdPXtUeXBlOkZsb2F0MzJBcnJheSxzaXplOjY0LHNldHRlcjpPYyxyb3dzOjQsY29sczoyfSxtW2ZjXT17VHlwZTpGbG9hdDMyQXJyYXksc2l6ZTo2NCxzZXR0ZXI6emMscm93czo0LGNvbHM6M30sbVt0Y109e1R5cGU6bnVsbCxzaXplOjAsc2V0dGVyOkksYXJyYXlTZXR0ZXI6UixiaW5kUG9pbnQ6ZnR9LG1bcmNdPXtUeXBlOm51bGwsc2l6ZTowLHNldHRlcjpJLGFycmF5U2V0dGVyOlIsYmluZFBvaW50Omx0fSxtW25jXT17VHlwZTpudWxsLHNpemU6MCxzZXR0ZXI6SSxhcnJheVNldHRlcjpSLGJpbmRQb2ludDphcn0sbVtzY109e1R5cGU6bnVsbCxzaXplOjAsc2V0dGVyOkksYXJyYXlTZXR0ZXI6UixiaW5kUG9pbnQ6ZnR9LG1bbGNdPXtUeXBlOm51bGwsc2l6ZTowLHNldHRlcjpJLGFycmF5U2V0dGVyOlIsYmluZFBvaW50OmR0fSxtW2RjXT17VHlwZTpudWxsLHNpemU6MCxzZXR0ZXI6SSxhcnJheVNldHRlcjpSLGJpbmRQb2ludDpkdH0sbVtoY109e1R5cGU6bnVsbCxzaXplOjAsc2V0dGVyOkksYXJyYXlTZXR0ZXI6UixiaW5kUG9pbnQ6bHR9LG1bbWNdPXtUeXBlOm51bGwsc2l6ZTowLHNldHRlcjpJLGFycmF5U2V0dGVyOlIsYmluZFBvaW50OmZ0fSxtW3BjXT17VHlwZTpudWxsLHNpemU6MCxzZXR0ZXI6SSxhcnJheVNldHRlcjpSLGJpbmRQb2ludDphcn0sbVt5Y109e1R5cGU6bnVsbCxzaXplOjAsc2V0dGVyOkksYXJyYXlTZXR0ZXI6UixiaW5kUG9pbnQ6bHR9LG1bYmNdPXtUeXBlOm51bGwsc2l6ZTowLHNldHRlcjpJLGFycmF5U2V0dGVyOlIsYmluZFBvaW50OmR0fSxtW2djXT17VHlwZTpudWxsLHNpemU6MCxzZXR0ZXI6SSxhcnJheVNldHRlcjpSLGJpbmRQb2ludDpmdH0sbVt4Y109e1R5cGU6bnVsbCxzaXplOjAsc2V0dGVyOkksYXJyYXlTZXR0ZXI6UixiaW5kUG9pbnQ6YXJ9LG1bRWNdPXtUeXBlOm51bGwsc2l6ZTowLHNldHRlcjpJLGFycmF5U2V0dGVyOlIsYmluZFBvaW50Omx0fSxtW19jXT17VHlwZTpudWxsLHNpemU6MCxzZXR0ZXI6SSxhcnJheVNldHRlcjpSLGJpbmRQb2ludDpkdH07ZnVuY3Rpb24gaHQodCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7aWYoci52YWx1ZSlzd2l0Y2godC5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoZSksci52YWx1ZS5sZW5ndGgpe2Nhc2UgNDp0LnZlcnRleEF0dHJpYjRmdihlLHIudmFsdWUpO2JyZWFrO2Nhc2UgMzp0LnZlcnRleEF0dHJpYjNmdihlLHIudmFsdWUpO2JyZWFrO2Nhc2UgMjp0LnZlcnRleEF0dHJpYjJmdihlLHIudmFsdWUpO2JyZWFrO2Nhc2UgMTp0LnZlcnRleEF0dHJpYjFmdihlLHIudmFsdWUpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJ0aGUgbGVuZ3RoIG9mIGEgZmxvYXQgY29uc3RhbnQgdmFsdWUgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDQhIil9ZWxzZSB0LmJpbmRCdWZmZXIoY3Qsci5idWZmZXIpLHQuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoZSksdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGUsci5udW1Db21wb25lbnRzfHxyLnNpemUsci50eXBlfHx1dCxyLm5vcm1hbGl6ZXx8ITEsci5zdHJpZGV8fDAsci5vZmZzZXR8fDApLHQudmVydGV4QXR0cmliRGl2aXNvciYmdC52ZXJ0ZXhBdHRyaWJEaXZpc29yKGUsci5kaXZpc29yfHwwKX19ZnVuY3Rpb24gSCh0LGUpe3JldHVybiBmdW5jdGlvbihyKXtpZihyLnZhbHVlKWlmKHQuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGUpLHIudmFsdWUubGVuZ3RoPT09NCl0LnZlcnRleEF0dHJpYjRpdihlLHIudmFsdWUpO2Vsc2UgdGhyb3cgbmV3IEVycm9yKCJUaGUgbGVuZ3RoIG9mIGFuIGludGVnZXIgY29uc3RhbnQgdmFsdWUgbXVzdCBiZSA0ISIpO2Vsc2UgdC5iaW5kQnVmZmVyKGN0LHIuYnVmZmVyKSx0LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGUpLHQudmVydGV4QXR0cmliSVBvaW50ZXIoZSxyLm51bUNvbXBvbmVudHN8fHIuc2l6ZSxyLnR5cGV8fGlyLHIuc3RyaWRlfHwwLHIub2Zmc2V0fHwwKSx0LnZlcnRleEF0dHJpYkRpdmlzb3ImJnQudmVydGV4QXR0cmliRGl2aXNvcihlLHIuZGl2aXNvcnx8MCl9fWZ1bmN0aW9uIG10KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe2lmKHIudmFsdWUpaWYodC5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoZSksci52YWx1ZS5sZW5ndGg9PT00KXQudmVydGV4QXR0cmliNHVpdihlLHIudmFsdWUpO2Vsc2UgdGhyb3cgbmV3IEVycm9yKCJUaGUgbGVuZ3RoIG9mIGFuIHVuc2lnbmVkIGludGVnZXIgY29uc3RhbnQgdmFsdWUgbXVzdCBiZSA0ISIpO2Vsc2UgdC5iaW5kQnVmZmVyKGN0LHIuYnVmZmVyKSx0LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGUpLHQudmVydGV4QXR0cmliSVBvaW50ZXIoZSxyLm51bUNvbXBvbmVudHN8fHIuc2l6ZSxyLnR5cGV8fG9yLHIuc3RyaWRlfHwwLHIub2Zmc2V0fHwwKSx0LnZlcnRleEF0dHJpYkRpdmlzb3ImJnQudmVydGV4QXR0cmliRGl2aXNvcihlLHIuZGl2aXNvcnx8MCl9fWZ1bmN0aW9uIGNyKHQsZSxyKXtjb25zdCBuPXIuc2l6ZSxzPXIuY291bnQ7cmV0dXJuIGZ1bmN0aW9uKGkpe3QuYmluZEJ1ZmZlcihjdCxpLmJ1ZmZlcik7Y29uc3QgYT1pLnNpemV8fGkubnVtQ29tcG9uZW50c3x8bixvPWEvcyxjPWkudHlwZXx8dXQsZj1tW2NdLnNpemUqYSxkPWkubm9ybWFsaXplfHwhMSxoPWkub2Zmc2V0fHwwLHA9Zi9zO2ZvcihsZXQgbD0wO2w8czsrK2wpdC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShlK2wpLHQudmVydGV4QXR0cmliUG9pbnRlcihlK2wsbyxjLGQsZixoK3AqbCksdC52ZXJ0ZXhBdHRyaWJEaXZpc29yJiZ0LnZlcnRleEF0dHJpYkRpdmlzb3IoZStsLGkuZGl2aXNvcnx8MCl9fWNvbnN0IF89e307X1t1dF09e3NpemU6NCxzZXR0ZXI6aHR9LF9bYm5dPXtzaXplOjgsc2V0dGVyOmh0fSxfW2duXT17c2l6ZToxMixzZXR0ZXI6aHR9LF9beG5dPXtzaXplOjE2LHNldHRlcjpodH0sX1tpcl09e3NpemU6NCxzZXR0ZXI6SH0sX1tFbl09e3NpemU6OCxzZXR0ZXI6SH0sX1tfbl09e3NpemU6MTIsc2V0dGVyOkh9LF9bVG5dPXtzaXplOjE2LHNldHRlcjpIfSxfW29yXT17c2l6ZTo0LHNldHRlcjptdH0sX1tQbl09e3NpemU6OCxzZXR0ZXI6bXR9LF9ba25dPXtzaXplOjEyLHNldHRlcjptdH0sX1tDbl09e3NpemU6MTYsc2V0dGVyOm10fSxfW3duXT17c2l6ZTo0LHNldHRlcjpIfSxfW0FuXT17c2l6ZTo4LHNldHRlcjpIfSxfW3ZuXT17c2l6ZToxMixzZXR0ZXI6SH0sX1tTbl09e3NpemU6MTYsc2V0dGVyOkh9LF9bSW5dPXtzaXplOjQsc2V0dGVyOmNyLGNvdW50OjJ9LF9bUm5dPXtzaXplOjksc2V0dGVyOmNyLGNvdW50OjN9LF9bRm5dPXtzaXplOjE2LHNldHRlcjpjcixjb3VudDo0fTtjb25zdCBHYz0vRVJST1I6XHMqXGQrOihcZCspL2dpO2Z1bmN0aW9uICRjKHQsZT0iIixyPTApe2NvbnN0IG49Wy4uLmUubWF0Y2hBbGwoR2MpXSxzPW5ldyBNYXAobi5tYXAoKGksYSk9Pntjb25zdCBvPXBhcnNlSW50KGlbMV0pLGM9blthKzFdLHU9Yz9jLmluZGV4OmUubGVuZ3RoLGY9ZS5zdWJzdHJpbmcoaS5pbmRleCx1KTtyZXR1cm5bby0xLGZdfSkpO3JldHVybiB0LnNwbGl0KGAKYCkubWFwKChpLGEpPT57Y29uc3Qgbz1zLmdldChhKTtyZXR1cm5gJHthKzErcn06ICR7aX0ke28/YAoKXl5eICR7b31gOiIifWB9KS5qb2luKGAKYCl9Y29uc3QgTG49L15bIFx0XSpcbi87ZnVuY3Rpb24gem4odCl7bGV0IGU9MDtyZXR1cm4gTG4udGVzdCh0KSYmKGU9MSx0PXQucmVwbGFjZShMbiwiIikpLHtsaW5lT2Zmc2V0OmUsc2hhZGVyU291cmNlOnR9fWZ1bmN0aW9uIFZjKHQsZSl7cmV0dXJuIHQuZXJyb3JDYWxsYmFjayhlKSx0LmNhbGxiYWNrJiZzZXRUaW1lb3V0KCgpPT57dC5jYWxsYmFjayhgJHtlfQoke3QuZXJyb3JzLmpvaW4oYApgKX1gKX0pLG51bGx9ZnVuY3Rpb24gV2ModCxlLHIsbil7aWYobj1ufHxzciwhdC5nZXRTaGFkZXJQYXJhbWV0ZXIocixWYSkpe2NvbnN0IGk9dC5nZXRTaGFkZXJJbmZvTG9nKHIpLHtsaW5lT2Zmc2V0OmEsc2hhZGVyU291cmNlOm99PXpuKHQuZ2V0U2hhZGVyU291cmNlKHIpKSxjPWAkeyRjKG8saSxhKX0KRXJyb3IgY29tcGlsaW5nICR7S3IodCxlKX06ICR7aX1gO3JldHVybiBuKGMpLGN9cmV0dXJuIiJ9ZnVuY3Rpb24gdXIodCxlLHIpe2xldCBuLHMsaTtpZih0eXBlb2YgZT09ImZ1bmN0aW9uIiYmKHI9ZSxlPXZvaWQgMCksdHlwZW9mIHQ9PSJmdW5jdGlvbiIpcj10LHQ9dm9pZCAwO2Vsc2UgaWYodCYmIUFycmF5LmlzQXJyYXkodCkpe2NvbnN0IHU9dDtyPXUuZXJyb3JDYWxsYmFjayx0PXUuYXR0cmliTG9jYXRpb25zLG49dS50cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzLHM9dS50cmFuc2Zvcm1GZWVkYmFja01vZGUsaT11LmNhbGxiYWNrfWNvbnN0IGE9cnx8c3Isbz1bXSxjPXtlcnJvckNhbGxiYWNrKHUsLi4uZil7by5wdXNoKHUpLGEodSwuLi5mKX0sdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nczpuLHRyYW5zZm9ybUZlZWRiYWNrTW9kZTpzLGNhbGxiYWNrOmksZXJyb3JzOm99O3tsZXQgdT17fTtBcnJheS5pc0FycmF5KHQpP3QuZm9yRWFjaChmdW5jdGlvbihmLGQpe3VbZl09ZT9lW2RdOmR9KTp1PXR8fHt9LGMuYXR0cmliTG9jYXRpb25zPXV9cmV0dXJuIGN9Y29uc3QgSGM9WyJWRVJURVhfU0hBREVSIiwiRlJBR01FTlRfU0hBREVSIl07ZnVuY3Rpb24gamModCxlKXtpZihlLmluZGV4T2YoImZyYWciKT49MClyZXR1cm4gSGE7aWYoZS5pbmRleE9mKCJ2ZXJ0Iik+PTApcmV0dXJuIGphfWZ1bmN0aW9uIFhjKHQsZSxyKXtjb25zdCBuPXQuZ2V0QXR0YWNoZWRTaGFkZXJzKGUpO2Zvcihjb25zdCBzIG9mIG4pci5oYXMocykmJnQuZGVsZXRlU2hhZGVyKHMpO3QuZGVsZXRlUHJvZ3JhbShlKX1jb25zdCBZYz0odD0wKT0+bmV3IFByb21pc2UoZT0+c2V0VGltZW91dChlLHQpKTtmdW5jdGlvbiBRYyh0LGUscil7Y29uc3Qgbj10LmNyZWF0ZVByb2dyYW0oKSx7YXR0cmliTG9jYXRpb25zOnMsdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nczppLHRyYW5zZm9ybUZlZWRiYWNrTW9kZTphfT11cihyKTtmb3IobGV0IG89MDtvPGUubGVuZ3RoOysrbyl7bGV0IGM9ZVtvXTtpZih0eXBlb2YgYz09InN0cmluZyIpe2NvbnN0IHU9cG4oYyksZj11P3UudGV4dDpjO2xldCBkPXRbSGNbb11dO3UmJnUudHlwZSYmKGQ9amModCx1LnR5cGUpfHxkKSxjPXQuY3JlYXRlU2hhZGVyKGQpLHQuc2hhZGVyU291cmNlKGMsem4oZikuc2hhZGVyU291cmNlKSx0LmNvbXBpbGVTaGFkZXIoYyksdC5hdHRhY2hTaGFkZXIobixjKX19T2JqZWN0LmVudHJpZXMocykuZm9yRWFjaCgoW28sY10pPT50LmJpbmRBdHRyaWJMb2NhdGlvbihuLGMsbykpO3tsZXQgbz1pO28mJihvLmF0dHJpYnMmJihvPW8uYXR0cmlicyksQXJyYXkuaXNBcnJheShvKXx8KG89T2JqZWN0LmtleXMobykpLHQudHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhuLG8sYXx8WGEpKX1yZXR1cm4gdC5saW5rUHJvZ3JhbShuKSxufWZ1bmN0aW9uIHFjKHQsZSxyLG4scyl7Y29uc3QgaT11cihyLG4scyksYT1uZXcgU2V0KGUpLG89UWModCxlLGkpO2Z1bmN0aW9uIGModSxmKXtjb25zdCBkPUpjKHUsZixpLmVycm9yQ2FsbGJhY2spO3JldHVybiBkJiZYYyh1LGYsYSksZH1pZihpLmNhbGxiYWNrKXtLYyh0LG8pLnRoZW4oKCk9Pntjb25zdCB1PWModCxvKTtpLmNhbGxiYWNrKHUsdT92b2lkIDA6byl9KTtyZXR1cm59cmV0dXJuIGModCxvKT92b2lkIDA6b31hc3luYyBmdW5jdGlvbiBLYyh0LGUpe2NvbnN0IHI9dC5nZXRFeHRlbnNpb24oIktIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZSIpLG49cj8oaSxhKT0+aS5nZXRQcm9ncmFtUGFyYW1ldGVyKGEsci5DT01QTEVUSU9OX1NUQVRVU19LSFIpOigpPT4hMDtsZXQgcz0wO2RvIGF3YWl0IFljKHMpLHM9MWUzLzYwO3doaWxlKCFuKHQsZSkpfWZ1bmN0aW9uIEpjKHQsZSxyKXtpZihyPXJ8fHNyLCF0LmdldFByb2dyYW1QYXJhbWV0ZXIoZSxXYSkpe2NvbnN0IHM9dC5nZXRQcm9ncmFtSW5mb0xvZyhlKTtyKGBFcnJvciBpbiBwcm9ncmFtIGxpbmtpbmc6ICR7c31gKTtjb25zdCBhPXQuZ2V0QXR0YWNoZWRTaGFkZXJzKGUpLm1hcChvPT5XYyh0LHQuZ2V0U2hhZGVyUGFyYW1ldGVyKG8sdC5TSEFERVJfVFlQRSksbyxyKSk7cmV0dXJuYCR7c30KJHthLmZpbHRlcihvPT5vKS5qb2luKGAKYCl9YH19ZnVuY3Rpb24gWmModCxlLHIsbixzKXtyZXR1cm4gcWModCxlLHIsbixzKX1mdW5jdGlvbiBHbih0KXtjb25zdCBlPXQubmFtZTtyZXR1cm4gZS5zdGFydHNXaXRoKCJnbF8iKXx8ZS5zdGFydHNXaXRoKCJ3ZWJnbF8iKX1jb25zdCBldT0vKFwufFxbfF18XHcrKS9nLHR1PXQ9PnQ+PSIwIiYmdDw9IjkiO2Z1bmN0aW9uIHJ1KHQsZSxyLG4pe2NvbnN0IHM9dC5zcGxpdChldSkuZmlsdGVyKG89Pm8hPT0iIik7bGV0IGk9MCxhPSIiO2Zvcig7Oyl7Y29uc3Qgbz1zW2krK107YSs9bztjb25zdCBjPXR1KG9bMF0pLHU9Yz9wYXJzZUludChvKTpvO2lmKGMmJihhKz1zW2krK10pLGk9PT1zLmxlbmd0aCl7clt1XT1lO2JyZWFrfWVsc2V7Y29uc3QgZD1zW2krK10saD1kPT09IlsiLHA9clt1XXx8KGg/W106e30pO3JbdV09cCxyPXAsblthXT1uW2FdfHxmdW5jdGlvbihsKXtyZXR1cm4gZnVuY3Rpb24oeSl7JG4obCx5KX19KHApLGErPWR9fX1mdW5jdGlvbiBudSh0LGUpe2xldCByPTA7ZnVuY3Rpb24gbihvLGMsdSl7Y29uc3QgZj1jLm5hbWUuZW5kc1dpdGgoIlswXSIpLGQ9Yy50eXBlLGg9bVtkXTtpZighaCl0aHJvdyBuZXcgRXJyb3IoYHVua25vd24gdHlwZTogMHgke2QudG9TdHJpbmcoMTYpfWApO2xldCBwO2lmKGguYmluZFBvaW50KXtjb25zdCBsPXI7cis9Yy5zaXplLGY/cD1oLmFycmF5U2V0dGVyKHQsZCxsLHUsYy5zaXplKTpwPWguc2V0dGVyKHQsZCxsLHUsYy5zaXplKX1lbHNlIGguYXJyYXlTZXR0ZXImJmY/cD1oLmFycmF5U2V0dGVyKHQsdSk6cD1oLnNldHRlcih0LHUpO3JldHVybiBwLmxvY2F0aW9uPXUscH1jb25zdCBzPXt9LGk9e30sYT10LmdldFByb2dyYW1QYXJhbWV0ZXIoZSx5bik7Zm9yKGxldCBvPTA7bzxhOysrbyl7Y29uc3QgYz10LmdldEFjdGl2ZVVuaWZvcm0oZSxvKTtpZihHbihjKSljb250aW51ZTtsZXQgdT1jLm5hbWU7dS5lbmRzV2l0aCgiWzBdIikmJih1PXUuc3Vic3RyKDAsdS5sZW5ndGgtMykpO2NvbnN0IGY9dC5nZXRVbmlmb3JtTG9jYXRpb24oZSxjLm5hbWUpO2lmKGYpe2NvbnN0IGQ9bihlLGMsZik7c1t1XT1kLHJ1KHUsZCxpLHMpfX1yZXR1cm4gc31mdW5jdGlvbiBzdSh0LGUpe2NvbnN0IHI9e30sbj10LmdldFByb2dyYW1QYXJhbWV0ZXIoZSxRYSk7Zm9yKGxldCBzPTA7czxuOysrcyl7Y29uc3QgaT10LmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhlLHMpO3JbaS5uYW1lXT17aW5kZXg6cyx0eXBlOmkudHlwZSxzaXplOmkuc2l6ZX19cmV0dXJuIHJ9ZnVuY3Rpb24gaXUodCxlKXtjb25zdCByPXQuZ2V0UHJvZ3JhbVBhcmFtZXRlcihlLHluKSxuPVtdLHM9W107Zm9yKGxldCBvPTA7bzxyOysrbyl7cy5wdXNoKG8pLG4ucHVzaCh7fSk7Y29uc3QgYz10LmdldEFjdGl2ZVVuaWZvcm0oZSxvKTtuW29dLm5hbWU9Yy5uYW1lfVtbIlVOSUZPUk1fVFlQRSIsInR5cGUiXSxbIlVOSUZPUk1fU0laRSIsInNpemUiXSxbIlVOSUZPUk1fQkxPQ0tfSU5ERVgiLCJibG9ja05keCJdLFsiVU5JRk9STV9PRkZTRVQiLCJvZmZzZXQiXV0uZm9yRWFjaChmdW5jdGlvbihvKXtjb25zdCBjPW9bMF0sdT1vWzFdO3QuZ2V0QWN0aXZlVW5pZm9ybXMoZSxzLHRbY10pLmZvckVhY2goZnVuY3Rpb24oZixkKXtuW2RdW3VdPWZ9KX0pO2NvbnN0IGk9e30sYT10LmdldFByb2dyYW1QYXJhbWV0ZXIoZSxxYSk7Zm9yKGxldCBvPTA7bzxhOysrbyl7Y29uc3QgYz10LmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoZSxvKSx1PXtpbmRleDp0LmdldFVuaWZvcm1CbG9ja0luZGV4KGUsYyksdXNlZEJ5VmVydGV4U2hhZGVyOnQuZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyKGUsbyxLYSksdXNlZEJ5RnJhZ21lbnRTaGFkZXI6dC5nZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIoZSxvLEphKSxzaXplOnQuZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyKGUsbyxaYSksdW5pZm9ybUluZGljZXM6dC5nZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIoZSxvLGVjKX07dS51c2VkPXUudXNlZEJ5VmVydGV4U2hhZGVyfHx1LnVzZWRCeUZyYWdtZW50U2hhZGVyLGlbY109dX1yZXR1cm57YmxvY2tTcGVjczppLHVuaWZvcm1EYXRhOm59fWZ1bmN0aW9uICRuKHQsZSl7Zm9yKGNvbnN0IHIgaW4gZSl7Y29uc3Qgbj10W3JdO3R5cGVvZiBuPT0iZnVuY3Rpb24iP24oZVtyXSk6JG4odFtyXSxlW3JdKX19ZnVuY3Rpb24gVm4odCwuLi5lKXtjb25zdCByPXQudW5pZm9ybVNldHRlcnN8fHQsbj1lLmxlbmd0aDtmb3IobGV0IHM9MDtzPG47KytzKXtjb25zdCBpPWVbc107aWYoQXJyYXkuaXNBcnJheShpKSl7Y29uc3QgYT1pLmxlbmd0aDtmb3IobGV0IG89MDtvPGE7KytvKVZuKHIsaVtvXSl9ZWxzZSBmb3IoY29uc3QgYSBpbiBpKXtjb25zdCBvPXJbYV07byYmbyhpW2FdKX19fWZ1bmN0aW9uIG91KHQsZSl7Y29uc3Qgcj17fSxuPXQuZ2V0UHJvZ3JhbVBhcmFtZXRlcihlLFlhKTtmb3IobGV0IHM9MDtzPG47KytzKXtjb25zdCBpPXQuZ2V0QWN0aXZlQXR0cmliKGUscyk7aWYoR24oaSkpY29udGludWU7Y29uc3QgYT10LmdldEF0dHJpYkxvY2F0aW9uKGUsaS5uYW1lKSxvPV9baS50eXBlXSxjPW8uc2V0dGVyKHQsYSxvKTtjLmxvY2F0aW9uPWEscltpLm5hbWVdPWN9cmV0dXJuIHJ9ZnVuY3Rpb24gYXUodCxlKXtmb3IoY29uc3QgciBpbiBlKXtjb25zdCBuPXRbcl07biYmbihlW3JdKX19ZnVuY3Rpb24gY3UodCxlLHIpe3IudmVydGV4QXJyYXlPYmplY3Q/dC5iaW5kVmVydGV4QXJyYXkoci52ZXJ0ZXhBcnJheU9iamVjdCk6KGF1KGUuYXR0cmliU2V0dGVyc3x8ZSxyLmF0dHJpYnMpLHIuaW5kaWNlcyYmdC5iaW5kQnVmZmVyKCRhLHIuaW5kaWNlcykpfWZ1bmN0aW9uIFduKHQsZSl7Y29uc3Qgcj1udSh0LGUpLG49b3UodCxlKSxzPXtwcm9ncmFtOmUsdW5pZm9ybVNldHRlcnM6cixhdHRyaWJTZXR0ZXJzOm59O3JldHVybiBBZSh0KSYmKHMudW5pZm9ybUJsb2NrU3BlYz1pdSh0LGUpLHMudHJhbnNmb3JtRmVlZGJhY2tJbmZvPXN1KHQsZSkpLHN9Y29uc3QgdXU9L1xzfHt8fXw7LztmdW5jdGlvbiBmdSh0LGUscixuLHMpe2NvbnN0IGk9dXIocixuLHMpLGE9W107aWYoZT1lLm1hcChmdW5jdGlvbih1KXtpZighdXUudGVzdCh1KSl7Y29uc3QgZj1wbih1KTtpZihmKXU9Zi50ZXh0O2Vsc2V7Y29uc3QgZD1gbm8gZWxlbWVudCB3aXRoIGlkOiAke3V9YDtpLmVycm9yQ2FsbGJhY2soZCksYS5wdXNoKGQpfX1yZXR1cm4gdX0pLGEubGVuZ3RoKXJldHVybiBWYyhpLCIiKTtjb25zdCBvPWkuY2FsbGJhY2s7byYmKGkuY2FsbGJhY2s9KHUsZik9PntvKHUsdT92b2lkIDA6V24odCxmKSl9KTtjb25zdCBjPVpjKHQsZSxpKTtyZXR1cm4gYz9Xbih0LGMpOm51bGx9Y29uc3QgbHU9NCxIbj01MTIzO2Z1bmN0aW9uIGR1KHQsZSxyLG4scyxpKXtyPXI9PT12b2lkIDA/bHU6cjtjb25zdCBhPWUuaW5kaWNlcyxvPWUuZWxlbWVudFR5cGUsYz1uPT09dm9pZCAwP2UubnVtRWxlbWVudHM6bjtzPXM9PT12b2lkIDA/MDpzLG98fGE/aSE9PXZvaWQgMD90LmRyYXdFbGVtZW50c0luc3RhbmNlZChyLGMsbz09PXZvaWQgMD9IbjplLmVsZW1lbnRUeXBlLHMsaSk6dC5kcmF3RWxlbWVudHMocixjLG89PT12b2lkIDA/SG46ZS5lbGVtZW50VHlwZSxzKTppIT09dm9pZCAwP3QuZHJhd0FycmF5c0luc3RhbmNlZChyLHMsYyxpKTp0LmRyYXdBcnJheXMocixzLGMpfWNvbnN0IGpuPTM2MTYwLHB0PTM2MTYxLGh1PTM1NTMsbXU9NTEyMSxwdT02NDAyLHl1PTY0MDgsYnU9MzMxOTAsZ3U9MzYwMTIseHU9MzUwNTYsRXU9MzYwMTMsX3U9MzI4NTQsVHU9MzI4NTUsd3U9MzYxOTQsWG49MzMxODksWW49NjQwMSxRbj0zNjE2OCxmcj0zNDA0MSxscj0zNjA2NCx5dD0zNjA5Nixxbj0zNjEyOCxkcj0zMzMwNixocj0zMzA3MSxtcj05NzI5LEF1PVt7Zm9ybWF0Onl1LHR5cGU6bXUsbWluOm1yLHdyYXA6aHJ9LHtmb3JtYXQ6ZnJ9XSxDPXt9O0NbZnJdPWRyLENbWW5dPXFuLENbUW5dPXFuLENbcHVdPXl0LENbWG5dPXl0LENbYnVdPXl0LENbZ3VdPXl0LENbeHVdPWRyLENbRXVdPWRyO2Z1bmN0aW9uIHZ1KHQsZSl7cmV0dXJuIENbdF18fENbZV19Y29uc3Qgaj17fTtqW191XT0hMCxqW1R1XT0hMCxqW3d1XT0hMCxqW2ZyXT0hMCxqW1huXT0hMCxqW1luXT0hMCxqW1FuXT0hMDtmdW5jdGlvbiBTdSh0KXtyZXR1cm4galt0XX1jb25zdCBJdT0zMjtmdW5jdGlvbiBSdSh0KXtyZXR1cm4gdD49bHImJnQ8bHIrSXV9ZnVuY3Rpb24gS24odCxlLHIsbil7Y29uc3Qgcz1qbixpPXQuY3JlYXRlRnJhbWVidWZmZXIoKTt0LmJpbmRGcmFtZWJ1ZmZlcihzLGkpLHI9cnx8dC5kcmF3aW5nQnVmZmVyV2lkdGgsbj1ufHx0LmRyYXdpbmdCdWZmZXJIZWlnaHQsZT1lfHxBdTtjb25zdCBhPVtdLG89e2ZyYW1lYnVmZmVyOmksYXR0YWNobWVudHM6W10sd2lkdGg6cixoZWlnaHQ6bn07cmV0dXJuIGUuZm9yRWFjaChmdW5jdGlvbihjLHUpe2xldCBmPWMuYXR0YWNobWVudDtjb25zdCBkPWMuc2FtcGxlcyxoPWMuZm9ybWF0O2xldCBwPWMuYXR0YWNobWVudFBvaW50fHx2dShoLGMuaW50ZXJuYWxGb3JtYXQpO2lmKHB8fChwPWxyK3UpLFJ1KHApJiZhLnB1c2gocCksIWYpaWYoZCE9PXZvaWQgMHx8U3UoaCkpZj10LmNyZWF0ZVJlbmRlcmJ1ZmZlcigpLHQuYmluZFJlbmRlcmJ1ZmZlcihwdCxmKSxkPjE/dC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUocHQsZCxoLHIsbik6dC5yZW5kZXJidWZmZXJTdG9yYWdlKHB0LGgscixuKTtlbHNle2NvbnN0IGw9T2JqZWN0LmFzc2lnbih7fSxjKTtsLndpZHRoPXIsbC5oZWlnaHQ9bixsLmF1dG89PT12b2lkIDAmJihsLmF1dG89ITEsbC5taW49bC5taW58fGwubWluTWFnfHxtcixsLm1hZz1sLm1hZ3x8bC5taW5NYWd8fG1yLGwud3JhcFM9bC53cmFwU3x8bC53cmFwfHxocixsLndyYXBUPWwud3JhcFR8fGwud3JhcHx8aHIpLGY9bW4odCxsKX1pZihNaSh0LGYpKXQuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIocyxwLHB0LGYpO2Vsc2UgaWYoenQodCxmKSljLmxheWVyIT09dm9pZCAwP3QuZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIocyxwLGYsYy5sZXZlbHx8MCxjLmxheWVyKTp0LmZyYW1lYnVmZmVyVGV4dHVyZTJEKHMscCxjLnRhcmdldHx8aHUsZixjLmxldmVsfHwwKTtlbHNlIHRocm93IG5ldyBFcnJvcigidW5rbm93biBhdHRhY2htZW50IHR5cGUiKTtvLmF0dGFjaG1lbnRzLnB1c2goZil9KSx0LmRyYXdCdWZmZXJzJiZ0LmRyYXdCdWZmZXJzKGEpLG99ZnVuY3Rpb24gRnUodCxlLHIpe3I9cnx8am4sZT8odC5iaW5kRnJhbWVidWZmZXIocixlLmZyYW1lYnVmZmVyKSx0LnZpZXdwb3J0KDAsMCxlLndpZHRoLGUuaGVpZ2h0KSk6KHQuYmluZEZyYW1lYnVmZmVyKHIsbnVsbCksdC52aWV3cG9ydCgwLDAsdC5kcmF3aW5nQnVmZmVyV2lkdGgsdC5kcmF3aW5nQnVmZmVySGVpZ2h0KSl9ZnVuY3Rpb24gdih0LGUpe3JldHVybigpPT5lIGluc3RhbmNlb2YgV2ViR0xUZXh0dXJlP2U6bW4odCx7c3JjOmUsd3JhcDp0LkNMQU1QX1RPX0VER0V9KX1jb25zdCB5ZT0yO2NsYXNzIENle2NvbnN0cnVjdG9yKGUpe3RoaXMuaWQ9Il8iO2NvbnN0e2NvbnRleHQ6cix3aWR0aDpuLGhlaWdodDpzfT1lO3RoaXMuY29udGV4dD1yLHRoaXMub3B0aW9ucz1lO2NvbnN0IGk9dGhpcy5idWlsZERlZmluZXMoKTt0aGlzLnByb2dyYW1JbmZvPWZ1KHRoaXMuY29udGV4dCxbaSt0aGlzLmdldFZlcnRleFNoYWRlcigpLGkrdGhpcy5nZXRGcmFnbWVudFNoYWRlcigpXSksdGhpcy5idWZmZXJJbmZvPWlvKHRoaXMuY29udGV4dCx0aGlzLmdldEJ1ZmZlcnMoKSksdGhpcy5mYmk9S24odGhpcy5jb250ZXh0LFt7Zm9ybWF0OnRoaXMuY29udGV4dC5SR0JBLHR5cGU6dGhpcy5jb250ZXh0LlVOU0lHTkVEX0JZVEUsbWluOnRoaXMuY29udGV4dC5MSU5FQVIsd3JhcDp0aGlzLmNvbnRleHQuQ0xBTVBfVE9fRURHRX1dLG4scyksdGhpcy5vdXRwdXQ9dGhpcy5mYmkuYXR0YWNobWVudHNbMF19cmVzaXplT3V0cHV0KGUscil7dGhpcy5mYmk9S24odGhpcy5jb250ZXh0LFt7Zm9ybWF0OnRoaXMuY29udGV4dC5SR0JBLHR5cGU6dGhpcy5jb250ZXh0LlVOU0lHTkVEX0JZVEUsbWluOnRoaXMuY29udGV4dC5MSU5FQVIsd3JhcDp0aGlzLmNvbnRleHQuQ0xBTVBfVE9fRURHRX1dLGUsciksdGhpcy5vcHRpb25zLndpZHRoPWUsdGhpcy5vcHRpb25zLmhlaWdodD1yLHRoaXMub3V0cHV0PXRoaXMuZmJpLmF0dGFjaG1lbnRzWzBdfWdldERlZmluZXMoKXtyZXR1cm57fX1nZXRCdWZmZXJzKCl7cmV0dXJue3Bvc2l0aW9uOntudW1Db21wb25lbnRzOjIsZGF0YTpbLTEsLTEsLTEsMSwxLC0xLDEsMSwtMSwxLDEsLTFdfSx0ZXh0dXJlX2Nvb3JkOntudW1Db21wb25lbnRzOjIsZGF0YTpbMCwwLDAsMSwxLDAsMSwxLDAsMSwxLDBdfX19YnVpbGREZWZpbmVzKCl7bGV0IGU9IiI7Y29uc3Qgcj10aGlzLmdldERlZmluZXMoKTtmb3IobGV0IG4gaW4gcillKz1gI2RlZmluZSAke259ICR7cltuXS50b0ZpeGVkKDEpfQpgO3JldHVybiBlfXJ1bihlKXt2YXIgcyxpLGEsbyxjLHU7KHM9dGhpcy5wcm9maWxlcik9PW51bGx8fHMucHVzaENvbnRleHQoYFske3RoaXMuaWR9XSBQUk9HIDogJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9YCksKGk9dGhpcy5wcm9maWxlcik9PW51bGx8fGkucHVzaENvbnRleHQoYFske3RoaXMuaWR9XSBVTklGT1JNU2ApO2Zvcihjb25zdCBmIGluIGUpdHlwZW9mIGVbZl09PSJmdW5jdGlvbiImJigoYT10aGlzLnByb2ZpbGVyKT09bnVsbHx8YS5wdXNoQ29udGV4dChgWyR7dGhpcy5pZH1dIFVOSSA6ICR7Zn1gKSxlW2ZdPWVbZl0oKSwobz10aGlzLnByb2ZpbGVyKT09bnVsbHx8by5wb3BDb250ZXh0KGBbJHt0aGlzLmlkfV0gVU5JIDogJHtmfWApKTsoYz10aGlzLnByb2ZpbGVyKT09bnVsbHx8Yy5wb3BDb250ZXh0KGBbJHt0aGlzLmlkfV0gVU5JRk9STVNgKTtjb25zdCByPURhdGUubm93KCk7bGV0IG49MDt0aGlzLmxhc3RSdW4mJihuPShyLXRoaXMubGFzdFJ1bikvMWUzKSx0aGlzLmxhc3RSdW49cix0aGlzLmNvbnRleHQudmlld3BvcnQoMCwwLHRoaXMuY29udGV4dC5jYW52YXMud2lkdGgsdGhpcy5jb250ZXh0LmNhbnZhcy5oZWlnaHQpLHRoaXMuY29udGV4dC51c2VQcm9ncmFtKHRoaXMucHJvZ3JhbUluZm8ucHJvZ3JhbSksY3UodGhpcy5jb250ZXh0LHRoaXMucHJvZ3JhbUluZm8sdGhpcy5idWZmZXJJbmZvKSxWbih0aGlzLnByb2dyYW1JbmZvLHtkZWx0YTpuLGNhbnZhczpbdGhpcy5jb250ZXh0LmNhbnZhcy53aWR0aCx0aGlzLmNvbnRleHQuY2FudmFzLmhlaWdodF0sLi4uZX0pLEZ1KHRoaXMuY29udGV4dCx0aGlzLm9wdGlvbnMuZGlzYWJsZUZyYW1lYnVmZmVyP251bGw6dGhpcy5mYmkpLGR1KHRoaXMuY29udGV4dCx0aGlzLmJ1ZmZlckluZm8pLCh1PXRoaXMucHJvZmlsZXIpPT1udWxsfHx1LnBvcENvbnRleHQoYFske3RoaXMuaWR9XSBQUk9HIDogJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9YCl9c2V0UHJvZmlsZXIoZSl7dGhpcy5wcm9maWxlcj1lfX12YXIgUHU9YHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoKdmFyeWluZyB2ZWMyIF90ZXh0dXJlX2Nvb3JkOwoKdW5pZm9ybSBzYW1wbGVyMkQgYmFja2dyb3VuZDsKdW5pZm9ybSBzYW1wbGVyMkQgZm9yZWdyb3VuZDsKdW5pZm9ybSBzYW1wbGVyMkQgdGhyZXNob2xkOwoKdm9pZCBtYWluKCkgewogIHZlYzQgYmFja2dyb3VuZENvbG9yID0gdGV4dHVyZTJEKGJhY2tncm91bmQsIF90ZXh0dXJlX2Nvb3JkKTsKICB2ZWM0IGZvcmVncm91bmRDb2xvciA9IHRleHR1cmUyRChmb3JlZ3JvdW5kLCBfdGV4dHVyZV9jb29yZCk7CiAgdmVjNCB0cmVzaG9sZENvbG9yID0gdGV4dHVyZTJEKHRocmVzaG9sZCwgX3RleHR1cmVfY29vcmQpOwogIGdsX0ZyYWdDb2xvciA9IGZvcmVncm91bmRDb2xvciAqIHRyZXNob2xkQ29sb3IuYSArCiAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yICogKDEuIC0gdHJlc2hvbGRDb2xvci5hKTsKfQpgLGt1PWB2YXJ5aW5nIHZlYzIgX3RleHR1cmVfY29vcmQ7CgphdHRyaWJ1dGUgdmVjMiBwb3NpdGlvbjsKYXR0cmlidXRlIHZlYzIgdGV4dHVyZV9jb29yZDsKCnZvaWQgbWFpbigpIHsKICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAuLCAxLik7CiAgX3RleHR1cmVfY29vcmQgPSB0ZXh0dXJlX2Nvb3JkOwogIF90ZXh0dXJlX2Nvb3JkLnkgPSAxLiAtIHRleHR1cmVfY29vcmQueTsKfQpgO2NsYXNzIHByIGV4dGVuZHMgQ2V7Z2V0RnJhZ21lbnRTaGFkZXIoKXtyZXR1cm4gUHV9Z2V0VmVydGV4U2hhZGVyKCl7cmV0dXJuIGt1fX1jbGFzcyB5cntjb25zdHJ1Y3Rvcigpe3RoaXMuc3RlcHM9W119YWRkU3RlcChlKXt0aGlzLnN0ZXBzLnB1c2goZSl9YXN5bmMgcnVuKCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy5zdGVwcyllLnByb2dyYW0ucnVuKGUuZ2V0VW5pZm9ybXMoKSl9cmVzaXplT3V0cHV0KGUscil7dmFyIG4sczsobj10aGlzLnByb2ZpbGVyKT09bnVsbHx8bi5wdXNoQ29udGV4dChgUElQIFske3RoaXMuY29uc3RydWN0b3IubmFtZX1dYCk7Zm9yKGNvbnN0IGkgb2YgdGhpcy5zdGVwcylpLnByZXZlbnRSZXNpemV8fGkucHJvZ3JhbS5yZXNpemVPdXRwdXQoZSxyKTsocz10aGlzLnByb2ZpbGVyKT09bnVsbHx8cy5wb3BDb250ZXh0KGBQSVAgWyR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfV1gKX1zZXRQcm9maWxlcihlKXt0aGlzLnByb2ZpbGVyPWU7Zm9yKGNvbnN0IHIgb2YgdGhpcy5zdGVwcylyLnByb2dyYW0uc2V0UHJvZmlsZXIoZSl9c2V0SWQoZSl7Zm9yKGNvbnN0IHIgb2YgdGhpcy5zdGVwcylyLnByb2dyYW0uaWQ9ZX19Y2xhc3MgYnIgZXh0ZW5kcyB5cntjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5wcmVjaXNlTWFza0VuYWJsZWQ9ITF9fWNsYXNzIEpuIGV4dGVuZHMgYnJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSx0aGlzLmNvbnRleHQ9ZSx0aGlzLnByZWNpc2VNYXNrRW5hYmxlZD0hMDtjb25zdCByPXtjb250ZXh0OmUsaGVpZ2h0OmUuY2FudmFzLmhlaWdodCx3aWR0aDplLmNhbnZhcy53aWR0aH0sbj1uZXcgcHIoey4uLnIsZGlzYWJsZUZyYW1lYnVmZmVyOiEwfSk7dGhpcy5hZGRTdGVwKHtwcm9ncmFtOm4sZ2V0VW5pZm9ybXM6KCk9Pih7YmFja2dyb3VuZDp2KGUsdGhpcy5pbnB1dEJhY2tncm91bmRJbWFnZSksZm9yZWdyb3VuZDp2KGUsdGhpcy5pbnB1dEltYWdlKSx0aHJlc2hvbGQ6dihlLHRoaXMuaW5wdXRNYXNrKX0pfSl9c2V0RGF0YShlLHIpe3RoaXMuaW5wdXRJbWFnZT1lLHRoaXMuaW5wdXRNYXNrPXJ9fXZhciBDdT1gcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cgp2YXJ5aW5nIHZlYzIgX3RleHR1cmVfY29vcmQ7CnVuaWZvcm0gc2FtcGxlcjJEIHRleHR1cmU7Cgp2b2lkIG1haW4oKSB7IGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh0ZXh0dXJlLCBfdGV4dHVyZV9jb29yZCk7IH0KYCxCdT1gdmFyeWluZyB2ZWMyIF90ZXh0dXJlX2Nvb3JkOwoKYXR0cmlidXRlIHZlYzIgcG9zaXRpb247CmF0dHJpYnV0ZSB2ZWMyIHRleHR1cmVfY29vcmQ7CnVuaWZvcm0gYm9vbCBpbnZlcnRfeTsKCnZvaWQgbWFpbigpIHsKICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAuLCAxLik7CiAgX3RleHR1cmVfY29vcmQgPSB0ZXh0dXJlX2Nvb3JkOwogIGlmIChpbnZlcnRfeSkgewogICAgX3RleHR1cmVfY29vcmQueSA9IDEuIC0gdGV4dHVyZV9jb29yZC55OwogIH0KfQpgO2NsYXNzIER1IGV4dGVuZHMgQ2V7Z2V0RnJhZ21lbnRTaGFkZXIoKXtyZXR1cm4gQ3V9Z2V0VmVydGV4U2hhZGVyKCl7cmV0dXJuIEJ1fX1jbGFzcyBNdSBleHRlbmRzIHlye2NvbnN0cnVjdG9yKGUscixuKXtzdXBlcigpLHRoaXMuY29udGV4dD1lO2NvbnN0IHM9e2NvbnRleHQ6ZSxoZWlnaHQ6bix3aWR0aDpyfTt0aGlzLmFkZFN0ZXAoe3Byb2dyYW06bmV3IER1KHsuLi5zLGRpc2FibGVGcmFtZWJ1ZmZlcjohMH0pLGdldFVuaWZvcm1zOigpPT4oe3RleHR1cmU6dihlLHRoaXMuaW5wdXRJbWFnZSksaW52ZXJ0X3k6ITB9KX0pfXNldERhdGEoZSl7dGhpcy5pbnB1dEltYWdlPWV9fWFzeW5jIGZ1bmN0aW9uIFpuKHQpe3JldHVybiBuZXcgUHJvbWlzZShlPT57c2V0VGltZW91dCgoKT0+e2UoKX0sdCl9KX12YXIgVXU9YHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoKdmFyeWluZyB2ZWMyIF90ZXh0dXJlX2Nvb3JkOwoKdW5pZm9ybSB2ZWMyIGNhbnZhczsKdW5pZm9ybSBzYW1wbGVyMkQgdGV4dHVyZTsKCnZlYzQgbG9vcCgpOwoKdm9pZCBtYWluKCkgeyBnbF9GcmFnQ29sb3IgPSBsb29wKCk7IH0KYCxOdT1gdmFyeWluZyB2ZWMyIF90ZXh0dXJlX2Nvb3JkOwoKYXR0cmlidXRlIHZlYzIgcG9zaXRpb247CmF0dHJpYnV0ZSB2ZWMyIHRleHR1cmVfY29vcmQ7Cgp2b2lkIG1haW4oKSB7CiAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLCAwLiwgMS4pOwogIF90ZXh0dXJlX2Nvb3JkID0gdGV4dHVyZV9jb29yZDsKfQpgLGdyPSh0PT4odFt0LkxJTkVBUj0wXT0iTElORUFSIix0W3QuR0FVU1NJQU49MV09IkdBVVNTSUFOIix0KSkoZ3J8fHt9KTtjbGFzcyBlcyBleHRlbmRzIENle2dldERlZmluZXMoKXtyZXR1cm57UkFESVVTOnRoaXMub3B0aW9ucy5yYWRpdXM/PzF9fWdldEZyYWdtZW50U2hhZGVyKCl7cmV0dXJuIFV1K3RoaXMuY3JlYXRlTG9vcEZ1bmN0aW9uKCl9Z2V0VmVydGV4U2hhZGVyKCl7cmV0dXJuIE51fWNyZWF0ZUxvb3BGdW5jdGlvbigpe2xldCBlPXRoaXMub3B0aW9ucy5yYWRpdXM/PzE7cmV0dXJuYAoKICAgICAgICB2ZWM0IGxvb3AoKSB7IAogICAgICAgICAgICB2ZWM0IHJlc3VsdCA9IHZlYzQoMCwwLDAsMCk7CiAgICAgICAgICAgIGZsb2F0IGZhY3RvclN1bSA9IDAuOwoKICAgICAgICAgICAgdmVjMiBub3JtYWxpemVkUmFkaXVzID0gdmVjMigtJHtlfS4pIC8gY2FudmFzOwogICAgICAgICAgICB2ZWMyIG5vcm1hbGl6ZWRJbmNyZW1lbnQgPSB2ZWMyKDEuKSAvIGNhbnZhczsKICAgICAgICAgICAgdmVjMiBkaWZmID0gbm9ybWFsaXplZFJhZGl1czsKCiAgICAgICAgICAgIGZvcihpbnQgeT0tJHtlfTsgeTwke2UrMX07ICsreSkgewogICAgICAgICAgICAgICAgZm9yKGludCB4PS0ke2V9OyB4PCR7ZSsxfTsgKyt4KSB7CiAgICAgICAgICAgICAgICAgICAgZmxvYXQgZmFjdG9yID0gMS47CiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGZhY3RvciAqIHRleHR1cmUyRCh0ZXh0dXJlLCBfdGV4dHVyZV9jb29yZCArIGRpZmYpOwogICAgICAgICAgICAgICAgICAgIGZhY3RvclN1bSArPSBmYWN0b3I7CiAgICAgICAgICAgICAgICAgICAgZGlmZi54ICs9IG5vcm1hbGl6ZWRJbmNyZW1lbnQueDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRpZmYueSArPSBub3JtYWxpemVkSW5jcmVtZW50Lnk7CiAgICAgICAgICAgICAgICBkaWZmLnggPSBub3JtYWxpemVkUmFkaXVzLng7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCAvIGZhY3RvclN1bTsKICAgICAgICB9YH1nZXRGYWN0b3IoZSxyKXtzd2l0Y2godGhpcy5vcHRpb25zLnR5cGUpe2Nhc2UgMTpyZXR1cm4gdGhpcy5nZXRMaW5lYXJGYWN0b3IoZSxyKTtjYXNlIDA6ZGVmYXVsdDpyZXR1cm4gdGhpcy5nZXRMaW5lYXJGYWN0b3IoZSxyKX19Z2V0TGluZWFyRmFjdG9yKGUscil7cmV0dXJuIDF9Z2V0R2F1c3NpYW5GYWN0b3IoZSxyKXtjb25zdCBuPU1hdGguUEkqMixzPU1hdGgubWF4KHRoaXMub3B0aW9ucy5yYWRpdXM/PzEsMSksaT0xLyhuKnMqKjIpLGE9LShlKioyK3IqKjIpLG89aSphO3JldHVybiBpKk1hdGguRSoqb319dmFyIE91PWAjdmVyc2lvbiAzMDAgZXMKLy8gaHR0cHM6Ly9naXRodWIuY29tL1ZvbGNvbWl4L3ZpcnR1YWwtYmFja2dyb3VuZC9ibG9iL21haW4vc3JjL3BpcGVsaW5lcy93ZWJnbDIvam9pbnRCaWxhdGVyYWxGaWx0ZXJTdGFnZS50cwoKcHJlY2lzaW9uIGhpZ2hwIGZsb2F0Owp1bmlmb3JtIHNhbXBsZXIyRCBpbnB1dF9mcmFtZTsKdW5pZm9ybSBzYW1wbGVyMkQgc2VnbWVudGF0aW9uX21hc2s7CnVuaWZvcm0gc2FtcGxlcjJEIHRocmVzaG9sZDsKdW5pZm9ybSB2ZWMyIHRleGVsX3NpemU7CnVuaWZvcm0gZmxvYXQgc3RlcDsKdW5pZm9ybSBmbG9hdCByYWRpdXM7CnVuaWZvcm0gZmxvYXQgb2Zmc2V0Owp1bmlmb3JtIGZsb2F0IHNpZ21hX3RleGVsOwp1bmlmb3JtIGZsb2F0IHNpZ21hX2NvbG9yOwoKaW4gdmVjMiBfdGV4dHVyZV9jb29yZDsKb3V0IHZlYzQgb3V0Q29sb3I7CgpmbG9hdCBnYXVzc2lhbihmbG9hdCB4LCBmbG9hdCBzaWdtYSkgewogIGZsb2F0IGNvZWZmID0gLTAuNSAvIChzaWdtYSAqIHNpZ21hICogNC4wICsgMS4wZS02KTsKICByZXR1cm4gZXhwKCh4ICogeCkgKiBjb2VmZik7Cn0KCnZvaWQgbWFpbigpIHsKICB2ZWMyIGNlbnRlckNvb3JkID0gX3RleHR1cmVfY29vcmQ7CiAgdmVjMyBjZW50ZXJDb2xvciA9IHRleHR1cmUoaW5wdXRfZnJhbWUsIGNlbnRlckNvb3JkKS5yZ2I7CiAgZmxvYXQgbmV3VmFsID0gMC4wOwogIGZsb2F0IHNwYWNlV2VpZ2h0ID0gMC4wOwogIGZsb2F0IGNvbG9yV2VpZ2h0ID0gMC4wOwogIGZsb2F0IHRvdGFsV2VpZ2h0ID0gMC4wOwogIC8vIFN1YnNhbXBsZSBrZXJuZWwgc3BhY2UuCiAgZm9yIChmbG9hdCBpID0gLXJhZGl1cyArIG9mZnNldDsgaSA8PSByYWRpdXM7IGkgKz0gc3RlcCkgewogICAgZm9yIChmbG9hdCBqID0gLXJhZGl1cyArIG9mZnNldDsgaiA8PSByYWRpdXM7IGogKz0gc3RlcCkgewogICAgICB2ZWMyIHNoaWZ0ID0gdmVjMihqLCBpKSAqIHRleGVsX3NpemU7CiAgICAgIHZlYzIgY29vcmQgPSB2ZWMyKGNlbnRlckNvb3JkICsgc2hpZnQpOwogICAgICB2ZWMzIGZyYW1lQ29sb3IgPSB0ZXh0dXJlKGlucHV0X2ZyYW1lLCBjb29yZCkucmdiOwogICAgICBmbG9hdCB0aHJlc2hvbGQgPSB0ZXh0dXJlKHRocmVzaG9sZCwgY29vcmQpLmE7CiAgICAgIGZsb2F0IG91dFZhbCA9IHRleHR1cmUoc2VnbWVudGF0aW9uX21hc2ssIGNvb3JkKS5hOwoKICAgICAgc3BhY2VXZWlnaHQgPSBnYXVzc2lhbihkaXN0YW5jZShjZW50ZXJDb29yZCwgY29vcmQpLCBzaWdtYV90ZXhlbCk7CiAgICAgIGNvbG9yV2VpZ2h0ID0gZ2F1c3NpYW4oZGlzdGFuY2UoY2VudGVyQ29sb3IsIGZyYW1lQ29sb3IpLCBzaWdtYV9jb2xvcik7CiAgICAgIHRvdGFsV2VpZ2h0ICs9IHNwYWNlV2VpZ2h0ICogY29sb3JXZWlnaHQ7CiAgICAgIG5ld1ZhbCArPSBzcGFjZVdlaWdodCAqIGNvbG9yV2VpZ2h0ICogb3V0VmFsICogdGhyZXNob2xkOwogICAgfQogIH0KICBuZXdWYWwgLz0gdG90YWxXZWlnaHQ7CiAgb3V0Q29sb3IgPSB2ZWM0KHZlYzMoMC4pLCBuZXdWYWwpOwp9YCxMdT1gI3ZlcnNpb24gMzAwIGVzCmluIHZlYzIgcG9zaXRpb247CmluIHZlYzIgdGV4dHVyZV9jb29yZDsKb3V0IHZlYzIgX3RleHR1cmVfY29vcmQ7CnZvaWQgbWFpbigpIHsKICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAuMCwgMS4wKTsKICBfdGV4dHVyZV9jb29yZCA9IHRleHR1cmVfY29vcmQ7Cn1gO2NsYXNzIHp1IGV4dGVuZHMgQ2V7Z2V0RnJhZ21lbnRTaGFkZXIoKXtyZXR1cm4gT3V9Z2V0VmVydGV4U2hhZGVyKCl7cmV0dXJuIEx1fX1jbGFzcyBHdSBleHRlbmRzIHlye2NvbnN0cnVjdG9yKGUscixuKXtzdXBlcigpLHRoaXMuY29udGV4dD1lO2NvbnN0IHM9e2NvbnRleHQ6ZSxoZWlnaHQ6bix3aWR0aDpyfSxpPW5ldyBlcyh7Li4ucyxyYWRpdXM6MSx0eXBlOmdyLkdBVVNTSUFOfSk7dGhpcy5qb2ludEJpbGF0ZXJhbD1uZXcgenUocyksdGhpcy5hZGRTdGVwKHtwcm9ncmFtOmksZ2V0VW5pZm9ybXM6KCk9Pih7aW5wdXRzOnYoZSx0aGlzLmlucHV0TWFzayl9KX0pLHRoaXMuYWRkU3RlcCh7cHJvZ3JhbTp0aGlzLmpvaW50QmlsYXRlcmFsLGdldFVuaWZvcm1zOigpPT57dmFyIHAsbCx5LGI7Y29uc3Qgbz0oKHA9dGhpcy5pbnB1dEltYWdlKT09bnVsbD92b2lkIDA6cC53aWR0aCk/PzEsYz0oKGw9dGhpcy5pbnB1dEltYWdlKT09bnVsbD92b2lkIDA6bC5oZWlnaHQpPz8xOyh5PXRoaXMuaW5wdXRNYXNrKT09bnVsbHx8eS53aWR0aCwoYj10aGlzLmlucHV0TWFzayk9PW51bGx8fGIuaGVpZ2h0O2NvbnN0IHU9MyxmPU1hdGgubWF4KDEsTWF0aC5zcXJ0KHUpKi42NiksZD0xL28saD0xL2M7cmV0dXJue2lucHV0X2ZyYW1lOnYoZSx0aGlzLmlucHV0SW1hZ2UpLHNlZ21lbnRhdGlvbl9tYXNrOnYoZSx0aGlzLmlucHV0TWFzayksdGV4ZWxfc2l6ZTpbZCxoXSxzdGVwOmYscmFkaXVzOnUsb2Zmc2V0OmY+MT9mKi41OjAsc2lnbWFfdGV4ZWw6TWF0aC5tYXgoZCxoKSp1LHNpZ21hX2NvbG9yOnV9fX0pLHRoaXMub3V0cHV0PXRoaXMuam9pbnRCaWxhdGVyYWwub3V0cHV0fXNldERhdGEoZSxyKXt0aGlzLnByZXZpb3VzSW5wdXRJbWFnZT10aGlzLmlucHV0SW1hZ2U/dGhpcy5pbnB1dEltYWdlOmUsdGhpcy5wcmV2aW91c0lucHV0TWFzaz10aGlzLmlucHV0TWFzaz90aGlzLmlucHV0TWFzazpyLHRoaXMuaW5wdXRJbWFnZT1lLHRoaXMuaW5wdXRNYXNrPXJ9cmVzaXplT3V0cHV0KGUscil7c3VwZXIucmVzaXplT3V0cHV0KGUsciksdGhpcy5vdXRwdXQ9dGhpcy5qb2ludEJpbGF0ZXJhbC5vdXRwdXR9fWNsYXNzICR1e2NvbnN0cnVjdG9yKGUpe3RoaXMucXVlcmllcz1bXSx0aGlzLmNvbnRleHQ9ZSx0aGlzLmV4dGVuc2lvbj1lLmdldEV4dGVuc2lvbigiRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5X3dlYmdsMiIpfXN0YXJ0KCl7fXN0b3AoKXt0aGlzLmFjdGl2ZVF1ZXJ5JiZ0aGlzLmNvbnRleHQuZW5kUXVlcnkodGhpcy5leHRlbnNpb24uVElNRV9FTEFQU0VEX0VYVCl9cHVzaENvbnRleHQoZSl7dGhpcy5jcmVhdGVRdWVyeSgiUFVTSCIsZSl9cG9wQ29udGV4dChlKXt0aGlzLmNyZWF0ZVF1ZXJ5KCJQT1AiLGUpfWNyZWF0ZVF1ZXJ5KGUscil7dGhpcy5hY3RpdmVRdWVyeSYmdGhpcy5jb250ZXh0LmVuZFF1ZXJ5KHRoaXMuZXh0ZW5zaW9uLlRJTUVfRUxBUFNFRF9FWFQpLHRoaXMuYWN0aXZlUXVlcnk9dGhpcy5jb250ZXh0LmNyZWF0ZVF1ZXJ5KCksdGhpcy5jb250ZXh0LmJlZ2luUXVlcnkodGhpcy5leHRlbnNpb24uVElNRV9FTEFQU0VEX0VYVCx0aGlzLmFjdGl2ZVF1ZXJ5KSx0aGlzLnF1ZXJpZXMucHVzaCh7bmFtZTpyLGFjdGlvbjplLHF1ZXJ5OnRoaXMuYWN0aXZlUXVlcnl9KX1hc3luYyBnZXRSZXNvbHZlZFF1ZXJpZXMoKXtjb25zdCBlPShhd2FpdCBQcm9taXNlLmFsbChbLi4udGhpcy5xdWVyaWVzXS5tYXAocj0+dGhpcy5yZXNvbHZlUXVlcnkocikpKSkuZmlsdGVyKHI9PnIpO2ZvcihsZXQgcj0xO3I8ZS5sZW5ndGg7KytyKWVbcl0udGltZXN0YW1wKz1lW3ItMV0uZHVyYXRpb24rZVtyLTFdLnRpbWVzdGFtcDtyZXR1cm4gZX1hc3luYyByZXNvbHZlUXVlcnkoZSl7aWYoIWF3YWl0IHRoaXMuYXdhaXRRdWVyeUF2YWlsYWJsZShlKSl7Y29uc29sZS5sb2coIlVuYXdhaXRhYmxlIHF1ZXJ5IixlKTtyZXR1cm59aWYodGhpcy5jb250ZXh0LmdldFBhcmFtZXRlcih0aGlzLmV4dGVuc2lvbi5HUFVfRElTSk9JTlRfRVhUKSl7Y29uc29sZS5sb2coIkRpc2pvaW50ZWQgcXVlcnkiLGUpO3JldHVybn1yZXR1cm57Li4uZSxkdXJhdGlvbjp0aGlzLmNvbnRleHQuZ2V0UXVlcnlQYXJhbWV0ZXIoZS5xdWVyeSx0aGlzLmNvbnRleHQuUVVFUllfUkVTVUxUKSx0aW1lc3RhbXA6MH19YXN5bmMgYXdhaXRRdWVyeUF2YWlsYWJsZShlKXtmb3IobGV0IHI9MDtyPDEwOysrcil7aWYodGhpcy5jb250ZXh0LmdldFF1ZXJ5UGFyYW1ldGVyKGUucXVlcnksdGhpcy5jb250ZXh0LlFVRVJZX1JFU1VMVF9BVkFJTEFCTEUpKXJldHVybiBlO2F3YWl0IFpuKDIwMCl9fX1jbGFzcyBidHtjb25zdHJ1Y3Rvcigpe3RoaXMucHJldmlvdXNJbWFnZVdpZHRoPTAsdGhpcy5wcmV2aW91c0ltYWdlSGVpZ2h0PTAsdGhpcy5wcmV2aW91c01hc2tXaWR0aD15ZSx0aGlzLnByZXZpb3VzTWFza0hlaWdodD15ZSx0aGlzLnBvc3RQcm9jZXNzaW5nRW5hYmxlZD0hMDtjb25zdCBlPW5ldyBPZmZzY3JlZW5DYW52YXMoMCwwKSxyPWUuZ2V0Q29udGV4dCgid2ViZ2wyIik7aWYoIXIpdGhyb3ciRmFpbCB0byByZXRyaWV2ZSB3ZWJnbDIgY29udGV4dCI7dGhpcy5jYW52YXM9ZSx0aGlzLmNvbnRleHQ9cix0aGlzLmltcHJvdmVNYXNrPW5ldyBHdSh0aGlzLmNvbnRleHQseWUseWUpfWVuYWJsZVBvc3RQcm9jZXNzaW5nKCl7dGhpcy5wb3N0UHJvY2Vzc2luZ0VuYWJsZWQ9ITB9ZGlzYWJsZVBvc3RQcm9jZXNzaW5nKCl7dGhpcy5wb3N0UHJvY2Vzc2luZ0VuYWJsZWQ9ITF9YXN5bmMgcHJvZmlsZVdlYmdsKGUpe2NvbnN0IHI9bmV3ICR1KHRoaXMuY29udGV4dCk7cmV0dXJuIHRoaXMucHJvZmlsZXI9cixyLnN0YXJ0KCksYXdhaXQgWm4oZSksdGhpcy5wcm9maWxlcj12b2lkIDAsci5zdG9wKCksci5nZXRSZXNvbHZlZFF1ZXJpZXMoKX1hc3luYyByZW5kZXIoZSxyKXt2YXIgYSxvO2lmKCF0aGlzLnBpcGVsaW5lKXRocm93Im1pc3NpbmcgcGlwZWxpbmUiOyh0aGlzLnByZXZpb3VzSW1hZ2VIZWlnaHQhPT1lLmhlaWdodHx8dGhpcy5wcmV2aW91c0ltYWdlV2lkdGghPT1lLndpZHRoKSYmdGhpcy5yZXNpemVPdXRwdXQoZS53aWR0aCxlLmhlaWdodCksKHRoaXMucHJldmlvdXNNYXNrSGVpZ2h0IT09ci5oZWlnaHR8fHRoaXMucHJldmlvdXNNYXNrV2lkdGghPT1yLndpZHRoKSYmKHRoaXMuaW1wcm92ZU1hc2sucmVzaXplT3V0cHV0KHIud2lkdGgsci5oZWlnaHQpLHRoaXMucHJldmlvdXNNYXNrV2lkdGg9ci53aWR0aCx0aGlzLnByZXZpb3VzTWFza0hlaWdodD1yLmhlaWdodCk7Y29uc3Qgbj0icmVuZGVyZXIiOyhhPXRoaXMucHJvZmlsZXIpPT1udWxsfHxhLnB1c2hDb250ZXh0KG4pLHRoaXMuaW1wcm92ZU1hc2suc2V0UHJvZmlsZXIodGhpcy5wcm9maWxlciksdGhpcy5waXBlbGluZS5zZXRQcm9maWxlcih0aGlzLnByb2ZpbGVyKTtjb25zdCBzPWF3YWl0IGNyZWF0ZUltYWdlQml0bWFwKHIpO2xldCBpPXM7cmV0dXJuIHRoaXMucG9zdFByb2Nlc3NpbmdFbmFibGVkJiYodGhpcy5pbXByb3ZlTWFzay5zZXREYXRhKGUscyksdGhpcy5pbXByb3ZlTWFzay5ydW4oKSxpPXRoaXMuaW1wcm92ZU1hc2sub3V0cHV0KSx0aGlzLnBpcGVsaW5lLnNldERhdGEoZSxpKSxhd2FpdCB0aGlzLnBpcGVsaW5lLnJ1bigpLChvPXRoaXMucHJvZmlsZXIpPT1udWxsfHxvLnBvcENvbnRleHQobiksdGhpcy5jYW52YXN9cmVzaXplT3V0cHV0KGUscil7dmFyIG47dGhpcy5jYW52YXMud2lkdGg9ZSx0aGlzLmNhbnZhcy5oZWlnaHQ9ciwobj10aGlzLnBpcGVsaW5lKT09bnVsbHx8bi5yZXNpemVPdXRwdXQoZSxyKSx0aGlzLnByZXZpb3VzSW1hZ2VXaWR0aD1lLHRoaXMucHJldmlvdXNJbWFnZUhlaWdodD1yfWRlc3Ryb3koKXt2YXIgcjtjb25zdCBlPShyPXRoaXMuY29udGV4dCk9PW51bGw/dm9pZCAwOnIuZ2V0RXh0ZW5zaW9uKCJXRUJHTF9sb3NlX2NvbnRleHQiKTtlJiZlLmxvc2VDb250ZXh0KCl9fWNsYXNzIHRzIGV4dGVuZHMgYnR7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMucGlwZWxpbmU9bmV3IEpuKHRoaXMuY29udGV4dCk7Y29uc3QgZT1uZXcgT2Zmc2NyZWVuQ2FudmFzKDAsMCkscj1lLmdldENvbnRleHQoIndlYmdsMiIpO2lmKCFyKXRocm93IkZhaWwgdG8gcmV0cmlldmUgd2ViZ2wgY29udGV4dCI7dGhpcy5iYWNrZ3JvdW5kSW1hZ2VSZXNpemVyQ2FudmFzPWUsdGhpcy5iYWNrZ3JvdW5kSW1hZ2VSZXNpemVyQ29udGV4dD1yLHRoaXMuYmFja2dyb3VuZEltYWdlUmVzaXplcj1uZXcgTXUodGhpcy5iYWNrZ3JvdW5kSW1hZ2VSZXNpemVyQ29udGV4dCwwLDApfXNldEJhY2tncm91bmRJbWFnZShlKXt0aGlzLmJhY2tncm91bmRJbWFnZT1lLHRoaXMudXBkYXRlQmFja2dyb3VuZEltYWdlKCl9dXBkYXRlQmFja2dyb3VuZEltYWdlKCl7Y29uc3R7d2lkdGg6ZSxoZWlnaHQ6cn09dGhpcy5jYW52YXM7dGhpcy5iYWNrZ3JvdW5kSW1hZ2VSZXNpemVyLnJlc2l6ZU91dHB1dChlLHIpLHRoaXMuYmFja2dyb3VuZEltYWdlUmVzaXplci5zZXREYXRhKHRoaXMuYmFja2dyb3VuZEltYWdlKSx0aGlzLmJhY2tncm91bmRJbWFnZVJlc2l6ZXIucnVuKCksdGhpcy5waXBlbGluZS5pbnB1dEJhY2tncm91bmRJbWFnZT10aGlzLmJhY2tncm91bmRJbWFnZVJlc2l6ZXJDYW52YXN9cmVzaXplT3V0cHV0KGUscil7c3VwZXIucmVzaXplT3V0cHV0KGUsciksdGhpcy5iYWNrZ3JvdW5kSW1hZ2VSZXNpemVyQ2FudmFzLndpZHRoPWUsdGhpcy5iYWNrZ3JvdW5kSW1hZ2VSZXNpemVyQ2FudmFzLmhlaWdodD1yLHRoaXMuYmFja2dyb3VuZEltYWdlUmVzaXplci5yZXNpemVPdXRwdXQoZSxyKSx0aGlzLnVwZGF0ZUJhY2tncm91bmRJbWFnZSgpfWRlc3Ryb3koKXt2YXIgcjtjb25zdCBlPShyPXRoaXMuYmFja2dyb3VuZEltYWdlUmVzaXplckNvbnRleHQpPT1udWxsP3ZvaWQgMDpyLmdldEV4dGVuc2lvbigiV0VCR0xfbG9zZV9jb250ZXh0Iik7ZSYmZS5sb3NlQ29udGV4dCgpLHN1cGVyLmRlc3Ryb3koKX19Y2xhc3MgVnUgZXh0ZW5kcyB0c3tzZXRCYWNrZ3JvdW5kVmlkZW8oZSl7dGhpcy5mcmFtZVJlYWRlcj1lfWFzeW5jIHJlbmRlcihlLHIpe3JldHVybiBhd2FpdCB0aGlzLnJlYWROZXh0VmlkZW9GcmFtZSgpLHN1cGVyLnJlbmRlcihlLHIpfWFzeW5jIHJlYWROZXh0VmlkZW9GcmFtZSgpe3ZhciByO2NvbnN0IGU9YXdhaXQoKHI9dGhpcy5mcmFtZVJlYWRlcik9PW51bGw/dm9pZCAwOnIucmVhZCgpKTtpZihlIT1udWxsJiZlLnZhbHVlKXtjb25zdCBuPWF3YWl0IGNyZWF0ZUltYWdlQml0bWFwKGUudmFsdWUpO3RoaXMuc2V0QmFja2dyb3VuZEltYWdlKG4pLGUudmFsdWUuY2xvc2UoKX19fWNsYXNzIHJze2JsdXJCYWNrZ3JvdW5kKGUpe3JldHVybiBuZXcgVGkoZSl9Ymx1clNpbGhvdWV0dGUoZSl7cmV0dXJuIG5ldyB3aShlKX1pbWFnZUJhY2tncm91bmQoKXtyZXR1cm4gbmV3IEFpfXZpZGVvQmFja2dyb3VuZCgpe3JldHVybiBuZXcgVnV9fXZhciBXdT1gcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cgp2YXJ5aW5nIHZlYzIgX3RleHR1cmVfY29vcmQ7Cgp1bmlmb3JtIHZlYzIgY2FudmFzOwp1bmlmb3JtIHNhbXBsZXIyRCB0ZXh0dXJlOwp1bmlmb3JtIHNhbXBsZXIyRCBtYXNrOwoKdmVjNCBsb29wKCk7Cgp2b2lkIG1haW4oKSB7IGdsX0ZyYWdDb2xvciA9IGxvb3AoKTsgfQpgLEh1PWB2YXJ5aW5nIHZlYzIgX3RleHR1cmVfY29vcmQ7CgphdHRyaWJ1dGUgdmVjMiBwb3NpdGlvbjsKYXR0cmlidXRlIHZlYzIgdGV4dHVyZV9jb29yZDsKCnZvaWQgbWFpbigpIHsKICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAuLCAxLik7CiAgX3RleHR1cmVfY29vcmQgPSB0ZXh0dXJlX2Nvb3JkOwp9CmA7Y2xhc3MganUgZXh0ZW5kcyBDZXtnZXREZWZpbmVzKCl7cmV0dXJue1JBRElVUzp0aGlzLm9wdGlvbnMucmFkaXVzPz8xfX1nZXRGcmFnbWVudFNoYWRlcigpe3JldHVybiBXdSt0aGlzLmNyZWF0ZUxvb3BGdW5jdGlvbigpfWdldFZlcnRleFNoYWRlcigpe3JldHVybiBIdX1jcmVhdGVMb29wRnVuY3Rpb24oKXtsZXQgZT10aGlzLm9wdGlvbnMucmFkaXVzPz8xO3JldHVybmAKCiAgICAgICAgdmVjNCBsb29wKCkgeyAKICAgICAgICAgICAgdmVjNCByZXN1bHQgPSB2ZWM0KDAsMCwwLDApOwogICAgICAgICAgICBmbG9hdCBmYWN0b3JTdW0gPSAwLjsKCiAgICAgICAgICAgIHZlYzIgbm9ybWFsaXplZFJhZGl1cyA9IHZlYzIoLSR7ZX0uKSAvIGNhbnZhczsKICAgICAgICAgICAgdmVjMiBub3JtYWxpemVkSW5jcmVtZW50ID0gdmVjMigxLikgLyBjYW52YXM7CiAgICAgICAgICAgIHZlYzIgZGlmZiA9IG5vcm1hbGl6ZWRSYWRpdXM7CiAgICAgICAgICAgIGZsb2F0IG1heExlbmd0aCA9IGxlbmd0aChub3JtYWxpemVkUmFkaXVzKTsKCiAgICAgICAgICAgIGZvcihpbnQgeT0tJHtlfTsgeTwke2UrMX07ICsreSkgewogICAgICAgICAgICAgICAgZm9yKGludCB4PS0ke2V9OyB4PCR7ZSsxfTsgKyt4KSB7CiAgICAgICAgICAgICAgICAgICAgZmxvYXQgZmFjdG9yID0gKDEuLSB0ZXh0dXJlMkQobWFzaywgX3RleHR1cmVfY29vcmQgKyBkaWZmKS5hKSAqIChtYXhMZW5ndGggLSBsZW5ndGgoZGlmZikpIC8gbWF4TGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBmYWN0b3IgKiB0ZXh0dXJlMkQodGV4dHVyZSwgX3RleHR1cmVfY29vcmQgKyBkaWZmKTsKICAgICAgICAgICAgICAgICAgICBmYWN0b3JTdW0gKz0gZmFjdG9yOwogICAgICAgICAgICAgICAgICAgIGRpZmYueCArPSBub3JtYWxpemVkSW5jcmVtZW50Lng7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkaWZmLnkgKz0gbm9ybWFsaXplZEluY3JlbWVudC55OwogICAgICAgICAgICAgICAgZGlmZi54ID0gbm9ybWFsaXplZFJhZGl1cy54OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByZXN1bHQgLyBmYWN0b3JTdW07CiAgICAgICAgfWB9fWNvbnN0IFh1PTEwLFl1PTIsUXU9ODtjbGFzcyBxdSBleHRlbmRzIGJye2NvbnN0cnVjdG9yKGUscil7c3VwZXIoKSx0aGlzLmNvbnRleHQ9ZSx0aGlzLnJhZGl1cz1yO2NvbnN0IG49e2NvbnRleHQ6ZSxoZWlnaHQ6ZS5jYW52YXMuaGVpZ2h0LHdpZHRoOmUuY2FudmFzLndpZHRofTt0aGlzLmJsdXI9bmV3IGp1KHsuLi5uLHJhZGl1czpyLC4uLnRoaXMuZ2V0Qmx1clRleHR1cmVTaXplKGUuY2FudmFzLndpZHRoLGUuY2FudmFzLmhlaWdodCl9KTtjb25zdCBzPW5ldyBwcih7Li4ubixkaXNhYmxlRnJhbWVidWZmZXI6ITB9KTt0aGlzLmFkZFN0ZXAoe3Byb2dyYW06dGhpcy5ibHVyLHByZXZlbnRSZXNpemU6ITAsZ2V0VW5pZm9ybXM6KCk9Pih7dGV4dHVyZTp2KGUsdGhpcy5pbnB1dEltYWdlKSxtYXNrOnYoZSx0aGlzLmlucHV0TWFzayl9KX0pLHRoaXMuYWRkU3RlcCh7cHJvZ3JhbTpzLGdldFVuaWZvcm1zOigpPT4oe2JhY2tncm91bmQ6dihlLHRoaXMuYmx1ci5vdXRwdXQpLGZvcmVncm91bmQ6dihlLHRoaXMuaW5wdXRJbWFnZSksdGhyZXNob2xkOnYoZSx0aGlzLmlucHV0TWFzayl9KX0pfWdldEJsdXJUZXh0dXJlU2l6ZShlLHIpe2NvbnN0IG49dGhpcy5yYWRpdXM+WHU/UXU6WXU7cmV0dXJue3dpZHRoOk1hdGgubWF4KHllLGUvbiksaGVpZ2h0Ok1hdGgubWF4KHllLHIvbil9fXNldERhdGEoZSxyKXt0aGlzLmlucHV0SW1hZ2U9ZSx0aGlzLmlucHV0TWFzaz1yfXJlc2l6ZU91dHB1dChlLHIpe3N1cGVyLnJlc2l6ZU91dHB1dChlLHIpO2NvbnN0IG49dGhpcy5nZXRCbHVyVGV4dHVyZVNpemUoZSxyKTt0aGlzLmJsdXIucmVzaXplT3V0cHV0KG4ud2lkdGgsbi5oZWlnaHQpfX1jbGFzcyBLdSBleHRlbmRzIGJ0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy5waXBlbGluZT1uZXcgcXUodGhpcy5jb250ZXh0LGUpLHRoaXMuZGlzYWJsZVBvc3RQcm9jZXNzaW5nKCl9fWNsYXNzIEp1IGV4dGVuZHMgYnJ7Y29uc3RydWN0b3IoZSxyKXtzdXBlcigpLHRoaXMuY29udGV4dD1lO2NvbnN0IG49e2NvbnRleHQ6ZSxoZWlnaHQ6ZS5jYW52YXMuaGVpZ2h0LHdpZHRoOmUuY2FudmFzLndpZHRofSxzPW5ldyBlcyh7Li4ubixyYWRpdXM6cix0eXBlOmdyLkdBVVNTSUFOfSksaT1uZXcgcHIoey4uLm4sZGlzYWJsZUZyYW1lYnVmZmVyOiEwfSk7dGhpcy5hZGRTdGVwKHtwcm9ncmFtOnMsZ2V0VW5pZm9ybXM6KCk9Pih7dGV4dHVyZTp2KGUsdGhpcy5pbnB1dEltYWdlKX0pfSksdGhpcy5hZGRTdGVwKHtwcm9ncmFtOmksZ2V0VW5pZm9ybXM6KCk9Pih7YmFja2dyb3VuZDp2KGUsdGhpcy5pbnB1dEltYWdlKSxmb3JlZ3JvdW5kOnYoZSxzLm91dHB1dCksdGhyZXNob2xkOnYoZSx0aGlzLmlucHV0TWFzayl9KX0pfXNldERhdGEoZSxyKXt0aGlzLmlucHV0SW1hZ2U9ZSx0aGlzLmlucHV0TWFzaz1yfX1jbGFzcyBadSBleHRlbmRzIGJ0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy5waXBlbGluZT1uZXcgSnUodGhpcy5jb250ZXh0LGUpLHRoaXMuZGlzYWJsZVBvc3RQcm9jZXNzaW5nKCl9fWNsYXNzIGVmIGV4dGVuZHMgSm57Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMucHJlY2lzZU1hc2tFbmFibGVkPSEwfXNldCByZWFkZXIoZSl7dGhpcy5mcmFtZVJlYWRlcj1lfWFzeW5jIHJ1bigpe3RoaXMuZnJhbWVSZWFkZXImJihhd2FpdCB0aGlzLnJlYWROZXh0VmlkZW9GcmFtZSgpLGF3YWl0IHN1cGVyLnJ1bigpKX1hc3luYyByZWFkTmV4dFZpZGVvRnJhbWUoKXt2YXIgcjtjb25zdCBlPWF3YWl0KChyPXRoaXMuZnJhbWVSZWFkZXIpPT1udWxsP3ZvaWQgMDpyLnJlYWQoKSk7ZSE9bnVsbCYmZS52YWx1ZSYmKHRoaXMuaW5wdXRCYWNrZ3JvdW5kSW1hZ2U9YXdhaXQgY3JlYXRlSW1hZ2VCaXRtYXAoZS52YWx1ZSksZS52YWx1ZS5jbG9zZSgpKX19Y2xhc3MgdGYgZXh0ZW5kcyBidHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5waXBlbGluZT1uZXcgZWYodGhpcy5jb250ZXh0KX1zZXRCYWNrZ3JvdW5kVmlkZW8oZSl7dGhpcy5waXBlbGluZS5yZWFkZXI9ZX19Y2xhc3MgbnN7Ymx1ckJhY2tncm91bmQoZSl7cmV0dXJuIG5ldyBLdShlKX1ibHVyU2lsaG91ZXR0ZShlKXtyZXR1cm4gbmV3IFp1KGUpfWltYWdlQmFja2dyb3VuZCgpe3JldHVybiBuZXcgdHN9dmlkZW9CYWNrZ3JvdW5kKCl7cmV0dXJuIG5ldyB0Zn19Y2xhc3MgcmZ7Y29uc3RydWN0b3IoZSl7c3dpdGNoKGUpe2Nhc2UgS2UuQ0FOVkFTOnRoaXMuZmFjdG9yeT1uZXcgcnM7YnJlYWs7Y2FzZSBLZS5XRUJHTDp0aGlzLmZhY3Rvcnk9bmV3IG5zO2JyZWFrO2RlZmF1bHQ6Y29uc3Qgcj1faSgpO3RoaXMuZmFjdG9yeT1yLnN1cHBvcnRlZD9uZXcgbnM6bmV3IHJzfX1ibHVyQmFja2dyb3VuZChlKXtyZXR1cm4gdGhpcy5nZXRGYWN0b3J5KCkuYmx1ckJhY2tncm91bmQoZSl9Ymx1clNpbGhvdWV0dGUoZSl7cmV0dXJuIHRoaXMuZ2V0RmFjdG9yeSgpLmJsdXJTaWxob3VldHRlKGUpfWltYWdlQmFja2dyb3VuZCgpe3JldHVybiB0aGlzLmdldEZhY3RvcnkoKS5pbWFnZUJhY2tncm91bmQoKX12aWRlb0JhY2tncm91bmQoKXtyZXR1cm4gdGhpcy5nZXRGYWN0b3J5KCkudmlkZW9CYWNrZ3JvdW5kKCl9Z2V0RmFjdG9yeSgpe2lmKCF0aGlzLmZhY3RvcnkpdGhyb3ciRmFjdG9yeSBpcyBub3QgaW5pdGlhbGl6ZWQiO3JldHVybiB0aGlzLmZhY3Rvcnl9fWNsYXNzIG5me3NldEJhY2tncm91bmRPcHRpb25zKGUpe3ZhciBuLHM7dGhpcy5yZW5kZXJlciYmdGhpcy5yZW5kZXJlci5kZXN0cm95KCk7Y29uc3Qgcj1uZXcgcmYoKG49ZS5yZW5kZXJpbmdPcHRpb25zKT09bnVsbD92b2lkIDA6bi50eXBlKTtzd2l0Y2goZS50cmFuc2Zvcm1lclR5cGUpe2Nhc2UiQmFja2dyb3VuZEJsdXIiOnRoaXMucmVuZGVyZXI9ci5ibHVyQmFja2dyb3VuZCh0aGlzLmdldEJsdXJTaXplKGUucmFkaXVzKSk7YnJlYWs7Y2FzZSJTaWxob3VldHRlQmx1ciI6dGhpcy5yZW5kZXJlcj1yLmJsdXJTaWxob3VldHRlKHRoaXMuZ2V0Qmx1clNpemUoZS5yYWRpdXMpKTticmVhaztjYXNlIlZpZGVvQmFja2dyb3VuZCI6Y29uc3QgaT1yLnZpZGVvQmFja2dyb3VuZCgpO3RoaXMuYmFja2dyb3VuZFZpZGVvJiZpLnNldEJhY2tncm91bmRWaWRlbyh0aGlzLmJhY2tncm91bmRWaWRlbyksdGhpcy5yZW5kZXJlcj1pO2JyZWFrO2Nhc2UiVmlydHVhbEJhY2tncm91bmQiOmNvbnN0IGE9ci5pbWFnZUJhY2tncm91bmQoKTt0aGlzLmJhY2tncm91bmRJbWFnZSYmYS5zZXRCYWNrZ3JvdW5kSW1hZ2UodGhpcy5iYWNrZ3JvdW5kSW1hZ2UpLHRoaXMucmVuZGVyZXI9YTticmVhaztkZWZhdWx0OnRocm93YFVua25vd24gcmVuZGVyaW5nIHR5cGUgWyR7ZS50cmFuc2Zvcm1lclR5cGV9XWB9KChzPWUucmVuZGVyaW5nT3B0aW9ucyk9PW51bGw/dm9pZCAwOnMudHlwZSk9PT1LZS5XRUJHTCYmKGUucmVuZGVyaW5nT3B0aW9ucy5zZWxmaWVTZWdtZW50YXRpb25UeXBlPT09a3QuUFJFQ0lTRT90aGlzLnJlbmRlcmVyLmVuYWJsZVBvc3RQcm9jZXNzaW5nKCk6ZS5yZW5kZXJpbmdPcHRpb25zLnNlbGZpZVNlZ21lbnRhdGlvblR5cGU9PT1rdC5GQVNUJiZ0aGlzLnJlbmRlcmVyLmRpc2FibGVQb3N0UHJvY2Vzc2luZygpKX1zZXRWaWRlb0JHUmVhZGFibGUoZSl7dGhpcy5iYWNrZ3JvdW5kVmlkZW89ZS5nZXRSZWFkZXIoKTtjb25zdCByPXRoaXMucmVuZGVyZXI7ciE9bnVsbCYmci5zZXRCYWNrZ3JvdW5kVmlkZW8mJnIuc2V0QmFja2dyb3VuZFZpZGVvKHRoaXMuYmFja2dyb3VuZFZpZGVvKX1hc3luYyBzZXRWaXJ0dWFsQkdJbWFnZShlKXtjb25zdCByPXRoaXMucmVuZGVyZXI7ciE9bnVsbCYmci5zZXRCYWNrZ3JvdW5kSW1hZ2UmJnIuc2V0QmFja2dyb3VuZEltYWdlKGUpLHRoaXMuYmFja2dyb3VuZEltYWdlPWV9YXN5bmMgcHJvY2VzcyhlLHIpe2lmKHRoaXMucmVuZGVyZXIpcmV0dXJuIHRoaXMucmVuZGVyZXIucmVuZGVyKGUscil9YXN5bmMgcmVzaXplRm9yZWdyb3VuZChlLHIpe31nZXRCbHVyU2l6ZShlPXFlLkxvdyl7c3dpdGNoKGUpe2Nhc2UgcWUuTG93OnJldHVybiA1O2Nhc2UgcWUuSGlnaDpyZXR1cm4gMTJ9cmV0dXJuIGV9YXN5bmMgcHJvZmlsZShlKXt2YXIgcjtyZXR1cm4oKHI9dGhpcy5yZW5kZXJlcik9PW51bGw/dm9pZCAwOnIucHJvZmlsZVdlYmdsKGUpKT8/W119fWNvbnN0IHNmPS4xLG9mPS43LGFmPSJodHRwczovL2Qzb3Bxam1xenhmMDU3LmNsb3VkZnJvbnQubmV0L21sL3ZvbmFnZV9zZWxmaWVfc2VnbWVudGVyL2Zsb2F0MTYvdjEvdm9uYWdlX3NlbGZpZV9zZWdtZW50ZXIudGZsaXRlIjtjbGFzcyBjZntjb25zdHJ1Y3Rvcigpe3RoaXMuY2FudmFzPW5ldyBPZmZzY3JlZW5DYW52YXMoMCwwKSx0aGlzLmNvbnRleHQ9dGhpcy5jYW52YXMuZ2V0Q29udGV4dCgiMmQiLHt3aWxsUmVhZEZyZXF1ZW50bHk6ITB9KSx0aGlzLndpZHRoPTAsdGhpcy5oZWlnaHQ9MH1hc3luYyBjcmVhdGVJbWFnZVNlZ21lbnRlcigpe2lmKCF0aGlzLkltYWdlU2VnbWVudGVyfHwhdGhpcy53YXNtRmlsZXNldCl7Y29uc29sZS53YXJuKCJNZWRpYXBpcGUgb2JqZWN0cyBub3QgbG9hZGVkIik7cmV0dXJufXRoaXMuaW1hZ2VTZWdtZW50ZXI9YXdhaXQgdGhpcy5JbWFnZVNlZ21lbnRlci5jcmVhdGVGcm9tT3B0aW9ucyh0aGlzLndhc21GaWxlc2V0LHtiYXNlT3B0aW9uczp7bW9kZWxBc3NldFBhdGg6dGhpcy5tb2RlbEFzc2V0VXJpUGF0aCxkZWxlZ2F0ZToiR1BVIn0scnVubmluZ01vZGU6IlZJREVPIixvdXRwdXRDYXRlZ29yeU1hc2s6ITAsb3V0cHV0Q29uZmlkZW5jZU1hc2tzOiEwfSl9YXN5bmMgbG9hZE1lZGlhcGlwZUFzc2V0cyhlLHIpe3RoaXMubW9kZWxBc3NldFVyaVBhdGg9ZXx8YWY7Y29uc3Qgbj1yP2Ake3J9L3Rhc2stdmlzaW9uLmpzYDoiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AbWVkaWFwaXBlL3Rhc2tzLXZpc2lvbkAwLjEwLjIwLytlc20iLHM9cj9gJHtyfS93YXNtYDoiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AbWVkaWFwaXBlL3Rhc2tzLXZpc2lvbkAwLjEwLjIwL3dhc20iLHtGaWxlc2V0UmVzb2x2ZXI6aSxJbWFnZVNlZ21lbnRlcjphfT1hd2FpdCBpbXBvcnQobik7dGhpcy5JbWFnZVNlZ21lbnRlcj1hLHRoaXMud2FzbUZpbGVzZXQ9YXdhaXQgaS5mb3JWaXNpb25UYXNrcyhzKX1hc3luYyBpbml0KGUscil7YXdhaXQgdGhpcy5sb2FkTWVkaWFwaXBlQXNzZXRzKGUsciksZ2xvYmFsVGhpcy5kb2N1bWVudD17fSxhd2FpdCB0aGlzLmNyZWF0ZUltYWdlU2VnbWVudGVyKCl9YXN5bmMgcHJvY2VzcyhlKXt2YXIgYTtpZighdGhpcy5pbWFnZVNlZ21lbnRlcil7Y29uc29sZS53YXJuKCJJbWFnZVNlZ21lbnRlciBpbnN0YW5jZSBub3QgYXZhaWxhYmxlIik7cmV0dXJufSh0aGlzLndpZHRoIT09ZS53aWR0aHx8dGhpcy5oZWlnaHQhPT1lLmhlaWdodCkmJih0aGlzLmNhbnZhcy53aWR0aD10aGlzLndpZHRoPWUud2lkdGgsdGhpcy5jYW52YXMuaGVpZ2h0PXRoaXMuaGVpZ2h0PWUuaGVpZ2h0LHRoaXMubWFzayYmKHRoaXMubWFzaz1uZXcgSW1hZ2VEYXRhKHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpKSksdGhpcy5tYXNrfHwodGhpcy5tYXNrPW5ldyBJbWFnZURhdGEodGhpcy53aWR0aCx0aGlzLmhlaWdodCkpLHRoaXMuY29udGV4dC5kcmF3SW1hZ2UoZSwwLDAsZS53aWR0aCxlLmhlaWdodCk7Y29uc3Qgcj1EYXRlLm5vdygpO2xldCBuO3RyeXsoYT10aGlzLmltYWdlU2VnbWVudGVyKT09bnVsbHx8YS5zZWdtZW50Rm9yVmlkZW8odGhpcy5jb250ZXh0LmdldEltYWdlRGF0YSgwLDAsZS53aWR0aCxlLmhlaWdodCkscixvPT57dmFyIHU7Y29uc3QgYz0odT1vLmNvbmZpZGVuY2VNYXNrcyk9PW51bGw/dm9pZCAwOnVbMF07bj1jPT1udWxsP3ZvaWQgMDpjLmdldEFzRmxvYXQzMkFycmF5KCl9KX1jYXRjaHthd2FpdCB0aGlzLmNyZWF0ZUltYWdlU2VnbWVudGVyKCk7cmV0dXJufWlmKCFuKXJldHVybjtpZighdGhpcy5wcmV2aW91c0NvbmZpZGVuY2VNYXNrKXt0aGlzLnByZXZpb3VzQ29uZmlkZW5jZU1hc2s9bi5zbGljZSgpO3JldHVybn1jb25zdCBzPW4ubWFwKChvLGMpPT57dmFyIGY7Y29uc3QgdT0oZj10aGlzLnByZXZpb3VzQ29uZmlkZW5jZU1hc2spPT1udWxsP3ZvaWQgMDpmW2NdO3JldHVybiB1IT09dm9pZCAwP3RoaXMuYmxlbmQodSxvKTpvfSksaT1bMjU1LDAsMF07Zm9yKGxldCBvPTA7bzwocz09bnVsbD92b2lkIDA6cy5sZW5ndGgpO28rKyl7Y29uc3QgYz0xLXNbb107Yz5zZj8oYzxvZj8odGhpcy5tYXNrLmRhdGFbbyo0XT1pWzBdKmMsdGhpcy5tYXNrLmRhdGFbbyo0KzNdPTI1NSpjKToodGhpcy5tYXNrLmRhdGFbbyo0XT1pWzBdLHRoaXMubWFzay5kYXRhW28qNCszXT0yNTUpLHRoaXMubWFzay5kYXRhW28qNCsxXT1pWzFdLHRoaXMubWFzay5kYXRhW28qNCsyXT1pWzJdKTp0aGlzLm1hc2suZGF0YVtvKjRdPXRoaXMubWFzay5kYXRhW28qNCsxXT10aGlzLm1hc2suZGF0YVtvKjQrMl09dGhpcy5tYXNrLmRhdGFbbyo0KzNdPTB9cmV0dXJuIHRoaXMucHJldmlvdXNDb25maWRlbmNlTWFzaz1zLnNsaWNlKCksdGhpcy5tYXNrfWlzR3B1U3VwcG9ydGVkKCl7cmV0dXJuITB9YmxlbmQoZSxyKXtjb25zdCBzPS0uNzQ4Njk5LGk9LTU3LjgwNTEsYT0yOTEuMzA5LG89LTYyNC43MTcsYz1yLS41LHU9YypjLGY9MS1NYXRoLm1pbigxLHUqKDUuNjg4NDIrdSoocyt1KihpK3UqKGErdSpvKSkpKSk7cmV0dXJuIHIrKGUtcikqKGYqLjkpfX1jbGFzcyB1Zntjb25zdHJ1Y3Rvcigpe3RoaXMucmVwb3J0ZXI9bmV3IHhpLHRoaXMuaXNFbmFibGVkPSEwfWFzeW5jIGluaXQoZSxyKXt2YXIgbjt0aGlzLnNlbGZpZVNlZ21lbnRhdGlvbj1uZXcgY2YsYXdhaXQoKG49dGhpcy5zZWxmaWVTZWdtZW50YXRpb24pPT1udWxsP3ZvaWQgMDpuLmluaXQoci5tb2RlbEFzc2V0VXJpUGF0aCxyLm1lZGlhcGlwZUJhc2VBc3NldHNVcmkpKSx0aGlzLmJhY2tncm91bmRGaWx0ZXI9bmV3IG5mLHRoaXMucmVwb3J0KHt2YXJpYXRpb246IkNyZWF0ZSJ9KX1hc3luYyB0cmFuc2Zvcm0oZSxyKXt2YXIgbyxjO2lmKCF0aGlzLmlzRW5hYmxlZClyZXR1cm4gci5lbnF1ZXVlKGUpO2xldCBuO2NvbnN0IHM9ZS50aW1lc3RhbXA/PzAsaT1hd2FpdCBjcmVhdGVJbWFnZUJpdG1hcChlKSxhPWF3YWl0KChvPXRoaXMuc2VsZmllU2VnbWVudGF0aW9uKT09bnVsbD92b2lkIDA6by5wcm9jZXNzKGkpKTthJiYobj1hd2FpdCgoYz10aGlzLmJhY2tncm91bmRGaWx0ZXIpPT1udWxsP3ZvaWQgMDpjLnByb2Nlc3MoaSxhKSkpLG4/KGUuY2xvc2UoKSxyLmVucXVldWUobmV3IFZpZGVvRnJhbWUobix7dGltZXN0YW1wOnMsYWxwaGE6ImRpc2NhcmQifSkpKTpyLmVucXVldWUoZSl9YXN5bmMgc2V0QmFja2dyb3VuZE9wdGlvbnMoZSl7dmFyIHI7dGhpcy5iYWNrZ3JvdW5kT3B0aW9ucz1lLGF3YWl0KChyPXRoaXMuYmFja2dyb3VuZEZpbHRlcik9PW51bGw/dm9pZCAwOnIuc2V0QmFja2dyb3VuZE9wdGlvbnMoZSkpLHRoaXMucmVwb3J0KHt2YXJpYXRpb246IlVwZGF0ZSJ9KX1hc3luYyBzZXRWaWRlb0JHUmVhZGFibGUoZSl7dmFyIHI7YXdhaXQoKHI9dGhpcy5iYWNrZ3JvdW5kRmlsdGVyKT09bnVsbD92b2lkIDA6ci5zZXRWaWRlb0JHUmVhZGFibGUoZSkpfWFzeW5jIHNldFZpcnR1YWxCR0ltYWdlKGUpe3ZhciByO2F3YWl0KChyPXRoaXMuYmFja2dyb3VuZEZpbHRlcik9PW51bGw/dm9pZCAwOnIuc2V0VmlydHVhbEJHSW1hZ2UoZSkpfWFzeW5jIHByb2ZpbGUoZSl7dmFyIHI7cmV0dXJuKChyPXRoaXMuYmFja2dyb3VuZEZpbHRlcik9PW51bGw/dm9pZCAwOnIucHJvZmlsZShlKSk/P1tdfWdldFRyYW5zZm9ybWVyVHlwZSgpe3ZhciBlO3JldHVybigoZT10aGlzLmJhY2tncm91bmRPcHRpb25zKT09bnVsbD92b2lkIDA6ZS50cmFuc2Zvcm1lclR5cGUpPz8iVW5kZWZpbmVkIn1lbmFibGUoKXt0aGlzLmlzRW5hYmxlZD0hMH1kaXNhYmxlKCl7dGhpcy5pc0VuYWJsZWQ9ITF9cmVwb3J0KGUpe3ZhciByO3RoaXMucmVwb3J0ZXIuc2VuZCh7dmVyc2lvbjpFaSxhY3Rpb246Ik1sVHJhbnNmb3JtZXJzIix0cmFuc2Zvcm1lclR5cGU6KHI9dGhpcy5iYWNrZ3JvdW5kT3B0aW9ucyk9PW51bGw/dm9pZCAwOnIudHJhbnNmb3JtZXJUeXBlLGNvbmZpZzpKU09OLnN0cmluZ2lmeSh0aGlzLmJhY2tncm91bmRPcHRpb25zKSwuLi5lfSl9fWNvbnN0IHhyPWNsYXNzIHhye2NvbnN0cnVjdG9yKCl7dGhpcy5iYWNrZ3JvdW5kVHJhbnNmb3JtZXI9bmV3IHVmLHRoaXMubWVkaWFQcm9jZXNzb3I9bmV3IFFzLHRoaXMucmF0ZT0zMCx0aGlzLmV2ZW50c1F1ZXVlPVtdLHRoaXMuZnJhbWVUcmFuc2Zvcm1MYXRlbmN5TXM9W119YXN5bmMgaW5pdChlLHIpe3RoaXMuZnJhbWVUcmFuc2Zvcm1MYXRlbmN5TXM9W10sYXdhaXQgdGhpcy5iYWNrZ3JvdW5kVHJhbnNmb3JtZXIuaW5pdChlLHIpLGF3YWl0IHRoaXMubWVkaWFQcm9jZXNzb3Iuc2V0VHJhbnNmb3JtZXJzKFt0aGlzLmJhY2tncm91bmRUcmFuc2Zvcm1lcl0pLHRoaXMubWVkaWFQcm9jZXNzb3Iuc2V0VHJhY2tFeHBlY3RlZFJhdGUodGhpcy5yYXRlKSx0aGlzLm1lZGlhUHJvY2Vzc29yLm9uQW55KChuLHMpPT57dGhpcy5yZXNvbHZlT25NZWRpYVByb2Nlc3Nvcj8odGhpcy5yZXNvbHZlT25NZWRpYVByb2Nlc3Nvcih7bmFtZTpuLGRhdGE6c30pLHRoaXMucmVzb2x2ZU9uTWVkaWFQcm9jZXNzb3I9dm9pZCAwKTp0aGlzLmV2ZW50c1F1ZXVlLnB1c2goe25hbWU6bixkYXRhOnN9KX0pfWVuYWJsZSgpe3RoaXMuYmFja2dyb3VuZFRyYW5zZm9ybWVyLmVuYWJsZSgpfWRpc2FibGUoKXt0aGlzLmJhY2tncm91bmRUcmFuc2Zvcm1lci5kaXNhYmxlKCl9YXN5bmMgb25NZWRpYVByb2Nlc3NvckV2ZW50KCl7cmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKGU9Pnt0aGlzLmV2ZW50c1F1ZXVlLmxlbmd0aD4wP2UodGhpcy5ldmVudHNRdWV1ZS5zaGlmdCgpKTp0aGlzLnJlc29sdmVPbk1lZGlhUHJvY2Vzc29yPWV9KX1hc3luYyBzZXRUcmFja0V4cGVjdGVkUmF0ZShlKXt0aGlzLnJhdGU9ZSx0aGlzLm1lZGlhUHJvY2Vzc29yLnNldFRyYWNrRXhwZWN0ZWRSYXRlKGUpfWFzeW5jIHRyYW5zZm9ybShlLHIpe2xldCBuPXBlcmZvcm1hbmNlLm5vdygpO3RoaXMubWVkaWFQcm9jZXNzb3IudHJhbnNmb3JtKGUsciksdGhpcy5mcmFtZVRyYW5zZm9ybUxhdGVuY3lNcy5wdXNoKHBlcmZvcm1hbmNlLm5vdygpLW4pfWFzeW5jIHNldEJhY2tncm91bmRPcHRpb25zKGUpe3ZhciByO2F3YWl0KChyPXRoaXMuYmFja2dyb3VuZFRyYW5zZm9ybWVyKT09bnVsbD92b2lkIDA6ci5zZXRCYWNrZ3JvdW5kT3B0aW9ucyhlKSl9c2V0VmlkZW9CR1JlYWRhYmxlKGUpe3RoaXMuYmFja2dyb3VuZFRyYW5zZm9ybWVyLnNldFZpZGVvQkdSZWFkYWJsZShlKX1hc3luYyBzZXRWaXJ0dWFsQkdJbWFnZShlKXthd2FpdCB0aGlzLmJhY2tncm91bmRUcmFuc2Zvcm1lci5zZXRWaXJ0dWFsQkdJbWFnZShlKX1hc3luYyB0ZXJtaW5hdGUoKXthd2FpdCB0aGlzLm1lZGlhUHJvY2Vzc29yLmRlc3Ryb3koKTtjb25zdCByPXRoaXMuZnJhbWVUcmFuc2Zvcm1MYXRlbmN5TXMucmVkdWNlKChuLHMpPT5uK3MsMCkvdGhpcy5mcmFtZVRyYW5zZm9ybUxhdGVuY3lNcy5sZW5ndGh8fDA7Y29uc29sZS5sb2coYFRyYW5zZm9ybSBsYXRlbmN5IGF2ZXJhZ2UgaXM6ICR7cn0gbXNgKX1zZXRWb25hZ2VNZXRhZGF0YShlKXtWcyhlKX1hc3luYyBwcm9maWxlKGUpe3JldHVybiBKU09OLnN0cmluZ2lmeShhd2FpdCB0aGlzLmJhY2tncm91bmRUcmFuc2Zvcm1lci5wcm9maWxlKGUpKX19O3VzKCJQcm9jZXNzb3JXb3JrZXIiLHhyKTtsZXQgc3M9eHJ9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1wcm9jZXNzb3Itd29ya2VyLThkWk1Ia0NiLmpzLm1hcAo=",No=typeof self<"u"&&self.Blob&&new Blob([(e=>Uint8Array.from(atob(e),e=>e.charCodeAt(0)))(Go)],{type:"text/javascript;charset=utf-8"});function Xo(e){let t;try{if(t=No&&(self.URL||self.webkitURL).createObjectURL(No),!t)throw"";const n=new Worker(t,{name:null==e?void 0:e.name});return n.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(t)}),n}catch(t){return new Worker("data:text/javascript;base64,"+Go,{name:null==e?void 0:e.name})}finally{t&&(self.URL||self.webkitURL).revokeObjectURL(t)}}const ko=function(e){function t(t){var n;return(n=e.call(this)||this).rate=30,n.isEnabled=!0,n.config=t,n}(0,a.default)(t,e);var n=t.prototype;return n.setTrackExpectedRate=function(){var e=(0,c.default)(o.default.mark((function e(t){var n;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.startWorker();case 2:return e.next=4,null==(n=this.worker)?void 0:n.setTrackExpectedRate(t);case 4:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),n.setBackgroundOptions=function(){var e=(0,c.default)(o.default.mark((function e(t){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.backgroundOptions=t,e.next=3,this.updateBackgroundOptions(t);case 3:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),n.transform=function(){var e=(0,c.default)(o.default.mark((function e(t,n){var r;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.startWorker();case 2:return e.next=4,null==(r=this.worker)?void 0:r.transform(t,n);case 4:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),n.destroy=function(){var e=(0,c.default)(o.default.mark((function e(){var t;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,null==(t=this.worker)?void 0:t.terminate();case 2:this.worker=void 0;case 3:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),n.profile=function(){var e=(0,c.default)(o.default.mark((function e(t){var n,r;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,null==(n=this.worker)?void 0:n.profile(t);case 2:return r=e.sent,e.abrupt("return",JSON.parse(null!=r?r:"[]"));case 4:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),n.enable=function(){var e=(0,c.default)(o.default.mark((function e(){var t;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.isEnabled=!0,e.next=3,null==(t=this.worker)?void 0:t.enable();case 3:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),n.disable=function(){var e=(0,c.default)(o.default.mark((function e(){var t;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.isEnabled=!1,e.next=3,null==(t=this.worker)?void 0:t.disable();case 3:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),n.listenWorker=function(){var e=(0,c.default)(o.default.mark((function e(){var t,n,r,i,a;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(null==(t=this.worker)||!t.workerContext.worker){e.next=20;break}return e.next=3,null==(n=this.worker)?void 0:n.onMediaProcessorEvent();case 3:r=e.sent,i=r.name,a=r.data,e.t0=i,e.next="error"===e.t0||"warn"===e.t0?9:"pipelineInfo"===e.t0?11:18;break;case 9:return this.emit(i,a),e.abrupt("break",18);case 11:e.t1=(this.emit(i,a),a),e.next="pipeline_ended"===e.t1||"pipeline_ended_with_error"===e.t1?14:17;break;case 14:return e.next=16,this.destroy();case 16:return e.abrupt("return");case 17:return e.abrupt("break",18);case 18:e.next=0;break;case 20:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),n.startWorker=function(){var e=(0,c.default)(o.default.mark((function e(){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.t0=!this.config||this.worker,e.t0){e.next=20;break}return e.next=4,jt(Jo,Xo);case 4:if(this.worker=e.sent,e.t1=this.isEnabled,e.t1){e.next=9;break}return e.next=9,this.worker.disable();case 9:return e.next=11,this.worker.init("worker_"+t.initCount++,this.config);case 11:if(e.t2=this.backgroundOptions,!e.t2){e.next=15;break}return e.next=15,this.updateBackgroundOptions(this.backgroundOptions);case 15:return e.next=17,this.worker.setVonageMetadata(ge());case 17:return e.next=19,this.setBackgroundOptions(this.config);case 19:this.listenWorker();case 20:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),n.updateBackgroundOptions=function(){var e=(0,c.default)(o.default.mark((function e(t){var n,r,i,a;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.startWorker();case 2:a=t.transformerType,e.t0=a,e.next="VideoBackground"===e.t0?6:"VirtualBackground"===e.t0?18:30;break;case 6:if(null!=(n=this.worker)){e.next=10;break}e.t1=void 0,e.next=15;break;case 10:return e.t2=n,e.next=13,on.createVideoReadable(t.backgroundAssetUri);case 13:e.t3=e.sent,e.t1=e.t2.setVideoBGReadable.call(e.t2,e.t3);case 15:return e.next=17,e.t1;case 17:return e.abrupt("break",30);case 18:if(null!=(r=this.worker)){e.next=22;break}e.t4=void 0,e.next=27;break;case 22:return e.t5=r,e.next=25,on.createImageCanvas(t.backgroundAssetUri);case 25:e.t6=e.sent,e.t4=e.t5.setVirtualBGImage.call(e.t5,e.t6);case 27:return e.next=29,e.t4;case 29:return e.abrupt("break",30);case 30:return e.next=32,null==(i=this.worker)?void 0:i.setBackgroundOptions(t);case 32:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),t}(st);ko.initCount=0;let To=ko,Yo=function(){function e(e){this.queries=e}var t=e.prototype;return t.downloadSpeedscope=function(){var e=(0,c.default)(o.default.mark((function e(){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=this,e.next=3,this.convertToSpeedscope();case 3:e.t1=e.sent,e.t0.download.call(e.t0,e.t1);case 5:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),t.download=function(e){const t=document.createElement("a");t.href=URL.createObjectURL(new Blob([e],{type:"application/json"})),t.download=`profile-${+new Date}.speedscope.json`,document.body.appendChild(t),t.click(),document.body.removeChild(t)},t.convertToSpeedscope=function(){const e=[],t={},n=[];let r=0;for(var i,o=A(this.queries);!(i=o()).done;){const o=[];for(var a,l=A(i.value);!(a=l()).done;){const n=a.value;void 0===t[n.name]&&(t[n.name]=e.length,e.push({name:n.name})),o.push({type:n.action==go.PUSH?"O":"C",frame:t[n.name],at:n.timestamp}),r=Math.max(r,n.timestamp+n.duration)}n.push({events:o,type:"evented",name:"GPU Profile",unit:"nanoseconds",startValue:0,endValue:r})}return JSON.stringify({$schema:"https://www.speedscope.app/file-format-schema.json",shared:{frames:e},profiles:n},null,2)},e}();const wo=function(t){function n(e){var n;return(n=t.call(this)||this).worker=new To(e),n.connector=new Ie(n.worker),n.worker.onAny((e,t)=>n.emit(e,t)),n}(0,a.default)(n,t);var r=n.prototype;return r.setBackgroundOptions=function(){var e=(0,c.default)(o.default.mark((function e(t){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.worker.setBackgroundOptions(t);case 2:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),r.enable=function(){var e=(0,c.default)(o.default.mark((function e(){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.worker.enable();case 2:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),r.disable=function(){var e=(0,c.default)(o.default.mark((function e(){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.worker.disable();case 2:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),r.setTrackExpectedRate=function(e){this.worker.setTrackExpectedRate(e)},r.getConnector=function(){return this.connector},r.profile=function(){var e=(0,c.default)(o.default.mark((function e(t){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.worker.profile(t));case 1:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),n.profile=function(){var t=(0,c.default)(o.default.mark((function t(n){var r;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.all(this.instances.map(e=>e.profile(n)));case 2:return r=t.sent,t.abrupt("return",new Yo(r));case 4:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),n.create=function(){var e=(0,c.default)(o.default.mark((function e(t){var n;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=new this(t),e.abrupt("return",(this.instances.push(n),n));case 2:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),n}(st);wo.instances=[];let Do=wo;function xo(){return(xo=(0,c.default)(o.default.mark((function e(t){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Do.create(t);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})))).apply(this,arguments)}t.VonageMediaProcessor=Do}).call(this,n(2),n(29))},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e,t){void 0===t&&(t={});const n=t.hasE2eeCapability||i.default,r=t.hasOpenTokSupport||o;this.publish=-1!==e.indexOf("publish")?1:0,this.subscribe=-1!==e.indexOf("subscribe")?1:0,this.forceUnpublish=-1!==e.indexOf("forceunpublish")?1:0,this.forceDisconnect=-1!==e.indexOf("forcedisconnect")?1:0,this.forceMute=-1!==e.indexOf("forcemute")?1:0,this.supportsE2ee=n()?1:0,this.supportsWebRTC=r()?1:0,this.permittedTo=e=>Object.prototype.hasOwnProperty.call(this,e)&&1===this[e]};var i=r(n(115));const o=r(n(53)).default.once},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e,t,n,r,o,c,A){const h=this;let g;this.id=e,this.streamId=e,this.name=t,this.creationTime=Number(n),this.initials=A||"",this.connection=r,this.channel=c,this.publisher=a.default.publishers.find({streamId:this.id}),(0,i.default)(this);const F=function(e,t,n,r){let i=t;switch(i){case"active":i="audio"===e.type?"hasAudio":"hasVideo",h[i]=r;break;case"disableWarning":if(i="audio"===e.type?"audioDisableWarning":"videoDisableWarning",h[i]=r,!h["audio"===e.type?"hasAudio":"hasVideo"])return;break;case"fitMode":i="defaultFitMode",h[i]=r;break;case"source":i="audio"===e.type?"audioType":"videoType",h[i]=r;break;case"videoDimensions":h.videoDimensions=r;break;case"orientation":case"width":case"height":return}h.dispatchEvent(new d.StreamUpdatedEvent(h,i,n,r))},Q=function(){return h.publisher?h.publisher:a.default.subscribers.find(e=>e.stream&&e.stream.id===h.id&&e.session.id===o.id)},p=function(){return!h.publisher};this.getChannelsOfType=function(e){return h.channel.filter(t=>t.type===e)},this.getChannel=function(e){for(let t=0;t<h.channel.length;++t)if(h.channel[t].id===e)return h.channel[t];return null};const m=this.getChannelsOfType("audio")[0],U=this.getChannelsOfType("video")[0];this.hasAudio=null!=m&&m.active,this.hasVideo=null!=U&&U.active,this.videoType=U&&U.source,this.defaultFitMode=U&&U.fitMode,this.videoDimensions={},U&&(this.videoDimensions.width=U.width,this.videoDimensions.height=U.height,this.videoDimensions.orientation=U.orientation,U.on("update",F),this.frameRate=U.frameRate);m&&m.on("update",F);this.setChannelActiveState=function(e){let t=e.channelType,n=e.activeState,r=e.activeReason,i=e.congestionLevel,o=e.subscriberId,a=e.isSubscriber;const l={active:n};r&&(l.activeReason=r),void 0!==i&&(l.congestionLevel=i),o&&(l.subscriberId=o),b(t,l,a)},this.setVideoDimensions=function(e,t){b("video",{width:e,height:t,orientation:0})},this.setRestrictFrameRate=function(e){b("video",{restrictFrameRate:e},!0)},this.setPreferredResolution=function(e){if(!p())return void s.warn("setPreferredResolution has no affect when called by a publisher");if(o.sessionInfo.p2pEnabled)return void s.warn("Stream.setPreferredResolution will not work in a P2P Session");if(e&&void 0===e.width&&void 0===e.height)return;const t=h.getChannelsOfType("video")[0];if(t){if(e&&e.width){if(isNaN(parseInt(e.width,10)))throw new l.default.Error("stream preferred width must be an integer","Subscriber");t.preferredWidth=parseInt(e.width,10)}else t.preferredWidth=void 0;if(e&&e.height){if(isNaN(parseInt(e.height,10)))throw new l.default.Error("stream preferred height must be an integer","Subscriber");t.preferredHeight=parseInt(e.height,10)}else t.preferredHeight=void 0;o._.subscriberChannelUpdate(h,Q(),t,{preferredWidth:t.preferredWidth||0,preferredHeight:t.preferredHeight||0})}},this.getPreferredResolution=function(){const e=h.getChannelsOfType("video")[0];if(e&&(e.preferredWidth||e.preferredHeight))return{width:e.preferredWidth,height:e.preferredHeight}},this.setPreferredFrameRate=function(e){if(!p())return void s.warn("setPreferredFrameRate has no affect when called by a publisher");if(o.sessionInfo.p2pEnabled)return void s.warn("Stream.setPreferredFrameRate will not work in a P2P Session");if(e&&isNaN(parseFloat(e)))throw new l.default.Error("stream preferred frameRate must be a number","Subscriber");const t=h.getChannelsOfType("video")[0];t&&(t.preferredFrameRate=e?parseFloat(e):null,o._.subscriberChannelUpdate(h,Q(),t,{preferredFrameRate:t.preferredFrameRate||0}))},this.getPreferredFrameRate=function(){const e=h.getChannelsOfType("video")[0];return e?e.preferredFrameRate:null};const b=function(e,t,n){let r;if(void 0===n&&(n=!1),n){const e=Q();r=n=>o._.subscriberChannelUpdate(h,e,n,t)}else r=e=>o._.streamChannelUpdate(h,e,t);h.getChannelsOfType(e).forEach(r)};this.destroyed=!1,this.destroyedReason=void 0,this.destroy=function(e,t){void 0===e&&(e="clientDisconnected"),g=e,h.destroyed=!0,h.destroyedReason=g,!0!==t&&h.dispatchEvent(new d.DestroyedEvent("destroyed",h,g))},this._={},this._.updateProperty=function(e,t){if(-1===u.indexOf(e))return void s.warn(`Unknown stream property "${e}" was modified to "${t}".`);const n=h[e],r=t;switch(e){case"name":h[e]=r;break;case"archiving":var i=Q();h.publisher&&i&&i._.archivingStatus(r),h[e]=r}const o=new d.StreamUpdatedEvent(h,e,n,r);h.dispatchEvent(o)},this._.update=function(e){for(const t in e)e.hasOwnProperty(t)&&h._.updateProperty(t,e[t])},this._.forceMute=function(e){e.hasOwnProperty("channels")&&e.channels.includes("audio")&&h.publisher&&h.publisher._.forceMuteAudio()},this._.updateChannel=function(e,t){const n=h.getChannel(e);n&&n.update(t)}};var i=r(n(6)),o=r(n(1)),a=r(n(26)),l=r(n(7)),c=r(n(18));const s=(0,o.default)("Stream"),d=(0,c.default)(),u=["name","archiving"]},function(e,t,n){"use strict";t.__esModule=!0,t.default=t.UNSUBSCRIBE=t.SUBSCRIBE=t.STATUS=t.PONG=t.PING=t.MESSAGE=t.DISCONNECT=t.CONNECT=void 0;t.SUBSCRIBE=0;t.UNSUBSCRIBE=1;t.MESSAGE=2;t.CONNECT=3;t.DISCONNECT=4;t.PING=7;t.PONG=8;t.STATUS=9;var r={SUBSCRIBE:0,UNSUBSCRIBE:1,MESSAGE:2,CONNECT:3,DISCONNECT:4,PING:7,PONG:8,STATUS:9};t.default=r},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(9)),o=r(n(6)),a=r(n(184)),l=r(n(18)),c=r(n(801));const s=(0,l.default)();function d(e,t,n,r,i){let l;this.id=e,this.connectionId=e,this.creationTime=t?Number(t):null,this.data=n,this.capabilities=(0,c.default)(r),this.permissions=new a.default(i),this.quality=null,(0,o.default)(this),this.destroy=(e,t)=>{l=e||"clientDisconnected",!0!==t&&this.dispatchEvent(new s.DestroyedEvent("destroyed",this,l))},this.destroyed=()=>void 0!==l,this.destroyedReason=()=>l}d.fromHash=e=>{let t=e.id,n=e.creationTime,r=e.data,o=e.capablities,a=e.permissions;return new d(t,n,r,(0,i.default)(o||{},{supportsWebRTC:!0}),a||[])};var u=d;t.default=u},function(e,t){var n="object"==typeof(void 0!==typeof window?window:global)&&(void 0!==typeof window?window:global)&&(void 0!==typeof window?window:global).Object===Object&&(void 0!==typeof window?window:global);e.exports=n},function(e,t){var n=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return n.call(e)}catch(e){}try{return e+""}catch(e){}}return""}},function(e,t,n){var r=n(43),i=function(){try{var e=r(Object,"defineProperty");return e({},"",{}),e}catch(e){}}();e.exports=i},function(e,t,n){var r=n(45),i=n(34);e.exports=function(e,t){return e&&r(t,i(t),e)}},function(e,t,n){var r=n(392),i=n(65),o=n(14),a=n(66),l=n(67),c=n(88),s=Object.prototype.hasOwnProperty;e.exports=function(e,t){var n=o(e),d=!n&&i(e),u=!n&&!d&&a(e),A=!n&&!d&&!u&&c(e),h=n||d||u||A,g=h?r(e.length,String):[],F=g.length;for(var Q in e)!t&&!s.call(e,Q)||h&&("length"==Q||u&&("offset"==Q||"parent"==Q)||A&&("buffer"==Q||"byteLength"==Q||"byteOffset"==Q)||l(Q,F))||g.push(Q);return g}},function(e,t){e.exports=function(e,t){return function(n){return e(t(n))}}},function(e,t,n){(function(e){var r=n(16),i=t&&!t.nodeType&&t,o=i&&"object"==typeof e&&e&&!e.nodeType&&e,a=o&&o.exports===i?r.Buffer:void 0,l=a?a.allocUnsafe:void 0;e.exports=function(e,t){if(t)return e.slice();var n=e.length,r=l?l(n):new e.constructor(n);return e.copy(r),r}}).call(this,n(87)(e))},function(e,t){e.exports=function(){return[]}},function(e,t,n){var r=n(123),i=n(124),o=n(122),a=n(195),l=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)r(t,o(e)),e=i(e);return t}:a;e.exports=l},function(e,t,n){var r=n(198),i=n(122),o=n(34);e.exports=function(e){return r(e,o,i)}},function(e,t,n){var r=n(123),i=n(14);e.exports=function(e,t,n){var o=t(e);return i(e)?o:r(o,n(e))}},function(e,t,n){var r=n(198),i=n(196),o=n(55);e.exports=function(e){return r(e,o,i)}},function(e,t,n){var r=n(43)(n(16),"Set");e.exports=r},function(e,t,n){var r=n(43)(n(16),"WeakMap");e.exports=r},function(e,t,n){var r=n(16).Uint8Array;e.exports=r},function(e,t,n){var r=n(125);e.exports=function(e,t){var n=t?r(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}},function(e,t,n){var r=n(89),i=n(124),o=n(69);e.exports=function(e){return"function"!=typeof e.constructor||o(e)?{}:r(i(e))}},function(e,t,n){"use strict";(function(e){var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(4)),o=r(n(5)),a=r(n(6)),l=r(n(1)),c=r(n(58)),s=r(n(471)),d=r(n(472)),u=r(n(473)),A=r(n(95)),h=r(n(3)),g=r(n(258)),F=r(n(22)),Q=r(n(107)),p=r(n(145)),m=r(n(146)),U=r(n(565)),b=r(n(586)),Z=r(n(7)),B=r(n(272)),f=r(n(273)),R=n(589);const I=(0,F.default)().hasAudioOutputApiSupport,y=Q.default.getCurrentAudioOutputDeviceId;function V(e,t){const n=(0,f.default)();return(0,d.default)(n),n.innerHTML=e,!0===t&&(n.muted="true"),n}function C(){const e=V("");return e.setAttribute("style","display:none"),e}var W=function(t){void 0===t&&(t={});const n=t.audioContext||(0,p.default)(),r=t.canBeOrientatedMixin||U.default,d=t.document||(void 0!==typeof window?window:global).document,F=t.listenForTracksEnded||(0,b.default)(),Q=t.logging||l.default,f=t.OTHelpers||Z.default,W=t.videoElementErrorMap||(0,B.default)(),E=t.WebaudioAudioLevelSampler||m.default,v=t.global||(void 0!==typeof window?window:global);let S=1;return function(){function t(e,t){var n=this;let l=e._inject,s=void 0===l?{}:l,d=s.createVideoElement,u=void 0===d?V:d,A=s.createAudioOnlyVideoElement,F=void 0===A?C:A,p=e.muted,m=e.fallbackText,U=e.widgetType;this._domElement=void 0,this._domAudioOnlyVideoElement=void 0,this._blockedVolume=void 0,this._mediaStoppedListener=void 0,this._audioLevelSampler=void 0,this._playInterrupts=0,this._isVideoLoadedMetaData=!1,this._audioOnlyVideoElementWatcher=void 0,this._blinkStartTime=null,this.logging=Q("NativeVideoElementWrapper:"+S),S+=1,(0,a.default)(this),this._defaultAudioVolume=t,this._widgetType=U,this._emitVideoPlayAttempt=()=>{this._blinkStartTime=(new Date).getTime(),this.trigger("amrLogEvent","AMRTransitionVideo","Attempt")},this._emitVideoPlaySuccess=()=>{const e=(new Date).getTime()-this._blinkStartTime;this.trigger("amrLogEvent","AMRTransitionVideo","Success",{attemptDuration:e}),this._blinkStartTime=null},this._emitVideoPlayFailure=()=>{this.trigger("amrLogEvent","AMRTransitionVideo","Failure")};let b=!1;this._domElement=u(m,p),this.trigger("videoElementCreated",this._domElement),this._domElementEvents=(0,c.default)(this._domElement),this._domElementEvents.on("loadstart",()=>this._onDomElementLoadStart()),this._domElementEvents.on("timeupdate",(function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return n.trigger("timeupdate",...t)})),this._domElementEvents.on("loadedmetadata",(0,o.default)(i.default.mark((function e(){var t,r,o,a,l=arguments;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(n._isVideoLoadedMetaData=!0,t=l.length,r=new Array(t),o=0;o<t;o++)r[o]=l[o];if(n.trigger("loadedmetadata",...r),!n._domAudioOnlyVideoElement){e.next=10;break}if(a=n._domAudioOnlyVideoElement.srcObject,n._removeAudioOnlyVideoElement(),!a){e.next=10;break}return e.next=9,(0,g.default)();case 9:n.play();case 10:case"end":return e.stop()}}),e)}))));this._domElementEvents.on("error",e=>{this.trigger("error",W(e.target.error))},!1),this._domElementEvents.on("pause",()=>{b||(this.logging.warn("Video element paused, auto-resuming. If you intended to do this, use publishVideo(false) or subscribeToVideo(false) instead."),b=!0),this.play()}),this.on("destroyed",()=>{this._domElementEvents.removeAll(),this._domAudioOnlyVideoElementEvents&&this._domAudioOnlyVideoElementEvents.removeAll()}),r(this,()=>this._domElement),h.default.isSafari&&"subscriber"===this._widgetType&&(this._domAudioOnlyVideoElement=F(),this._bindAudioOnlyVideoElementEvents()),null!=h.default&&h.default.isDev&&(0,R.addMediaElementListeners)(this._domAudioOnlyVideoElement||this._domElement,e=>{this.trigger("mediaElementEvent",e)})}var l=t.prototype;return l._onDomElementLoadStart=function(){var e=(0,o.default)(i.default.mark((function e(){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("subscriber"!==this._widgetType||!I()){e.next=3;break}return e.next=3,this._setActiveAudioOutputDevice();case 3:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),l._setActiveAudioOutputDevice=function(){var e=(0,o.default)(i.default.mark((function e(){var t;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(""!==(t=y())&&"default"!==t){e.next=3;break}return e.abrupt("return");case 3:return e.next=5,this.setSinkId(t);case 5:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),l._rebindSrcObject=function(){this._domElement&&(this._domElement.srcObject=this._domElement.srcObject)},l._pauseAndPlay=function(){this._domElement&&(this._domElement.pause(),this._domElement.play())},l._startAudioOnlyVideoElementWatcher=function(){var e=(0,o.default)(i.default.mark((function e(){var t;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return 1e3,t=h.default.isiOS,this._audioOnlyVideoElementWatcher&&clearInterval(this._audioOnlyVideoElementWatcher),this._audioOnlyVideoElementWatcher=setInterval(()=>{this._domAudioOnlyVideoElement&&this._domAudioOnlyVideoElement.paused&&(this._domAudioOnlyVideoElement.srcObject=this._domAudioOnlyVideoElement.srcObject,t&&this._domAudioOnlyVideoElement.play())},100),e.next=6,(0,A.default)(1e3);case 6:clearInterval(this._audioOnlyVideoElementWatcher),this._audioOnlyVideoElementWatcher=null;case 8:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),l._removeAudioOnlyVideoElement=function(){var e=(0,o.default)(i.default.mark((function e(){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this._domAudioOnlyVideoElement.srcObject=null,this._domAudioOnlyVideoElement.parentNode.removeChild(this._domAudioOnlyVideoElement),this._domAudioOnlyVideoElementEvents&&this._domAudioOnlyVideoElementEvents.removeAll(),this._domAudioOnlyVideoElement=null;case 4:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),l.bindAudioTrackOnly=function(){var e=(0,o.default)(i.default.mark((function e(){var t,n,r,o,a,l,c;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=this._stream.getVideoTracks(),n=this._stream.getAudioTracks(),r=t[0],o=void 0===r?{}:r,a=n[0],l=void 0===a?{}:a,e.next=6,(0,g.default)();case 6:c=!o.enabled&&l.enabled,!this._isVideoLoadedMetaData&&c&&this._domAudioOnlyVideoElement&&(this._domAudioOnlyVideoElement.srcObject=new v.MediaStream(n),this._startAudioOnlyVideoElementWatcher());case 8:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),l._bindAudioOnlyVideoElementEvents=function(){var e=this;this._domAudioOnlyVideoElementEvents=(0,c.default)(this._domAudioOnlyVideoElement),this._domAudioOnlyVideoElementEvents.on("pause",()=>this.play()),this._domAudioOnlyVideoElementEvents.on("timeupdate",(function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return e.trigger("timeupdate",...n)})),this._domAudioOnlyVideoElementEvents.on("loadedmetadata",(function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return e.trigger("loadedmetadata",...n)}))},l.whenTimeIncrements=function(e,t){this.once("timeupdate",()=>{e.call(t,this)})},l.domElement=function(){return this._domElement},l.videoWidth=function(){return this._domElement?Number(this._domElement["video"+(this.isRotated()?"Height":"Width")]):0},l.videoHeight=function(){return this._domElement?Number(this._domElement["video"+(this.isRotated()?"Width":"Height")]):0},l.aspectRatio=function(){return this.videoWidth()/this.videoHeight()},l.imgData=function(){const e=f.createElement("canvas",{width:this.videoWidth(),height:this.videoHeight(),style:{display:"none"}});d.body.appendChild(e);let t=null;try{e.getContext("2d").drawImage(this._domElement,0,0,e.width,e.height),t=e.toDataURL("image/png")}catch(e){}return f.removeElement(e),null===t||"data:,"===t?(this.logging.warn("Cannot get image data yet"),null):t.replace("data:image/png;base64,","").trim()},l.appendTo=function(e){return e.appendChild(this._domElement),this._domAudioOnlyVideoElement&&e.appendChild(this._domAudioOnlyVideoElement),this},l.isAudioBlocked=function(){return void 0!==this._blockedVolume},l.unblockAudio=function(){var e=(0,o.default)(i.default.mark((function e(){var t;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.isAudioBlocked()){e.next=3;break}return this.logging.warn("Unexpected call to unblockAudio() without blocked audio"),e.abrupt("return");case 3:return t=this._blockedVolume,this._blockedVolume=void 0,this.setAudioVolume(t),e.prev=6,e.next=9,this.play();case 9:e.next=16;break;case 11:throw e.prev=11,e.t0=e.catch(6),this._blockedVolume=t,this._domElement.muted=!0,e.t0;case 16:this.trigger("audioUnblocked");case 17:case"end":return e.stop()}}),e,this,[[6,11]])})));return function(){return e.apply(this,arguments)}}(),l.rebind=function(){var e=(0,o.default)(i.default.mark((function e(){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._domElement){e.next=2;break}throw new Error("Can't rebind because _domElement no longer exists");case 2:this._playInterrupts++,this._domElement.srcObject=this._domElement.srcObject,this._hasAudioOnlyVideoElement()&&(this._domAudioOnlyVideoElement.srcObject=this._domAudioOnlyVideoElement.srcObject);case 5:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),l._createAudioLevelSampler=function(){if(this._removeAudioLevelSampler(),this._stream.getAudioTracks().length>0){try{this._audioContext=n()}catch(e){this.logging.warn("Failed to get AudioContext(), audio level visualisation will not work",e)}this._audioContext&&(this._audioLevelSampler=new E(this._audioContext),this._audioLevelSampler.webRTCStream(this._stream))}},l._removeAudioLevelSampler=function(){this._audioContext&&(delete this._audioContext,delete this._audioLevelSampler)},l._toggleVideoTracks=function(){var e=(0,o.default)(i.default.mark((function e(){var t,n;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this._domElement.srcObject.getTracks().filter(e=>e.enabled),!(t.length>1)){e.next=8;break}return(n=t.filter(e=>"video"===e.kind)).forEach(e=>{e.enabled=!1}),e.next=7,(0,g.default)();case 7:n.forEach(e=>{e.enabled=!0});case 8:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),l._hasAudioOnlyVideoElement=function(){return this._domAudioOnlyVideoElement&&this._domAudioOnlyVideoElement.srcObject},l.play=function(){var e=(0,o.default)(i.default.mark((function e(){var t,n,r,o,a,l,c,s,d,A,F;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this._playInterrupts,n=this._hasAudioOnlyVideoElement()?this._domAudioOnlyVideoElement:this._domElement,!h.default.isSafari){e.next=5;break}return e.next=5,(0,g.default)();case 5:if(!h.default.isiOS||!h.default.isSafari){e.next=15;break}if("publisher"!==this._widgetType){e.next=14;break}if(r=h.default.iOSVersion>=14&&h.default.iOSVersion<=14.2,o=this._stream.getVideoTracks(),a=o[0],l=void 0===a?{}:a,c=this._stream.getAudioTracks(),s=c[0],d=void 0===s?{}:s,!r||(0,u.default)(n)||!l.enabled){e.next=12;break}return e.abrupt("return");case 12:if(!d.muted){e.next=14;break}return e.abrupt("return");case 14:this._toggleVideoTracks();case 15:return e.prev=15,this._emitVideoPlayAttempt(),e.next=19,n.play();case 19:return this._emitVideoPlaySuccess(),e.abrupt("return");case 23:if(e.prev=23,e.t0=e.catch(15),this._emitVideoPlayFailure(),A=e.t0||{},F=A.name,"AbortError"===F&&this._playInterrupts++,!(this._playInterrupts>t)){e.next=33;break}return e.next=32,this.play();case 32:return e.abrupt("return");case 33:throw e.t0;case 34:case"end":return e.stop()}}),e,this,[[15,23]])})));return function(){return e.apply(this,arguments)}}(),l._bindToStream=function(e){this._stream=e,this._domElement.srcObject=e,this._domAudioOnlyVideoElement&&this.bindAudioTrackOnly()},l.bindToStream=function(){var e=(0,o.default)(i.default.mark((function e(t){var n,r,a,l=this;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._domElement){e.next=2;break}throw new Error("Can't bind because _domElement no longer exists");case 2:return this._bindToStream(t),(0,o.default)(i.default.mark((function e(){var n;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,l.play();case 3:e.next=26;break;case 5:if(e.prev=5,e.t0=e.catch(0),n=!!t.getAudioTracks().length,!l._hasAudioOnlyVideoElement()||"NotAllowedError"!==e.t0.name){e.next=15;break}return l._domAudioOnlyVideoElement.muted=!0,e.next=12,l.play();case 12:l._domAudioOnlyVideoElement.muted=!1,e.next=26;break;case 15:if(!n){e.next=23;break}return l._blockedVolume=l.getAudioVolume(),l._domElement.muted=!0,e.next=20,l.play();case 20:l.trigger("audioBlocked"),e.next=26;break;case 23:return l._domElement.muted=!0,e.next=26,l.play();case 26:case"end":return e.stop()}}),e,null,[[0,5]])})))().catch(e=>{this.logging.debug(".play() failed: ",e)}),n={width:this._domElement.videoWidth,height:this._domElement.videoHeight},this.trigger("videoDimensionsChanged",Object.assign({},n),Object.assign({},n)),this._domElementEvents.on("resize",()=>{const e=this._domElement,t=e.videoWidth,r=e.videoHeight,i=t!==n.width,o=r!==n.height;(i||o)&&(this.trigger("videoDimensionsChanged",Object.assign({},n),{width:t,height:r}),n.width=t,n.height=r)}),r=()=>{try{this._mediaStoppedListener.stop()}catch(e){return}this._domElement&&(this._domElement.onended=null),this.trigger("mediaStopped")},a=e=>{this.trigger("mediaStopped",e)},this._domElement.onended=()=>r(),this._mediaStoppedListener=F(t,r,a),this._createAudioLevelSampler(),e.abrupt("return",void 0);case 13:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),l.unbindStream=function(){return this._domElement&&(this._domElement.srcObject=null),this._domAudioOnlyVideoElement&&(this._domAudioOnlyVideoElement.srcObject=null),this._removeAudioLevelSampler(),this},l.setAudioVolume=function(e){if(this.isAudioBlocked())return void(this._blockedVolume=e);const t=parseFloat(e)/100,n=[this.domElement()];this._domAudioOnlyVideoElement&&n.push(this._domAudioOnlyVideoElement),n.forEach(e=>{e&&(e.volume=t,e.muted=0===t)})},l.getAudioVolume=function(){if(this.isAudioBlocked())return this._blockedVolume;const e=this.domElement();return e?e.muted?0:100*e.volume:this._defaultAudioVolume},l.audioChannelType=function(e){const t=this.domElement();return void 0!==e&&(t.mozAudioChannelType=e),"mozAudioChannelType"in this._domElement?t.mozAudioChannelType:"unknown"},l.getAudioInputLevel=function(){return this._audioLevelSampler.sample()},l.refreshTracks=function(){this._mediaStoppedListener&&this._mediaStoppedListener.refresh(),this._createAudioLevelSampler()},l.destroy=function(){this._mediaStoppedListener&&this._mediaStoppedListener.stop(),this.logging.debug("removing domElementEvents"),this._domElementEvents.removeAll(),this._domAudioOnlyVideoElementEvents&&this._domAudioOnlyVideoElementEvents.removeAll(),null!=h.default&&h.default.isDev&&(0,R.removeMediaElementListeners)(this._domAudioOnlyVideoElement||this._domElement),this._audioOnlyVideoElementWatcher&&clearInterval(this._audioOnlyVideoElementWatcher),this.unbindStream(),this._domElement&&(f.removeElement(this._domElement),this._domElement=null),this._domAudioOnlyVideoElement&&(f.removeElement(this._domAudioOnlyVideoElement),this._domAudioOnlyVideoElement=null),this.trigger("destroyed"),(0,s.default)("NativeVideoElementWrapper",this)},l.setSinkId=function(t){const n=[this._domElement,this._domAudioOnlyVideoElement].map(e=>{if(e)return e.setSinkId(t)});return e.all(n)},t}()};t.default=W}).call(this,n(2))},function(e,t,n){var r=n(90),i=n(128);e.exports=function(e){return r((function(t,n){var r=-1,o=n.length,a=o>1?n[o-1]:void 0,l=o>2?n[2]:void 0;for(a=e.length>3&&"function"==typeof a?(o--,a):void 0,l&&i(n[0],n[1],l)&&(a=o<3?void 0:a,o=1),t=Object(t);++r<o;){var c=n[r];c&&e(t,c,r,a)}return t}))}},function(e,t,n){var r=n(126),i=Math.max;e.exports=function(e,t,n){return t=i(void 0===t?e.length-1:t,0),function(){for(var o=arguments,a=-1,l=i(o.length-t,0),c=Array(l);++a<l;)c[a]=o[t+a];a=-1;for(var s=Array(t+1);++a<t;)s[a]=o[a];return s[t]=n(c),r(e,this,s)}}},function(e,t){var n=Date.now;e.exports=function(e){var t=0,r=0;return function(){var i=n(),o=16-(i-r);if(r=i,o>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}},function(e,t,n){"use strict";e.exports=n(422)()?WeakMap:n(423)},function(e,t,n){"use strict";var r=Object.create,i=Object.getPrototypeOf,o={};e.exports=function(){var e=Object.setPrototypeOf,t=arguments[0]||r;return"function"==typeof e&&i(e(t(null),o))===o}},function(e,t,n){"use strict";var r,i=n(212),o=n(35),a=Object.prototype.isPrototypeOf,l=Object.defineProperty,c={configurable:!0,enumerable:!1,writable:!0,value:void 0};r=function(e,t){if(o(e),null===t||i(t))return e;throw new TypeError("Prototype must be null or an object")},e.exports=function(e){var t,n;return e?(2===e.level?e.set?(n=e.set,t=function(e,t){return n.call(r(e,t),t),e}):t=function(e,t){return r(e,t).__proto__=t,e}:t=function e(t,n){var i;return r(t,n),(i=a.call(e.nullPolyfill,t))&&delete e.nullPolyfill.__proto__,null===n&&(n=e.nullPolyfill),t.__proto__=n,i&&l(e.nullPolyfill,"__proto__",c),t},Object.defineProperty(t,"level",{configurable:!1,enumerable:!1,writable:!1,value:e.level})):null}(function(){var e,t=Object.create(null),n={},r=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__");if(r){try{(e=r.set).call(t,n)}catch(e){}if(Object.getPrototypeOf(t)===n)return{set:e,level:2}}return t.__proto__=n,Object.getPrototypeOf(t)===n?{level:2}:((t={}).__proto__=n,Object.getPrototypeOf(t)===n&&{level:1})}()),n(425)},function(e,t,n){"use strict";var r=n(47),i={function:!0,object:!0};e.exports=function(e){return r(e)&&i[typeof e]||!1}},function(e,t,n){"use strict";var r=n(428),i=/^\s*class[\s{/}]/,o=Function.prototype.toString;e.exports=function(e){return!!r(e)&&!i.test(o.call(e))}},function(e,t,n){"use strict";var r=n(47),i=Array.prototype.forEach,o=Object.create,a=function(e,t){var n;for(n in e)t[n]=e[n]};e.exports=function(e){var t=o(null);return i.call(arguments,(function(e){r(e)&&a(Object(e),t)})),t}},function(e,t,n){"use strict";e.exports=n(435)()?String.prototype.contains:n(436)},function(e,t,n){"use strict";var r=n(92),i=n(93),o=n(437),a=n(466),l=n(467),c=n(48).iterator;e.exports=function(e){return"function"==typeof l(e)[c]?e[c]():r(e)?new o(e):i(e)?new a(e):new o(e)}},function(e,t,n){"use strict";var r=n(442);e.exports=function(e){if(!r(e))throw new TypeError(e+" is not a symbol");return e}},function(e,t,n){"use strict";var r,i=n(446),o=n(133),a=n(70),l=n(35),c=n(36),s=n(447),d=n(48),u=Object.defineProperty,A=Object.defineProperties;e.exports=r=function(e,t){if(!(this instanceof r))throw new TypeError("Constructor requires 'new'");A(this,{__list__:c("w",l(e)),__context__:c("w",t),__nextIndex__:c("w",0)}),t&&(a(t.on),t.on("_add",this._onAdd),t.on("_delete",this._onDelete),t.on("_clear",this._onClear))},delete r.prototype.constructor,A(r.prototype,o({_next:c((function(){var e;if(this.__list__)return this.__redo__&&void 0!==(e=this.__redo__.shift())?e:this.__nextIndex__<this.__list__.length?this.__nextIndex__++:void this._unBind()})),next:c((function(){return this._createResult(this._next())})),_createResult:c((function(e){return void 0===e?{done:!0,value:void 0}:{done:!1,value:this._resolve(e)}})),_resolve:c((function(e){return this.__list__[e]})),_unBind:c((function(){this.__list__=null,delete this.__redo__,this.__context__&&(this.__context__.off("_add",this._onAdd),this.__context__.off("_delete",this._onDelete),this.__context__.off("_clear",this._onClear),this.__context__=null)})),toString:c((function(){return"[object "+(this[d.toStringTag]||"Object")+"]"}))},s({_onAdd:c((function(e){e>=this.__nextIndex__||(++this.__nextIndex__,this.__redo__?(this.__redo__.forEach((function(t,n){t>=e&&(this.__redo__[n]=++t)}),this),this.__redo__.push(e)):u(this,"__redo__",c("c",[e])))})),_onDelete:c((function(e){var t;e>=this.__nextIndex__||(--this.__nextIndex__,this.__redo__&&(-1!==(t=this.__redo__.indexOf(e))&&this.__redo__.splice(t,1),this.__redo__.forEach((function(t,n){t>e&&(this.__redo__[n]=--t)}),this)))})),_onClear:c((function(){this.__redo__&&i.call(this.__redo__),this.__nextIndex__=0}))}))),u(r.prototype,d.iterator,c((function(){return this})))},function(e,t,n){"use strict";var r=n(57),i=n(132),o=n(449),a=n(450),l=function(e,t){return e.replace("%v",a(t))};e.exports=function(e,t,n){if(!i(n))throw new TypeError(l(t,e));if(!r(e)){if("default"in n)return n.default;if(n.isOptional)return null}var a=o(n.errorMessage);throw r(a)||(a=t),new TypeError(l(a,e))}},function(e,t,n){e.exports=n(477)},function(e,t,n){"use strict";e.exports=function(e,t){return function(){return e.apply(t,arguments)}}},function(e,t,n){"use strict";var r=n(13),i=n(223);function o(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}e.exports=function(e,t,n){if(!t)return e;var a=e.indexOf("#");-1!==a&&(e=e.slice(0,a));var l,c=n&&n.encode||o,s=n&&n.serialize;return(l=s?s(t,n):r.isURLSearchParams(t)?t.toString():new i(t,n).toString(c))&&(e+=(-1===e.indexOf("?")?"?":"&")+l),e}},function(e,t,n){"use strict";var r=n(96);function i(e){var t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'\(\)~]|%20|%00/g,(function(e){return t[e]}))}function o(e,t){this._pairs=[],e&&r(e,this,t)}var a=o.prototype;a.append=function(e,t){this._pairs.push([e,t])},a.toString=function(e){var t=e?function(t){return e.call(this,t,i)}:i;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")},e.exports=o},function(e,t,n){"use strict";
28
28
  /*!
29
29
  * The buffer module from node.js, for the browser.
30
30
  *
@@ -32,7 +32,7 @@ const Dn={};{const e=Dn;e[5120]=Int8Array,e[5121]=Uint8Array,e[5122]=Int16Array,
32
32
  * @license MIT
33
33
  */var r=n(479),i=n(480),o=n(481);function a(){return c.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function l(e,t){if(a()<t)throw new RangeError("Invalid typed array length");return c.TYPED_ARRAY_SUPPORT?(e=new Uint8Array(t)).__proto__=c.prototype:(null===e&&(e=new c(t)),e.length=t),e}function c(e,t,n){if(!(c.TYPED_ARRAY_SUPPORT||this instanceof c))return new c(e,t,n);if("number"==typeof e){if("string"==typeof t)throw new Error("If encoding is specified then the first argument must be a string");return u(this,e)}return s(this,e,t,n)}function s(e,t,n,r){if("number"==typeof t)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer?function(e,t,n,r){if(t.byteLength,n<0||t.byteLength<n)throw new RangeError("'offset' is out of bounds");if(t.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");t=void 0===n&&void 0===r?new Uint8Array(t):void 0===r?new Uint8Array(t,n):new Uint8Array(t,n,r);c.TYPED_ARRAY_SUPPORT?(e=t).__proto__=c.prototype:e=A(e,t);return e}(e,t,n,r):"string"==typeof t?function(e,t,n){"string"==typeof n&&""!==n||(n="utf8");if(!c.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|g(t,n),i=(e=l(e,r)).write(t,n);i!==r&&(e=e.slice(0,i));return e}(e,t,n):function(e,t){if(c.isBuffer(t)){var n=0|h(t.length);return 0===(e=l(e,n)).length||t.copy(e,0,0,n),e}if(t){if("undefined"!=typeof ArrayBuffer&&t.buffer instanceof ArrayBuffer||"length"in t)return"number"!=typeof t.length||(r=t.length)!=r?l(e,0):A(e,t);if("Buffer"===t.type&&o(t.data))return A(e,t.data)}var r;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(e,t)}function d(e){if("number"!=typeof e)throw new TypeError('"size" argument must be a number');if(e<0)throw new RangeError('"size" argument must not be negative')}function u(e,t){if(d(t),e=l(e,t<0?0:0|h(t)),!c.TYPED_ARRAY_SUPPORT)for(var n=0;n<t;++n)e[n]=0;return e}function A(e,t){var n=t.length<0?0:0|h(t.length);e=l(e,n);for(var r=0;r<n;r+=1)e[r]=255&t[r];return e}function h(e){if(e>=a())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a().toString(16)+" bytes");return 0|e}function g(e,t){if(c.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return w(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return D(e).length;default:if(r)return w(e).length;t=(""+t).toLowerCase(),r=!0}}function F(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return W(this,t,n);case"utf8":case"utf-8":return y(this,t,n);case"ascii":return V(this,t,n);case"latin1":case"binary":return C(this,t,n);case"base64":return I(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return E(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function Q(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function p(e,t,n,r,i){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=i?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(i)return-1;n=e.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof t&&(t=c.from(t,r)),c.isBuffer(t))return 0===t.length?-1:m(e,t,n,r,i);if("number"==typeof t)return t&=255,c.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):m(e,[t],n,r,i);throw new TypeError("val must be string, number or Buffer")}function m(e,t,n,r,i){var o,a=1,l=e.length,c=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;a=2,l/=2,c/=2,n/=2}function s(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(i){var d=-1;for(o=n;o<l;o++)if(s(e,o)===s(t,-1===d?0:o-d)){if(-1===d&&(d=o),o-d+1===c)return d*a}else-1!==d&&(o-=o-d),d=-1}else for(n+c>l&&(n=l-c),o=n;o>=0;o--){for(var u=!0,A=0;A<c;A++)if(s(e,o+A)!==s(t,A)){u=!1;break}if(u)return o}return-1}function U(e,t,n,r){n=Number(n)||0;var i=e.length-n;r?(r=Number(r))>i&&(r=i):r=i;var o=t.length;if(o%2!=0)throw new TypeError("Invalid hex string");r>o/2&&(r=o/2);for(var a=0;a<r;++a){var l=parseInt(t.substr(2*a,2),16);if(isNaN(l))return a;e[n+a]=l}return a}function b(e,t,n,r){return x(w(t,e.length-n),e,n,r)}function Z(e,t,n,r){return x(function(e){for(var t=[],n=0;n<e.length;++n)t.push(255&e.charCodeAt(n));return t}(t),e,n,r)}function B(e,t,n,r){return Z(e,t,n,r)}function f(e,t,n,r){return x(D(t),e,n,r)}function R(e,t,n,r){return x(function(e,t){for(var n,r,i,o=[],a=0;a<e.length&&!((t-=2)<0);++a)n=e.charCodeAt(a),r=n>>8,i=n%256,o.push(i),o.push(r);return o}(t,e.length-n),e,n,r)}function I(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,n))}function y(e,t,n){n=Math.min(e.length,n);for(var r=[],i=t;i<n;){var o,a,l,c,s=e[i],d=null,u=s>239?4:s>223?3:s>191?2:1;if(i+u<=n)switch(u){case 1:s<128&&(d=s);break;case 2:128==(192&(o=e[i+1]))&&(c=(31&s)<<6|63&o)>127&&(d=c);break;case 3:o=e[i+1],a=e[i+2],128==(192&o)&&128==(192&a)&&(c=(15&s)<<12|(63&o)<<6|63&a)>2047&&(c<55296||c>57343)&&(d=c);break;case 4:o=e[i+1],a=e[i+2],l=e[i+3],128==(192&o)&&128==(192&a)&&128==(192&l)&&(c=(15&s)<<18|(63&o)<<12|(63&a)<<6|63&l)>65535&&c<1114112&&(d=c)}null===d?(d=65533,u=1):d>65535&&(d-=65536,r.push(d>>>10&1023|55296),d=56320|1023&d),r.push(d),i+=u}return function(e){var t=e.length;if(t<=4096)return String.fromCharCode.apply(String,e);var n="",r=0;for(;r<t;)n+=String.fromCharCode.apply(String,e.slice(r,r+=4096));return n}(r)}t.Buffer=c,t.SlowBuffer=function(e){+e!=e&&(e=0);return c.alloc(+e)},t.INSPECT_MAX_BYTES=50,c.TYPED_ARRAY_SUPPORT=void 0!==(void 0!==typeof window?window:global).TYPED_ARRAY_SUPPORT?(void 0!==typeof window?window:global).TYPED_ARRAY_SUPPORT:function(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()&&"function"==typeof e.subarray&&0===e.subarray(1,1).byteLength}catch(e){return!1}}(),t.kMaxLength=a(),c.poolSize=8192,c._augment=function(e){return e.__proto__=c.prototype,e},c.from=function(e,t,n){return s(null,e,t,n)},c.TYPED_ARRAY_SUPPORT&&(c.prototype.__proto__=Uint8Array.prototype,c.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&c[Symbol.species]===c&&Object.defineProperty(c,Symbol.species,{value:null,configurable:!0})),c.alloc=function(e,t,n){return function(e,t,n,r){return d(t),t<=0?l(e,t):void 0!==n?"string"==typeof r?l(e,t).fill(n,r):l(e,t).fill(n):l(e,t)}(null,e,t,n)},c.allocUnsafe=function(e){return u(null,e)},c.allocUnsafeSlow=function(e){return u(null,e)},c.isBuffer=function(e){return!(null==e||!e._isBuffer)},c.compare=function(e,t){if(!c.isBuffer(e)||!c.isBuffer(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var n=e.length,r=t.length,i=0,o=Math.min(n,r);i<o;++i)if(e[i]!==t[i]){n=e[i],r=t[i];break}return n<r?-1:r<n?1:0},c.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},c.concat=function(e,t){if(!o(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return c.alloc(0);var n;if(void 0===t)for(t=0,n=0;n<e.length;++n)t+=e[n].length;var r=c.allocUnsafe(t),i=0;for(n=0;n<e.length;++n){var a=e[n];if(!c.isBuffer(a))throw new TypeError('"list" argument must be an Array of Buffers');a.copy(r,i),i+=a.length}return r},c.byteLength=g,c.prototype._isBuffer=!0,c.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)Q(this,t,t+1);return this},c.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)Q(this,t,t+3),Q(this,t+1,t+2);return this},c.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)Q(this,t,t+7),Q(this,t+1,t+6),Q(this,t+2,t+5),Q(this,t+3,t+4);return this},c.prototype.toString=function(){var e=0|this.length;return 0===e?"":0===arguments.length?y(this,0,e):F.apply(this,arguments)},c.prototype.equals=function(e){if(!c.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===c.compare(this,e)},c.prototype.inspect=function(){var e="",n=t.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(e+=" ... ")),"<Buffer "+e+">"},c.prototype.compare=function(e,t,n,r,i){if(!c.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),t<0||n>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&t>=n)return 0;if(r>=i)return-1;if(t>=n)return 1;if(this===e)return 0;for(var o=(i>>>=0)-(r>>>=0),a=(n>>>=0)-(t>>>=0),l=Math.min(o,a),s=this.slice(r,i),d=e.slice(t,n),u=0;u<l;++u)if(s[u]!==d[u]){o=s[u],a=d[u];break}return o<a?-1:a<o?1:0},c.prototype.includes=function(e,t,n){return-1!==this.indexOf(e,t,n)},c.prototype.indexOf=function(e,t,n){return p(this,e,t,n,!0)},c.prototype.lastIndexOf=function(e,t,n){return p(this,e,t,n,!1)},c.prototype.write=function(e,t,n,r){if(void 0===t)r="utf8",n=this.length,t=0;else if(void 0===n&&"string"==typeof t)r=t,n=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var i=this.length-t;if((void 0===n||n>i)&&(n=i),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var o=!1;;)switch(r){case"hex":return U(this,e,t,n);case"utf8":case"utf-8":return b(this,e,t,n);case"ascii":return Z(this,e,t,n);case"latin1":case"binary":return B(this,e,t,n);case"base64":return f(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return R(this,e,t,n);default:if(o)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),o=!0}},c.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function V(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;i<n;++i)r+=String.fromCharCode(127&e[i]);return r}function C(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;i<n;++i)r+=String.fromCharCode(e[i]);return r}function W(e,t,n){var r=e.length;(!t||t<0)&&(t=0),(!n||n<0||n>r)&&(n=r);for(var i="",o=t;o<n;++o)i+=Y(e[o]);return i}function E(e,t,n){for(var r=e.slice(t,n),i="",o=0;o<r.length;o+=2)i+=String.fromCharCode(r[o]+256*r[o+1]);return i}function v(e,t,n){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>n)throw new RangeError("Trying to access beyond buffer length")}function S(e,t,n,r,i,o){if(!c.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||t<o)throw new RangeError('"value" argument is out of bounds');if(n+r>e.length)throw new RangeError("Index out of range")}function J(e,t,n,r){t<0&&(t=65535+t+1);for(var i=0,o=Math.min(e.length-n,2);i<o;++i)e[n+i]=(t&255<<8*(r?i:1-i))>>>8*(r?i:1-i)}function G(e,t,n,r){t<0&&(t=4294967295+t+1);for(var i=0,o=Math.min(e.length-n,4);i<o;++i)e[n+i]=t>>>8*(r?i:3-i)&255}function N(e,t,n,r,i,o){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function X(e,t,n,r,o){return o||N(e,0,n,4),i.write(e,t,n,r,23,4),n+4}function k(e,t,n,r,o){return o||N(e,0,n,8),i.write(e,t,n,r,52,8),n+8}c.prototype.slice=function(e,t){var n,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e),c.TYPED_ARRAY_SUPPORT)(n=this.subarray(e,t)).__proto__=c.prototype;else{var i=t-e;n=new c(i,void 0);for(var o=0;o<i;++o)n[o]=this[o+e]}return n},c.prototype.readUIntLE=function(e,t,n){e|=0,t|=0,n||v(e,t,this.length);for(var r=this[e],i=1,o=0;++o<t&&(i*=256);)r+=this[e+o]*i;return r},c.prototype.readUIntBE=function(e,t,n){e|=0,t|=0,n||v(e,t,this.length);for(var r=this[e+--t],i=1;t>0&&(i*=256);)r+=this[e+--t]*i;return r},c.prototype.readUInt8=function(e,t){return t||v(e,1,this.length),this[e]},c.prototype.readUInt16LE=function(e,t){return t||v(e,2,this.length),this[e]|this[e+1]<<8},c.prototype.readUInt16BE=function(e,t){return t||v(e,2,this.length),this[e]<<8|this[e+1]},c.prototype.readUInt32LE=function(e,t){return t||v(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},c.prototype.readUInt32BE=function(e,t){return t||v(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},c.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||v(e,t,this.length);for(var r=this[e],i=1,o=0;++o<t&&(i*=256);)r+=this[e+o]*i;return r>=(i*=128)&&(r-=Math.pow(2,8*t)),r},c.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||v(e,t,this.length);for(var r=t,i=1,o=this[e+--r];r>0&&(i*=256);)o+=this[e+--r]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*t)),o},c.prototype.readInt8=function(e,t){return t||v(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},c.prototype.readInt16LE=function(e,t){t||v(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},c.prototype.readInt16BE=function(e,t){t||v(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},c.prototype.readInt32LE=function(e,t){return t||v(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},c.prototype.readInt32BE=function(e,t){return t||v(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},c.prototype.readFloatLE=function(e,t){return t||v(e,4,this.length),i.read(this,e,!0,23,4)},c.prototype.readFloatBE=function(e,t){return t||v(e,4,this.length),i.read(this,e,!1,23,4)},c.prototype.readDoubleLE=function(e,t){return t||v(e,8,this.length),i.read(this,e,!0,52,8)},c.prototype.readDoubleBE=function(e,t){return t||v(e,8,this.length),i.read(this,e,!1,52,8)},c.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||S(this,e,t,n,Math.pow(2,8*n)-1,0);var i=1,o=0;for(this[t]=255&e;++o<n&&(i*=256);)this[t+o]=e/i&255;return t+n},c.prototype.writeUIntBE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||S(this,e,t,n,Math.pow(2,8*n)-1,0);var i=n-1,o=1;for(this[t+i]=255&e;--i>=0&&(o*=256);)this[t+i]=e/o&255;return t+n},c.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||S(this,e,t,1,255,0),c.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},c.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||S(this,e,t,2,65535,0),c.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):J(this,e,t,!0),t+2},c.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||S(this,e,t,2,65535,0),c.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):J(this,e,t,!1),t+2},c.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||S(this,e,t,4,4294967295,0),c.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):G(this,e,t,!0),t+4},c.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||S(this,e,t,4,4294967295,0),c.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):G(this,e,t,!1),t+4},c.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);S(this,e,t,n,i-1,-i)}var o=0,a=1,l=0;for(this[t]=255&e;++o<n&&(a*=256);)e<0&&0===l&&0!==this[t+o-1]&&(l=1),this[t+o]=(e/a>>0)-l&255;return t+n},c.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);S(this,e,t,n,i-1,-i)}var o=n-1,a=1,l=0;for(this[t+o]=255&e;--o>=0&&(a*=256);)e<0&&0===l&&0!==this[t+o+1]&&(l=1),this[t+o]=(e/a>>0)-l&255;return t+n},c.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||S(this,e,t,1,127,-128),c.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},c.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||S(this,e,t,2,32767,-32768),c.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):J(this,e,t,!0),t+2},c.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||S(this,e,t,2,32767,-32768),c.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):J(this,e,t,!1),t+2},c.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||S(this,e,t,4,2147483647,-2147483648),c.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):G(this,e,t,!0),t+4},c.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||S(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),c.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):G(this,e,t,!1),t+4},c.prototype.writeFloatLE=function(e,t,n){return X(this,e,t,!0,n)},c.prototype.writeFloatBE=function(e,t,n){return X(this,e,t,!1,n)},c.prototype.writeDoubleLE=function(e,t,n){return k(this,e,t,!0,n)},c.prototype.writeDoubleBE=function(e,t,n){return k(this,e,t,!1,n)},c.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t<r-n&&(r=e.length-t+n);var i,o=r-n;if(this===e&&n<t&&t<r)for(i=o-1;i>=0;--i)e[i+t]=this[i+n];else if(o<1e3||!c.TYPED_ARRAY_SUPPORT)for(i=0;i<o;++i)e[i+t]=this[i+n];else Uint8Array.prototype.set.call(e,this.subarray(n,n+o),t);return o},c.prototype.fill=function(e,t,n,r){if("string"==typeof e){if("string"==typeof t?(r=t,t=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===e.length){var i=e.charCodeAt(0);i<256&&(e=i)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!c.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof e&&(e&=255);if(t<0||this.length<t||this.length<n)throw new RangeError("Out of range index");if(n<=t)return this;var o;if(t>>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(o=t;o<n;++o)this[o]=e;else{var a=c.isBuffer(e)?e:w(new c(e,r).toString()),l=a.length;for(o=0;o<n-t;++o)this[o+t]=a[o%l]}return this};var T=/[^+\/0-9A-Za-z-_]/g;function Y(e){return e<16?"0"+e.toString(16):e.toString(16)}function w(e,t){var n;t=t||1/0;for(var r=e.length,i=null,o=[],a=0;a<r;++a){if((n=e.charCodeAt(a))>55295&&n<57344){if(!i){if(n>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(a+1===r){(t-=3)>-1&&o.push(239,191,189);continue}i=n;continue}if(n<56320){(t-=3)>-1&&o.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,n<128){if((t-=1)<0)break;o.push(n)}else if(n<2048){if((t-=2)<0)break;o.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function D(e){return r.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(T,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function x(e,t,n,r){for(var i=0;i<r&&!(i+n>=t.length||i>=e.length);++i)t[i+n]=e[i];return i}},function(e,t,n){"use strict";var r=n(13);e.exports=function(e,t){r.forEach(e,(function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])}))}},function(e,t,n){"use strict";e.exports={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1}},function(e,t,n){"use strict";var r=n(13);e.exports=function(e){function t(e,n,i,o){var a=e[o++];if("__proto__"===a)return!0;var l=Number.isFinite(+a),c=o>=e.length;return a=!a&&r.isArray(i)?i.length:a,c?(r.hasOwnProperty(i,a)?i[a]=[i[a],n]:i[a]=n,!l):(i[a]&&r.isObject(i[a])||(i[a]=[]),t(e,n,i[a],o)&&r.isArray(i[a])&&(i[a]=function(e){var t,n,r={},i=Object.keys(e),o=i.length;for(t=0;t<o;t++)r[n=i[t]]=e[n];return r}(i[a])),!l)}if(r.isFormData(e)&&r.isFunction(e.entries)){var n={};return r.forEachEntry(e,(function(e,i){t(function(e){return r.matchAll(/\w+|\[(\w*)]/g,e).map((function(e){return"[]"===e[0]?"":e[1]||e[0]}))}(e),i,n,0)})),n}return null}},function(e,t,n){"use strict";(function(t){var r=n(13),i=n(491),o=n(492),a=n(222),l=n(229),c=n(495),s=n(496),d=n(226),u=n(49),A=n(97),h=n(497),g=n(135);e.exports=function(e){return new t((function(t,n){var F,Q=e.data,p=e.headers,m=e.responseType,U=e.withXSRFToken;function b(){e.cancelToken&&e.cancelToken.unsubscribe(F),e.signal&&e.signal.removeEventListener("abort",F)}r.isFormData(Q)&&r.isStandardBrowserEnv()&&delete p["Content-Type"];var Z=new XMLHttpRequest;if(e.auth){var B=e.auth.username||"",f=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";p.Authorization="Basic "+btoa(B+":"+f)}var R=l(e.baseURL,e.url);function I(){if(Z){var r="getAllResponseHeaders"in Z?c(Z.getAllResponseHeaders()):null,o={data:m&&"text"!==m&&"json"!==m?Z.response:Z.responseText,status:Z.status,statusText:Z.statusText,headers:r,config:e,request:Z};i((function(e){t(e),b()}),(function(e){n(e),b()}),o),Z=null}}if(Z.open(e.method.toUpperCase(),a(R,e.params,e.paramsSerializer),!0),Z.timeout=e.timeout,"onloadend"in Z?Z.onloadend=I:Z.onreadystatechange=function(){Z&&4===Z.readyState&&(0!==Z.status||Z.responseURL&&0===Z.responseURL.indexOf("file:"))&&setTimeout(I)},Z.onabort=function(){Z&&(n(new u("Request aborted",u.ECONNABORTED,e,Z)),Z=null)},Z.onerror=function(){n(new u("Network Error",u.ERR_NETWORK,e,Z)),Z=null},Z.ontimeout=function(){var t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded",r=e.transitional||d;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(new u(t,r.clarifyTimeoutError?u.ETIMEDOUT:u.ECONNABORTED,e,Z)),Z=null},r.isStandardBrowserEnv()&&(U&&r.isFunction(U)&&(U=U(e)),U||!1!==U&&s(R))){var y=e.xsrfHeaderName&&e.xsrfCookieName&&o.read(e.xsrfCookieName);y&&(p[e.xsrfHeaderName]=y)}"setRequestHeader"in Z&&r.forEach(p,(function(e,t){void 0===Q&&"content-type"===t.toLowerCase()?delete p[t]:Z.setRequestHeader(t,e)})),r.isUndefined(e.withCredentials)||(Z.withCredentials=!!e.withCredentials),m&&"json"!==m&&(Z.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&Z.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&Z.upload&&Z.upload.addEventListener("progress",e.onUploadProgress),(e.cancelToken||e.signal)&&(F=function(t){Z&&(n(!t||t.type?new A(null,e,Z):t),Z.abort(),Z=null)},e.cancelToken&&e.cancelToken.subscribe(F),e.signal&&(e.signal.aborted?F():e.signal.addEventListener("abort",F))),Q||!1===Q||0===Q||""===Q||(Q=null);var V=h(R);V&&-1===g.protocols.indexOf(V)?n(new u("Unsupported protocol "+V+":",u.ERR_BAD_REQUEST,e)):Z.send(Q)}))}}).call(this,n(2))},function(e,t,n){"use strict";var r=n(493),i=n(494);e.exports=function(e,t){return e&&!r(t)?i(e,t):t}},function(e,t,n){"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},function(e,t,n){"use strict";var r=n(13);e.exports=function(e,t){t=t||{};var n={};function i(e,t){return r.isPlainObject(e)&&r.isPlainObject(t)?r.merge(e,t):r.isEmptyObject(t)?r.merge({},e):r.isPlainObject(t)?r.merge({},t):r.isArray(t)?t.slice():t}function o(n){return r.isUndefined(t[n])?r.isUndefined(e[n])?void 0:i(void 0,e[n]):i(e[n],t[n])}function a(e){if(!r.isUndefined(t[e]))return i(void 0,t[e])}function l(n){return r.isUndefined(t[n])?r.isUndefined(e[n])?void 0:i(void 0,e[n]):i(void 0,t[n])}function c(n){return n in t?i(e[n],t[n]):n in e?i(void 0,e[n]):void 0}var s={url:a,method:a,data:a,baseURL:l,transformRequest:l,transformResponse:l,paramsSerializer:l,timeout:l,timeoutMessage:l,withCredentials:l,withXSRFToken:l,adapter:l,responseType:l,xsrfCookieName:l,xsrfHeaderName:l,onUploadProgress:l,onDownloadProgress:l,decompress:l,maxContentLength:l,maxBodyLength:l,beforeRedirect:l,transport:l,httpAgent:l,httpsAgent:l,cancelToken:l,socketPath:l,responseEncoding:l,validateStatus:c};return r.forEach(Object.keys(e).concat(Object.keys(t)),(function(e){var t=s[e]||o,i=t(e);r.isUndefined(i)&&t!==c||(n[e]=i)})),n}},function(e,t){e.exports={version:"0.29.0"}},function(e,t,n){var r=n(503),i=n(505);e.exports=function(e,t,n){return r(i,e,t,n)}},function(e,t,n){var r=n(91),i=n(235),o=i?function(e,t){return i.set(e,t),e}:r;e.exports=o},function(e,t,n){var r=n(201),i=r&&new r;e.exports=i},function(e,t,n){var r=n(237),i=n(238),o=n(509),a=n(98),l=n(239),c=n(246),s=n(521),d=n(140),u=n(16);e.exports=function e(t,n,A,h,g,F,Q,p,m,U){var b=128&n,Z=1&n,B=2&n,f=24&n,R=512&n,I=B?void 0:a(t);return function y(){for(var V=arguments.length,C=Array(V),W=V;W--;)C[W]=arguments[W];if(f)var E=c(y),v=o(C,E);if(h&&(C=r(C,h,g,f)),F&&(C=i(C,F,Q,f)),V-=v,f&&V<U){var S=d(C,E);return l(t,n,e,y.placeholder,A,C,S,p,m,U-V)}var J=Z?A:this,G=B?J[t]:t;return V=C.length,p?C=s(C,p):R&&V>1&&C.reverse(),b&&m<V&&(C.length=m),this&&this!==u&&this instanceof y&&(G=I||a(G)),G.apply(J,C)}}},function(e,t){var n=Math.max;e.exports=function(e,t,r,i){for(var o=-1,a=e.length,l=r.length,c=-1,s=t.length,d=n(a-l,0),u=Array(s+d),A=!i;++c<s;)u[c]=t[c];for(;++o<l;)(A||o<a)&&(u[r[o]]=e[o]);for(;d--;)u[c++]=e[o++];return u}},function(e,t){var n=Math.max;e.exports=function(e,t,r,i){for(var o=-1,a=e.length,l=-1,c=r.length,s=-1,d=t.length,u=n(a-c,0),A=Array(u+d),h=!i;++o<u;)A[o]=e[o];for(var g=o;++s<d;)A[g+s]=t[s];for(;++l<c;)(h||o<a)&&(A[g+r[l]]=e[o++]);return A}},function(e,t,n){var r=n(510),i=n(243),o=n(244);e.exports=function(e,t,n,a,l,c,s,d,u,A){var h=8&t;t|=h?32:64,4&(t&=~(h?64:32))||(t&=-4);var g=[e,t,l,h?c:void 0,h?s:void 0,h?void 0:c,h?void 0:s,d,u,A],F=n.apply(void 0,g);return r(e)&&i(F,g),F.placeholder=a,o(F,e,t)}},function(e,t,n){var r=n(235),i=n(241),o=r?function(e){return r.get(e)}:i;e.exports=o},function(e,t){e.exports=function(){}},function(e,t,n){var r=n(89),i=n(139);function o(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}o.prototype=r(i.prototype),o.prototype.constructor=o,e.exports=o},function(e,t,n){var r=n(234),i=n(208)(r);e.exports=i},function(e,t,n){var r=n(515),i=n(516),o=n(127),a=n(517);e.exports=function(e,t,n){var l=t+"";return o(e,i(l,a(r(l),n)))}},function(e,t){e.exports=function(e,t,n,r){for(var i=e.length,o=n+(r?1:-1);r?o--:++o<i;)if(t(e[o],o,e))return o;return-1}},function(e,t){e.exports=function(e){return e.placeholder}},function(e,t,n){var r=n(525),i=n(11),o=n(71),a=/^[-+]0x[0-9a-f]+$/i,l=/^0b[01]+$/i,c=/^0o[0-7]+$/i,s=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(o(e))return NaN;if(i(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=r(e);var n=l.test(e);return n||c.test(e)?s(e.slice(2),n?2:8):a.test(e)?NaN:+e}},function(e,t,n){var r=n(101),i=n(249),o=n(102);e.exports=function(e,t,n,a,l,c){var s=1&n,d=e.length,u=t.length;if(d!=u&&!(s&&u>d))return!1;var A=c.get(e),h=c.get(t);if(A&&h)return A==t&&h==e;var g=-1,F=!0,Q=2&n?new r:void 0;for(c.set(e,t),c.set(t,e);++g<d;){var p=e[g],m=t[g];if(a)var U=s?a(m,p,g,t,e,c):a(p,m,g,e,t,c);if(void 0!==U){if(U)continue;F=!1;break}if(Q){if(!i(t,(function(e,t){if(!o(Q,t)&&(p===e||l(p,e,n,a,c)))return Q.push(t)}))){F=!1;break}}else if(p!==m&&!l(p,m,n,a,c)){F=!1;break}}return c.delete(e),c.delete(t),F}},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1}},function(e,t){e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}},function(e,t,n){var r=n(11);e.exports=function(e){return e==e&&!r(e)}},function(e,t){e.exports=function(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in Object(n)))}}},function(e,t,n){var r=n(540),i=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,o=/\\(\\)?/g,a=r((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(i,(function(e,n,r,i){t.push(r?i.replace(o,"$1"):n||e)})),t}));e.exports=a},function(e,t,n){var r=n(542),i=n(543);e.exports=function(e,t){return null!=e&&i(e,t,r)}},function(e,t,n){var r=n(123),i=n(549);e.exports=function e(t,n,o,a,l){var c=-1,s=t.length;for(o||(o=i),l||(l=[]);++c<s;){var d=t[c];n>0&&o(d)?n>1?e(d,n-1,o,a,l):r(l,d):a||(l[l.length]=d)}return l}},function(e,t,n){var r=n(552)();e.exports=r},function(e,t,n){"use strict";var r=n(557),i=n(558);function o(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}t.parse=U,t.resolve=function(e,t){return U(e,!1,!0).resolve(t)},t.resolveObject=function(e,t){return e?U(e,!1,!0).resolveObject(t):t},t.format=function(e){i.isString(e)&&(e=U(e));return e instanceof o?e.format():o.prototype.format.call(e)},t.Url=o;var a=/^([a-z0-9.+-]+:)/i,l=/:[0-9]*$/,c=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,s=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),d=["'"].concat(s),u=["%","/","?",";","#"].concat(d),A=["/","?","#"],h=/^[+a-z0-9A-Z_-]{0,63}$/,g=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,F={javascript:!0,"javascript:":!0},Q={javascript:!0,"javascript:":!0},p={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},m=n(559);function U(e,t,n){if(e&&i.isObject(e)&&e instanceof o)return e;var r=new o;return r.parse(e,t,n),r}o.prototype.parse=function(e,t,n){if(!i.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var o=e.indexOf("?"),l=-1!==o&&o<e.indexOf("#")?"?":"#",s=e.split(l);s[0]=s[0].replace(/\\/g,"/");var U=e=s.join(l);if(U=U.trim(),!n&&1===e.split("#").length){var b=c.exec(U);if(b)return this.path=U,this.href=U,this.pathname=b[1],b[2]?(this.search=b[2],this.query=t?m.parse(this.search.substr(1)):this.search.substr(1)):t&&(this.search="",this.query={}),this}var Z=a.exec(U);if(Z){var B=(Z=Z[0]).toLowerCase();this.protocol=B,U=U.substr(Z.length)}if(n||Z||U.match(/^\/\/[^@\/]+@[^@\/]+/)){var f="//"===U.substr(0,2);!f||Z&&Q[Z]||(U=U.substr(2),this.slashes=!0)}if(!Q[Z]&&(f||Z&&!p[Z])){for(var R,I,y=-1,V=0;V<A.length;V++){-1!==(C=U.indexOf(A[V]))&&(-1===y||C<y)&&(y=C)}-1!==(I=-1===y?U.lastIndexOf("@"):U.lastIndexOf("@",y))&&(R=U.slice(0,I),U=U.slice(I+1),this.auth=decodeURIComponent(R)),y=-1;for(V=0;V<u.length;V++){var C;-1!==(C=U.indexOf(u[V]))&&(-1===y||C<y)&&(y=C)}-1===y&&(y=U.length),this.host=U.slice(0,y),U=U.slice(y),this.parseHost(),this.hostname=this.hostname||"";var W="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!W)for(var E=this.hostname.split(/\./),v=(V=0,E.length);V<v;V++){var S=E[V];if(S&&!S.match(h)){for(var J="",G=0,N=S.length;G<N;G++)S.charCodeAt(G)>127?J+="x":J+=S[G];if(!J.match(h)){var X=E.slice(0,V),k=E.slice(V+1),T=S.match(g);T&&(X.push(T[1]),k.unshift(T[2])),k.length&&(U="/"+k.join(".")+U),this.hostname=X.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),W||(this.hostname=r.toASCII(this.hostname));var Y=this.port?":"+this.port:"",w=this.hostname||"";this.host=w+Y,this.href+=this.host,W&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==U[0]&&(U="/"+U))}if(!F[B])for(V=0,v=d.length;V<v;V++){var D=d[V];if(-1!==U.indexOf(D)){var x=encodeURIComponent(D);x===D&&(x=escape(D)),U=U.split(D).join(x)}}var M=U.indexOf("#");-1!==M&&(this.hash=U.substr(M),U=U.slice(0,M));var H=U.indexOf("?");if(-1!==H?(this.search=U.substr(H),this.query=U.substr(H+1),t&&(this.query=m.parse(this.query)),U=U.slice(0,H)):t&&(this.search="",this.query={}),U&&(this.pathname=U),p[B]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){Y=this.pathname||"";var K=this.search||"";this.path=Y+K}return this.href=this.format(),this},o.prototype.format=function(){var e=this.auth||"";e&&(e=(e=encodeURIComponent(e)).replace(/%3A/i,":"),e+="@");var t=this.protocol||"",n=this.pathname||"",r=this.hash||"",o=!1,a="";this.host?o=e+this.host:this.hostname&&(o=e+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(o+=":"+this.port)),this.query&&i.isObject(this.query)&&Object.keys(this.query).length&&(a=m.stringify(this.query));var l=this.search||a&&"?"+a||"";return t&&":"!==t.substr(-1)&&(t+=":"),this.slashes||(!t||p[t])&&!1!==o?(o="//"+(o||""),n&&"/"!==n.charAt(0)&&(n="/"+n)):o||(o=""),r&&"#"!==r.charAt(0)&&(r="#"+r),l&&"?"!==l.charAt(0)&&(l="?"+l),t+o+(n=n.replace(/[?#]/g,(function(e){return encodeURIComponent(e)})))+(l=l.replace("#","%23"))+r},o.prototype.resolve=function(e){return this.resolveObject(U(e,!1,!0)).format()},o.prototype.resolveObject=function(e){if(i.isString(e)){var t=new o;t.parse(e,!1,!0),e=t}for(var n=new o,r=Object.keys(this),a=0;a<r.length;a++){var l=r[a];n[l]=this[l]}if(n.hash=e.hash,""===e.href)return n.href=n.format(),n;if(e.slashes&&!e.protocol){for(var c=Object.keys(e),s=0;s<c.length;s++){var d=c[s];"protocol"!==d&&(n[d]=e[d])}return p[n.protocol]&&n.hostname&&!n.pathname&&(n.path=n.pathname="/"),n.href=n.format(),n}if(e.protocol&&e.protocol!==n.protocol){if(!p[e.protocol]){for(var u=Object.keys(e),A=0;A<u.length;A++){var h=u[A];n[h]=e[h]}return n.href=n.format(),n}if(n.protocol=e.protocol,e.host||Q[e.protocol])n.pathname=e.pathname;else{for(var g=(e.pathname||"").split("/");g.length&&!(e.host=g.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==g[0]&&g.unshift(""),g.length<2&&g.unshift(""),n.pathname=g.join("/")}if(n.search=e.search,n.query=e.query,n.host=e.host||"",n.auth=e.auth,n.hostname=e.hostname||e.host,n.port=e.port,n.pathname||n.search){var F=n.pathname||"",m=n.search||"";n.path=F+m}return n.slashes=n.slashes||e.slashes,n.href=n.format(),n}var U=n.pathname&&"/"===n.pathname.charAt(0),b=e.host||e.pathname&&"/"===e.pathname.charAt(0),Z=b||U||n.host&&e.pathname,B=Z,f=n.pathname&&n.pathname.split("/")||[],R=(g=e.pathname&&e.pathname.split("/")||[],n.protocol&&!p[n.protocol]);if(R&&(n.hostname="",n.port=null,n.host&&(""===f[0]?f[0]=n.host:f.unshift(n.host)),n.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===g[0]?g[0]=e.host:g.unshift(e.host)),e.host=null),Z=Z&&(""===g[0]||""===f[0])),b)n.host=e.host||""===e.host?e.host:n.host,n.hostname=e.hostname||""===e.hostname?e.hostname:n.hostname,n.search=e.search,n.query=e.query,f=g;else if(g.length)f||(f=[]),f.pop(),f=f.concat(g),n.search=e.search,n.query=e.query;else if(!i.isNullOrUndefined(e.search)){if(R)n.hostname=n.host=f.shift(),(W=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=W.shift(),n.host=n.hostname=W.shift());return n.search=e.search,n.query=e.query,i.isNull(n.pathname)&&i.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n}if(!f.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n;for(var I=f.slice(-1)[0],y=(n.host||e.host||f.length>1)&&("."===I||".."===I)||""===I,V=0,C=f.length;C>=0;C--)"."===(I=f[C])?f.splice(C,1):".."===I?(f.splice(C,1),V++):V&&(f.splice(C,1),V--);if(!Z&&!B)for(;V--;V)f.unshift("..");!Z||""===f[0]||f[0]&&"/"===f[0].charAt(0)||f.unshift(""),y&&"/"!==f.join("/").substr(-1)&&f.push("");var W,E=""===f[0]||f[0]&&"/"===f[0].charAt(0);R&&(n.hostname=n.host=E?"":f.length?f.shift():"",(W=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=W.shift(),n.host=n.hostname=W.shift()));return(Z=Z||n.host&&f.length)&&!E&&f.unshift(""),f.length?n.pathname=f.join("/"):(n.pathname=null,n.path=null),i.isNull(n.pathname)&&i.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=e.auth||n.auth,n.slashes=n.slashes||e.slashes,n.href=n.format(),n},o.prototype.parseHost=function(){var e=this.host,t=l.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},function(e,t,n){"use strict";(function(e){t.__esModule=!0,t.default=function(){return new e(e=>setTimeout(e))}}).call(this,n(2))},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){void 0===e&&(e={});const t=e.global||(void 0!==typeof window?window:global);return function(){if(t.navigator.mediaDevices){const e=t.navigator.mediaDevices;return e.enumerateDevices&&e.enumerateDevices.bind(e)}}}},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;let r="";var i={getCurrentAudioInputDevice:()=>r,setCurrentAudioInputDevice:e=>{r=e}};t.default=i},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(262));var o=(e,t)=>new i.default(e,t);t.default=o},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(20)),o=r(n(566)),a=r(n(567)),l=r(n(568)),c=r(n(570));const s={attributes:o.default,css:a.default,classNames:l.default,observers:c.default},d=/^#([\w-]*)$/,u=function(e){return Array.prototype.slice.call(e)},A=function(e,t){const n=function(e,t){let n;if(void 0===e)return[];if("string"==typeof e){n=[];const r=d.exec(e);if(t=t||document,r&&r[1]){const e=t.getElementById(r[1]);e&&n.push(e)}else n=t.querySelectorAll(e)}else e&&(e.nodeType||(void 0!==typeof window?window:global).XMLHttpRequest&&e instanceof(void 0!==typeof window?window:global).XMLHttpRequest||e===(void 0!==typeof window?window:global))?(n=[e],t=e):Array.isArray(e)?(n=e.slice(),t=null):n=u(n);return n}(e,t);this.context=t,this.toArray=function(){return n},this.length=n.length,this.first=n[0],this.last=n[n.length-1],this.get=function(e){return void 0===e?n:n[e]}};(A._attachToOTHelpers={}).removeElement=function(e){return new A(e).remove()},A.prototype.getAsArray=function(){let e=this.get();return(0,i.default)(e.forEach)||(e=u(e)),e},A.prototype.some=function(e,t){return this.getAsArray().some(e,t)},A.prototype.forEach=function(e,t){return this.getAsArray().forEach(e,t),this},A.prototype.map=function(e,t){return new A(this.getAsArray().map(e,t),this.context)},A.prototype.filter=function(e,t){return new A(this.getAsArray().filter(e,t),this.context)},A.prototype.find=function(e){return new A(e,this.first)},A.prototype.on=function(e,t){return this.forEach(n=>{n.addEventListener(e,t,!1)})},A.prototype.off=function(e,t){return this.forEach(n=>{n.removeEventListener(e,t,!1)})},A.prototype.once=function(e,t){const n=function(){this.off(e,n),t(...arguments)}.bind(this);return this.on(e,n)},A.prototype.appendTo=function(e){if(!e)throw new Error("appendTo requires a DOMElement to append to.");return this.forEach(t=>{e.appendChild(t)})},A.prototype.append=function(){const e=this.first;return e?(Array.prototype.forEach.call(arguments,t=>{e.appendChild(t)}),this):this},A.prototype.prepend=function(){if(0===arguments.length)return this;const e=this.first;let t;return e?(t=Array.prototype.slice.call(arguments),e.firstElementChild||e.appendChild(t.shift()),t.forEach(t=>{e.insertBefore(t,e.firstElementChild)}),this):this},A.prototype.after=function(e){if(!e)throw new Error("after requires a DOMElement to insert after");return this.forEach(t=>{t.parentElement&&(e!==t.parentNode.lastChild?t.parentElement.insertBefore(t,e):t.parentElement.appendChild(t))})},A.prototype.before=function(e){if(!e)throw new Error("before requires a DOMElement to insert before");return this.forEach(t=>{t.parentElement&&t.parentElement.insertBefore(t,e)})},A.prototype.remove=function(){return this.forEach(e=>{e.parentNode&&e.parentNode.removeChild(e)})},A.prototype.empty=function(){return this.forEach(e=>{for(;e.firstChild;)e.removeChild(e.firstChild)})},A.prototype.isDisplayNone=function(){return this.some(e=>(0===(null==e?void 0:e.offsetWidth)||0===(null==e?void 0:e.offsetHeight))&&"none"===new A(e).css("display")||!(null==e||!e.parentNode||null==e||!e.parentNode.style)&&new A(e.parentNode).isDisplayNone())};const h=function e(t){return 0!==t.offsetWidth&&0!==t.offsetHeight||"none"!==new A(t).css("display")?t.parentNode&&t.parentNode.style?e(t.parentNode):null:t};A._attachToOTHelpers.emptyElement=function(e){return new A(e).empty()},A._attachToOTHelpers._findElementWithDisplayNone=h,s.css(A,h),s.attributes(A),s.classNames(A),s.observers(A),["on","off","isDisplayNone","show","hide","css","makeVisibleAndYield","addClass","removeClass"].forEach(e=>{A._attachToOTHelpers[e]=function(){const t=Array.prototype.slice.apply(arguments),n=t.shift(),r=new A(n);return A.prototype[e].apply(r,t)}});var g=A;t.default=g},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e,t,n){let r=void 0===n?{}:n,o=r.value,a=r.name,l=void 0===a?""+t:a,c=r.getWarning,s=void 0===c?"":c,d=r.setWarning,u=void 0===d?"":d,A=r.canSet,h=void 0!==A&&A,g=r.warnOnSet,F=o,Q=!1,p=!(void 0!==g&&g);const m={get:()=>(Q||(Q=!0,i.warn(`${l} is deprecated, and will be removed in the future. ${s}`.trim())),F),set(e){h&&(F=e),p||(p=!0,h?i.warn(`${l} is deprecated. ${u}`.trim()):i.warn(`${l} is deprecated, and will be removed in the future. ${u}`.trim()))}};Object.defineProperty(e,t,m)};const i=(0,r(n(1)).default)("deprecation")},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(9)),o=r(n(3)),a=r(n(261)),l=r(n(265));const c={};"Node"!==o.default.name&&(c.request=function(e,t,n){const r=new(void 0!==typeof window?window:global).XMLHttpRequest,i=t||{};if(i.method){t.overrideMimeType&&(r.overrideMimeType&&r.overrideMimeType(t.overrideMimeType),delete t.overrideMimeType),n&&((0,a.default)(r).on("load",e=>{const t=e.target.status;t>=200&&(t<300||304===t)?n(null,e):n(e)}),(0,a.default)(r).on("error",n)),r.open(t.method,e,!0),i.headers||(i.headers={});for(const e in i.headers)Object.prototype.hasOwnProperty.call(i.headers,e)&&r.setRequestHeader(e,i.headers[e]);r.send(t.body&&function(e){if("string"==typeof e)return e;const t=[];return Object.keys(e).forEach(n=>{t.push(`${encodeURIComponent(n)}=${encodeURIComponent(e[n])}`)}),t.join("&").replace(/\+/g,"%20")}(t.body))}else n(new Error("No HTTP method specified in options"))},c.get=function(e,t,n){const r=(0,i.default)(t||{},{method:"GET"});c.request(e,r,n)},c.post=function(e,t,n){const r=(0,i.default)(t||{},{method:"POST"});c.request(e,r,n)},c.getJSON=function(e,t,n){t=t||{};const r=(0,i.default)({Accept:"application/json"},t.headers||{});c.get(e,(0,i.default)(t||{},{headers:r}),(function(e,t){if(e)n(e,t&&t.target&&t.target.responseText);else{let e;try{e=JSON.parse(t.target.responseText)}catch(e){return void n(e,t&&t.target&&t.target.responseText)}n(null,e,t)}}))},(0,l.default)(c));var s=c;t.default=s},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r=e=>{const t={};Object.keys(e).forEach(n=>{t[n]=e[n]}),e._attachToOTHelpers=t};t.default=r},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e){var t=this;let n=e.loggingUrl,r=e.queue,o=void 0===r?h:r,a=e.ajax,l=void 0===a?c.default:a;this.loggingUrl=n,this.updateEndPoints=()=>{if(!this.proxyUrl){this.proxyUrl=(0,d.getProxyUrl)();const e=(0,s.default)(this.loggingUrl,this.proxyUrl);this.loggingUrl=e}this.endPoint=this.loggingUrl+"/logging/ClientEvent",this.endPointQos=this.loggingUrl+"/logging/ClientQos"},this.updateEndPoints();const g={};this.logError=function(e,n,r,o,a){void 0===o&&(o=null),void 0===a&&(a={});const l=a.partnerId;if(((e,t,n)=>{if(!n)return!1;const r=[n,t,e].join("_");return(g[r]||0)>=100})(e,n,l))return;const c=[l,n,e].join("_"),s=o;g[c]=void 0!==g[c]?g[c]+1:1,t.logEvent((0,i.default)(a,{action:`${n}.${e}`,payload:s}),!1)},this.logEvent=function(e,n,r,i){void 0===n&&(n=!1),void 0===i&&(i=()=>{}),t.updateEndPoints();const a=Object.assign({},e,{clientInstanceId:A});if(r&&!isNaN(r)&&Math.random()>r)return void u.debug("skipping sending analytics due to throttle:",a);let c;u.debug("queueing analytics:",t.loggingUrl,a);try{c=JSON.stringify(a)}catch(e){return void i(e)}!function(e,n,r){void 0===n&&(n=()=>{}),o.add(i=>{u.debug("sending analytics:",t.loggingUrl,e),l.post(r?t.endPointQos:t.endPoint,{body:e,overrideMimeType:"text/plain",headers:{Accept:"text/plain","Content-Type":"application/json"}},e=>{e&&u.debug("Failed to send ClientEvent, moving on to the next item."),n(e||void 0),i()})})}(c,i,n)},this.logQOS=e=>this.logEvent(e,!0)};var i=r(n(9)),o=r(n(17)),a=r(n(1)),l=r(n(575)),c=r(n(264)),s=r(n(106)),d=n(72);const u=(0,a.default)("analytics"),A=(0,o.default)(),h=new l.default},function(e,t){var n="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof window.msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto);if(n){var r=new Uint8Array(16);e.exports=function(){return n(r),r}}else{var i=new Array(16);e.exports=function(){for(var e,t=0;t<16;t++)0==(3&t)&&(e=4294967296*Math.random()),i[t]=e>>>((3&t)<<3)&255;return i}}},function(e,t){for(var n=[],r=0;r<256;++r)n[r]=(r+256).toString(16).substr(1);e.exports=function(e,t){var r=t||0,i=n;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++]]].join("")}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e){let t=[],n={};const r=e||"id";(0,o.default)(this);const l=function(e,t){return(0,i.default)(e[t])?e[t]():e[t]},c=function(e){this.trigger("update",e),this.trigger("update:"+e.target.id,e)}.bind(this),s=function(e){this.remove(e.target,e.reason)}.bind(this);this.reset=function(){t.forEach((function(e){e.off("updated",c,this),e.off("destroyed",s,this)}),this),t=[],n={}},this.destroy=function(e){t.forEach(t=>{t&&"function"==typeof t.destroy&&t.destroy(e,!0)}),this.reset(),this.off()},this.get=function(e){return e&&void 0!==n[e]?t[n[e]]:void 0},this.has=function(e){return e&&void 0!==n[e]},this.toString=function(){return t.toString()},this.where=function(e,n){return(0,i.default)(e)?t.filter(e,n):t.filter(t=>{for(const n in e)if(e.hasOwnProperty(n)&&l(t,n)!==e[n])return!1;return!0})},this.find=function(e,n){let r;r=(0,i.default)(e)?e:function(t){for(const n in e)if(e.hasOwnProperty(n)&&l(t,n)!==e[n])return!1;return!0},r=r.bind(n);for(let e=0;e<t.length;++e)if(!0===r(t[e]))return t[e];return null},this.forEach=function(e,n){return t.forEach(e,n),this},this.map=function(e){return t.map(e)},this.add=function(e){const i=l(e,r);return this.has(i)?(a.warn(`Model ${i} is already in the collection`,t),this):(n[i]=t.push(e)-1,e.on("updated",c,this),e.on("destroyed",s,this),this.trigger("add",e),this.trigger("add:"+i,e),this)},this.remove=function(e,i){const o=l(e,r);t.splice(n[o],1);for(let e=n[o];e<t.length;++e)n[l(t[e],r)]=e;return delete n[o],e.off("updated",c,this),e.off("destroyed",s,this),this.trigger("remove",e,i),this.trigger("remove:"+o,e,i),this},this._triggerAddEvents=function(){this.where.apply(this,arguments).forEach((function(e){this.trigger("add",e),this.trigger("add:"+l(e,r),e)}),this)},this.length=function(){return t.length}};var i=r(n(20)),o=r(n(6));const a=(0,r(n(1)).default)("Collection")},function(e,t,n){"use strict";(function(e){var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(20)),o=r(n(17));const a=(0,r(n(1)).default)("guidStorage"),l={};let c,s;l.override=e=>{if(function(e){return!((0,i.default)(e.get)&&(0,i.default)(e.set))}(e))throw new Error("The storageInterface argument does not seem to be valid, it must implement get and set methods");c!==e&&(c=e,s&&c.set(s,e=>{e&&a.error(`Failed to send initial Guid value (${s}) to the newly assigned Guid Storage. The error was: ${e}`)}))},l.get=e=>{!function(e){s?e(null,s):c.get(e)}((t,n)=>{t?e(t):(n?s||(s=n):(n=(0,o.default)(),c.set(n,t=>{t?e(t):s=n})),e(null,s))})},l.getAsync=()=>new e((e,t)=>{l.get((n,r)=>n?t(n):e(r))}),l.override({get(e){let t;try{t=(void 0!==typeof window?window:global).localStorage.getItem("opentok_client_id")}catch(e){t||(t=(0,o.default)())}e(null,t)},set(e,t){try{(void 0!==typeof window?window:global).localStorage.setItem("opentok_client_id",e)}catch(e){}t(null)}}),l.set=e=>{s=e};var d=l;t.default=d}).call(this,n(2))},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(11)),o=r(n(3));let a;const l=["description","fileName","lineNumber","message","name","number","stack"],c=function(e,t,n){switch(arguments.length){case 1:(0,i.default)(e)&&(n=e,t=void 0,e=void 0);break;case 2:(0,i.default)(t)&&(n=t,t=void 0)}if(n instanceof Error)for(let e=0,t=l.length;e<t;++e)this[l[e]]=n[l[e]];else if((0,i.default)(n))for(const e in n)n.hasOwnProperty(e)&&(this[e]=n[e]);if(!(this.fileName&&this.lineNumber&&this.columnNumber&&this.stack)){const e=a();!this.fileName&&e.fileName&&(this.fileName=e.fileName),!this.lineNumber&&e.lineNumber&&(this.lineNumber=e.lineNumber),!this.columnNumber&&e.columnNumber&&(this.columnNumber=e.columnNumber),!this.stack&&e.stack&&(this.stack=e.stack)}!this.message&&e&&(this.message=e),this.name&&"Error"!==this.name||!t||(this.name=t)};(c.prototype=Object.create(Error.prototype)).toString=function(){let e="";return this.fileName&&(e+=" "+this.fileName),this.lineNumber&&(e+=" "+this.lineNumber,this.columnNumber&&(e+=":"+this.columnNumber)),`<${this.name?this.name+" ":""}${this.message}${e}>`},c.prototype.valueOf=c.prototype.toString;const s=function(e,t){return t.slice(2).map(e=>{const t={fileName:e.getFileName(),linenumber:e.getLineNumber(),columnNumber:e.getColumnNumber()};return e.getFunctionName()&&(t.functionName=e.getFunctionName()),e.getMethodName()&&(t.methodName=e.getMethodName()),e.getThis()&&(t.self=e.getThis()),t})};a=function(){const e={};let t,n,r;switch(o.default.name){case"Firefox":case"Safari":try{(void 0!==typeof window?window:global).call.js.is.explody()}catch(e){r=e}t=(r.stack||"").split("\n"),t.shift(),t.shift(),e.stack=t,n=/@(.+?):([0-9]+)(:([0-9]+))?$/.exec(t[0]),n&&(e.fileName=n[1],e.lineNumber=parseInt(n[2],10),n.length>3&&(e.columnNumber=parseInt(n[4],10)));break;case"Chrome":case"Node":case"Opera":var i=Error.prepareStackTrace;Error.prepareStackTrace=s,r=new Error,e.stack=r.stack,Error.prepareStackTrace=i;var a=e.stack[0];e.lineNumber=a.lineNumber,e.columnNumber=a.columnNumber,e.fileName=a.fileName,a.functionName&&(e.functionName=a.functionName),a.methodName&&(e.methodName=a.methodName),a.self&&(e.self=a.self);break;default:r=new Error,r.stack&&(e.stack=r.stack.split("\n"))}return r.message&&(e.message=r.message),e};var d=c;t.default=d},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e){void 0===e&&(e={});const t=e.Errors||o.default,n=e.otError||(0,i.default)(),r={};(void 0!==typeof window?window:global).MediaError&&(r[(void 0!==typeof window?window:global).MediaError.MEDIA_ERR_ABORTED]={name:t.MEDIA_ERR_ABORTED,message:"The fetching process for the media resource was aborted by the user agent at the user's request."},r[(void 0!==typeof window?window:global).MediaError.MEDIA_ERR_NETWORK]={name:t.MEDIA_ERR_NETWORK,message:"A network error of some description caused the user agent to stop fetching the media resource, after the resource was established to be usable."},r[(void 0!==typeof window?window:global).MediaError.MEDIA_ERR_DECODE]={name:t.MEDIA_ERR_DECODE,message:"An error of some description occurred while decoding the media resource, after the resource was established to be usable."},r[(void 0!==typeof window?window:global).MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED]={name:t.MEDIA_ERR_SRC_NOT_SUPPORTED,message:"The media resource indicated by the src attribute was not suitable."});return function(e){const t=r[e.code];return t?n(t.name,new Error("There was an unexpected problem with the Video Stream: "+t.message)):new Error("An unknown error occurred"+(e.message?": "+e.message:"."))}};var i=r(n(15)),o=r(n(8))},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(3)),o=r(n(153)),a=r(n(587));var l=function(e){void 0===e&&(e={});const t=e.hasOwnProperty("env")?e.env:i.default,n=e.createVideoElementUsingNativeAPI||o.default,r=e.createVideoElementForSafari||a.default;let l;return l=null!=t&&t.isSafari?r():n(),l.autoplay=!0,l.playsinline=!0,l.setAttribute("autoplay",""),l.setAttribute("playsinline",""),l};t.default=l},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(51));let o=function(){function e(e,t){var n;let r=(void 0===t?{}:t).requestAnimationFrame,o=void 0===r?(n=window).requestAnimationFrame.bind(n):r;this._lastCalled=(0,i.default)(),this._audioLevel=void 0,this._running=!1,this._requestAnimationFrame=o,this._getAudioLevel=e,this._startLoop()}var t=e.prototype;return t._startLoop=function(){this._running||(this._running=!0,this._requestAnimationFrame(this._loop.bind(this)))},t._loop=function(){this._getAudioLevel((e,t)=>{let n=null;if(!e){for(let e=0;e<t.length;e+=1){const r=t[e];let i=null;if(void 0!==r.audioOutputLevel){const e=parseFloat(r.audioOutputLevel)/32768;isNaN(e)||(i=e)}else void 0!==r.audioLevel&&(i=r.audioLevel);null!==i&&(null===n||i>n)&&(n=i)}this._audioLevel=n,this._running&&(0,i.default)()-this._lastCalled<1e4?this._requestAnimationFrame(this._loop.bind(this)):this._running=!1}})},t.destroy=function(){this._running=!1},t.sample=function(e){if("function"==typeof e)throw new Error("sample no longer takes a callback");return this._startLoop(),this._lastCalled=(0,i.default)(),this._audioLevel},e}();t.default=o},function(e,t,n){"use strict";var r={generateIdentifier:function(){return Math.random().toString(36).substr(2,10)}};r.localCName=r.generateIdentifier(),r.splitLines=function(e){return e.trim().split("\n").map((function(e){return e.trim()}))},r.splitSections=function(e){return e.split("\nm=").map((function(e,t){return(t>0?"m="+e:e).trim()+"\r\n"}))},r.getDescription=function(e){var t=r.splitSections(e);return t&&t[0]},r.getMediaSections=function(e){var t=r.splitSections(e);return t.shift(),t},r.matchPrefix=function(e,t){return r.splitLines(e).filter((function(e){return 0===e.indexOf(t)}))},r.parseCandidate=function(e){for(var t,n={foundation:(t=0===e.indexOf("a=candidate:")?e.substring(12).split(" "):e.substring(10).split(" "))[0],component:parseInt(t[1],10),protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],address:t[4],port:parseInt(t[5],10),type:t[7]},r=8;r<t.length;r+=2)switch(t[r]){case"raddr":n.relatedAddress=t[r+1];break;case"rport":n.relatedPort=parseInt(t[r+1],10);break;case"tcptype":n.tcpType=t[r+1];break;case"ufrag":n.ufrag=t[r+1],n.usernameFragment=t[r+1];break;default:n[t[r]]=t[r+1]}return n},r.writeCandidate=function(e){var t=[];t.push(e.foundation),t.push(e.component),t.push(e.protocol.toUpperCase()),t.push(e.priority),t.push(e.address||e.ip),t.push(e.port);var n=e.type;return t.push("typ"),t.push(n),"host"!==n&&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(" ")},r.parseIceOptions=function(e){return e.substr(14).split(" ")},r.parseRtpMap=function(e){var t=e.substr(9).split(" "),n={payloadType:parseInt(t.shift(),10)};return t=t[0].split("/"),n.name=t[0],n.clockRate=parseInt(t[1],10),n.channels=3===t.length?parseInt(t[2],10):1,n.numChannels=n.channels,n},r.writeRtpMap=function(e){var t=e.payloadType;void 0!==e.preferredPayloadType&&(t=e.preferredPayloadType);var n=e.channels||e.numChannels||1;return"a=rtpmap:"+t+" "+e.name+"/"+e.clockRate+(1!==n?"/"+n:"")+"\r\n"},r.parseExtmap=function(e){var t=e.substr(9).split(" ");return{id:parseInt(t[0],10),direction:t[0].indexOf("/")>0?t[0].split("/")[1]:"sendrecv",uri:t[1]}},r.writeExtmap=function(e){return"a=extmap:"+(e.id||e.preferredId)+(e.direction&&"sendrecv"!==e.direction?"/"+e.direction:"")+" "+e.uri+"\r\n"},r.parseFmtp=function(e){for(var t,n={},r=e.substr(e.indexOf(" ")+1).split(";"),i=0;i<r.length;i++)n[(t=r[i].trim().split("="))[0].trim()]=t[1];return n},r.writeFmtp=function(e){var t="",n=e.payloadType;if(void 0!==e.preferredPayloadType&&(n=e.preferredPayloadType),e.parameters&&Object.keys(e.parameters).length){var r=[];Object.keys(e.parameters).forEach((function(t){e.parameters[t]?r.push(t+"="+e.parameters[t]):r.push(t)})),t+="a=fmtp:"+n+" "+r.join(";")+"\r\n"}return t},r.parseRtcpFb=function(e){var t=e.substr(e.indexOf(" ")+1).split(" ");return{type:t.shift(),parameter:t.join(" ")}},r.writeRtcpFb=function(e){var t="",n=e.payloadType;return void 0!==e.preferredPayloadType&&(n=e.preferredPayloadType),e.rtcpFeedback&&e.rtcpFeedback.length&&e.rtcpFeedback.forEach((function(e){t+="a=rtcp-fb:"+n+" "+e.type+(e.parameter&&e.parameter.length?" "+e.parameter:"")+"\r\n"})),t},r.parseSsrcMedia=function(e){var t=e.indexOf(" "),n={ssrc:parseInt(e.substr(7,t-7),10)},r=e.indexOf(":",t);return r>-1?(n.attribute=e.substr(t+1,r-t-1),n.value=e.substr(r+1)):n.attribute=e.substr(t+1),n},r.parseSsrcGroup=function(e){var t=e.substr(13).split(" ");return{semantics:t.shift(),ssrcs:t.map((function(e){return parseInt(e,10)}))}},r.getMid=function(e){var t=r.matchPrefix(e,"a=mid:")[0];if(t)return t.substr(6)},r.parseFingerprint=function(e){var t=e.substr(14).split(" ");return{algorithm:t[0].toLowerCase(),value:t[1]}},r.getDtlsParameters=function(e,t){return{role:"auto",fingerprints:r.matchPrefix(e+t,"a=fingerprint:").map(r.parseFingerprint)}},r.writeDtlsParameters=function(e,t){var n="a=setup:"+t+"\r\n";return e.fingerprints.forEach((function(e){n+="a=fingerprint:"+e.algorithm+" "+e.value+"\r\n"})),n},r.parseCryptoLine=function(e){var t=e.substr(9).split(" ");return{tag:parseInt(t[0],10),cryptoSuite:t[1],keyParams:t[2],sessionParams:t.slice(3)}},r.writeCryptoLine=function(e){return"a=crypto:"+e.tag+" "+e.cryptoSuite+" "+("object"==typeof e.keyParams?r.writeCryptoKeyParams(e.keyParams):e.keyParams)+(e.sessionParams?" "+e.sessionParams.join(" "):"")+"\r\n"},r.parseCryptoKeyParams=function(e){if(0!==e.indexOf("inline:"))return null;var t=e.substr(7).split("|");return{keyMethod:"inline",keySalt:t[0],lifeTime:t[1],mkiValue:t[2]?t[2].split(":")[0]:void 0,mkiLength:t[2]?t[2].split(":")[1]:void 0}},r.writeCryptoKeyParams=function(e){return e.keyMethod+":"+e.keySalt+(e.lifeTime?"|"+e.lifeTime:"")+(e.mkiValue&&e.mkiLength?"|"+e.mkiValue+":"+e.mkiLength:"")},r.getCryptoParameters=function(e,t){return r.matchPrefix(e+t,"a=crypto:").map(r.parseCryptoLine)},r.getIceParameters=function(e,t){var n=r.matchPrefix(e+t,"a=ice-ufrag:")[0],i=r.matchPrefix(e+t,"a=ice-pwd:")[0];return n&&i?{usernameFragment:n.substr(12),password:i.substr(10)}:null},r.writeIceParameters=function(e){return"a=ice-ufrag:"+e.usernameFragment+"\r\na=ice-pwd:"+e.password+"\r\n"},r.parseRtpParameters=function(e){for(var t={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},n=r.splitLines(e)[0].split(" "),i=3;i<n.length;i++){var o=n[i],a=r.matchPrefix(e,"a=rtpmap:"+o+" ")[0];if(a){var l=r.parseRtpMap(a),c=r.matchPrefix(e,"a=fmtp:"+o+" ");switch(l.parameters=c.length?r.parseFmtp(c[0]):{},l.rtcpFeedback=r.matchPrefix(e,"a=rtcp-fb:"+o+" ").map(r.parseRtcpFb),t.codecs.push(l),l.name.toUpperCase()){case"RED":case"ULPFEC":t.fecMechanisms.push(l.name.toUpperCase())}}}return r.matchPrefix(e,"a=extmap:").forEach((function(e){t.headerExtensions.push(r.parseExtmap(e))})),t},r.writeRtpDescription=function(e,t){var n="";n+="m="+e+" ",n+=t.codecs.length>0?"9":"0",n+=" UDP/TLS/RTP/SAVPF ",n+=t.codecs.map((function(e){return void 0!==e.preferredPayloadType?e.preferredPayloadType:e.payloadType})).join(" ")+"\r\n",n+="c=IN IP4 0.0.0.0\r\n",n+="a=rtcp:9 IN IP4 0.0.0.0\r\n",t.codecs.forEach((function(e){n+=r.writeRtpMap(e),n+=r.writeFmtp(e),n+=r.writeRtcpFb(e)}));var i=0;return t.codecs.forEach((function(e){e.maxptime>i&&(i=e.maxptime)})),i>0&&(n+="a=maxptime:"+i+"\r\n"),n+="a=rtcp-mux\r\n",t.headerExtensions&&t.headerExtensions.forEach((function(e){n+=r.writeExtmap(e)})),n},r.parseRtpEncodingParameters=function(e){var t,n=[],i=r.parseRtpParameters(e),o=-1!==i.fecMechanisms.indexOf("RED"),a=-1!==i.fecMechanisms.indexOf("ULPFEC"),l=r.matchPrefix(e,"a=ssrc:").map((function(e){return r.parseSsrcMedia(e)})).filter((function(e){return"cname"===e.attribute})),c=l.length>0&&l[0].ssrc,s=r.matchPrefix(e,"a=ssrc-group:FID").map((function(e){return e.substr(17).split(" ").map((function(e){return parseInt(e,10)}))}));s.length>0&&s[0].length>1&&s[0][0]===c&&(t=s[0][1]),i.codecs.forEach((function(e){if("RTX"===e.name.toUpperCase()&&e.parameters.apt){var r={ssrc:c,codecPayloadType:parseInt(e.parameters.apt,10)};c&&t&&(r.rtx={ssrc:t}),n.push(r),o&&((r=JSON.parse(JSON.stringify(r))).fec={ssrc:c,mechanism:a?"red+ulpfec":"red"},n.push(r))}})),0===n.length&&c&&n.push({ssrc:c});var d=r.matchPrefix(e,"b=");return d.length&&(d=0===d[0].indexOf("b=TIAS:")?parseInt(d[0].substr(7),10):0===d[0].indexOf("b=AS:")?1e3*parseInt(d[0].substr(5),10)*.95-16e3:void 0,n.forEach((function(e){e.maxBitrate=d}))),n},r.parseRtcpParameters=function(e){var t={},n=r.matchPrefix(e,"a=ssrc:").map((function(e){return r.parseSsrcMedia(e)})).filter((function(e){return"cname"===e.attribute}))[0];n&&(t.cname=n.value,t.ssrc=n.ssrc);var i=r.matchPrefix(e,"a=rtcp-rsize");t.reducedSize=i.length>0,t.compound=0===i.length;var o=r.matchPrefix(e,"a=rtcp-mux");return t.mux=o.length>0,t},r.parseMsid=function(e){var t,n=r.matchPrefix(e,"a=msid:");if(1===n.length)return{stream:(t=n[0].substr(7).split(" "))[0],track:t[1]};var i=r.matchPrefix(e,"a=ssrc:").map((function(e){return r.parseSsrcMedia(e)})).filter((function(e){return"msid"===e.attribute}));return i.length>0?{stream:(t=i[0].value.split(" "))[0],track:t[1]}:void 0},r.parseSctpDescription=function(e){var t,n=r.parseMLine(e),i=r.matchPrefix(e,"a=max-message-size:");i.length>0&&(t=parseInt(i[0].substr(19),10)),isNaN(t)&&(t=65536);var o=r.matchPrefix(e,"a=sctp-port:");if(o.length>0)return{port:parseInt(o[0].substr(12),10),protocol:n.fmt,maxMessageSize:t};if(r.matchPrefix(e,"a=sctpmap:").length>0){var a=r.matchPrefix(e,"a=sctpmap:")[0].substr(10).split(" ");return{port:parseInt(a[0],10),protocol:a[1],maxMessageSize:t}}},r.writeSctpDescription=function(e,t){var n=[];return n="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&&n.push("a=max-message-size:"+t.maxMessageSize+"\r\n"),n.join("")},r.generateSessionId=function(){return Math.random().toString().substr(2,21)},r.writeSessionBoilerplate=function(e,t,n){var i=void 0!==t?t:2;return"v=0\r\no="+(n||"thisisadapterortc")+" "+(e||r.generateSessionId())+" "+i+" IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},r.writeMediaSection=function(e,t,n,i){var o=r.writeRtpDescription(e.kind,t);if(o+=r.writeIceParameters(e.iceGatherer.getLocalParameters()),o+=r.writeDtlsParameters(e.dtlsTransport.getLocalParameters(),"offer"===n?"actpass":"active"),o+="a=mid:"+e.mid+"\r\n",e.direction?o+="a="+e.direction+"\r\n":e.rtpSender&&e.rtpReceiver?o+="a=sendrecv\r\n":e.rtpSender?o+="a=sendonly\r\n":e.rtpReceiver?o+="a=recvonly\r\n":o+="a=inactive\r\n",e.rtpSender){var a="msid:"+i.id+" "+e.rtpSender.track.id+"\r\n";o+="a="+a,o+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" "+a,e.sendEncodingParameters[0].rtx&&(o+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" "+a,o+="a=ssrc-group:FID "+e.sendEncodingParameters[0].ssrc+" "+e.sendEncodingParameters[0].rtx.ssrc+"\r\n")}return o+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" cname:"+r.localCName+"\r\n",e.rtpSender&&e.sendEncodingParameters[0].rtx&&(o+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" cname:"+r.localCName+"\r\n"),o},r.getDirection=function(e,t){for(var n=r.splitLines(e),i=0;i<n.length;i++)switch(n[i]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return n[i].substr(2)}return t?r.getDirection(t):"sendrecv"},r.getKind=function(e){return r.splitLines(e)[0].split(" ")[0].substr(2)},r.isRejected=function(e){return"0"===e.split(" ",2)[1]},r.parseMLine=function(e){var t=r.splitLines(e)[0].substr(2).split(" ");return{kind:t[0],port:parseInt(t[1],10),protocol:t[2],fmt:t.slice(3).join(" ")}},r.parseOLine=function(e){var t=r.matchPrefix(e,"o=")[0].substr(2).split(" ");return{username:t[0],sessionId:t[1],sessionVersion:parseInt(t[2],10),netType:t[3],addressType:t[4],address:t[5]}},r.isValidSDP=function(e){if("string"!=typeof e||0===e.length)return!1;for(var t=r.splitLines(e),n=0;n<t.length;n++)if(t[n].length<2||"="!==t[n].charAt(1))return!1;return!0},e.exports=r},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){if(-1===["Chrome","Safari","Edge","Opera"].indexOf(e.browserName)||"Edge"===e.browserName&&!e.isChromiumEdge||e.isScreenSharing&&!e.capableSimulcastScreenshare||e.sessionInfo.p2pEnabled||!e.constraints.video&&!e.isCustomVideoTrack||!1===e.scalableVideo)return 1;if(e.videoDimensions.width>640&&e.videoDimensions.height>480)return 3;return 2}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e){const t=(0,o.default)(e);return{constraints:d(t),publishAudio:t.audio.publish,publishVideo:t.video.publish,frameRate:t.frameRate,videoDimensions:t.videoDimensions,audioDeviceId:"string"==typeof t.audio.source?t.audio.source:void 0,videoDeviceId:"string"==typeof t.video.source?t.video.source:void 0}};var i=r(n(278)),o=r(n(610)),a=r(n(160));function l(e,t,n){return!(!e.publish&&t)&&("boolean"==typeof e.source?e.source:n?{mandatory:{sourceId:e.source}}:(0,a.default)(e.source)?{}:{deviceId:{exact:e.source}})}function c(e){let t=l(e.audio,e.enableRenegotiation,e.usingOptionalMandatoryStyle);if(!1===t)return!1;const n=e.usingOptionalMandatoryStyle,r=e.enableStereo,o=e.echoCancellation,a=e.noiseSuppression,c=e.autoGainControl,s=e.disableAudioProcessing,d=e=>{"object"==typeof t&&(n?((0,i.default)(t,{optional:[]}),t.optional.push(e)):(0,i.default)(t,e))};return!r&&!s&&o&&a&&c||!0!==t||(t={}),r&&d({channelCount:2}),["echoCancellation","autoGainControl","noiseSuppression"].forEach(t=>{const n=!s&&e[t];d({[t]:n})}),t}function s(e){let t=l(e.video,e.enableRenegotiation,e.usingOptionalMandatoryStyle);if(!1===t)return!1;const n=e.videoDimensions,r=e.frameRate,o=e.maxResolution,a=e.facingMode,c=e.usingOptionalMandatoryStyle;if((n||r||o||a)&&!0===t&&(t={}),n){const e=n.width,r=n.height;c?((0,i.default)(t,{optional:[]}),t.optional.push({minWidth:e},{maxWidth:e},{minHeight:r},{maxHeight:r})):(0,i.default)(t,{width:{ideal:e},height:{ideal:r}})}return r&&(c?((0,i.default)(t,{optional:[]}),t.optional.push({minFrameRate:r},{maxFrameRate:r})):(0,i.default)(t,{frameRate:{ideal:r}})),o&&(c?(0,i.default)(t,{mandatory:{maxWidth:o.width,maxHeight:o.height}}):(0,i.default)(t,{width:{max:o.width},height:{max:o.height}})),a&&(c?((0,i.default)(t,{optional:[]}),t.optional.push({facingMode:a})):(0,i.default)(t,{facingMode:{ideal:a}})),t}function d(e){return{audio:c(e),video:s(e)}}},function(e,t,n){var r=n(607),i=n(206)((function(e,t,n){r(e,t,n)}));e.exports=i},function(e,t,n){var r=n(64),i=n(54);e.exports=function(e,t,n){(void 0!==n&&!i(e[t],n)||void 0===n&&!(t in e))&&r(e,t,n)}},function(e,t){e.exports=function(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}},function(e,t,n){var r=n(61),i=n(282);e.exports=function(e){return i(r(e).toLowerCase())}},function(e,t,n){var r=n(615)("toUpperCase");e.exports=r},function(e,t){e.exports=function(e,t,n){var r=-1,i=e.length;t<0&&(t=-t>i?0:i+t),(n=n>i?i:n)<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var o=Array(i);++r<i;)o[r]=e[r+t];return o}},function(e,t){var n=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");e.exports=function(e){return n.test(e)}},function(e,t,n){var r=n(617),i=n(284),o=n(618);e.exports=function(e){return i(e)?o(e):r(e)}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(3));const o=i.default.name,a=i.default.version;var l=i.default.isChromiumEdge||"Chrome"===o&&a>=72||"Firefox"===o&&a>=66||"Opera"===o&&a>=60||"Safari"===o;t.default=l},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(3)),o=Boolean(i.default.isChrome&&i.default.version>=74||i.default.isEdge&&i.default.version>=79);t.default=o},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(3));t.default=e=>!!i.default.isElectron&&(e instanceof MediaStreamTrack&&"Screen"===e.label)},function(e,t,n){var r=n(105),i=n(624)(r);e.exports=i},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;t.default=15e3},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r=function(e,t){return void 0===t&&(t=!1),void 0===e?t:"true"===e||!0===e};t.default=r},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e){const t=(0,i.default)(e);if(t.backgroundImageURI){const e=t.backgroundImageURI.split(":")[0];t.backgroundImageURI=-1!==["http","https","data"].indexOf(e)?e:"other"}return t};var i=r(n(62))},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(3));t.default=()=>{if(!(!i.default.isNode&&!i.default.isElectron))return!1;return(i.default.isChrome||i.default.isOpera||i.default.isChromiumEdge)&&i.default.version>=74||i.default.isFirefox&&i.default.version>=68||i.default.isSafari&&i.default.version>=11}},function(e,t){function n(t,r){return e.exports=n=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},n(t,r)}e.exports=n},function(e,t,n){var r=n(11),i=n(639),o=n(247),a=Math.max,l=Math.min;e.exports=function(e,t,n){var c,s,d,u,A,h,g=0,F=!1,Q=!1,p=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function m(t){var n=c,r=s;return c=s=void 0,g=t,u=e.apply(r,n)}function U(e){return g=e,A=setTimeout(Z,t),F?m(e):u}function b(e){var n=e-h;return void 0===h||n>=t||n<0||Q&&e-g>=d}function Z(){var e=i();if(b(e))return B(e);A=setTimeout(Z,function(e){var n=t-(e-h);return Q?l(n,d-(e-g)):n}(e))}function B(e){return A=void 0,p&&c?m(e):(c=s=void 0,u)}function f(){var e=i(),n=b(e);if(c=arguments,s=this,h=e,n){if(void 0===A)return U(h);if(Q)return clearTimeout(A),A=setTimeout(Z,t),m(h)}return void 0===A&&(A=setTimeout(Z,t)),u}return t=o(t)||0,r(n)&&(F=!!n.leading,d=(Q="maxWait"in n)?a(o(n.maxWait)||0,t):d,p="trailing"in n?!!n.trailing:p),f.cancel=function(){void 0!==A&&clearTimeout(A),g=0,c=h=s=A=void 0},f.flush=function(){return void 0===A?u:B(i())},f}},function(e,t,n){var r=n(39),i=n(80),o=n(640),a=n(60),l=n(45),c=n(643),s=n(144),d=n(199),u=s((function(e,t){var n={};if(null==e)return n;var s=!1;t=r(t,(function(t){return t=a(t,e),s||(s=t.length>1),t})),l(e,d(e),n),s&&(n=i(n,7,c));for(var u=t.length;u--;)o(n,t[u]);return n}));e.exports=u},function(e,t,n){var r=n(245),i=n(38),o=n(100),a=Math.max;e.exports=function(e,t,n){var l=null==e?0:e.length;if(!l)return-1;var c=null==n?0:o(n);return c<0&&(c=a(l+c,0)),r(e,i(t,3),c)}},function(e,t,n){var r=n(645);e.exports=function(e){return e&&e.length?r(e):[]}},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r={INACTIVE:"inactive",RECVONLY:"recvonly",SENDONLY:"sendonly",SENDRECV:"sendrecv"};t.default=r},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(4)),o=r(n(5));var a=function(){var e=(0,o.default)(i.default.mark((function e(t,n){var r,o,a;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return!1,r=!0,o=new TextEncoder,e.next=5,window.crypto.subtle.importKey("raw",o.encode(n),{name:"PBKDF2"},!1,["deriveBits","deriveKey"]);case 5:return a=e.sent,e.abrupt("return",window.crypto.subtle.deriveKey({name:"PBKDF2",salt:o.encode(t),iterations:1e5,hash:"SHA-256"},a,{name:"AES-CTR",length:256},r,["encrypt","decrypt"]));case 7:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}();t.default=a},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(653)),o=r(n(304));const a=(0,r(n(111)).default)();t.default=(e,t,n)=>{(0,o.default)(e,t,(e,t)=>{if(e)return void n(e);let r=[];a?"function"==typeof t.values?r=(0,i.default)(t.values()):"function"!=typeof t.forEach?r=Object.keys(t).map(e=>t[e]):t.forEach(e=>{r.push(e)}):t.result().forEach(e=>{const t={};e.names().forEach(n=>{t[n]=e.stat(n)}),t.id=e.id,t.type=e.type,t.timestamp=e.timestamp,r.push(t)}),n(null,r)})}},function(e,t,n){var r=n(33),i=n(14),o=n(21);e.exports=function(e){return"string"==typeof e||!i(e)&&o(e)&&"[object String]"==r(e)}},function(e,t,n){var r=n(655),i=n(34);e.exports=function(e){return null==e?[]:r(e,i(e))}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;const i=(0,r(n(111)).default)();var o=(e,t,n)=>{i?((e,t,n)=>{e.getStats(t).then(e=>n(null,e)).catch(n)})(e,t,n):((e,t)=>{e.getStats(e=>{t(null,e)},t)})(e,n)};t.default=o},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(23)),o=n(12),a=r(n(42)),l=r(n(667)),c=r(n(669)),s=r(n(51));const d=(0,r(n(1)).default)("QoS");let u=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return(t=e.call(this,...r)||this)._peerConnection=void 0,t._isPublisher=void 0,t.timeoutId=void 0,t._creationTime=(0,s.default)(),t.offerMessagesReceived=0,t.prevStats={timeStamp:(0,s.default)()},t.changeCounters={videoCodec:new c.default,audioCodec:new c.default},t}(0,i.default)(t,e);var n=t.prototype;return n.startCollecting=function(e,n){if(!e||!e.getStats)return;this._isPublisher=n;const r=Boolean(this._peerConnection);if(this._peerConnection=e,r)return;const i=e=>{const n=(0,s.default)(),r={timeStamp:n,duration:Math.round((n-this._creationTime)/1e3),period:Math.round((n-this.prevStats.timeStamp)/1e3)};(0,l.default)(this._peerConnection,this.prevStats,r,this._isPublisher,(n,r)=>{n?d.error("Failed to Parse QOS Stats:",n):(this.handleParsedStats(r),clearTimeout(this.timeoutId),this.timeoutId=setTimeout(()=>i(t.INTERVAL),e))})};this.timeoutId=setTimeout(()=>i(t.INTERVAL-t.INITIAL_INTERVAL),t.INITIAL_INTERVAL)},n.stopCollecting=function(){this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=null),this._peerConnection=null},n.handleOfferMessageReceived=function(){this.offerMessagesReceived+=1},n.handleParsedStats=function(e){Object.keys(this.changeCounters).forEach(t=>{this.changeCounters[t].onValue(e[t]),e[t+"ChangeCount"]=this.changeCounters[t].changeCount}),e.offerMessagesReceived=this.offerMessagesReceived;const t=(0,a.default)(e);if(["audioSentBytes","audioSentPackets","audioSentPacketsLost","videoSentBytes","videoSentPackets","videoSentPacketsLost","audioRecvBytes","audioRecvPackets","audioRecvPacketsLost","videoRecvBytes","videoRecvPackets","videoRecvPacketsLost"].forEach(n=>{t[n]=this.prevStats&&this.prevStats[n]?e[n]-this.prevStats[n]:e[n]}),this.prevStats&&this.prevStats.videoFramesReceived){const n=e.videoFramesReceived-this.prevStats.videoFramesReceived,r=e.period;t.videoFrameRateReceived=Math.round(n/r)}this.prevStats=e,delete t.framesDecoded,delete t.framesEncoded,this.emit("stats",t)},t}(o.EventEmitter);u.INITIAL_INTERVAL=1e3,u.INTERVAL=3e4;var A=u;t.default=A},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;t.default=e=>{switch(e>>24){case 0:return"TURN/TLS";case 1:return"TURN/TCP";case 2:return"TURN/UDP";default:return""}}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e){let t=void 0===e?{}:e,n=t.haveGetDisplayMedia,r=void 0===n?l.default:n,c=t.global,s=void 0===c?void 0!==typeof window?window:global:c,d=t.Errors,u=void 0===d?a.default:d,A=t.otError,h=void 0===A?(0,o.default)():A;const g=!r&&!!s.navigator.webkitGetUserMedia&&!s.navigator.userAgent.match(/android/i)&&void 0!==s.chrome;return{isSupportedInThisBrowser:g,autoRegisters:!1,extensionRequired:!0,getConstraintsShowsPermissionUI:!0,sources:{screen:!0,application:!1,window:!0,browser:!0},register(e,t){return 2===t?this.registerVersion2(e):this.registerVersion1(e)},registerVersion1(e){if(!e)throw new Error("initChromeScreenSharingExtensionHelper: extensionID is required.");const t=g,n={};let r=void 0;const o="com.tokbox.screenSharing."+e,a=function(e,t){const n={payload:t,from:"jsapi"};return n[o]=e,n},l=function(e,t){let r;const o=(0,i.default)();return n[o]=function(){clearTimeout(r),r=null,e(...arguments)},t&&(r=setTimeout(()=>{delete n[o],e(h(u.TIMEOUT,new Error("Timeout waiting for response to screensharing request.")))},t)),o},c=function(e){if(!e)throw new Error("isAvailable: callback is required.");if(t)if(void 0!==r)setTimeout(e.bind(null,r));else{const t=l(t=>{!0!==r&&(r="extensionLoaded"===t),e(r)},2e3),n=a("isExtensionInstalled",{requestId:t});s.postMessage(n,"*")}else setTimeout(e.bind(null,!1))};return s.addEventListener("message",e=>{if(e.origin!==s.location.origin)return;if(null==e.data||"object"!=typeof e.data)return;if("extension"!==e.data.from)return;const t=e.data[o],i=e.data.payload;if(i&&i.requestId){const e=n[i.requestId];delete n[i.requestId],e&&e(t,i)}"extensionLoaded"===t&&(r=!0)}),{extensionAPIVersion:1,extensionID:e,isInstalled:c,getConstraints:function(e,t,n){if(!n)throw new Error("getSourceId: callback is required");c(r=>{if(!r)return n(h(u.SCREEN_SHARING_EXTENSION_NOT_INSTALLED,new Error("Extension is not installed")));const i=l((e,r)=>{if("object"==typeof e&&e.name&&e.stack){n(e)}else"permissionDenied"===e?n(h(u.USER_MEDIA_ACCESS_DENIED,new Error("User denied access to screensharing"))):(t.video||(t.video={}),t.video.mandatory||(t.video.mandatory={}),t.video.mandatory.chromeMediaSource="desktop",t.video.mandatory.chromeMediaSourceId=r.sourceId,n(void 0,t))});s.postMessage(a("getSourceId",{requestId:i,source:e}),"*")})}}},registerVersion2(e){const t=g&&void 0!==s.chrome.runtime,n=function(n){if(!n)throw new Error("isAvailable: callback is required.");t?s.chrome.runtime.sendMessage(e,{type:"isInstalled"},null,e=>{setTimeout(n.bind(null,!!e))}):setTimeout(n.bind(null,!1))};return{extensionAPIVersion:2,extensionID:e,isInstalled:n,getConstraints:function(t,r,i){if(!i)throw new Error("getSourceId: callback is required");n(n=>{if(!n)return i(h(u.SCREEN_SHARING_EXTENSION_NOT_INSTALLED,new Error("Extension is not installed")));s.chrome.runtime.sendMessage(e,{type:"getSourceId",source:t},null,e=>{"permissionDenied"===e.error?i(h(u.USER_MEDIA_ACCESS_DENIED,new Error("User denied access to screensharing"))):e.error?i(new Error("UnexpectError: "+e.error)):(r.video||(r.video={}),r.video.mandatory||(r.video.mandatory={}),r.video.mandatory.chromeMediaSource="desktop",r.video.mandatory.chromeMediaSourceId=e.sourceId,i(void 0,r))})})}}}}};var i=r(n(17)),o=r(n(15)),a=r(n(8)),l=r(n(169))},function(e,t,n){"use strict";(function(e){var r=n(0);t.__esModule=!0,t.default=function(t){void 0===t&&(t={});const n=t.Archiving||l.default,r=t.AudioLevelMeter||c.default,Q=t.AudioLevelTransformer||s.default,p=t.BackingBar||d.default,m=t.Chrome||u.default,U=t.MuteButton||(0,A.default)(),b=t.NamePanel||h.default,Z=t.VideoDisabledIndicator||g.default,B=t.StylableComponent||F.default,f=t.logging||(0,i.default)("createChromeMixin");return function(t,i){let l,c,s,d=void 0===i?{}:i,u=d.name,A=d.publishAudio,h=d.publishVideo,g=d.audioSource,F=d.showControls,R=d.shouldAllowAudio,I=d.logAnalyticsEvent;const y={},V=(0,a.default)(),C=e=>{if(!1===e)return"off";const n=t.getStyle("buttonDisplayMode");return!1===n?"on":n};let W=new e((e,i)=>{y.init=i=>{t.getStyle("showArchiveStatus")||I("showArchiveStatus","createChrome",{mode:"off"});const a={backingBar:new p({nameMode:u?t.getStyle("nameDisplayMode"):"off",muteMode:C(t.getStyle("buttonDisplayMode"))}),name:new b({name:u,mode:t.getStyle("nameDisplayMode")}),archive:new n({show:Boolean(t.getStyle("showArchiveStatus"))&&"off"!==t.getStyle("archiveStatusDisplayMode"),archiving:!1}),muteButton:new U({muted:!1===A,mode:C.call(null,t.getStyle("buttonDisplayMode"))})};l=new r({mode:t.getStyle("audioLevelDisplayMode")});const d=new Q,F=new o.default(()=>{const e=A?d.transform(t.loudness):0;l.setValue(e)});l.watchVisibilityChanged(e=>{e?F.start():F.stop()}),l.audioOnly(!h&&A),a.audioLevel=l,a.videoDisabledIndicator=new Z({mode:t.getStyle("videoDisabledDisplayMode")}),i&&i.domElement&&(s=i,c=new m({parent:s.domElement}).set(a).on({muted:()=>t.publishAudio(!1),unmuted:()=>t.publishAudio(!0)}),null!==g&&!1!==g||y.removeAudioTrack(),e())},y.reset=()=>{i(new Error("Chrome still being created")),c&&(c.destroy(),c=null)},y.destroy=()=>{y.reset(),V.releaseAll(),W=null}});W.catch(e=>{e&&"Chrome still being created"===e.message||f.error("createChromeMixin failed to setup UI",e)}),y.setAudioOnly=e=>{l&&l.audioOnly(e)},y.setArchivingStatus=e=>{c&&c.archive.setArchiving(e)},y.setMuted=e=>{c&&c.muteButton&&c.muteButton.muted(e)},y.removeAudioTrack=()=>{c&&c.muteButton&&c.muteButton.remove()},y.addAudioTrack=()=>{c&&c.muteButton&&c.muteButton.add()},y.videoDisabledIndicator={disableVideo:function(){for(var e,t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return null==(e=c)?void 0:e.videoDisabledIndicator.disableVideo(...n)},setWarning:function(){for(var e,t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return null==(e=c)?void 0:e.videoDisabledIndicator.setWarning(...n)}},B(t,{showArchiveStatus:!0,nameDisplayMode:"auto",buttonDisplayMode:"auto",videoDisabledDisplayMode:"auto",audioLevelDisplayMode:R?"auto":"off",archiveStatusDisplayMode:"auto",backgroundImageURI:null},F,e=>{I("SetStyle","Publisher",e,null,.1)});const E=(e,t)=>{W.then(()=>{switch(e){case"nameDisplayMode":c.name.setDisplayMode(t),c.backingBar.setNameMode(t);break;case"showArchiveStatus":I("showArchiveStatus","styleChange",{mode:t?"on":"off"}),c.archive.setShowArchiveStatus(Boolean(t));break;case"archiveStatusDisplayMode":c.archive.setShowArchiveStatus("off"!==t);break;case"buttonDisplayMode":c.muteButton.setDisplayMode(t),c.backingBar.setMuteMode(t);break;case"audioLevelDisplayMode":c.audioLevel.setDisplayMode(t);break;case"backgroundImageURI":s.setBackgroundImageURI(t)}})};return t.on("styleValueChanged",E),V.add(()=>t.off("styleValueChanged",E)),y}};var i=r(n(1)),o=r(n(112)),a=r(n(166)),l=r(n(672)),c=r(n(309)),s=r(n(156)),d=r(n(310)),u=r(n(157)),A=r(n(311)),h=r(n(312)),g=r(n(313)),F=r(n(162))}).call(this,n(2))},function(e,t,n){"use strict";(function(e){var r=n(0);t.__esModule=!0,t.default=function(t){const n=this,r=new i.default;let c,s,d,u,A=!0,h=!1,g="auto";const F=t.maxValue||1,Q=t.minValue||0;function p(){const e=(h&&"auto"===g||"on"===g)&&A;u!==e&&(u=e,r.emit("visibilityChanged",e))}(0,o.default)(n,{audioOnly:{get:()=>h,set(e){h=e,p()}}}),n.setValue=function(e){d=e,function(){const e=(d-Q)/(F-Q);s.style.transform=`scale(${Math.sqrt(e)})`}()},n.watchVisibilityChanged=function(t){return r.on("visibilityChanged",t),e.resolve().then(()=>{t(u)}),function(){r.removeListener("visibilityChanged",t)}};const m={mode:t?t.mode:"auto",nodeName:"div",htmlAttributes:{className:"OT_audio-level-meter"},onCreate:function(){s=l.default.createElement("div",{className:"OT_audio-level-meter__value"},""),c=l.default.createElement("div",{className:"OT_audio-level-meter__audio-only-img"},"");const e=n.domElement;e.appendChild(c),e.appendChild(s),n.watchVisibilityChanged(e=>{e?l.default.removeClass(n.domElement,"OT_hide-forced"):l.default.addClass(n.domElement,"OT_hide-forced")})},onDestroy:function(){r.removeAllListeners("visibilityChanged")}};(0,a.default)(this,m),n.setDisplayMode=function(e){g=e,p()},n.getDisplayMode=function(){return g},n.showAfterLoading=function(){A=!0,p()},n.hideWhileLoading=function(){A=!1,p()},p()};var i=r(n(12)),o=r(n(108)),a=r(n(41)),l=r(n(7))}).call(this,n(2))},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e){let t=e.nameMode,n=e.muteMode;function r(){return"on"===t||"on"===n?"on":"mini"===t||"mini"===n?"mini":"mini-auto"===t||"mini-auto"===n?"mini-auto":"auto"===t||"auto"===n?"auto":"off"}(0,i.default)(this,{mode:r(),nodeName:"div",htmlContent:"",htmlAttributes:{className:"OT_bar OT_edge-bar-item"}}),this.setNameMode=function(e){t=e,this.setDisplayMode(r())},this.setMuteMode=function(e){n=e,this.setDisplayMode(r())}};var i=r(n(41))},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e){void 0===e&&(e={});const t=e.OTHelpers||i.default,n=e.Widget||o.default;return function(e){let r=e.muted||!1;const i=()=>{r?t.addClass(this.domElement,"OT_active"):t.removeClass(this.domElement,"OT_active ")},o=()=>(r=!r,i(),r?this.parent.trigger("muted",this):this.parent.trigger("unmuted",this),!1);(0,a.default)(this,{muted:{get:()=>r,set(e){r=e,i()}}});const l=r?"OT_edge-bar-item OT_mute OT_active":"OT_edge-bar-item OT_mute";let c;n(this,{mode:e.mode,nodeName:"button",htmlContent:"Mute",htmlAttributes:{className:l,type:"button"},onCreate:e=>{t.on(e,"click",o)},onDestroy:e=>{t.off(e,"click",o)}}),this.remove=()=>{this.domElement&&this.domElement.parentNode&&(c=this.domElement.parentNode,this.domElement.parentNode.removeChild(this.domElement))},this.add=()=>{c&&this.domElement&&!this.domElement.parentNode&&c.appendChild(this.domElement)}}};var i=r(n(7)),o=r(n(41)),a=r(n(108))},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e){let t=e.name;t&&""!==t.trim().length||(t=null,e.mode="off");this.setName=function(e){t||this.setDisplayMode("auto"),t=o(e),this.domElement.innerHTML=t}.bind(this),t=o(t),(0,i.default)(this,{mode:e.mode,nodeName:"h1",htmlContent:t,htmlAttributes:{className:"OT_name OT_edge-bar-item"}})};var i=r(n(41));const o=e=>{const t=document.createElement("div");return t.textContent=e,t.innerHTML}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e){let t=!1,n=!1;const r=function(e){const r=["auto","on"].indexOf(this.getDisplayMode())>-1;o.default.removeClass(e,"OT_video-disabled OT_video-disabled-warning OT_active"),r&&(t?o.default.addClass(e,"OT_video-disabled"):n&&o.default.addClass(e,"OT_video-disabled-warning"),o.default.addClass(e,"OT_active"))}.bind(this);this.disableVideo=function(e){t=e,!0===e&&(n=!1),r(this.domElement)},this.setWarning=function(e){n=e,r(this.domElement)},(0,i.default)(this,{mode:e.mode||"auto",nodeName:"div",htmlAttributes:{className:"OT_video-disabled-indicator"}});const a=this.setDisplayMode.bind(this);this.setDisplayMode=function(e){a(e),r(this.domElement)}};var i=r(n(41)),o=r(n(7))},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(3)),o=r(n(169));var a={isSupportedInThisBrowser:!i.default.isLegacyEdge&&!i.default.isElectron&&o.default&&!i.default.isAndroid,autoRegisters:!0,extensionRequired:!1,getConstraintsShowsPermissionUI:!1,sources:{screen:!0,application:!1,window:"Safari"!==i.default.name,browser:"Safari"!==i.default.name},register:()=>({isInstalled(e){e(void 0)},getConstraints(e,t,n){n(void 0,{video:t.video,audio:t.audio})}})};t.default=a},function(e,t,n){"use strict";n.r(t),function(e){var n=function(t,n,r,i){return new(r||(r=e))((function(e,o){function a(e){try{c(i.next(e))}catch(e){o(e)}}function l(e){try{c(i.throw(e))}catch(e){o(e)}}function c(t){t.done?e(t.value):new r((function(e){e(t.value)})).then(a,l)}c((i=i.apply(t,n||[])).next())}))},r=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function l(o){return function(l){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=r[2&o[0]?"return":o[0]?"throw":"next"])&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[0,i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){a.label=o[1];break}if(6===o[0]&&a.label<i[1]){a.label=i[1],i=o;break}if(i&&a.label<i[2]){a.label=i[2],a.ops.push(o);break}i[2]&&a.ops.pop(),a.trys.pop();continue}o=t.call(e,a)}catch(e){o=[6,e],r=0}finally{n=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,l])}}};function i(){return"undefined"!=typeof window||void 0!==typeof window?window:global}t.default=function(t,o,a){return void 0===a&&(a=10),function(){for(var l=[],c=0;c<arguments.length;c++)l[c]=arguments[c];return n(this,void 0,void 0,(function(){var n,c,s;return r(this,(function(d){switch(d.label){case 0:n=0,c=function(){var c,s,d;return r(this,(function(r){switch(r.label){case 0:return r.trys.push([0,2,,6]),c={},[4,t.apply(void 0,l)];case 1:return[2,(c.value=r.sent(),c)];case 2:if(s=r.sent(),!1===(d=o(s,n))||null==d||n>=a)throw s;return"number"!=typeof d?[3,4]:[4,new e((function(e){return i().setTimeout(e,d)}))];case 3:return r.sent(),[3,5];case 4:if(!0!==d)throw new Error("onFailure must return boolean, or delay in ms");r.label=5;case 5:return[3,6];case 6:return[2]}}))},d.label=1;case 1:return(n+=1)?[5,c()]:[3,3];case 2:return"object"==typeof(s=d.sent())?[2,s.value]:[3,1];case 3:return[2]}}))}))}}}.call(this,n(2))},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.setVideoContentHint=t.isValidVideoContentHint=t.getVideoContentHint=void 0;const i=(0,r(n(1)).default)("videoContentHint"),o=["","text","motion","detail"],a=e=>o.includes(e);t.isValidVideoContentHint=a;const l=e=>{var t;return null==e||null==(t=e.getVideoTracks())?void 0:t[0]};t.setVideoContentHint=(e,t)=>{if(!a(t))return void i.warn('Invalid content hint. Valid content hints are "text", "detail", "motion", or ""');const n=l(e);n?void 0!==n.contentHint?n.contentHint=t:i.warn("contentHint not supported by this browser"):i.warn("Tried to set contentHint but no video track is present")};t.getVideoContentHint=e=>{const t=l(e);return(null==t?void 0:t.contentHint)||""}},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r=e=>e&&"object"==typeof e&&"string"==typeof e.kind&&"function"==typeof e.stop&&"boolean"==typeof e.enabled;t.default=r},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(){return function(e,t){let n;(0,i.default)(this,{muted:{get:()=>n,set(t){if(n===t)return;n=t;const r=e.getAudioTracks();for(let e=0,t=r.length;e<t;++e)r[e].enabled=!n}}}),void 0!==t?this.muted(!0===t):e.getAudioTracks().length?this.muted(!e.getAudioTracks()[0].enabled):this.muted(!1)}};var i=r(n(108))},function(e,t,n){"use strict";(function(e){var r=n(0);t.__esModule=!0,t.default=function(t){void 0===t&&(t={});const n=t.getStatsHelpers||p.default,r=t.OTHelpers||m.default,A=t.PeerConnection||(0,U.default)(),f=t.setCertificates||(0,b.default)(),C=t.watchAudioAcquisition||Z.default,W=t.createAudioFallbackStateMachine||s.default,E=t.createCongestionLevelEstimator||d.default,v=t.createNetworkQualityMonitor||u.default,S=t.getDelayForAmrProbe||R.default;return function(t){var s=this;let d,u,p,m,U,b=t.iceConfig,Z=t.webRTCStream,R=t.channels,J=t.sendMessage,G=t.capableSimulcastStreams,N=t.overrideSimulcastEnabled,X=t.logAnalyticsEvent,k=t.offerOverrides,T=t.answerOverrides,Y=t.sourceStreamId,w=t.isP2pEnabled,D=t.sessionId,x=t.keyStore,M=t.sFrameClientStore,H=t.isE2ee,K=t.audioFallbackEnabled,L=!1;const z=function(){this.destroy(),L&&(L=!1,this.trigger("iceRestartFailure")),this.trigger("disconnected")},O=function(e){let t=e.reason,n=e.prefix;this.trigger("error",{reason:t,prefix:n})},j=function(e){L&&d.iceConnectionStateIsConnected()&&(L=!1,this.trigger("iceRestartSuccess")),"connected"===e&&("Chrome"===r.env.name&&(u&&u(),u=C(e=>d.getStats(null,e),()=>{d.iceConnectionStateIsConnected()&&this.trigger("audioAcquisitionProblem")})),this.trigger("connected")),this.trigger("iceConnectionStateChange",e)};this._setVideoTrackEncodingActiveState=function(){var e=(0,o.default)(i.default.mark((function e(t){var n,r;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=s.getSenders().find(e=>"video"===e.track.kind),(r=n.getParameters()).encodings.forEach(e=>{e.active=t}),e.prev=3,e.next=6,n.setParameters(r);case 6:e.next=11;break;case 8:e.prev=8,e.t0=e.catch(3),V.error(e.t0);case 11:case"end":return e.stop()}}),e,null,[[3,8]])})));return function(t){return e.apply(this,arguments)}}(),(0,h.default)(this),this.setCongestionLevel=e=>{var t;null==(t=p)||t.setCongestionLevel(e,{algorithm:"manual"})},this.getAudioFallbackState=()=>{var e;return null==(e=p)?void 0:e.getState()},this.startEncryption=e=>{d&&d.startEncryption(e)},this.changeMediaDirectionToInactive=()=>{d&&d.changeMediaDirectionToInactive()},this.changeMediaDirectionToRecvOnly=()=>{d&&d.changeMediaDirectionToRecvOnly()},this.getDataChannel=function(e,t,n){d.getDataChannel(e,t,n)},this.getSourceStreamId=()=>d.getSourceStreamId(),this.destroy=function(){var e,t;null==(e=m)||e.stop(),null==(t=U)||t.stop(),u&&(u(),u=null),d&&(d.disconnect(),d=null),this.off()},this.processMessage=function(e,t){d.processMessage(e,t)},this.addTrack=function(e,t,n){return d.addTrack(e,t,n)},this.removeTrack=function(e){return d.removeTrack(e)},this.getLocalStreams=function(){return d.getLocalStreams()},this.init=function(e,t){(0,g.default)(Y)&&(0,F.default)(b);const n={iceConfig:b.needRumorIceServersFallback?(0,a.default)(b,{servers:[...e,...b.servers]}):b,channels:R,capableSimulcastStreams:G,overrideSimulcastEnabled:N};f(n,(e,n)=>{if(e)return void t(e);const r=(0,a.default)({logAnalyticsEvent:X,isPublisher:!0,offerOverrides:k,answerOverrides:T,sourceStreamId:Y,p2p:w,sessionId:D,keyStore:x,sFrameClientStore:M,isE2ee:H},n);d=new A((0,a.default)({sendMessage:J},r)),d.on({close:z,error:O,qos:e=>this.trigger("qos",e),iceConnectionStateChange:j},this),d.addLocalStream(Z).then(()=>{t(void 0)}).catch(t)})},this.setIceConfig=e=>{d.setIceConfig(e)},this.generateOffer=()=>{d.generateOfferAndSend()},this.getSenders=function(){return d.getSenders()},this.iceRestart=function(){d&&(L=!0,d.iceRestart())},this.hasRelayCandidates=()=>d.hasRelayCandidates(),this.iceConnectionStateIsConnected=function(){return d.iceConnectionStateIsConnected()},this.findAndReplaceTrack=(e,t)=>d.findAndReplaceTrack(e,t),this._testOnlyGetFramesEncoded=()=>new e((e,t)=>{d.getStats(null,(r,i)=>{if(r)return void t(r);const o=(0,c.default)(i,e=>n.isVideoStat(e,i)&&n.isOutboundStat(e));o?e((0,l.default)(o,["timestamp","framesEncoded"])):t(new Error("Could not find framesEncoded in getStats report"))})}),this.getStats=e=>d.getStats(null,e),this.getRtcStatsReport=e=>d.getRtcStatsReport(null,e),this.setVideoActiveState=e=>{this._setVideoTrackEncodingActiveState(e)},this.setP2PMaxBitrate=(0,o.default)(i.default.mark((function e(){var t,n,r,o,a,l,c;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("P2P"===s.getSourceStreamId()){e.next=2;break}return e.abrupt("return");case 2:if(n=s.getSenders().find(e=>"video"===e.track.kind)){e.next=5;break}return e.abrupt("return");case 5:return r=(null==n||null==(t=n.track)||null==t.getSettings?void 0:t.getSettings())||{},o=r.width,a=r.height,l=(0,Q.default)(o,a),(c=n.getParameters()).encodings.forEach(e=>{e.maxBitrate=l}),e.prev=9,e.next=12,n.setParameters(c);case 12:e.next=16;break;case 14:e.prev=14,e.t0=e.catch(9);case 16:case"end":return e.stop()}}),e,null,[[9,14]])})));const P=function(e){var t,n;let r=(void 0===e?{}:e).isAmrTransition,i=void 0!==r&&r;s._setVideoTrackEncodingActiveState(!1),null==(t=m)||t.stop(),null==(n=U)||n.start(i?{getDelayForProbeNumber:S}:{})};this.disableCongestionLevelEstimation=()=>{var e,t,n;K&&(null==(e=m)||e.stop(),null==(t=U)||t.stop(),null==(n=p)||n.reset())},this.enableCongestionLevelEstimation=e=>{if(K){var t,n;if(null==(t=U)||t.stop(),e){if(p.setInternalState(e),e.videoState===y)return void P({isAmrTransition:!0})}else p.setCongestionLevel(B.CongestionLevels.LOW);null==(n=m)||n.start()}};const _=()=>{p=W({logAnalyticsEvent:X}),p.on("stateChange",e=>{let t=e.state;switch(t){case I:this._setVideoTrackEncodingActiveState(!0);break;case y:P()}this.trigger("audioFallbackStateChange",{state:t})}),m.on("congestionLevel",(e,t)=>{var n;null==(n=p)||n.setCongestionLevel(e,t)}),U.on("networkRecovered",()=>{var e,t;null==(e=p)||e.setCongestionLevel(B.CongestionLevels.LOW),null==(t=m)||t.start()})},q=()=>{m=E({getStats:this.getStats,logAnalyticsEvent:X}),this.on("connected",()=>{m.start()})};K&&((()=>{U=v({getStats:this.getStats,setVideoActive:this._setVideoTrackEncodingActiveState})})(),q(),_())}};var i=r(n(4)),o=r(n(5)),a=r(n(9)),l=r(n(40)),c=r(n(63)),s=r(n(682)),d=r(n(683)),u=r(n(690)),A=r(n(1)),h=r(n(6)),g=r(n(323)),F=r(n(324)),Q=r(n(695)),p=r(n(78)),m=r(n(7)),U=r(n(75)),b=r(n(173)),Z=r(n(697)),B=n(27),f=r(n(77)),R=r(n(698));const I=f.default.ACTIVE_VIDEO,y=f.default.SUSPENDED_VIDEO,V=(0,A.default)("PublisherPeerConnection")}).call(this,n(2))},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(12)),o=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=a(t);if(n&&n.has(e))return n.get(e);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var l=i?Object.getOwnPropertyDescriptor(e,o):null;l&&(l.get||l.set)?Object.defineProperty(r,o,l):r[o]=e[o]}r.default=e,n&&n.set(e,r);return r}(n(687));function a(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(a=function(e){return e?n:t})(e)}var l=function(e,t){void 0===t&&(t={});const n=t.StatsUtils||o,r=new i.default;let a,l;const c=e=>{const t=n.parseStats(e),i=(e=>{let t;return void 0===a&&(a=e),e.audioReportTimestamp!==a.audioReportTimestamp&&(t=void 0!==e.audioFractionLost?e.audioFractionLost:n.getAudioPacketLoss(e,a),a=e),t})(t),o=(e=>{let t;return void 0===l&&(l=e),e.videoReportTimestamp!==l.videoReportTimestamp&&(t=n.getVideoPacketLoss(e,l),l=e),t})(t),c=t.bandwidth,s=t.videoResolution;r.emit("statsAvailable",{audioPacketLoss:i,videoPacketLoss:o,bandwidth:c,videoResolution:s})},s=()=>{e((e,t)=>{e||c(t)})};let d;return Object.assign(r,{start(){d||(d=setTimeout(()=>{s(),d=setInterval(()=>{s()},500)},1e3))},stop(){clearInterval(d),d=void 0,a=void 0,l=void 0}})};t.default=l},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r=function(e){void 0===e&&(e=0);let t,n=e,r=1e4,i=0;return{setPeriod(e){r=e},getMovingAverageValue:()=>n,addValue(e){if(void 0===e||isNaN(e))return;const o=(()=>{const e=Date.now();if(!t)return t=e,1;const n=e-t,i=1-Math.exp(-n/r);return t=e,i})();n=e*o+n*(1-o),i+=1},reset(){n=e,t=void 0,i=0},getDataPointCount:()=>i}};t.default=r},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r=n(113);const i=30*r.ONE_SECOND_IN_MS,o=2*r.ONE_MINUTE_IN_MS,a=[i,r.ONE_MINUTE_IN_MS,o];var l=e=>{var t;return null!=(t=a[e])?t:a[a.length-1]};t.default=l},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(694));t.default=e=>"P2P"===e&&(0,i.default)()},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;t.default=e=>{e.transportPolicy="relay",e.customServers=e.customServers||[]}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e){void 0===e&&(e={});const t=e.OTHelpers||d.default,n=e.PeerConnection||(0,u.default)(),r=e.SinglePeerConnectionAdapter||(0,A.default)(),Q=e.setCertificates||(0,h.default)(),p=e.Errors||g.default,m=e.ExceptionCodes||a.default,U=e.OTErrorClass||l.default,b=e.watchSubscriberAudio||F.default;return function(e){let a=e.clientCandidates,l=e.iceConfig,d=e.send,u=e.logAnalyticsEvent,A=e.p2p,h=e.codecFlags,g=e.sourceStreamId,F=e.remoteConnectionId,Z=e._singlePeerConnectionController,B=e.keyStore,f=e.sFrameClientStore,R=e.isE2ee,I=e.sessionId;const y=this;let V,C=!1,W=!1,E=null;const v=!!Z,S=[],J=[],G=function(){this.destroy(),W&&this.trigger("iceRestartFailure",this),this.trigger("disconnected",this)},N=e=>{let t=e.track,n=e.transceiver,r=e.stream;(e=>{const t="video"===e.kind?S:J;t.includes(e)||t.push(e)})(t),this.trigger("remoteTrackAdded",r,this),R&&V.startDecryption(F,n)},X=e=>{this.trigger("remoteVideoSupported",e)},k=()=>{this.trigger("decryptFailed")},T=()=>{this.trigger("decryptRestored")},Y=function(e){let t=e.reason,n=e.prefix;this.trigger("error",null,t,this,n)},w=function(e){!W||"connected"!==e&&"completed"!==e||(W=!1,this.trigger("iceRestartSuccess")),"connected"===e&&this.trigger("connected"),this.trigger("iceConnectionStateChange",e)},D=function(e){this.trigger("signalingStateChange",e)},x=function(e){this.trigger("signalingStateStable",e)},M=(e,t,n)=>{"answer"!==e&&"pranswer"!==e||this.trigger("connected"),d({type:e,content:t},n)},H=e=>{var t;const n=J[0];null==(t=V)||t.getStats(n,e)};(0,o.default)(this),this._hasAudioTracks=()=>J.length>0,this._hasVideoTracks=()=>S.length>0,this._getVideoTracks=()=>S,this._getAudioTracks=()=>J,this._getTracks=()=>[...J,...S],this.close=function(){C||(C=!0,V&&(V.disconnect(),V=null),this.off())},this.destroy=function(){this.stopAudioStatsWatcher(),C||this.close()},this.getDataChannel=function(e,t,n){V.getDataChannel(e,t,n)},this.getSourceStreamId=()=>V.getSourceStreamId(),this.processMessage=function(e,t){V.processMessage(e,t)},this.remoteDescription=function(){return V.remoteDescription()},this.getStats=function(e){if(V)V.getStats(null,e);else{const n=m.PEER_CONNECTION_NOT_CONNECTED;e(new t.Error(U.getTitleByCode(n),p.PEER_CONNECTION_NOT_CONNECTED,{code:n}))}},this.getAudioStats=function(e){H(e)},this.getSynchronizationSources=function(e){if(V)V.getSynchronizationSources(e);else{const n=m.PEER_CONNECTION_NOT_CONNECTED;e(new t.Error(U.getTitleByCode(n),p.PEER_CONNECTION_NOT_CONNECTED,{code:n}))}},this.getRtcStatsReport=function(e){if(V)V.getRtcStatsReport(null,(t,n)=>{n instanceof RTCStatsReport||Object.getPrototypeOf(n).toString().includes("RTCStatsReport")?e(t,new Map([...n])):e(t,n)});else{const n=m.PEER_CONNECTION_NOT_CONNECTED;e(new t.Error(U.getTitleByCode(n),p.PEER_CONNECTION_NOT_CONNECTED,{code:n}))}},this.setIceConfig=e=>{V.setIceConfig(e)},this.generateOffer=()=>{V.generateOfferAndSend()},this.startAudioStatsWatcher=function(e){E||(E=b(H,e=>{this.stopAudioStatsWatcher(),this.trigger("audioLevelStuckWarning",e)},e))},this.stopAudioStatsWatcher=function(){E&&E.stop(),E=null};const K=function(e){return function(t){const n="video"===e?S:J;V&&V.remoteTracks().forEach(r=>{r.kind===e&&r.enabled!==t&&n.includes(r)&&(r.enabled=t)})}};this.subscribeToAudio=K("audio"),this.subscribeToVideo=K("video"),this.hasRelayCandidates=function(){return V.hasRelayCandidates()},this.iceRestart=function(){return W=!0,V.iceRestart()},this.iceConnectionStateIsConnected=function(){return V.iceConnectionStateIsConnected()},this.init=function(e){(0,c.default)(g)&&(0,s.default)(l);Q({iceConfig:l},(t,o)=>{if(t)return void e(t);const l=(0,i.default)({logAnalyticsEvent:u,clientCandidates:a,codecFlags:h,sourceStreamId:g,keyStore:B,sFrameClientStore:f,isE2ee:R,sessionId:I},o),c=(0,i.default)({sendMessage:M,p2p:A},l,{remoteConnectionId:F});V=v?new r(c,Z):new n(c),V.on({iceConnected:()=>y.emit("iceConnected"),close:G,trackAdded:N,signalingStateChange:D,signalingStateStable:x,error:Y,qos:e=>this.trigger("qos",e),iceConnectionStateChange:w,remoteVideoSupported:X,decryptFailed:k,decryptRestored:T},y),!v&&V.remoteTracks().length>0?V.remoteStreams().forEach(e=>{e.getTracks().forEach(t=>N({stream:e,track:t}))}):e(void 0,y)})}}};var i=r(n(9)),o=r(n(6)),a=r(n(10)),l=r(n(25)),c=r(n(323)),s=r(n(324)),d=r(n(7)),u=r(n(75)),A=r(n(699)),h=r(n(173)),g=r(n(8)),F=r(n(701))},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e){void 0===e&&(e={});const t=e.generateSimpleStateMachine||(0,i.default)(),n=t("NotPublishing",["NotPublishing","GetUserMedia","BindingMedia","MediaBound","PublishingToSession","Publishing","Failed","Destroyed"],{NotPublishing:["NotPublishing","GetUserMedia","Destroyed"],GetUserMedia:["BindingMedia","Failed","NotPublishing","Destroyed"],BindingMedia:["MediaBound","Failed","NotPublishing","Destroyed"],MediaBound:["NotPublishing","PublishingToSession","Failed","Destroyed"],PublishingToSession:["NotPublishing","Publishing","Failed","Destroyed","MediaBound"],Publishing:["NotPublishing","MediaBound","Failed","Destroyed"],Failed:["Destroyed"],Destroyed:[]});return n.prototype.isDestroyed=function(){return"Destroyed"===this.current},n.prototype.isAttemptingToPublish=function(){return-1!==["GetUserMedia","BindingMedia","MediaBound","PublishingToSession"].indexOf(this.current)},n.prototype.isPublishing=function(){return"Publishing"===this.current},n};var i=r(n(170))},function(e,t,n){"use strict";function r(e){this.message=e||"Operation has been canceled.",this.name="CancellationError",Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r,r.prototype=Object.create(Error.prototype),r.prototype.constructor=r},function(e,t,n){var r=n(2);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){return r.resolve(e).then(e=>r.resolve(t()).then(()=>e),e=>r.resolve(t()).then(()=>r.reject(e)))}},function(e,t,n){"use strict";t.__esModule=!0,t.isAmrVideoBufferError=t.createAmrVideoBufferError=void 0;const r="bufferFailed: videoBuffer failed to load or timeout";t.isAmrVideoBufferError=e=>e.message===r;t.createAmrVideoBufferError=()=>new Error(r)},function(e,t,n){"use strict";(function(e){var r=n(0);t.__esModule=!0,t.default=function(t){void 0===t&&(t={});let n=t,r=n.AudioLevelMeter,U=void 0===r?Y.default:r,C=n.AudioLevelTransformer,v=void 0===C?w.default:C,k=n.BackingBar,M=void 0===k?D.default:k,O=n.Chrome,j=void 0===O?x.default:O,$=n.env,ee=void 0===$?Z.default:$,te=n.Errors,Re=void 0===te?Ze:te,Ie=n.Events,Se=void 0===Ie?be:Ie,Je=n.ExceptionCodes,Ge=void 0===Je?y.default:Je,Ne=n.audioLevelSamplerFactory,Xe=void 0===Ne?z.default:Ne,ke=n.getStatsHelpers,Te=void 0===ke?H.default:ke,Ye=n.hasAudioOutputLevelStatCapability,we=void 0===Ye?K.default:Ye,De=n.hasRemoteStreamsWithWebAudio,xe=void 0===De?L.default:De,Me=n.interpretPeerConnectionError,He=void 0===Me?Be:Me,Ke=n.logging,Le=void 0===Ke?Ve:Ke,ze=n.MuteButton,Oe=void 0===ze?fe:ze,je=n.NamePanel,Pe=void 0===je?P.default:je,_e=n.otError,qe=void 0===_e?Ce:_e,$e=n.OTErrorClass,et=void 0===$e?V.default:$e,tt=n.OTHelpers,nt=void 0===tt?_.default:tt,rt=n.StylableComponent,it=void 0===rt?q.default:rt,ot=n.SubscriberPeerConnection,at=void 0===ot?ye:ot,lt=n.SubscribingState,ct=void 0===lt?ne.default:lt,st=n.VideoDisabledIndicator,dt=void 0===st?re.default:st,ut=n.AudioBlockedIndicator,At=void 0===ut?ie.default:ut,ht=n.VideoUnsupportedIndicator,gt=void 0===ht?oe.default:ht,Ft=n.watchFrameRate,Qt=void 0===Ft?ae.default:Ft,pt=n.createSendMethod,mt=void 0===pt?le.default:pt,Ut=n.parseIceServers,bt=void 0===Ut?ce.parseIceServers:Ut,Zt=n.document,Bt=void 0===Zt?(void 0!==typeof window?window:global).document:Zt,ft=n.WidgetView,Rt=void 0===ft?Ue:ft,It=n.createAudioConnector,yt=void 0===It?de.default:It,Vt=n.ResizeObserverPolyfill,Ct=void 0===Vt?p.default:Vt,Wt=n.MediaStream,Et=void 0===Wt?(void 0!==typeof window?window:global).MediaStream:Wt,vt=n.AMRStateDurations,St=n.createMOSScoreHelper,Jt=void 0===St?Qe.default:St,Gt=(0,a.default)(n,me);const Nt=Gt.RESIZE_DEBOUNCE_WAIT||ge.default,Xt=function t(n,r,a){var p,Z=this;if(void 0===r&&(r={}),void 0===a&&(a=()=>{}),void 0===r.analytics)throw new Error("Subscriber requires an instance of analytics");const y=r.analytics,V=(0,c.default)(),C=t.hasAudioOutputLevelStatCapability()||xe(),k=this,Y={},w={},D={},x={},H={},K=(e,t,n)=>{$e&&(0,he.default)($e,t,n),(0,he.default)(e,t,n)},L=yt(D,{updateTrackOnStream:K});let z,O,P,_,q,$,te,ne,re,ie,oe,ae,le,ce,de=!1,ge=n||V,Qe=r.session,me=r.stream;const Ue=r._singlePeerConnectionController,be=void 0!==Ue;let Ze,Be,fe,Ie,ye,Ve=!1,Ce={},Je=null,Ne=!1,ke=!0,Ye=[],we=(0,u.default)({},r,{showControls:!0,testNetwork:!1,fitMode:me.defaultFitMode||"cover",insertDefaultUI:!0,initials:me.initials});const De=Qe.sessionInfo.isAdaptiveEnabled,Me={P2P:W.default.SUBSCRIBER_DISCONNECTED,MANTIS:W.default.SUBSCRIBER_DISCONNECTED};let Ke,ze,je,_e,$e;const tt="Chrome"===ee.name&&ee.version>=58||ee.isChromiumEdge||ee.isOpera,rt=Qe._.getSocket(),ot=(0,B.default)(vt);ot.on("transitionToP2PTimeout",()=>{rt.subscriberDestroy(me.id,this.widgetId,Fe.default.P2P),ye=Fe.default.P2P,ot.completeTransitionTo(ye)});const at=()=>(0,F.default)(w),lt=e=>w[e],st=()=>w[ye],ut=function(){var e=(0,o.default)(i.default.mark((function e(t){var n;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,w[t];case 2:null==(n=e.sent)||n.close(),delete w[t];case 5:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),ht=()=>{at().forEach(function(){var e=(0,o.default)(i.default.mark((function e(t){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t;case 2:e.sent.destroy();case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),Object.keys(w).forEach(e=>{delete w[e]})},Ft=e=>{me.setChannelActiveState(Object.assign({},e,{isSubscriber:!0}))},pt=function(){var e=(0,o.default)(i.default.mark((function e(t){var n,r,o;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t){e.next=2;break}return e.abrupt("return");case 2:return $e&&(i=$e,a=t,(0,he.default)(i,i.getAudioTracks()[0],a.getAudioTracks()[0]),(0,he.default)(i,i.getVideoTracks()[0],a.getVideoTracks()[0])),r={error:Kt,audioVolume:Ze,hasVideo:null==(n=me)?void 0:n.hasVideo},o=De&&"P2P"===ye,e.prev=5,e.next=8,z.bindVideo(t,r,o);case 8:e.next=16;break;case 10:if(e.prev=10,e.t0=e.catch(5),!(e.t0 instanceof l.CancellationError||$.isDestroyed())){e.next=14;break}return e.abrupt("return");case 14:throw Kt(e.t0),e.t0;case 16:case"end":return e.stop()}var i,a}),e,null,[[5,10]])})));return function(t){return e.apply(this,arguments)}}(),Ut=function(){var e=(0,o.default)(i.default.mark((function e(t,n){var r,o,a;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=!1,"function"==typeof t?n=t:r="rtcStatsReport"===t,r?Rn():fn(),!r||E.default){e.next=7;break}return o=Ge.GET_RTC_STATS_REPORT_NOT_SUPPORTED,n(qe(J.default.GET_RTC_STATS_REPORT_NOT_SUPPORTED,new Error(et.getTitleByCode(o)),o)),e.abrupt("return");case 7:if(st()){e.next=11;break}return o=Ge.PEER_CONNECTION_NOT_CONNECTED,n(qe(Re.PEER_CONNECTION_NOT_CONNECTED,new Error(et.getTitleByCode(o)),o)),e.abrupt("return");case 11:return e.next=13,st();case 13:a=e.sent,(r?a.getRtcStatsReport:a.getStats)((e,t)=>{e?(e.code===Ge.PEER_CONNECTION_NOT_CONNECTED&&(e=qe(Re.PEER_CONNECTION_NOT_CONNECTED,e,Ge.PEER_CONNECTION_NOT_CONNECTED)),n(e)):n(null,t)});case 16:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),Zt=e=>Ut(e),ft=e=>!!re&&("video"===e?re.getVideoTracks().length>0:re.getAudioTracks().length>0),Rt=(e,t,n,r,i)=>{let o=(0,d.default)({action:e,variation:t,payload:n,streamId:me?me.id:null,sessionId:Qe?Qe.sessionId:null,connectionId:Qe&&Qe.isConnected()?Qe.connection.connectionId:null,partnerId:Qe&&Qe.sessionInfo?Qe.sessionInfo.partnerId:null,subscriberId:V,widgetType:"Subscriber",singlePeerConnection:!!Ue},r);("Failure"===t||"iceconnectionstatechange"===t&&"closed"===n)&&(o=(0,d.default)(o,Ce));const a=[o];i&&a.push(i),y.logEvent(...a)},It=(e,t,n)=>{"Attempt"===t?(x[e]=(new Date).getTime(),Rt(e,t,n)):"Failure"!==t&&"Success"!==t||Rt(e,t,n,{attemptDuration:(new Date).getTime()-x[e]})},Vt=function(e,t){void 0===t&&(t={}),It("RoutedToRelayedTransition",e,t)},Wt=function(e,t){void 0===t&&(t={}),It("RelayedToRoutedTransition",e,t)},St=(0,I.default)({onInvalidTransition(e,t){const n=`Invalid state transition: Event '${e}' not possible in state '${t}'`;Le.error(n),Rt("Subscriber:InvalidStateTransition","Event",{details:n})}});{const e="Unable to subscribe to stream in a reasonable amount of time";(0,S.default)({connectivityState:St,onWarning(){kt("Warning",{})},onTimeout:()=>{if(z&&z.addError(e),$.isAttemptingToSubscribe()){$.set("Failed"),this._disconnect({noStateTransition:!0});const t=qe(J.default.TIMEOUT,new Error(e),Ge.UNABLE_TO_SUBSCRIBE);St.fail({options:{failureReason:"Subscribe",failureMessage:e,failureCode:Ge.UNABLE_TO_SUBSCRIBE},error:t})}},warningMs:15e3,timeoutMs:3e4})}Y.promise=new e((e,t)=>{Y.resolve=e,Y.reject=t}),we.testNetwork&&Qe.sessionInfo.p2pEnabled&&Le.warn("You cannot test your network with a relayed session. Use a routed session.");const Gt="auto"===we.preferredResolution&&!Qe.sessionInfo.p2pEnabled;if(this.id=ge,this.widgetId=V,this.session=Qe,this.stream=we.stream,me=we.stream,this.streamId=me.id,!Qe)return et.handleJsException({errorMsg:"OT.Subscriber must be passed a session option",code:2e3,target:this,analytics:y}),null;(0,m.default)(this);const Xt={audioQualityScore:void 0,videoQualityScore:void 0};Jt().startMonitoringInterval({getStats:Zt,subscriber:this,getCurrentPeerConnection:st,logging:Le,qosQualityScores:Xt}),k.once("subscribeComplete",(function(){try{a(...arguments)}catch(e){Le.error("Completion handler threw an exception",e)}})),Qe.on("captionReceived",e=>{e.streamId===k.streamId&&(this.dispatchEvent(e),this.trigger(W.default.SUBSCRIBER_CAPTION_RECEIVED,e))});St.observe({onEnterConnecting(){kt("Attempt",null,{})},onEnterConnected(){kt("Success",null,{})},onEnterDisconnected(e,t){let n=void 0===t?{}:t,r=n.options,i=void 0===r?{}:r,o=n.payload,a=void 0===o?null:o;kt((e=>{let t=e.transition,n=e.from;return"fail"===t?"connected"===n?"Disconnect":"Failure":"disconnect"===t&&"connected"===n?"Disconnect":"Cancel"})(e),a,i)}}),St.observe({onEnterConnected:()=>{this.trigger("subscribeComplete",void 0,this)},onEnterDisconnected:function(e,t){let n=e.from,r=(void 0===t?{}:t).error;"connecting"===n&&Z.trigger("subscribeComplete",r||new Error("An unknown error occurred"),Z)}}),(0,R.default)({connectivityState:St,logAttempt(){Rt("Subscribe","Attempting",null,{connectionId:Qe&&Qe.isConnected()?Qe.connection.connectionId:null})}});const kt=function(e,t,n){void 0===t&&(t={}),"Failure"===e||"Success"===e||"Cancel"===e?Rt("Subscribe",e,t,Object.assign({},n,{attemptDuration:(new Date).getTime()-ae})):"Attempt"===e?(ae=(new Date).getTime(),Rt("Subscribe",e,Object.assign({},t,{testNetwork:we.testNetwork}),n)):Rt("Subscribe",e,t,n)},Tt=(e,t)=>{Rt("ICERestart",e,t)},Yt=e=>{var t,n;let r=e.parsedStats,i=e.remoteConnectionId,o=e.peerId,a=e.sourceStreamId;const l=Object.assign({widgetType:"Subscriber",width:z.width,height:z.height,audioTrack:ft("audio"),hasAudio:me&&me.hasAudio,subscribeToAudio:ce,audioVolume:this.getAudioVolume(),videoTrack:ft("video"),connectionId:Qe?Qe.connection.connectionId:null,hasVideo:me&&me.hasVideo,subscribeToVideo:we.subscribeToVideo,congestionLevel:Je,streamId:me.id,subscriberId:V,duration:Math.round(((0,G.default)()-q)/1e3),remoteConnectionId:i,peerId:o,sourceStreamId:(0,se.default)(a),preferredResolutionHeight:null==(t=we.preferredResolution)?void 0:t.height,preferredResolutionWidth:null==(n=we.preferredResolution)?void 0:n.width,preferredFrameRate:we.preferredFrameRate,audioFallback:!ie&&"auto"===oe,initials:me.initials,cpuPerformanceState:Qe._.getCpuPerformanceState()},Xt),c=(0,d.default)(l,r);y.logQOS(c),this.trigger("qos",Object.assign({},y.commonQoSFields(),c))},wt=()=>{!$.isSubscribing()&&z&&z.video()&&(de=!0,Ne||(St.connect(),Ne=!0),Le.debug("OT.Subscriber.onLoaded"),$.set("Subscribing"),q=(0,G.default)(),z.loading(!1),O&&O.showAfterLoading(),Ve&&me.setRestrictFrameRate(!0),_&&_.audioOnly(z.audioOnly()),this.setAudioVolume(Ze),this.trigger("loaded",this))},Dt=()=>me&&me.hasAudio&&ce&&this.getAudioVolume()>0&&!this.isAudioBlocked(),xt=e=>{let t=!1;if(!("audioLevelStuckAt0"===e&&(!Dt()||me&&me.hasVideo))&&(Rt("subscriber:onAudioWarning","Event",{reason:e}),z)){if(z.rebindSrcObject(),Rt("subscriber:rebindSrcObject","Called"),"audioLevelStuck"===e)return;t=!0}Mt(t)},Mt=function(){var e=(0,o.default)(i.default.mark((function e(t){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(void 0===t&&(t=!1),!tt){e.next=6;break}return e.next=4,st();case 4:e.sent.startAudioStatsWatcher(t);case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),Ht=()=>{Le.debug("OT.Subscriber has been disconnected from the Publisher's PeerConnection"),St.fail({options:{failureReason:"PeerConnectionError",failureCode:Ge.UNABLE_TO_PUBLISH,failureMessage:"PeerConnection disconnected"},error:qe(Re.DISCONNECTED,new Error("ClientDisconnected"))}),this._disconnect({noStateTransition:!0}),($.isAttemptingToSubscribe()||$.isSubscribing())&&$.set("Failed")},Kt=e=>{const t=qe(Re.MEDIA_ERR_DECODE,e,e.code||Ge.P2P_CONNECTION_FAILED);t.message="OT.Subscriber while playing stream: "+t.message,Le.error("OT.Subscriber.onVideoError"),St.fail({options:{failureReason:"VideoElement",failureMessage:t.message,failureCode:t.code||Ge.P2P_CONNECTION_FAILED},error:t});const n=$.isAttemptingToSubscribe();$.set("Failed"),n||k.trigger("error",t.message),et.handleJsException({error:t,code:Ge.UNABLE_TO_SUBSCRIBE,target:k,analytics:y})},Lt=e=>{const t=(0,X.default)(e);et.handleJsException({error:t,code:t.code,target:k,analytics:y}),this._disconnect({noStateTransition:!0});const n={failureReason:"Subscribe",failureMessage:"OT.Subscriber PeerConnection Error: "+t.message,failureCode:Ge.P2P_CONNECTION_FAILED};Zn(t.code,t.message),St.fail({options:n,error:qe(t.name,new Error("Subscribe: Subscriber PeerConnection with connection (not found) failed: "+t.message),t.code)}),t.name===J.default.STREAM_NOT_FOUND&&this._destroy({reason:"streamNotFound",noStateTransition:!0})},zt=(e,t,n,r)=>{if("SetRemoteDescription"===r&&!ke&&t.match(/Unsupported video without audio for fallback/)){let e;return z&&z.addError("The stream is unable to be played.","Your browser does not support the video format."),e="Safari"===nt.env.name?new Error("VP8 is not supported in this version of Safari. You might want to consider switching to an H264 project. See https://tokbox.com/developer/sdks/js/safari for more information."):new Error("Video format not supported in this browser."),e.code=Ge.UNSUPPORTED_VIDEO_CODEC,void Kt(e)}if("ICEWorkflow"===r&&Qe.sessionInfo.reconnection&&de)return void Le.debug("Ignoring peer connection failure due to possibility of reconnection.");let i;i="ICEWorkflow"===r?Ge.SUBSCRIBER_ICE_WORKFLOW_FAILED:e===Ge.STREAM_LIMIT_EXCEEDED?e:Ge.P2P_CONNECTION_FAILED;const o={failureReason:r||"PeerConnectionError",failureMessage:"OT.Subscriber PeerConnection Error: "+t,failureCode:i},a=He(e,t,r,"(not found)","Subscriber");if(St.fail({options:o,error:a}),$.isAttemptingToSubscribe()){const e={hasRelayCandidates:n&&n.hasRelayCandidates()};Rt("createPeerConnection","Failure",e,o),$.set("Failed")}else $.isSubscribing()&&($.set("Failed"),this.trigger("error",t));this._disconnect({noStateTransition:!0}),404===Number(e)&&this._destroy({noStateTransition:!0}),et.handleJsException({error:a,errorMsg:"OT.Subscriber PeerConnection Error: "+t,code:i,target:this,analytics:y}),Zn(e)},Ot=e=>{const t=e._hasVideoTracks(),n=e._hasAudioTracks(),r=me&&me.hasVideo&&!t,i=me&&me.hasAudio&&!n;return!(r||i)},jt=function(){var e=(0,o.default)(i.default.mark((function e(t,n){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,ve(()=>Ot(n));case 3:e.next=12;break;case 5:if(e.prev=5,e.t0=e.catch(0),"TIMEOUT"!==e.t0.message){e.next=11;break}Le.error("The expected tracks never arrived"),e.next=12;break;case 11:throw e.t0;case 12:return e.next=14,cn(t,n);case 14:case"end":return e.stop()}}),e,null,[[0,5]])})));return function(t,n){return e.apply(this,arguments)}}(),Pt=(e,t)=>{$e||($e=new Et(e),this.dispatchEvent(new Se.MediaStreamAvailableEvent($e))),re=e,t&&(D[t]=e)},_t=function(){var e=(0,o.default)(i.default.mark((function e(t){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!ie){e.next=5;break}return e.next=3,sn(t);case 3:e.next=6;break;case 5:Ke.destroy();case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),qt=()=>{this.subscribeToAudio(ce),("auto"!==oe||we.subscribeToVideo)&&(oe="loading",this.subscribeToVideo(we.subscribeToVideo,"loading"))},$t=(e,t)=>{e.p2pEnabled||"P2P"===t||(Gt||this.setPreferredResolution(we.preferredResolution),this.setPreferredFrameRate(we.preferredFrameRate))},en=function(){var e=(0,o.default)(i.default.mark((function e(t,n){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!Ke){e.next=3;break}return e.next=3,_t(n);case 3:qt(),$t(t,n);case 5:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),tn=(e,t)=>{e&&e._getVideoTracks().forEach(e=>{e.enabled=!t&&me.hasVideo&&we.subscribeToVideo})},nn=e=>{throw(0,Ae.isAmrVideoBufferError)(e)&&(Le.error("OT.Subscriber: "+e.message),wt(),ot.completeTransitionTo(ye),"P2P"===ye&&rt.subscriberDestroy(me.id,this.widgetId,ye)),e},rn=function(){var e=(0,o.default)(i.default.mark((function e(){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return Rt("BindStream","Attempt"),e.prev=1,e.next=4,pt(re);case 4:e.next=10;break;case 6:e.prev=6,e.t0=e.catch(1),Rt("BindStream","Failure",{message:e.t0.message}),nn(e.t0);case 10:Rt("BindStream","Success");case 11:case"end":return e.stop()}}),e,null,[[1,6]])})));return function(){return e.apply(this,arguments)}}(),on=()=>{var e,t,n;const r=null==(e=z)?void 0:e.video();r&&r.orientation({width:me.videoDimensions.width,height:me.videoDimensions.height,videoOrientation:me.videoDimensions.orientation}),null==(t=O)||null==(n=t.videoUnsupportedIndicator)||n.setVideoUnsupported(!ke)},an=(e,t)=>{((e,t)=>{te&&"webRTCStream"in te&&t._hasAudioTracks()&&te.webRTCStream(e)})(e,t),(0,pe.default)()&&(e=>{fe&&(fe.destroy(),fe=null),e&&(fe=Qt(e.getStats.bind(e)))})(t)},ln=function(){var e=(0,o.default)(i.default.mark((function e(){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(ot.completeTransitionTo(ye),!ce||!L.audioMediaProcessorConnector){e.next=11;break}return e.prev=2,e.next=5,L.applyAudioConnectorOnRoutedToRelayedTransition();case 5:Rt("setAudioMediaProcessorConnector","Success",{message:"Audio connector applied on routed to relayed transition."}),e.next=11;break;case 8:e.prev=8,e.t0=e.catch(2),Rt("setAudioMediaProcessorConnector","Failure",{message:e.t0.message});case 11:case"end":return e.stop()}}),e,null,[[2,8]])})));return function(){return e.apply(this,arguments)}}(),cn=function(){var t=(0,o.default)(i.default.mark((function t(n,r){var o,a,l;return i.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o=null==r?void 0:r.getSourceStreamId(),a=Qe.sessionInfo,Pt(n,o),Le.debug("OT.Subscriber.onRemoteStreamAdded with sourceStreamId",o),$.set("BindingRemoteStream"),t.next=7,en(a,o);case 7:return l=!!(void 0!==typeof window?window:global).webkitMediaStream,tn(r,l),t.prev=9,t.next=12,rn();case 12:t.next=19;break;case 14:if(t.prev=14,t.t0=t.catch(9),!(0,Ae.isAmrVideoBufferError)(t.t0)){t.next=18;break}return t.abrupt("return");case 18:throw t.t0;case 19:if(Mt(),!$.isDestroyed()){t.next=23;break}return Le.error("Subscriber destroyed"),t.abrupt("return");case 23:return tn(r),on(),t.next=27,new e((e,t)=>{var n;const r=null==(n=z)?void 0:n.video();null!=r&&r.domElement()?e():(z.once("videoElementCreated",e),k.once("destroyed",t))});case 27:return t.next=29,Y.promise;case 29:if(de?$.set("Subscribing"):wt(),an(n,r),!De){t.next=34;break}return t.next=34,ln();case 34:case"end":return t.stop()}}),t,null,[[9,14]])})));return function(e,n){return t.apply(this,arguments)}}(),sn=function(){var e=(0,o.default)(i.default.mark((function e(t){var n,r;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return"P2P"===t&&ze&&(n=D.MANTIS.getVideoTracks(),r=n[0],(0,he.default)(D.MANTIS,r,ze)),e.next=3,Hn();case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),dn=e=>{ke!==e&&this.dispatchEvent(new Se.VideoEnabledChangedEvent(e?"videoEnabled":"videoDisabled",{reason:e?"codecChanged":"codecNotSupported"})),ke=e},un=e=>{z.setAudioBlockedUi(e);const t=O&&O.audioBlockedIndicator;t&&t.setAudioBlocked(e);const n=O&&O.videoUnsupportedIndicator;n&&n.setVideoUnsupported(!e&&!ke)};this.on("audioBlocked",()=>{un(!0)}),this.on("audioUnblocked",()=>{un(!1)});const An={new:W.default.SUBSCRIBER_DISCONNECTED,checking:W.default.SUBSCRIBER_DISCONNECTED,connected:W.default.SUBSCRIBER_CONNECTED,completed:W.default.SUBSCRIBER_CONNECTED,disconnected:W.default.SUBSCRIBER_DISCONNECTED,failed:W.default.SUBSCRIBER_DESTROYED},hn=()=>{Le.warn("OT.Subscriber: relayed PeerConnection has failed, rolling back to routed PeerConnection"),rt.subscriberDestroy(me.id,this.widgetId,"P2P"),Rt("AMRMantisRollback","Event")},gn=()=>{Qe._.isSocketConnected()&&setTimeout(()=>{"destroyed"===Me.MANTIS&&this._destroy({reason:"peerConnection is disconnected",noStateTransition:!0})},2e3)},Fn=e=>{const t=Qe.sessionInfo.p2pEnabled;De?(e=>{"P2P"===e?hn():"MANTIS"===ye&&gn()})(e):t||gn()},Qn=(e,t,n)=>{if(Le.debug("OT.Subscriber.connectionStateChanged to "+e),"failed"===e&&!Qe._.isSocketConnected())return;setTimeout(()=>{"failed"===e&&"destroyed"!==Me[n]||this.dispatchEvent(new Se.ConnectionStateChangedEvent(t,this,(0,se.default)(n)))},"failed"===e&&"MANTIS"===n?2e3:0)},pn=(e,t)=>{const n=An[e],r=t.getSourceStreamId(),a=Me[r];if(c=a,(l=n)&&l!==c){var l,c;if(Me[r]=n,"disconnected"===e)(e=>{"P2P"!==e&&setTimeout((0,o.default)(i.default.mark((function t(){return i.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if("disconnected"!==Me[e]||!Qe._.isSocketConnected()){t.next=3;break}return t.next=3,Z._.iceRestart("peer connection disconnected");case 3:case"end":return t.stop()}}),t)}))),2e3)})(r);else if("failed"===e&&(Fn(r),"P2P"===r))return;r===ye&&((e=>{z&&z.loading(e!==W.default.SUBSCRIBER_CONNECTED)})(n),Qn(e,n,r))}},mn=()=>{Tt("Success")},Un=()=>{Tt("Failure",{reason:"ICEWorkflow",message:"OT.Subscriber PeerConnection Error: The stream was unable to connect due to a network error. Make sure your connection isn't blocked by a firewall."})};P={get:()=>me.getChannelsOfType("audio").length>0?k.getStyle("buttonDisplayMode"):"off",update(){const e=P.get();O&&(O.muteButton.setDisplayMode(e),O.backingBar.setMuteMode(e))}};const bn=()=>{const e={backingBar:new M({nameMode:we.name?this.getStyle("nameDisplayMode"):"off",muteMode:P.get()}),name:new Pe({name:we.name,mode:this.getStyle("nameDisplayMode")}),muteButton:new Oe({muted:0===Ze,mode:P.get()})};if(C){const t=new v;_=new U({mode:k.getStyle("audioLevelDisplayMode")});const n=new N.default(()=>{_.setValue(t.transform(this.loudness))});_.watchVisibilityChanged(e=>{e?n.start():n.stop()}),_.setDisplayMode(this.getStyle("audioLevelDisplayMode")),_.audioOnly(!1),e.audioLevel=_}e.videoDisabledIndicator=new dt({mode:this.getStyle("videoDisabledDisplayMode")}),e.audioBlockedIndicator=new At({mode:this.getStyle("audioBlockedDisplayMode")}),e.videoUnsupportedIndicator=new gt({mode:this.getStyle("videoUnsupportedDisplayMode")}),z&&z.domElement&&(O=new j({parent:z.domElement}).set(e).on({muted(){k.setAudioVolume(0)},unmuted(){k.setAudioVolume(Be)}},this),O.hideWhileLoading())},Zn=(e,t)=>{let n,r;z&&(e===Ge.STREAM_LIMIT_EXCEEDED?(n="The stream was unable to connect.",r="The limit for the number of media streams has been reached."):"Tried to subscribe to an encrypted stream without enabling encryption"===t?(n="Unable to subscribe to an encrypted stream without enabling encryption.",r=""):(n="The stream was unable to connect due to a network error.",r=Ne?"Ensure you have a stable connection and try again.":"Make sure you have a stable network connection and that it isn't blocked by a firewall."),z.addError(n,r))};function Bn(e){at().forEach(function(){var t=(0,o.default)(i.default.mark((function t(n){return i.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,n;case 2:t.sent.subscribeToVideo(!e);case 3:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}());const t=e||!re||!re.getVideoTracks().length;z&&(z.audioOnly(t),z.showPoster(t)),_&&_.audioOnly(t)}it(this,{nameDisplayMode:"auto",buttonDisplayMode:"auto",audioLevelDisplayMode:"auto",videoDisabledDisplayMode:"auto",audioBlockedDisplayMode:"auto",backgroundImageURI:null,showArchiveStatus:!0,showMicButton:!0},we.showControls,e=>{Rt("SetStyle","Subscriber",e,null,.1)});const fn=(0,g.default)(()=>{Rt("GetStats","Called")}),Rn=(0,g.default)(()=>{Rt("GetRtcStatsReport","Called")}),In=function(){var e=(0,o.default)(i.default.mark((function e(t){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return ne&&(ne.destroy(),ne=void 0),e.prev=1,e.next=4,ve(()=>t._hasAudioTracks());case 4:e.next=9;break;case 6:return e.prev=6,e.t0=e.catch(1),e.abrupt("return");case 9:te=Xe(t),te?ne=(0,T.default)({subscriber:Z,audioLevelSampler:te}):Object.prototype.hasOwnProperty.call(Z,"loudness")||(Object.defineProperty(Z,"loudness",{value:void 0,configurable:!0,writable:!1}),Le.error("No suitable audio level samplers found, audio level visualisation will not work"));case 11:case"end":return e.stop()}}),e,null,[[1,6]])})));return function(t){return e.apply(this,arguments)}}(),yn=(e,t)=>{if(H[t]){H[t].removeAll();const n=()=>{e.off("error",n),e.off("disconnected",n)};e.on("error",n),e.on("disconnected",n)}const n=(0,b.default)(e);n.once("connected",()=>(e=>{De&&"P2P"===e.getSourceStreamId()&&Vt("Success")})(e)),n.on("disconnected",Ht),n.on("error",zt),n.once("remoteTrackAdded",(0,o.default)(i.default.mark((function t(){var n=arguments;return i.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,In(e);case 2:return t.prev=2,t.next=5,jt(...n);case 5:t.next=10;break;case 7:t.prev=7,t.t0=t.catch(2),Le.error(t.t0);case 10:case"end":return t.stop()}}),t,null,[[2,7]])})))),n.on("audioLevelStuckWarning",xt),n.on("signalingStateStable",(0,o.default)(i.default.mark((function t(){return i.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:k.trigger("signalingStateStable"),z&&z.video()&&re&&te&&"webRTCStream"in te&&e._hasAudioTracks()&&te.webRTCStream(re);case 3:case"end":return t.stop()}}),t)})))),n.on("iceConnectionStateChange",t=>pn(t,e)),n.on("iceRestartSuccess",mn),n.on("iceRestartFailure",Un),n.on("remoteVideoSupported",dn),n.on("decryptFailed",()=>{this.trigger("encryptionSecretMismatch"),Rt("encryptionSecretMismatch","Event"),Le.warn("Media cannot be decrypted due to an encryption secret mismatch.")}),n.on("decryptRestored",()=>{this.trigger("encryptionSecretMatch"),Rt("encryptionSecretMatch","Event")}),H[t]=H},Vn=function(){var e=(0,o.default)(i.default.mark((function e(){var t;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return Vt("Attempt"),e.next=3,lt("MANTIS");case 3:if(null!=(t=e.sent)&&t.iceConnectionStateIsConnected()){e.next=7;break}return Vt("Failure",{reason:"Attempted to transition to Relayed without being connected in Routed mode."}),e.abrupt("return");case 7:rt.subscriberCreate(me.id,V,wn,"P2P",Qe._.isE2ee(),(e,t)=>{e&&!St.is("disconnected")&&Vt("Failure",e),Le.debug("message received when created a subscriber with source",t)});case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),Cn=function(){var e=(0,o.default)(i.default.mark((function e(){var t;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!we.testNetwork&&!We(me,Qe)&&"P2P"===ye){e.next=2;break}return e.abrupt("return");case 2:if(Wt("Attempt"),re=D.MANTIS,!ie||!Ke){e.next=7;break}return e.next=7,Hn();case 7:if(!L.audioMediaProcessorConnector||!ce){e.next=17;break}return e.prev=8,e.next=11,L.applyAudioConnectorOnRelayedToRoutedTransition();case 11:Rt("setAudioMediaProcessorConnector","Success",{message:"Audio connector applied on relayed to routed transition."}),e.next=17;break;case 14:e.prev=14,e.t0=e.catch(8),Rt("setAudioMediaProcessorConnector","Failure",{message:e.t0.message});case 17:return e.next=19,pt(re);case 19:return e.next=21,ut("P2P");case 21:return z.loading(!1),ye="MANTIS",delete D["P2P"],e.next=26,st();case 26:return t=e.sent,e.next=29,In(t);case 29:te.webRTCStream(re),Wt("Success");case 31:case"end":return e.stop()}}),e,null,[[8,14]])})));return function(){return e.apply(this,arguments)}}();this._destroy=e=>{let t=e.reason,n=void 0===t?"Unknown":t,r=e.quiet,i=e.noStateTransition,o=void 0!==i&&i;return $.isDestroyed()||($.set("Destroyed"),fe&&(fe.destroy(),fe=null),Ce={sessionId:Qe.sessionId,connectionId:Qe&&Qe.isConnected()?Qe.connection.connectionId:null,partnerId:Qe&&Qe.sessionInfo?Qe.sessionInfo.partnerId:null,streamId:me&&!me.destroyed?me.id:null},this._disconnect({reason:n,noStateTransition:o}),O&&(O.destroy(),O=null),z&&(z.destroy(),z.off(),z=null,this.element=null),me&&!me.destroyed&&Rt("unsubscribe",null,{streamId:me.id}),me.off(le,this),this.id=null,ge=null,this.stream=null,me=null,this.streamId=null,this.session=null,Qe=null,we=null,!0!==r&&(this.dispatchEvent(new Se.DestroyedEvent(W.default.SUBSCRIBER_DESTROYED,this,n)),this.off())),this},this.destroy=function(e,t){void 0===e&&(e="Unsubscribe"),Le.warn("Subscriber#destroy is deprecated and will be removed. Please use Session#unsubscribe instead"),Z._destroy({reason:e,quiet:t})},this._disconnect=function(e){let t=void 0===e?{}:e,n=t.reason,r=void 0===n?"Unknown":n;if(!t.noStateTransition&&!St.is("disconnected")){const e="Unsubscribe"===r?void 0:qe(Re.STREAM_DESTROYED,new Error("Stream was destroyed before it could be subscribed to"));St.disconnect({payload:{reason:r},error:e})}$.isDestroyed()||$.isFailed()||$.set("NotSubscribing"),z&&z.destroyVideo(),rt.is("connected")&&me&&!me.destroyed&&rt.subscriberDestroy(me.id,Z.widgetId),ht()},this.disconnect=()=>{Le.warn("Subscriber#disconnect is deprecated and will be removed. Please use Session#unsubscribe instead"),this._disconnect({reason:"Unsubscribe"})};const Wn=function(){var e=(0,o.default)(i.default.mark((function e(t){var n,r,o,a,l,c,s;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.peerId,r=t.fromConnectionId,o=t.sourceStreamId,a=Ee({apiKey:Qe.apiKey,sessionId:Qe.sessionId,streamId:me.id,subscriberId:Z.widgetId}),l=mt({socket:Z.session._.getSocket(),uri:a,content:{peerId:n,sourceStreamId:o}}),c=function(e,t,r,i,a){void 0===i&&(i={});const l=Object.assign({peerId:n,sourceStreamId:(0,se.default)(o)},i);return Rt(e,t,r,l,a)},s=e=>{ye===o&&Yt(Object.assign({},e,{peerId:n,remoteConnectionId:r,sourceStreamId:o}))},e.abrupt("return",Z._setupPeerConnection({send:l,log:c,logQoS:s,sourceStreamId:o}));case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();function En(e){const t=z&&z.video();if(t)try{t.setAudioVolume(e)}catch(e){Le.warn("setAudioVolume: "+e),0===Ze&&(Le.info("Using subscribeToAudio to mute Audio because setAudioVolume(0) failed"),k.subscribeToAudio(!1))}O&&O.muteButton.muted(0===e)}this.processMessage=function(){var e=(0,o.default)(i.default.mark((function e(t,n,r){var o,a,l;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return Le.debug(`OT.Subscriber.processMessage: Received ${t} message from ${n}`),Le.debug(r),o=(0,A.default)(r,"content.peerId"),a=(0,A.default)(r,"content.sourceStreamId"),e.next=6,lt(a);case 6:if(!(l=e.sent)){e.next=11;break}l.processMessage(t,r),e.next=16;break;case 11:if("offer"!==t){e.next=16;break}return e.next=14,Wn({peerId:o,fromConnectionId:n,sourceStreamId:a});case 14:l=e.sent,be&&"MANTIS"===a?Ue.addSubscriber(()=>{l.processMessage("offer",r)}):Z.session._.addSubscriberToPeerConnectionsQueue(l,r);case 16:case"end":return e.stop()}}),e)})));return function(t,n,r){return e.apply(this,arguments)}}(),this.disableVideo=e=>{if(e){if("auto"!==oe||!1!==Ie)return Le.info("Video was not re-enabled because it was manually disabled"),void(O&&O.videoDisabledIndicator&&O.videoDisabledIndicator.disableVideo(!1));Le.info("Video has been re-enabled")}else Le.warn("Due to high packet loss and low bandwidth, video has been disabled");this.subscribeToVideo(e,"auto");Rt("updateQuality","video",e?{videoEnabled:!0}:{videoDisabled:!0})},this.getImgData=()=>{if(!this.isSubscribing())return Le.error("OT.Subscriber.getImgData: Cannot getImgData before the Subscriber is subscribing."),null;const e=z&&z.video();return e?e.imgData():null},this.getStats=e=>{Zt((t,n)=>{if(t)return void e(t);const r={timestamp:0};if(n.forEach(e=>{if(Te.isInboundStat(e)){const t=Te.isVideoStat(e,n),i=Te.isAudioStat(e,n);(i||t)&&(r.timestamp=Te.normalizeTimestamp(e.timestamp)),t?((0,h.default)(r,{video:Te.parseStatCategory(e)}),fe&&(0,h.default)(r,{video:{frameRate:fe.getFrameRateFromStat(e)}})):i&&(0,h.default)(r,{audio:Te.parseStatCategory(e)})}}),je){const e=je,t=e.maxBitrateBitsPerSecond,n=e.sentEstimatedBandwidthBitsPerSecond;r.senderStats={senderMaxBitrate:t,senderCurrentBitrate:n}}e(null,r)})},this.getRtcStatsReport=()=>new e((e,t)=>{Ut("rtcStatsReport",(n,r)=>{n?t(n):e(r)})}),this.setAudioVolume=e=>{const t=function(e){return Math.max(0,Math.min(100,parseInt(e,10)))}(e);return Rt("setAudioVolume","Attempt",{audioVolume:t}),isNaN(t)?(Le.error("OT.Subscriber.setAudioVolume: value should be an integer between 0 and 100"),Rt("setAudioVolume","Failure",{message:"value should be an integer between 0 and 100"}),this):(t!==e&&Le.warn("OT.Subscriber.setAudioVolume: value should be an integer between 0 and 100"),t===Ze?(En(Ze),Rt("setAudioVolume","Success",{audioVolume:Ze,message:"Requested volume is same as already set audioVolume"}),this):(Ze>0&&(Be=Ze),Ze=t,En(Ze),Ze>0&&!ce&&(Be=Ze,this.subscribeToAudio(!0)),Rt("setAudioVolume","Success",{audioVolume:Ze}),this))},this.getAudioVolume=()=>{const e=z&&z.video();if(e)try{return e.getAudioVolume()}catch(e){Le.warn("getAudioVolume "+e)}return Ze},this.subscribeToAudio=e=>{const t=(0,f.default)(e,!0);at().forEach(function(){var e=(0,o.default)(i.default.mark((function e(n){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,n;case 2:e.sent.subscribeToAudio(t);case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),me&&0!==at().length&&Ft({channelType:"audio",activeState:t});const n=ce!==t;if(ce=t,n&&this.setAudioVolume(t?Be:0),L.audioMediaProcessorConnector)if(ce)zn();else try{L.resetAudioStreamAndTrack(ye),Rt("setAudioMediaProcessorConnector","Success",{message:"reset the audio track"})}catch(e){Rt("setAudioMediaProcessorConnector","Failure",{message:"Error resetting track: "+e.message})}return Rt("subscribeToAudio","Event",{subscribeToAudio:t}),this};const vn={auto:"quality",publishVideo:"publishVideo",subscribeToVideo:"subscribeToVideo"};if("Safari"===ee.name){const e=()=>{!Bt.hidden&&we.subscribeToVideo&&(Le.debug("document visibility restored in Safari - resubscribing to video"),this.subscribeToVideo(!1),this.subscribeToVideo(!0))};Bt.addEventListener("visibilitychange",e),this.once("destroyed",()=>{Bt.removeEventListener("visibilitychange",e)})}this.subscribeToVideo=(e,t)=>{const n=(0,f.default)(e,!0),r=!n&&"auto"===t;return t||(Ie=!n),r&&(Je=2),Rt("subscribeToVideo","Attempt",{subscribeToVideo:n,reason:t}),Bn(!n||!me.hasVideo||!re),me.hasVideo&&!ft("video")?(n&&Le.info("Subscriber is audio-only due to incompatibility, can't subscribeToVideo."),we.subscribeToVideo=!1,Rt("subscribeToVideo","Failure",{message:"No video tracks available"}),this):(O&&O.videoDisabledIndicator&&O.videoDisabledIndicator.disableVideo(r),at().length>0&&Qe&&me&&(n===we.subscribeToVideo&&t===oe||Ie&&t||Ft({channelType:"video",activeState:n,activeReason:t})),we.subscribeToVideo=n,oe=t,ie=n,Ke&&(ie?Hn():Kn()),Rt("subscribeToVideo","Success",{subscribeToVideo:n,reason:t}),"loading"!==t&&this.dispatchEvent(new Se.VideoEnabledChangedEvent(n?"videoEnabled":"videoDisabled",{reason:vn[t]||"subscribeToVideo"})),this)},this.setPreferredResolution=e=>{if(Sn("Attempt",{preferredResolution:e}),Gt){const t="Cannot call this method directly if in auto mode.";return Sn("Failure",{preferredResolution:e,message:t}),void Le.warn(t)}if("auto"===e){const t="preferredResolution 'auto' cannot be set using setPreferredResolution(), it must be set in subscriberOptions property preferredResolution.";return Sn("Failure",{preferredResolution:e,message:t}),void Le.warn(t)}Jn(e)};const Sn=(e,t)=>{Gt||Rt("setPreferredResolution",e,t)},Jn=e=>{if(this._preferredResolution=e,$.isDestroyed()||0===at().length&&"Connecting"===!$.current){const t="Cannot set the max Resolution when not subscribing to a publisher";return Sn("Failure",{preferredResolution:e,message:t}),void Le.warn(t)}if(we.preferredResolution=e,Qe.sessionInfo.p2pEnabled){const t="OT.Subscriber.setPreferredResolution will not work in a P2P Session";return Sn("Failure",{preferredResolution:e,message:t}),void Le.warn(t)}if(!$.isStreamAdded())return void Sn("Pending");const t=me.getPreferredResolution();t&&e&&t.width===e.width&&t.height===e.height||!t&&!e?Sn("Cancel"):(me.setPreferredResolution(e),Sn("Success"))},Gn=(0,Q.default)(e=>{if(!e)return;const t=e.offsetWidth,n=e.offsetHeight,r=window.devicePixelRatio;Jn({width:t*r,height:n*r})},Nt);var Nn;if(this.setPreferredFrameRate=e=>{if(this._preferredFrameRate=e,$.isDestroyed()||0===at().length&&"Connecting"===!$.current)return void Le.warn("Cannot set the max frameRate when not subscribing to a publisher");if(we.preferredFrameRate=e,Qe.sessionInfo.p2pEnabled)return void Le.warn("OT.Subscriber.setPreferredFrameRate will not work in a P2P Session");const t=me.getPreferredFrameRate();e&&t&&t===e||!t&&!e||me.setPreferredFrameRate(e)},this.isSubscribing=()=>$.isSubscribing(),this.isWebRTC=!0,this.isLoading=()=>z&&z.loading(),this.isAudioBlocked=()=>Boolean(z&&z.isAudioBlocked()),this.videoElement=()=>{const e=z&&z.video();return e?e.domElement():null},this.videoWidth=()=>{const e=z&&z.video();return e?e.videoWidth():void 0},this.videoHeight=()=>{const e=z&&z.video();return e?e.videoHeight():void 0},this._subscribeToSelf=(0,o.default)(i.default.mark((function e(){var t;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((t=Qe.getPublisherForStream(me))&&t._.webRtcStream()){e.next=5;break}St.fail({payload:{reason:"streamNotFound"},error:qe(Re.STREAM_DESTROYED,new Error("Tried to subscribe to a local publisher, but its stream no longer exists"))}),e.next=14;break;case 5:return Y.resolve(),e.prev=6,e.next=9,cn(t._.webRtcStream());case 9:e.next=14;break;case 11:e.prev=11,e.t0=e.catch(6),Le.error(e.t0);case 14:case"end":return e.stop()}}),e,null,[[6,11]])}))),this._setupPeerConnection=function(){var n=(0,o.default)(i.default.mark((function n(r){var o,a,l,c;return i.default.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return o=r.send,a=r.log,l=r.logQoS,c=r.sourceStreamId,we.testNetwork&&Z.setAudioVolume(0),0===at().length&&$.set("Connecting"),ye=c,w[c]=new e((e,n)=>{Qe._.getIceConfig().then(r=>{var i;r.needRumorIceServersFallback&&(r.servers=[...Ye||[],...r.servers||[]]);const s={iceConfig:r,subscriberId:Z.widgetId,send:o,logAnalyticsEvent:a,p2p:Qe.sessionInfo.p2pEnabled,sourceStreamId:c,remoteConnectionId:me.connection.id,_singlePeerConnectionController:"MANTIS"===c&&Ue,keyStore:Qe.keyStore,sFrameClientStore:Qe.sFrameClientStore,isE2ee:Qe._.isE2ee(),sessionId:null==(i=Qe)?void 0:i.sessionId};Object.prototype.hasOwnProperty.call(we,"codecFlags")&&(s.codecFlags=we.codecFlags);const d=new t.SubscriberPeerConnection(s);d.once("iceConnected",Y.resolve),d.once("error",Y.reject),d.on("qos",l),yn(d,c),d.init(t=>{t?n(t):e(d)})})}),n.abrupt("return",w[c]);case 6:case"end":return n.stop()}}),n)})));return function(e){return n.apply(this,arguments)}}(),this.restrictFrameRate=e=>(Le.debug(`OT.Subscriber.restrictFrameRate(${e})`),Rt("restrictFrameRate",e.toString(),{streamId:me.id}),Qe.sessionInfo.p2pEnabled&&Le.warn("OT.Subscriber.restrictFrameRate: Cannot restrictFrameRate on a P2P session"),"boolean"!=typeof e?Le.error("OT.Subscriber.restrictFrameRate: expected a boolean value got a "+typeof e):(Ve=e,me.setRestrictFrameRate(e)),this),this.on("styleValueChanged",(e,t)=>{if(O)switch(e){case"nameDisplayMode":O.name.setDisplayMode(t),O.backingBar.setNameMode(t);break;case"videoUnsupportedDisplayMode":O.videoUnsupportedIndicator.setDisplayMode(t);break;case"videoDisabledDisplayMode":O.videoDisabledIndicator.setDisplayMode(t);break;case"audioBlockedDisplayMode":O.audioBlockedIndicator.setDisplayMode(t);break;case"showArchiveStatus":O.archive.setShowArchiveStatus(t);break;case"buttonDisplayMode":P.update();break;case"audioLevelDisplayMode":O.audioLevel.setDisplayMode(t);break;case"bugDisplayMode":break;case"backgroundImageURI":z.setBackgroundImageURI(t)}},this),this._={getDataChannel:(e,t,n)=>(0,o.default)(i.default.mark((function r(){return i.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(st()){r.next=3;break}return n(new nt.Error("Cannot create a DataChannel before there is a publisher connection.")),r.abrupt("return");case 3:return r.next=5,st();case 5:r.sent.getDataChannel(e,t,n);case 6:case"end":return r.stop()}}),r)})))(),iceRestart:(e,t)=>(0,o.default)(i.default.mark((function n(){var r,o;return i.default.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(void 0===t&&(t=!1),Qe._.isSocketConnected()){n.next=4;break}return Le.debug("Subscriber: Skipping ice restart, websocket is not connected"),n.abrupt("return");case 4:return r=Qe.sessionInfo.p2pEnabled?"P2P":"MANTIS",n.next=7,lt(r);case 7:if(o=n.sent){n.next=11;break}return Le.debug("Subscriber: Skipping ice restart, we have no peer connection"),n.abrupt("return");case 11:Tt("Attempt",{reason:e}),Le.debug("Subscriber: iceRestart attempt"),o.iceRestart(),t&&o.generateOffer();case 15:case"end":return n.stop()}}),n)})))(),unblockAudio:()=>z&&z.unblockAudio(),webRtcStream:()=>re,setIceConfig:(Nn=(0,o.default)(i.default.mark((function e(t){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:at().forEach(function(){var e=(0,o.default)(i.default.mark((function e(n){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,n;case 2:return e.abrupt("return",e.sent.setIceConfig(t));case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}());case 1:case"end":return e.stop()}}),e)}))),function(e){return Nn.apply(this,arguments)}),privateEvents:new s.default,startRoutedToRelayedTransition(){we.testNetwork||We(me,Qe)||(ot.startTransitionToRelayed(),Vn())},startRelayedToRoutedTransition(){ot.startTransitionToRouted(Cn)},setSinkId(e){if(z&&z.video())return z.setSinkId(e);Le.debug("Called setAudioOutputDevice on a subscriber without a video element")},pauseAndPlayVideoElement(){z&&z.pauseAndPlayVideoElement()},get isSubscribingToVideo(){return we.subscribeToVideo},getActiveSourceStreamId:()=>ye},this._onSenderStatsReceived=e=>{let t;try{t=JSON.parse(e.data)}catch(e){return void Le.error("Sender-Stats parsing failed: "+e.message)}je=t},$=new ct(e=>{Le.error("OT.Subscriber State Change Failed: ",e.message),Le.debug(e)}),Le.debug("OT.Subscriber: subscribe to "+me.id),$.set("Init"),!me)return Le.error("OT.Subscriber: No stream parameter."),!1;le={updated:e=>{const t=z&&z.video();switch(e.changedProperty){case"videoDimensions":if(!t)break;t.orientation({width:e.newValue.width,height:e.newValue.height,videoOrientation:e.newValue.orientation}),this.dispatchEvent(new Se.VideoDimensionsChangedEvent(this,e.oldValue,e.newValue));break;case"videoDisableWarning":O&&O.videoDisabledIndicator.setWarning(e.newValue),this.dispatchEvent(new Se.VideoDisableWarningEvent(e.newValue?"videoDisableWarning":"videoDisableWarningLifted")),Je=e.newValue?1:null;break;case"hasVideo":Bn(!me.hasVideo||!we.subscribeToVideo),ee.isSafari&&!me.hasVideo&&z&&z.bindAudioTrackOnly(),this.dispatchEvent(new Se.VideoEnabledChangedEvent(me.hasVideo?"videoEnabled":"videoDisabled",{reason:"publishVideo"}));break;case"hasAudio":P.update()}}},me.on(le,this),we.name=we.name||me.name,we.classNames="OT_root OT_subscriber",we.style&&this.setStyle(we.style,null,!0),Be=100,we.subscribeToVideo=(0,f.default)(we.subscribeToVideo,!0),Ie=!we.subscribeToVideo,we.subscribeToAudio=(0,f.default)(we.subscribeToAudio,!0),this.subscribeToAudio(we.subscribeToAudio),this.setAudioVolume(function(e){if(void 0!==e.audioVolume)return e.audioVolume;if(!1===e.subscribeToAudio)return 0;return 100}(we)),z=new t.WidgetView(n,Object.assign({},we,{widgetType:"subscriber"})),z.on("error",Kt),z.on("audioBlocked",()=>this.trigger("audioBlocked")),z.on("audioUnblocked",()=>this.trigger("audioUnblocked")),z.on("amrLogEvent",(e,t,n)=>{Rt(e,t,{},n)}),z.on("mediaElementEvent",e=>{Rt(e)}),this.id=z.domId(),ge=z.domId(),this.element=z.domElement,z.on("videoElementCreated",e=>{const t=new Se.VideoElementCreatedEvent(e),n=this;de?this.dispatchEvent(t):this.once("loaded",()=>{n.dispatchEvent(t)}),Gt&&e&&(0!==e.height&&0!==e.width&&Gn(e),_e=new Ct(()=>{Gn(e)}),_e.observe(e))}),z.on("destroy",()=>{var e;null==(e=_e)||e.disconnect()}),this.element&&bn.call(this);const Xn=me.getChannelsOfType("audio"),kn=me.getChannelsOfType("video"),Tn=me.getChannelsOfType("data");let Yn=Tn.some(e=>"caption1"===e.id&&e.active);this.subscribeToCaptions=function(){var e=(0,o.default)(i.default.mark((function e(t){var n,r;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=(0,f.default)(t,!0),r={active:n},Yn=n,Rt("subscribeToCaptions","Attempt",{subscribeToCaptions:n}),rt.subscriberChannelUpdate(me.id,Z.widgetId,"caption1",r),Rt("subscribeToCaptions","Success",{subscribeToCaptions:n});case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),this.isSubscribedToCaptions=()=>Yn;const wn=Xn.map(e=>({id:e.id,type:e.type,active:we.subscribeToAudio})).concat(kn.map(e=>{const t={id:e.id,type:e.type,active:we.subscribeToVideo,restrictFrameRate:void 0!==we.restrictFrameRate&&we.restrictFrameRate};return void 0!==we.preferredFrameRate&&(t.preferredFrameRate=parseFloat(we.preferredFrameRate),this._preferredFrameRate=t.preferredFrameRate),void 0!==we.preferredHeight&&(t.preferredHeight=parseInt(we.preferredHeight,10)),void 0!==we.preferredWidth&&(t.preferredWidth=parseInt(we.preferredWidth,10)),t})).concat(Tn.map(e=>({id:e.id,type:e.type,active:e.active}))),Dn=null==(p=me.getChannelsOfType("data")[0])?void 0:p.active,xn=!we.testNetwork&&We(me,Qe)&&!Dn;(()=>{var e;const t=Qe.getPublisherForStream(me);if(null!=t&&null!=(e=t._)&&e.privateEvents&&xn){let e=!1;t._.privateEvents.on("publisherCaptionsEnabled",t=>{!e&&t.captionsEnabled&&(wn.find(e=>"caption1"===e.id).active=!0,Mn(),e=!0)})}})();const Mn=()=>{St.beginConnect(),rt.subscriberCreate(me.id,V,wn,null,Qe._.isE2ee(),(e,t)=>{const n=Object.assign({status:null==t?void 0:t.status},(null==e?void 0:e.message)&&{error:null==e?void 0:e.message});Rt("subscriberCreate","Event",n),e&&!St.is("disconnected")&&Lt(e),Ye=bt(t)})};if(xn)return St.beginConnect(),this._subscribeToSelf(),this;Mn(),this.setVideoMediaProcessorConnector=function(){var e=(0,o.default)(i.default.mark((function e(t){var n;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(Rt("setVideoMediaProcessorConnector","Attempt",{message:t?"setting the connector":"clearing the connector"}),Ln(),t){e.next=6;break}return Kn(),Rt("setVideoMediaProcessorConnector","Success",{message:"clearing the connector"}),e.abrupt("return");case 6:if(ue.default.isValidConnector(t)){e.next=9;break}throw Rt("setVideoMediaProcessorConnector","Failure",{message:"Invalid MediaProcessorConnector"}),qe(J.default.INVALID_PARAMETER,new Error("setVideoMediaProcessorConnector: Tried to set invalid MediaProcessorConnector"));case 9:if(Ke=new ue.default(t),!(n=ot.isTransitioning())&&ie){e.next=14;break}return Rt("setVideoMediaProcessorConnector","Pending",{isTransitioning:n,isVideoEnabled:ie}),e.abrupt("return");case 14:return Kn(),e.prev=15,e.next=18,Hn();case 18:e.next=24;break;case 20:throw e.prev=20,e.t0=e.catch(15),Rt("setVideoMediaProcessorConnector","Failure",{message:e.t0.message}),e.t0;case 24:case"end":return e.stop()}}),e,null,[[15,20]])})));return function(t){return e.apply(this,arguments)}}();const Hn=function(){var e=(0,o.default)(i.default.mark((function e(){var t,n,r;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=re.getVideoTracks(),ze=t[0],ze){e.next=7;break}throw n="Connector not set as no video is present.",Le.warn("setVideoMediaProcessorConnector: "+n),Ke=null,Error("setVideoMediaProcessorConnector","Failure",{message:n});case 7:return e.prev=7,e.next=10,Ke.setTrack(ze);case 10:r=e.sent,K(re,ze,r),Rt("setVideoMediaProcessorConnector","Success"),e.next=20;break;case 15:throw e.prev=15,e.t0=e.catch(7),Ke=null,Le.error("setVideoMediaProcessorConnector: Error getting track from MediaProcessorConnector: "+e.t0),Error("setVideoMediaProcessorConnector","Failure",{message:e.t0.message});case 20:case"end":return e.stop()}}),e,null,[[7,15]])})));return function(){return e.apply(this,arguments)}}(),Kn=()=>{if(ze){try{const e=re.getVideoTracks()[0];K(re,e,ze),Rt("setVideoMediaProcessorConnector","Success",{message:"reset the video track"})}catch(e){throw Le.error("setVideoMediaProcessorConnector: Error resetting track: "+e),Error("setVideoMediaProcessorConnector","Failure",{message:e.message})}ze=null}},Ln=()=>{var e;null==(e=Ke)||e.destroy(),Ke=null};this.setAudioMediaProcessorConnector=function(){var e=(0,o.default)(i.default.mark((function e(t){var n,r;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(Rt("setAudioMediaProcessorConnector","Attempt",{message:t?"setting the connector":"clearing the connector"}),null==L||L.clearAudioMediaProcessorConnector(ye),t){e.next=6;break}return null==L||L.resetAudioStreamAndTrack(),Rt("setAudioMediaProcessorConnector","Success",{message:"clearing the connector"}),e.abrupt("return");case 6:if(ue.default.isValidConnector(t)){e.next=11;break}throw n="Tried to set invalid MediaProcessorConnector",Le.error("setAudioMediaProcessorConnector: "+n),Rt("setAudioMediaProcessorConnector","Failure",{message:n}),qe(J.default.INVALID_PARAMETER,new Error("setAudioVideoMediaProcessorConnector: "+n));case 11:if(L.initializeConnector(t),!(r=ot.isTransitioning())&&ce){e.next=16;break}return Rt("setAudioMediaProcessorConnector","Pending",{isTransitioning:r,subscribingToAudio:ce}),e.abrupt("return");case 16:L.resetAudioStreamAndTrack(),zn();case 18:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();const zn=function(){var e=(0,o.default)(i.default.mark((function e(){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,null==L?void 0:L.setAudioMediaProcessorConnector(ye);case 3:e.next=10;break;case 5:throw e.prev=5,e.t0=e.catch(0),Le.error("setAudioMediaProcessorConnector: "+e.t0.message),Rt("setAudioMediaProcessorConnector","Failure",{message:e.t0.message}),e.t0;case 10:Rt("setAudioMediaProcessorConnector","Success");case 11:case"end":return e.stop()}}),e,null,[[0,5]])})));return function(){return e.apply(this,arguments)}}();return this};return Xt.hasAudioOutputLevelStatCapability=we,Xt.WidgetView=Rt,Xt.SubscriberPeerConnection=at,Xt};var i=r(n(4)),o=r(n(5)),a=r(n(331)),l=n(114),c=r(n(17)),s=r(n(12)),d=r(n(9)),u=r(n(147)),A=r(n(59)),h=r(n(278)),g=r(n(52)),F=r(n(303)),Q=r(n(295)),p=r(n(711)),m=r(n(6)),U=r(n(1)),b=r(n(58)),Z=r(n(3)),B=r(n(332)),f=r(n(291)),R=r(n(712)),I=r(n(713)),y=r(n(10)),V=r(n(25)),C=r(n(714)),W=r(n(30)),E=r(n(335)),v=r(n(15)),S=r(n(715)),J=r(n(8)),G=r(n(51)),N=r(n(112)),X=r(n(716)),k=r(n(176)),T=r(n(717)),Y=r(n(309)),w=r(n(156)),D=r(n(310)),x=r(n(157)),M=r(n(18)),H=r(n(78)),K=r(n(718)),L=r(n(336)),z=r(n(719)),O=r(n(172)),j=r(n(311)),P=r(n(312)),_=r(n(7)),q=r(n(162)),$=r(n(155)),ee=r(n(75)),te=r(n(325)),ne=r(n(337)),re=r(n(313)),ie=r(n(722)),oe=r(n(723)),ae=r(n(724)),le=r(n(338)),ce=n(110),se=r(n(179)),de=r(n(725)),ue=r(n(180)),Ae=n(329),he=r(n(339)),ge=r(n(113)),Fe=r(n(333)),Qe=r(n(727)),pe=r(n(729));const me=["AudioLevelMeter","AudioLevelTransformer","BackingBar","Chrome","env","Errors","Events","ExceptionCodes","audioLevelSamplerFactory","getStatsHelpers","hasAudioOutputLevelStatCapability","hasRemoteStreamsWithWebAudio","interpretPeerConnectionError","logging","MuteButton","NamePanel","otError","OTErrorClass","OTHelpers","StylableComponent","SubscriberPeerConnection","SubscribingState","VideoDisabledIndicator","AudioBlockedIndicator","VideoUnsupportedIndicator","watchFrameRate","createSendMethod","parseIceServers","document","WidgetView","createAudioConnector","ResizeObserverPolyfill","MediaStream","AMRStateDurations","createMOSScoreHelper"],Ue=(0,k.default)(),be=(0,M.default)(),Ze=J.default,Be=(0,O.default)(),fe=(0,j.default)(),Re=(0,$.default)(void 0!==typeof window?window:global),Ie=(0,ee.default)({global:Re}),ye=(0,te.default)({PeerConnection:Ie}),Ve=(0,U.default)("Subscriber"),Ce=(0,v.default)(),We=(e,t)=>e.connection.id===t.connection.id,Ee=e=>["/v2/partner",e.apiKey,"session",e.sessionId,"stream",e.streamId,"subscriber",e.subscriberId].join("/"),ve=(0,C.default)()}).call(this,n(2))},function(e,t){e.exports=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(12)),o=r(n(333)),a=r(n(178));var l=function(e){void 0===e&&(e={});const t=Object.assign({},a.default,e).TRANSITION_TIMEOUT,n=new i.default,r={state:o.default.MANTIS,pendingTransitions:[],timeout:void 0,isTransitioning(){return this.state===o.default.TRANSITIONING},clearTransitionTimeout(){this.timeout&&(clearTimeout(this.timeout),this.timeout=void 0)},startTransitionToRelayed(){this.state=o.default.TRANSITIONING,this.clearTransitionTimeout(),this.timeout=setTimeout(()=>{n.emit("transitionToP2PTimeout")},t)},completeTransitionTo(e){e===o.default.P2P&&(this.clearTransitionTimeout(),this._transitionTo(e))},startTransitionToRouted(e){this.state===o.default.TRANSITIONING?this.pendingTransitions.push({to:o.default.MANTIS,process:e}):this._transitionTo(o.default.MANTIS,e)},_transitionTo(e,t){t&&(this.state=o.default.TRANSITIONING,t()),this.state=e,this._onTransitionCompleted()},_onTransitionCompleted(){if(this.pendingTransitions.length){const e=this.pendingTransitions.shift(),t=e.to,n=e.process;this._transitionTo(t,n)}}};return Object.assign(n,r)};t.default=l},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;t.default={MANTIS:"MANTIS",P2P:"P2P",TRANSITIONING:"TRANSITIONING"}},function(e,t,n){var r;r=function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.i=function(e){return e},n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=5)}([function(e,t,n){"use strict";e.exports=function(e,t){var n,r,i;for(n=1;n<arguments.length;n++)for(i in r=arguments[n])r.hasOwnProperty(i)&&(e[i]=r[i]);return e}},function(e,t,n){"use strict";var r=n(0);e.exports={build:function(e,t){var n,i,o,a=t.plugins;for(n=0,i=a.length;n<i;n++)(o=a[n]).methods&&r(e,o.methods),o.properties&&Object.defineProperties(e,o.properties)},hook:function(e,t,n){var r,i,o,a,l=e.config.plugins,c=[e.context];for(n&&(c=c.concat(n)),r=0,i=l.length;r<i;r++)a=l[r],(o=l[r][t])&&o.apply(a,c)}}},function(e,t,n){"use strict";function r(e){if(0===e.length)return e;var t,n,r=e.split(/[_-]/);if(1===r.length&&r[0][0].toLowerCase()===r[0][0])return e;for(n=r[0].toLowerCase(),t=1;t<r.length;t++)n=n+r[t].charAt(0).toUpperCase()+r[t].substring(1).toLowerCase();return n}r.prepended=function(e,t){return e+(t=r(t))[0].toUpperCase()+t.substring(1)},e.exports=r},function(e,t,n){"use strict";var r=n(0),i=n(2);function o(e,t){e=e||{},this.options=e,this.defaults=t.defaults,this.states=[],this.transitions=[],this.map={},this.lifecycle=this.configureLifecycle(),this.init=this.configureInitTransition(e.init),this.data=this.configureData(e.data),this.methods=this.configureMethods(e.methods),this.map[this.defaults.wildcard]={},this.configureTransitions(e.transitions||[]),this.plugins=this.configurePlugins(e.plugins,t.plugin)}r(o.prototype,{addState:function(e){this.map[e]||(this.states.push(e),this.addStateLifecycleNames(e),this.map[e]={})},addStateLifecycleNames:function(e){this.lifecycle.onEnter[e]=i.prepended("onEnter",e),this.lifecycle.onLeave[e]=i.prepended("onLeave",e),this.lifecycle.on[e]=i.prepended("on",e)},addTransition:function(e){this.transitions.indexOf(e)<0&&(this.transitions.push(e),this.addTransitionLifecycleNames(e))},addTransitionLifecycleNames:function(e){this.lifecycle.onBefore[e]=i.prepended("onBefore",e),this.lifecycle.onAfter[e]=i.prepended("onAfter",e),this.lifecycle.on[e]=i.prepended("on",e)},mapTransition:function(e){var t=e.name,n=e.from,r=e.to;return this.addState(n),"function"!=typeof r&&this.addState(r),this.addTransition(t),this.map[n][t]=e,e},configureLifecycle:function(){return{onBefore:{transition:"onBeforeTransition"},onAfter:{transition:"onAfterTransition"},onEnter:{state:"onEnterState"},onLeave:{state:"onLeaveState"},on:{transition:"onTransition"}}},configureInitTransition:function(e){return"string"==typeof e?this.mapTransition(r({},this.defaults.init,{to:e,active:!0})):"object"==typeof e?this.mapTransition(r({},this.defaults.init,e,{active:!0})):(this.addState(this.defaults.init.from),this.defaults.init)},configureData:function(e){return"function"==typeof e?e:"object"==typeof e?function(){return e}:function(){return{}}},configureMethods:function(e){return e||{}},configurePlugins:function(e,t){var n,r,i;for(n=0,r=(e=e||[]).length;n<r;n++)"function"==typeof(i=e[n])&&(e[n]=i=i()),i.configure&&i.configure(this);return e},configureTransitions:function(e){var t,n,r,i,o,a=this.defaults.wildcard;for(n=0;n<e.length;n++)for(r=e[n],i=Array.isArray(r.from)?r.from:[r.from||a],o=r.to||a,t=0;t<i.length;t++)this.mapTransition({name:r.name,from:i[t],to:o})},transitionFor:function(e,t){var n=this.defaults.wildcard;return this.map[e][t]||this.map[n][t]},transitionsFor:function(e){var t=this.defaults.wildcard;return Object.keys(this.map[e]).concat(Object.keys(this.map[t]))},allStates:function(){return this.states},allTransitions:function(){return this.transitions}}),e.exports=o},function(e,t,n){var r=n(0),i=n(6),o=n(1),a=[null,[]];function l(e,t){this.context=e,this.config=t,this.state=t.init.from,this.observers=[e]}r(l.prototype,{init:function(e){if(r(this.context,this.config.data.apply(this.context,e)),o.hook(this,"init"),this.config.init.active)return this.fire(this.config.init.name,[])},is:function(e){return Array.isArray(e)?e.indexOf(this.state)>=0:this.state===e},isPending:function(){return this.pending},can:function(e){return!this.isPending()&&!!this.seek(e)},cannot:function(e){return!this.can(e)},allStates:function(){return this.config.allStates()},allTransitions:function(){return this.config.allTransitions()},transitions:function(){return this.config.transitionsFor(this.state)},seek:function(e,t){var n=this.config.defaults.wildcard,r=this.config.transitionFor(this.state,e),i=r&&r.to;return"function"==typeof i?i.apply(this.context,t):i===n?this.state:i},fire:function(e,t){return this.transit(e,this.state,this.seek(e,t),t)},transit:function(e,t,n,r){var i=this.config.lifecycle,o=this.config.options.observeUnchangedState||t!==n;return n?this.isPending()?this.context.onPendingTransition(e,t,n):(this.config.addState(n),this.beginTransit(),r.unshift({transition:e,from:t,to:n,fsm:this.context}),this.observeEvents([this.observersForEvent(i.onBefore.transition),this.observersForEvent(i.onBefore[e]),o?this.observersForEvent(i.onLeave.state):a,o?this.observersForEvent(i.onLeave[t]):a,this.observersForEvent(i.on.transition),o?["doTransit",[this]]:a,o?this.observersForEvent(i.onEnter.state):a,o?this.observersForEvent(i.onEnter[n]):a,o?this.observersForEvent(i.on[n]):a,this.observersForEvent(i.onAfter.transition),this.observersForEvent(i.onAfter[e]),this.observersForEvent(i.on[e])],r)):this.context.onInvalidTransition(e,t,n)},beginTransit:function(){this.pending=!0},endTransit:function(e){return this.pending=!1,e},failTransit:function(e){throw this.pending=!1,e},doTransit:function(e){this.state=e.to},observe:function(e){if(2===e.length){var t={};t[e[0]]=e[1],this.observers.push(t)}else this.observers.push(e[0])},observersForEvent:function(e){for(var t,n=0,r=this.observers.length,i=[];n<r;n++)(t=this.observers[n])[e]&&i.push(t);return[e,i,!0]},observeEvents:function(e,t,n,r){if(0===e.length)return this.endTransit(void 0===r||r);var i=e[0][0],a=e[0][1],l=e[0][2];if(t[0].event=i,i&&l&&i!==n&&o.hook(this,"lifecycle",t),0===a.length)return e.shift(),this.observeEvents(e,t,i,r);var c=a.shift(),s=c[i].apply(c,t);return s&&"function"==typeof s.then?s.then(this.observeEvents.bind(this,e,t,i)).catch(this.failTransit.bind(this)):!1===s?this.endTransit(!1):this.observeEvents(e,t,i,s)},onInvalidTransition:function(e,t,n){throw new i("transition is invalid in current state",e,t,n,this.state)},onPendingTransition:function(e,t,n){throw new i("transition is invalid while previous transition is still in progress",e,t,n,this.state)}}),e.exports=l},function(e,t,n){"use strict";var r=n(0),i=n(2),o=n(1),a=n(3),l=n(4),c={is:function(e){return this._fsm.is(e)},can:function(e){return this._fsm.can(e)},cannot:function(e){return this._fsm.cannot(e)},observe:function(){return this._fsm.observe(arguments)},transitions:function(){return this._fsm.transitions()},allTransitions:function(){return this._fsm.allTransitions()},allStates:function(){return this._fsm.allStates()},onInvalidTransition:function(e,t,n){return this._fsm.onInvalidTransition(e,t,n)},onPendingTransition:function(e,t,n){return this._fsm.onPendingTransition(e,t,n)}},s={state:{configurable:!1,enumerable:!0,get:function(){return this._fsm.state},set:function(e){throw Error("use transitions to change state")}}};function d(e){return u(this||{},e)}function u(e,t){return A(e,new a(t,d)),e._fsm(),e}function A(e,t){if("object"!=typeof e||Array.isArray(e))throw Error("StateMachine can only be applied to objects");o.build(e,t),Object.defineProperties(e,s),r(e,c),r(e,t.methods),t.allTransitions().forEach((function(t){e[i(t)]=function(){return this._fsm.fire(t,[].slice.call(arguments))}})),e._fsm=function(){this._fsm=new l(this,t),this._fsm.init(arguments)}}d.version="3.0.1",d.factory=function(){var e,t;"function"==typeof arguments[0]?(e=arguments[0],t=arguments[1]||{}):(e=function(){this._fsm.apply(this,arguments)},t=arguments[0]||{});var n=new a(t,d);return A(e.prototype,n),e.prototype._fsm.config=n,e},d.apply=u,d.defaults={wildcard:"*",init:{name:"init",from:"none"}},e.exports=d},function(e,t,n){"use strict";e.exports=function(e,t,n,r,i){this.message=e,this.transition=t,this.from=n,this.to=r,this.current=i}}])},e.exports=r()},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=(0,r(n(111)).default)();t.default=i},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(3));t.default=()=>["Firefox","Safari","Edge","Chrome","Opera"].indexOf(i.default.name)>-1},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;const i=(0,r(n(170)).default)()("NotSubscribing",["NotSubscribing","Init","Connecting","BindingRemoteStream","Subscribing","Failed","Destroyed"],{NotSubscribing:["NotSubscribing","Init","Destroyed"],Init:["NotSubscribing","Connecting","BindingRemoteStream","Destroyed"],Connecting:["NotSubscribing","BindingRemoteStream","Failed","Destroyed"],BindingRemoteStream:["NotSubscribing","Subscribing","Failed","Destroyed","BindingRemoteStream"],Subscribing:["NotSubscribing","Failed","Destroyed","BindingRemoteStream"],Failed:["Destroyed"],Destroyed:[]});i.prototype.isDestroyed=function(){return"Destroyed"===this.current},i.prototype.isFailed=function(){return"Failed"===this.current},i.prototype.isSubscribing=function(){return"Subscribing"===this.current},i.prototype.isAttemptingToSubscribe=function(){return-1!==["Init","Connecting","BindingRemoteStream"].indexOf(this.current)},i.prototype.isStreamAdded=function(){return"BindingRemoteStream"===this.current||this.isSubscribing()};var o=i;t.default=o},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;t.default=e=>{let t=e.socket,n=e.uri,r=e.content;return(e,i)=>{let o=e.type,a=e.content;return t.send({message:{uri:n,method:o,content:Object.assign({},r,a)}},i)}}},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;t.default=(e,t,n)=>{t!==n&&(e.removeTrack(t),e.addTrack(n))}},function(e,t){e.exports=function(e){if(null==e)throw new TypeError("Cannot destructure undefined")}},function(e,t){function n(){return e.exports=n=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},n.apply(this,arguments)}e.exports=n},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;t.default=e=>{var t;const n=Object.assign({},e);return(null==e||null==(t=e.backgroundImgUrl)?void 0:t.includes("base64"))&&delete n.backgroundImgUrl,n}},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r=n(750),i=n(183);var o={isSupported:()=>"undefined"!=typeof MediaStreamTrackProcessor&&"undefined"!=typeof MediaStreamTrackGenerator,setMetadata:r.setVonageMetadata,createProcessor:i.createVonageMediaProcessor};t.default=o},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(331)),o=n(183),a=r(n(3)),l=r(n(345));const c=["proxyUrl","env"];var s=function(e){void 0===e&&(e={});const t=e,n=t.proxyUrl,r=t.env,s=void 0===r?a.default:r,d=(0,i.default)(t,c),u=(0,l.default)({env:s,proxyUrl:n});return Object.assign({modelAssetUriPath:u+"/ml-transformers/v6.0.0/float16/vonage_selfie_segmenter.tflite",mediapipeBaseAssetsUri:u+"/ml-transformers/v6.0.0/mediapipe/0.10.20",renderingOptions:{type:o.RenderingType.CANVAS}},d)};t.default=s},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(106)),o=r(n(3));var a=e=>{const t=e.env,n=void 0===t?o.default:t,r=e.proxyUrl;let a;return a=n.isProd?"https://static.opentok.com":n.isRel?"https://static.rel.tokbox.com":"https://www.dev.tokbox.com",r&&(a=r.includes("euproxy.opentok.com")?"https://static-eu.opentok.com":(0,i.default)(a,r)),a};t.default=a},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e){void 0===e&&(e={});const t=e.Errors||u.default,n=e.ExceptionCodes||l.default,r=e.logging||(0,a.default)("publisherInit"),Q=e.otError||(0,d.default)(),p=e.OTHelpers||A.default,m=e.Publisher||(0,F.default)(),U=e.sessionObjects||s.default;return function(e,a,l){let s;r.debug(`OT.initPublisher(${e})`),"string"!=typeof e||document.getElementById(e)||(e=a,a=l,l=arguments[3]),"function"==typeof e?(l=e,a=void 0,e=void 0):(0,o.default)(e)&&!p.isElementNode(e)&&(l=a,a=e,e=void 0),"function"==typeof a&&(l=a,a=void 0),a&&((0,o.default)(a)?!1===a.insertDefaultUI&&e?s="You cannot specify a target element if insertDefaultUI is false":(0,c.default)(a.audioSource)&&(0,c.default)(a.videoSource)&&(s="You cannot specify both audioSource and videoSource as null or false"):(s="properties argument to Publisher constructor, if provided, should be an object",a=void 0)),(0,h.default)(a),(0,g.default)(a);const d=new m(a||{});U.publishers.add(d);const u=function(){l&&(0,i.default)(l)&&(l(...arguments),l=void 0)};void 0!==s&&(r.error(s),u(Q(t.INVALID_PARAMETER,new Error(s),n.INVALID_PARAMETER)));const A=function(e){d.off("publishComplete",F),u(e)};let F=function(e){d.off("initSuccess",A),e&&u(e)};return d.once("initSuccess",A),d.once("publishComplete",F),d.publish(e),d}};var i=r(n(20)),o=r(n(11)),a=r(n(1)),l=r(n(10)),c=r(n(767)),s=r(n(26)),d=r(n(15)),u=r(n(8)),A=r(n(7)),h=r(n(768)),g=r(n(769)),F=r(n(181))},function(e,t,n){"use strict";(function(e){var r=n(0);t.__esModule=!0,t.default=function(t){var n;void 0===t&&(t={});const r=t.adaptIceServers||J.adaptIceServers,_=t.AnalyticsHelper||b.default,ne=t.APIKEY||G.default,re=t.Capabilities||N.default,ie=t.convertRumorError||X.default,oe=t.Errors||W.default,ae=t.Events||(0,k.default)(),le=t.Stream||T.default,ce=t.ExceptionCodes||Q.default,se=t.hasIceRestartsCapability||I.default,de=t.hasE2eeCapability||R.default,ue=t.logging||(0,h.default)("Session"),Ae=t.otError||(0,V.default)(),he=t.OTErrorClass||p.default,ge=t.OTHelpers||Y.default,Fe=t.PressureObserver||(null==(n=void 0!==typeof window?window:global)?void 0:n.PressureObserver),Qe=t.StaticConfig||te,pe=t.staticConfig||Qe.onlyLocal(),me=t.Publisher||(0,w.default)(),Ue=t.RaptorSocket||(0,D.default)(),be=t.SessionDispatcher||x.default,Ze=t.sessionObjects||y.default,Be=t.sessionTag||M.default,fe=t.socketCloseCodes||$.default,Re=t.Subscriber||(0,H.default)(),Ie=t.systemRequirements||K.default,ye=t.uuid||u.default,Ve=(0,f.default)({otError:Ae}),Ce=t.global||(void 0!==typeof window?window:global),We=t.getSessionInfo||(0,L.default)(),Ee=t.KeyStore||O.default,ve=t.SFrameClientStore||(0,j.default)(),Se=t.SinglePeerConnectionController||q.default,Je=t.initPublisher||(0,P.default)({Publisher:me});return function(n,u,h){var Q=this;let p=void 0===h?{}:h,b=p.iceConfig,f=p.connectionEventsSuppressed,R=p.ipWhitelist,I=void 0!==R&&R,y=p.encryptionSecret,V=p.singlePeerConnection,W=void 0!==V&&V,J=p._prioritizeVP9,G=void 0!==J&&J;const N=(0,v.getProxyUrl)(),X=new _,k=e=>"string"==typeof e?this.streams.get(e)||{id:e}:e;let T,Y,w,D,x,M,H,K;(0,A.default)(this),this._tag=Be,Ie.check()||Ie.upgrade(),null==u&&(u=n,n=null),Ve(b),this.id=u,this.sessionId=u,this.keyStore=new Ee,this.sFrameClientStore=new ve;let L=!1,O=n;const j=this;let P=u,q=ye(),$=ue,te=!1;const Ge=[];let Ne,Xe,ke,Te,Ye,we=null,De=!1,xe=y;const Me=ge.statable(this,["disconnected","connecting","connected","disconnecting"],"disconnected");let He,Ke,Le;this.connection=null,this.connections=new ge.Collection,this.streams=new ge.Collection,this.archives=new ge.Collection,Fe&&(Ke=new ee.default,Ke.initMonitoring(Fe),Ke.startMonitoring(),Ke.on("pressureMonitorEvent",e=>{Le=e,this.dispatchEvent(new ae.CpuPerformanceChangedEvent(e))}));const ze=function(e){Me("disconnected"),e.code||(e.code=ce.CONNECT_FAILED),$.error(`${e.name||"Unknown Error"}: ${e.message}`),he.handleJsException({error:e,target:this,analytics:X}),this.trigger("sessionConnectFailed",e)},Oe=function(e){L=!1;const t=e.reason;this.logEvent("Connect","Disconnected",{reason:e.reason});const n=new ae.SessionDisconnectEvent("sessionDisconnected",t.replace("networkTimedout","networkDisconnected"));this.isConnected()&&this.disconnect(),ke(),Xe.call(this,t),setTimeout(()=>{this.dispatchEvent(n),Te.call(this,n.reason),n.isDefaultPrevented()||Ye.call(this,n.reason)})},je=function(e){f||e.id.match(/^symphony\./)||this.dispatchEvent(new ae.ConnectionEvent(U.default.CONNECTION_CREATED,e))},Pe=function(e,t){e.id.match(/^symphony\./)||T&&e.id===T.id()||this.dispatchEvent(new ae.ConnectionEvent(U.default.CONNECTION_DESTROYED,e,t))},_e=function(e){!e||!e.connection||this.connection&&e.connection.id===this.connection.id||this.dispatchEvent(new ae.StreamEvent(U.default.STREAM_CREATED,e,null,!1))},qe=function(e){const t=e.target,n=e.changedProperty;let r=e.newValue;"videoDisableWarning"!==n&&"audioDisableWarning"!==n&&("videoDimensions"===n&&(r={width:r.width,height:r.height}),this.dispatchEvent(new ae.StreamPropertyChangedEvent(U.default.STREAM_PROPERTY_CHANGED,t,n,e.oldValue,r)))},$e=function(e,t){void 0===t&&(t="clientDisconnected");const n=new ae.StreamEvent("streamDestroyed",e,t,!0);e.connection.id===this.connection.id?Ze.publishers.where({streamId:e.id}).forEach((function(n){n._.unpublishStreamFromSession(e,this,t)}),this):this.dispatchEvent(n),(()=>{Ze.subscribers.where({streamId:e.id}).filter(e=>e.session.id===this.id&&e.stream).forEach(e=>{e._disconnect({reason:t}),n.isDefaultPrevented()||e._destroy({reason:t,noStateTransition:!0})})})()},et=function(e){this.dispatchEvent(new ae.ArchiveEvent("archiveStarted",e))},tt=function(e){this.dispatchEvent(new ae.ArchiveEvent("archiveDestroyed",e))},nt=function(e){const t=e.target,n=e.changedProperty,r=e.newValue;"status"===n&&"stopped"===r?this.dispatchEvent(new ae.ArchiveEvent("archiveStopped",t)):this.dispatchEvent(new ae.ArchiveEvent("archiveUpdated",t))},rt=()=>Ze.subscribers.forEach(e=>e._.pauseAndPlayVideoElement()),it=function(){j.token=null,w=null,Me("disconnected"),T=null,Y&&(Y.stop(),Y=null),j.connection=null,j.capabilities=new re([],{hasE2eeCapability:de}),j.connections.destroy(),j.streams.destroy(),j.archives.destroy()};ke=function(){q=ye(),it()},Xe=function(e){Ze.publishers.where({session:this}).forEach(t=>{t.disconnect(e)}),Ze.subscribers.where({session:this}).forEach(e=>{e._disconnect()})},Te=function(e){Ze.publishers.where({session:this}).forEach(t=>{t._.streamDestroyed(e)})},Ye=function(e){Ze.subscribers.where({session:this}).forEach(t=>{t._destroy({reason:e})})};const ot=function(){$.debug("OT.Session: connecting to Raptor");const e=(0,m.default)(this.sessionInfo.messagingURL,N),t=["forceMute"];this.sessionInfo.isAdaptiveEnabled&&t.push("amr"),Ne&&t.push("spc"),T=new Ue({connectionId:q,sessionId:u,messagingSocketUrl:e,symphonyUrl:this.sessionInfo.symphonyAddress,dispatcher:be(this,{connectionEventsSuppressed:f}),analytics:X,requestedCapabilities:t}),T.connect(w,this.sessionInfo,{connectionEventsSuppressed:f},(e,t)=>{if(e){const t={};let n;if("ConnectToSession"===e.reason||"GetSessionState"===e.reason){const n=ie(e);(0,l.default)(t,{originalMessage:e.message,originalCode:e.code}),e.code=n.code,e.message=n.message}(e.code||e.message||e.reason)&&(n={failureCode:e.code,failureMessage:e.message,failureReason:e.reason,socketId:T.socketId}),T=null,this.logConnectivityEvent("Failure",t,n);const r=function(e,t){let n;switch(e){case"WebSocketConnection":if(n=(0,c.default)(fe.codes,e=>e===t),n)return oe["SOCKET_"+n];break;case"ConnectToSession":case"GetSessionState":switch(t){case ce.CONNECT_FAILED:return oe.CONNECT_FAILED;case ce.UNEXPECTED_SERVER_RESPONSE:return oe.UNEXPECTED_SERVER_RESPONSE;case ce.CONNECTION_LIMIT_EXCEEDED:return oe.CONNECTION_LIMIT_EXCEEDED}}}(e.reason,e.code);return r&&(e=Ae(r,new Error(e.message),e.code)),void ze.call(this,e)}$.debug("OT.Session: Received session state from Raptor",t),this.connection=this.connections.get(T.id()),this.connection&&(this.capabilities=this.connection.permissions),Me("connected"),this.logConnectivityEvent("Success",{connectionId:this.connection.id}),this.connection.on("destroyed",Oe,this),this.dispatchEvent(new ae.SessionConnectEvent(U.default.SESSION_CONNECTED)),this.connections.on({add:je,remove:Pe},this),this.streams.on({add:_e,remove:$e,update:qe},this),this.archives.on({add:et,remove:tt,update:nt},this),this.connections._triggerAddEvents(),this.streams._triggerAddEvents(),this.archives._triggerAddEvents();ge.env.isiOS&&ge.env.iOSVersion>=13.3&&this.on("gsmCallEnded",rt)})},at=e=>this.capabilities.permittedTo(e),lt=(e,t)=>{ue.error(`${e.name}: ${e.message}`),"function"==typeof t&&t(e),he.handleJsException({error:e,target:this,analytics:X})},ct=e=>{const t=Ae(e.code,new Error(e.message),e.exceptionCode);return lt(t),t},st=()=>this.isNot("connected")?ct(E.default.NOT_CONNECTED):at("forceMute")?null:ct(E.default.PERMISSION_DENIED),dt=e=>"404"===e.code?ct(E.default.NOT_FOUND):"403"===e.code?ct(E.default.PERMISSION_DENIED):ct(E.default.UNEXPECTED_SERVER_RESPONSE);this.reportIssue=e=>{let t=e.id;return(0,Z.default)(X.logEvent.bind(X))({action:"ReportIssue",variation:"Event",connectionId:q,payload:{reportIssueId:t}},null)},this.logEvent=function(e,t,n,r){let i={action:e,variation:t,payload:n,sessionId:P,messagingServer:x,p2p:D,partnerId:O,connectionId:q,singlePeerConnection:Ne};r&&(i=(0,l.default)(r,i)),X.logEvent(i)},this.logConfigurationFileEvent=function(e,t,n){if(void 0===t&&(t=null),void 0===n&&(n={}),"Attempt"===e)H=(new Date).getTime();else if("Failure"===e||"Success"===e){const e=(new Date).getTime()-H;(0,l.default)(n,{attemptDuration:e})}N&&(n.proxyUrl=N),this.logEvent("ConfigurationFile",e,t,Object.assign({},n))},this.logConnectivityEvent=function(e,t,n){if(void 0===t&&(t=null),void 0===n&&(n={}),N&&(n.proxyUrl=N),"Attempt"===e&&(Y&&(Y.stop(),ue.error("_connectivityAttemptPinger should have been cleaned up")),M=(new Date).getTime(),Y=new g.default(()=>{this.logEvent("Connect","Attempting",t,Object.assign({},n))},.2,6),Y.start()),"Failure"===e||"Success"===e||"Cancel"===e){const r=r=>{Y&&(Y.stop(),Y=void 0),this.logEvent("Connect",e,t,Object.assign({},n,{attemptDuration:(new Date).getTime()-M,iceConfig:r,ipWhitelist:I}))};"Success"===e?this._.getIceConfig().then(e=>{const t={includeServers:b&&b.includeServers||"all",transportPolicy:e.transportPolicy};t.servers=e.servers?e.servers.map(e=>({url:e.urls})):[],r(t)}):r()}else this.logEvent("Connect",e,t,n)},this.connect=function(){let r;for(var i=arguments.length,o=new Array(i),a=0;a<i;a++)o[a]=arguments[a];o.length>1&&("string"==typeof o[0]||"number"==typeof o[0])&&"string"==typeof o[1]?(null==n&&(O=o[0].toString()),r=o[1]):r=o[0];const l=o[o.length-1];if(Q.is("connecting","connected"))return $.warn("OT.Session: Cannot connect, the session is already "+Q.currentState),Q;Q.is("disconnecting")&&($.warn("OT.Session: trying to connect while the session is not done disconnecting."),q=ye()),X.sessionInfo=new z.default,it(),Me("connecting");const c=q;function A(){const e=q!==c;return e&&ue.debug("Connection was interrupted"),e}if(Q.token=!(0,s.default)(r)&&r,w=!(0,s.default)(r)&&r,l&&(0,s.default)(l)){let e;const t=function(){e();for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];l(void 0,...n)},n=function(){e(),l(...arguments)};e=()=>{Q.off("sessionConnected",t),Q.off("sessionConnectFailed",n)},Q.once("sessionConnected",t),Q.once("sessionConnectFailed",n)}if(null==O||(0,s.default)(O))return setTimeout(ze.bind(Q,Ae(oe.AUTHENTICATION_ERROR,new Error("API Key is undefined. You must pass an API Key to initSession."),ce.AUTHENTICATION_ERROR))),Q;if(!P||(0,d.default)(P)||Array.isArray(P)){let e;return P?(e="SessionID is not a string. You must use string as the session ID passed into OT.initSession().",P=P.toString()):e="SessionID is undefined. You must pass a sessionID to initSession.",setTimeout(ze.bind(Q,Ae(oe.INVALID_SESSION_ID,new Error(e),ce.INVALID_SESSION_ID))),Q.logConnectivityEvent("Attempt"),Q.logConnectivityEvent("Failure",null,{failureReason:"ConnectToSession",failureCode:ce.INVALID_SESSION_ID,failureMessage:e}),Q}if(Q.apiKey=O.toString(),O=O.toString(),Ke&&Ke.startMonitoring(),xe){if(!de())return setTimeout(ze.bind(Q,Ae(oe.UNSUPPORTED_BROWSER,new Error("E2E Encryption is not supported in your browser.")))),Q;try{(0,S.default)(xe),Q.keyStore.set(u,xe),De=!0}catch(e){return setTimeout(ze.bind(Q,Ae(oe.INVALID_ENCRYPTION_SECRET,new Error("Invalid encryptionSecret: "+e.message)))),Q}}0===ne.value.length&&(ne.value=O);const h=Boolean(Qe.onlyLocal().configUrl),g=!0===I&&Boolean(Qe.onlyLocal().ipWhitelistConfigUrl);h||g?Q.logConfigurationFileEvent("Attempt"):Q.logConfigurationFileEvent("Event",{message:"No configUrl, using local config only"});const p=h||g?Qe.get({partnerId:O,token:r,useIpWhitelistConfigUrl:g,proxyUrl:N}):e.resolve(Qe.onlyLocal()),U=t.futureStaticConfig||p;return U.then(e=>((h||g)&&Q.logConfigurationFileEvent("Success"),e),e=>((h||g)&&Q.logConfigurationFileEvent("Failure",{failureMessage:e.message,failureStack:e.stack}),Qe.onlyLocal())).then(e=>{if(Q.staticConfig=e,X.staticConfig=e,!1===e.apiEnabled)throw Ae(oe.API_KEY_DISABLED,new Error("The API KEY has been disabled. Access to the service is currently being restricted. Please contact support."));if(A())return;Q.logConnectivityEvent("Attempt"),N?Q.logEvent("SessionInfo","Attempt",null,{proxyUrl:N}):Q.logEvent("SessionInfo","Attempt");const t=e=>{e.code=(0,F.default)(e.code),Q.logConnectivityEvent("Failure",null,{failureReason:"GetSessionInfo",failureCode:e.code||"No code",failureMessage:e.message,failureName:e.name}),e.name&&(e=Ae(e.name,new Error(`${e.message}${e.code?` (${e.code})`:""}`),e.code)),ze.call(Q,e)},n=(0,m.default)(e.apiUrl,N);return We({anvilUrl:n,sessionId:u,token:w,connectionId:q,clientVersion:e.clientVersion}).then(n=>{if(A())return;if(n.partnerId&&n.partnerId!==O){const e="Authentication Error: The API key does not match the token or session.";return void t(Ae(oe.AUTHENTICATION_ERROR,new Error(e),ce.AUTHENTICATION_ERROR))}Ne=(0,C.default)(n,W),Ne&&(He=new Se(Q)),X.sessionInfo=n;const r={features:{reconnection:n.reconnection,renegotiation:se()&&n.renegotiation,simulcast:void 0!==n.simulcast&&(n.simulcast&&"Chrome"===ge.env.name)}};if(N&&(r.proxyUrl=N),Q.is("connecting")){Q.sessionInfo=n,Q._.setIceServers(Q.sessionInfo.iceServers),D=n.p2pEnabled,x=n.messagingServer,Q.logEvent("SessionInfo","Success",null,r,{messagingServer:n.messagingServer});const t=e.sessionInfoOverrides||{};G&&(t.priorityVideoCodec="vp9"),null!=t&&"object"==typeof t&&Object.keys(t).forEach(e=>{Object.defineProperty(Q.sessionInfo,e,{value:t[e]})}),ot.call(Q)}},t)}).catch(e=>{ze.call(Q,e)}),Q},this.disconnect=function(){He&&(He.destroy(),He=null),Ke&&Ke.stopMonitoring(),T&&T.isNot("disconnected")?T.isNot("disconnecting")&&(T.isNot("connecting")||this.logConnectivityEvent("Cancel"),Me("disconnecting"),T.disconnect(),this.off("gsmCallEnded",rt)):ke()},this.destroy=function(){this.streams.destroy(),this.connections.destroy(),this.archives.destroy(),this.disconnect()},this.publish=(e,t,n)=>{if("function"==typeof e&&(n=e,e=void 0),"function"==typeof t&&(n=t,t=void 0),n=n||function(){},this.isNot("connected"))return X.logError(1010,"OT.exception","We need to be connected before you can publish",null,{action:"Publish",variation:"Failure",failureReason:"unconnected",failureCode:ce.NOT_CONNECTED,failureMessage:"We need to be connected before you can publish",sessionId:P,streamId:e&&e.stream?e.stream.id:null,p2p:this.sessionInfo?this.sessionInfo.p2pEnabled:void 0,messagingServer:this.sessionInfo?this.sessionInfo.messagingServer:null,partnerId:O}),lt(Ae(oe.NOT_CONNECTED,new Error("We need to be connected before you can publish"),ce.NOT_CONNECTED),n),null;if(!at("publish")){const e="This token does not allow publishing. The role must be at least `publisher` to enable this functionality",t={failureReason:"Permission",failureCode:ce.UNABLE_TO_PUBLISH,failureMessage:e};return this.logEvent("Publish","Failure",null,t),lt(Ae(oe.PERMISSION_DENIED,new Error(e),ce.UNABLE_TO_PUBLISH),n),null}const r=!e||"string"==typeof e||ge.isElementNode(e),i=e instanceof me;if(r||i){if(i){if("session"in e&&e.session&&"sessionId"in e.session)return e.session.sessionId===this.sessionId?$.warn(`Cannot publish ${e.guid()} again to ${this.sessionId}. Please call session.unpublish(publisher) first.`):$.warn(`Cannot publish ${e.guid()} publisher already attached to ${e.session.sessionId}. Please call session.unpublish(publisher) first.`),n(null,e),e}else r&&(e=Je(e,t));return te&&e._.forceMuteAudio(),e._.publishToSession(this,X).then(()=>n(null,e),e=>{e.message="Session.publish :: "+e.message,$.error(e.code,e.message),n(e)}),e}lt(Ae(oe.INVALID_PARAMETER,new Error("Session.publish :: First parameter passed in is neither a string nor an instance of the Publisher"),ce.UNABLE_TO_PUBLISH),n)},this.unpublish=function(e){e?e._.unpublishFromSession(this,"unpublished"):$.error("OT.Session.unpublish: publisher parameter missing.")},this.setIceConfig=function(){var t=(0,o.default)(i.default.mark((function t(n){var r,o;return i.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(Ve(n),X.logEvent({action:"setIceConfig",variation:"Attempt",payload:{newIceConfig:n}}),b=Object.assign({},n),"all"!==n.includeServers){t.next=8;break}return t.next=6,j._.getOtIceServerInfo();case 6:r=t.sent,n.customServers=n.customServers.concat(r.servers);case 8:return o=(e=>({iceServers:e.customServers,iceTransportPolicy:e.transportPolicy}))(n),t.prev=10,t.next=13,e.all(Ze.publishers.map(e=>e._.setIceConfig(o)).concat(Ze.subscribers.map(e=>e._.setIceConfig(o))));case 13:t.next=19;break;case 15:throw t.prev=15,t.t0=t.catch(10),X.logEvent({action:"setIceConfig",variation:"Failure",payload:{newIceConfig:n}}),t.t0;case 19:X.logEvent({action:"setIceConfig",variation:"Success",payload:{newIceConfig:n}});case 20:case"end":return t.stop()}}),t,null,[[10,15]])})));return function(e){return t.apply(this,arguments)}}(),this.subscribe=function(e,t,n,r){if("function"==typeof t&&(r=t,t=void 0,n=void 0),"function"==typeof n&&(r=n,n=void 0),r=r||function(){},!this.connection||!this.connection.connectionId)return void lt(Ae(oe.NOT_CONNECTED,new Error("Session.subscribe :: Connection required to subscribe"),ce.UNABLE_TO_SUBSCRIBE),r);if(!e)return void lt(Ae(oe.INVALID_PARAMETER,new Error("Session.subscribe :: stream cannot be null"),ce.UNABLE_TO_SUBSCRIBE),r);if(!Object.prototype.hasOwnProperty.call(e,"streamId"))return void lt(Ae(oe.INVALID_PARAMETER,new Error("Session.subscribe :: invalid stream object"),ce.UNABLE_TO_SUBSCRIBE),r);if(n&&!1===n.insertDefaultUI&&t)return void lt(Ae(oe.INVALID_PARAMETER,new Error("You cannot specify a target element if insertDefaultUI is false"),ce.INVALID_PARAMETER),r);t&&!1===t.insertDefaultUI&&(n=t,t=void 0);const i=new Re(t,(0,l.default)(n||{},{stream:e,session:this,analytics:X,_singlePeerConnectionController:He}),e=>{e?lt(e,r):r(null,i)});return Ze.subscribers.add(i),i},this.unsubscribe=function(e){if(!e){const e="OT.Session.unsubscribe: subscriber cannot be null";throw $.error(e),new Error(e)}return e.stream?($.debug("OT.Session.unsubscribe: subscriber "+e.id),e._destroy({reason:"Unsubscribe"}),!0):($.warn("OT.Session.unsubscribe:: tried to unsubscribe a subscriber that had no stream"),!1)},this.getSubscribersForStream=function(e){return Ze.subscribers.where({streamId:e.id})},this.getPublisherForStream=function(e){let t,n;if("string"==typeof e)t=e;else{if("object"!=typeof e||!e||!Object.hasOwnProperty.call(e,"id"))throw n="Session.getPublisherForStream :: Invalid stream type",$.error(n),new Error(n);t=e.id}return Ze.publishers.where({streamId:t})[0]},this._={getProxyUrl:()=>N,getCpuPerformanceState:()=>Le,isE2ee:()=>j.sessionInfo.e2ee&&De&&!!j.capabilities.supportsE2ee,isSpc:()=>Ne,isSocketReconnecting:()=>L,isSocketConnected:()=>T.is("connected")&&!L,getSocket:()=>T,reconnecting:function(){L=!0,this.dispatchEvent(new ae.SessionReconnectingEvent)}.bind(this),reconnected:function(){L=!1,this.dispatchEvent(new ae.SessionReconnectedEvent),this.sessionInfo.reconnection&&(Ze.publishers.where({session:this}).forEach(e=>{e._.iceRestart()}),this.session.sessionInfo.p2pEnabled||Ze.subscribers.where({session:this}).forEach(e=>{e._.iceRestart("socket reconnected")}))}.bind(this),dispatchSignal:function(e,t,n){const r=new ae.SignalEvent(t,n,e);r.target=this,this.trigger(U.default.SIGNAL,r),t&&this.dispatchEvent(r)}.bind(this),dispatchCaption:function(e,t){let n,r,i;try{const e=JSON.parse(t.data);n=e.caption.text,r=e.streamId,i=e.isFinal}catch(e){return void $.error("Caption parsing failed: "+e.message)}const o=new ae.CaptionReceivedEvent(n,r,i);o.target=this,this.trigger(U.default.SUBSCRIBER_CAPTION_RECEIVED,o),this.dispatchEvent(o)}.bind(this),subscriberChannelUpdate:(e,t,n,r)=>T?T.subscriberChannelUpdate(e.id,t.widgetId,n.id,r):($.warn("You are disconnected, cannot update subscriber properties ",r),null),streamCreate(e,t){let n=void 0===e?{}:e,r=n.name,i=n.streamId,o=n.subscriberAudioFallbackEnabled,a=n.channels,l=n.minBitrate,c=n.sourceStreamId,s=n.e2ee,d=n.publisherAudioFallbackEnabled,u=n.customProperties;T?T.streamCreate({name:r,streamId:i,subscriberAudioFallbackEnabled:o,channels:a,minBitrate:l,maxBitrate:void 0,sourceStreamId:c,e2ee:s,publisherAudioFallbackEnabled:d,customProperties:u},t):$.warn("You are disconnected, cannot create stream ",i)},streamDestroy(e,t){T?T.streamDestroy(e,t):$.warn("You are disconnected, cannot destroy stream ",e)},streamChannelUpdate(e,t,n){T?T.streamChannelUpdate(e.id,t.id,n):$.warn("You are disconnected, cannot update stream properties ",n)},setSocket(e){T=e},setLogging(e){$=e},setState:Me,setIceServers(e){e&&(K={iceServers:r(e),timestamp:Date.now()})},getOtIceServerInfo(){if(864e5-(K?Date.now()-K.timestamp:1/0)>3e5)return e.resolve({transportPolicy:j&&j.sessionInfo&&j.sessionInfo.clientCandidates,servers:K&&K.iceServers});if(!w)return e.resolve({transportPolicy:j&&j.sessionInfo&&j.sessionInfo.clientCandidates,servers:[],needRumorIceServersFallback:!0});const t=pe.clientVersion;return We({anvilUrl:(this.staticConfig||pe).apiUrl,sessionId:u,token:w,connectionId:q,clientVersion:t}).then(e=>(j._.setIceServers(e.iceServers),K?{transportPolicy:j&&j.sessionInfo&&j.sessionInfo.clientCandidates,servers:K&&K.iceServers}:{transportPolicy:j.sessionInfo.clientCandidates,servers:[],needRumorIceServersFallback:!0}))},getCodecFlags:()=>({h264:j.sessionInfo.h264,vp9:j.sessionInfo.vp9,vp8:j.sessionInfo.vp8}),getVideoCodecsCompatible:e=>(0,B.default)({RTCPeerConnection:Ce.RTCPeerConnection,env:ge.env,stream:e,codecFlags:j._.getCodecFlags()}),getIceConfig:()=>{if(!b)return j._.getOtIceServerInfo();const t=b&&"relay"===b.transportPolicy?"relay":j.sessionInfo.clientCandidates;return("custom"===b.includeServers?e.resolve({servers:[]}):j._.getOtIceServerInfo()).then(e=>(0,l.default)(e,{transportPolicy:t,servers:[...e.servers,...b.customServers]}))},forceMute:function(e){this.dispatchEvent(new ae.MuteForcedEvent(e))}.bind(this),enableMuteOnEntry:()=>{te=!0},addSubscriberToPeerConnectionsQueue:(e,t)=>{Ge.push({pc:e,message:t}),we||(we=setInterval(()=>{const e=Ge.shift();e?e.pc.processMessage("offer",e.message):(clearInterval(we),we=null)},100))},disableMuteOnEntry:()=>{te=!1},privateEvents:new a.default},this.signal=function(e,t){let n=e,r=t||function(){};if((0,s.default)(n)&&(r=n,n=null),this.isNot("connected")){const e="Unable to send signal - you are not connected to the session.";lt(Ae(oe.NOT_CONNECTED,new Error(e),500),r)}else T.signal(n,(function(e){if(e){const t=i(e.code);return t&&(e=Ae(t,new Error(e.message),e.code)),void r(e)}for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o<t;o++)n[o-1]=arguments[o];r(e,...n)}),this.logEvent),e&&e.data&&"string"!=typeof e.data&&$.warn("Signaling of anything other than Strings is deprecated. Please update the data property to be a string.");function i(e){switch(e){case 400:case 413:return oe.INVALID_PARAMETER;case 429:return oe.RATE_LIMIT_EXCEEDED;case 404:return oe.NOT_FOUND;case 500:return oe.NOT_CONNECTED;case 403:return oe.PERMISSION_DENIED;case 2001:return oe.UNEXPECTED_SERVER_RESPONSE;default:return}}},this.forceDisconnect=function(e,t){if(this.isNot("connected")){const e="Cannot call forceDisconnect(). You are not connected to the session.";return void lt(Ae(oe.NOT_CONNECTED,new Error(e),ce.NOT_CONNECTED),t)}const n="string"==typeof e?e:e.id,r="Invalid Parameter. Check that you have passed valid parameter values into the method call.";if(!n)return void lt(Ae(oe.INVALID_PARAMETER,new Error(r),ce.INVALID_PARAMETER),t);at("forceDisconnect")?T.forceDisconnect(n,(function(e){if(e)lt(Ae(oe.INVALID_PARAMETER,new Error(r),ce.INVALID_PARAMETER),t);else if(t&&(0,s.default)(t)){for(var n=arguments.length,i=new Array(n>1?n-1:0),o=1;o<n;o++)i[o-1]=arguments[o];t(e,...i)}})):lt(Ae(oe.PERMISSION_DENIED,new Error("This token does not allow forceDisconnect. The role must be at least `moderator` to enable this functionality"),ce.UNABLE_TO_FORCE_DISCONNECT),t)},this.forceUnpublish=function(e,t){void 0===t&&(t=()=>{});const n=e=>lt(Ae(e.name,new Error(e.msg),e.code),t),r={msg:"Invalid Parameter. Check that you have passed valid parameter values into the method call.",code:ce.INVALID_PARAMETER,name:oe.INVALID_PARAMETER},i={msg:"Cannot call forceUnpublish(). You are not connected to the session.",code:ce.NOT_CONNECTED,name:oe.NOT_CONNECTED},o={msg:"This token does not allow forceUnpublish. The role must be at least `moderator` to enable this functionality",code:ce.UNABLE_TO_FORCE_UNPUBLISH,name:oe.PERMISSION_DENIED},a={msg:"The stream does not exist.",name:oe.NOT_FOUND},l={msg:"An unexpected error occurred.",name:oe.UNEXPECTED_SERVER_RESPONSE,code:ce.UNEXPECTED_SERVER_RESPONSE};if(!e)return void n(r);if(Q.isNot("connected"))return void n(i);const c=k(e);at("forceUnpublish")?T.forceUnpublish(c.id,e=>{e?"404"===e.code?n(a):"403"===e.code?n(o):n(l):t(null)}):n(o)},this.forceMuteStream=t=>new e((e,n)=>{const r=st();r?n(r):t&&t.id?T.forceMuteStream(t.id,t=>{t?n(dt(t)):e()}):n(ct(E.default.INVALID_PARAMETER))}),this.forceMuteAll=t=>new e((e,n)=>{const r=st();if(r)return void n(r);if(Array.isArray(t)&&!t.every(e=>e instanceof le)||t&&!Array.isArray(t))return void n(ct(E.default.INVALID_PARAMETER));const i=(t||[]).map(e=>e.id);T.forceMuteAll(i,!0,t=>{t?n(dt(t)):e()})}),this.disableForceMute=()=>new e((e,t)=>{const n=st();n?t(n):T.forceMuteAll([],!1,n=>{n?t(dt(n)):e()})}),this.setEncryptionSecret=function(){var e=(0,o.default)(i.default.mark((function e(t){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(xe){e.next=3;break}return ue.error("Encryption secret must first be set in initSession."),e.abrupt("return");case 3:e.prev=3,(0,S.default)(t),e.next=10;break;case 7:throw e.prev=7,e.t0=e.catch(3),Ae(oe.INVALID_ENCRYPTION_SECRET,new Error("setEncryptionSecret: "+e.t0.message));case 10:return e.prev=10,e.next=13,Q.keyStore.set(u,t);case 13:xe=t,e.next=19;break;case 16:e.prev=16,e.t1=e.catch(10),$.error("Error in setEncryptionSecret}: "+e.t1.message);case 19:case"end":return e.stop()}}),e,null,[[3,7],[10,16]])})));return function(t){return e.apply(this,arguments)}}(),this.isConnected=()=>this.is("connected"),this.capabilities=new re([],{hasE2eeCapability:de})}};var i=r(n(4)),o=r(n(5)),a=r(n(12)),l=r(n(9)),c=r(n(770)),s=r(n(20)),d=r(n(11)),u=r(n(17)),A=r(n(6)),h=r(n(1)),g=r(n(74)),F=r(n(772)),Q=r(n(10)),p=r(n(25)),m=r(n(106)),U=r(n(30)),b=r(n(31)),Z=r(n(175)),B=r(n(773)),f=r(n(774)),R=r(n(115)),I=r(n(348)),y=r(n(26)),V=r(n(15)),C=r(n(775)),W=r(n(8)),E=r(n(778)),v=n(72),S=r(n(779)),J=n(110),G=r(n(73)),N=r(n(184)),X=r(n(349)),k=r(n(18)),T=r(n(185)),Y=r(n(7)),w=r(n(181)),D=r(n(780)),x=r(n(356)),M=r(n(355)),H=r(n(330)),K=r(n(163)),L=r(n(804)),z=r(n(152)),O=r(n(807)),j=r(n(808)),P=r(n(346)),_=r(n(37)),q=r(n(813)),$=r(n(79)),ee=r(n(823));const te=(0,_.default)()}).call(this,n(2))},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(3));const o=r(n(53)).default.once;t.default=()=>o()&&(i.default.isChromiumEdge||["Chrome","Safari","Firefox","Opera"].includes(i.default.name))},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e){let t,n;if(e.reason===l&&e.code===i.default.CONNECT_FAILED)t=e.code,n=o.default.getTitleByCode(e.code);else if(e.code&&a.indexOf(Number(e.code))>-1)switch(t=i.default.CONNECT_FAILED,e.reason){case l:switch(e.code){case i.default.CONNECTION_LIMIT_EXCEEDED:t=e.code,n="Cannot connect -- the limit for concurrent connections to the session has been reached";break;default:n="Received error response to connection create message."}break;case c:n="Received error response to session read";break;default:n=""}else t=i.default.UNEXPECTED_SERVER_RESPONSE,n="Unexpected server response. Try this operation again later.";return{code:t,message:n}};var i=r(n(10)),o=r(n(25));const a=[400,403,409,i.default.CONNECTION_LIMIT_EXCEEDED],l="ConnectToSession",c="GetSessionState"},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){return JSON.stringify(e)}},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;t.default=e=>{let t=e.logger,n=e.obj;e.eventNames.forEach(e=>{n.on(e,(function(){for(var n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return t.spam("emitted",e,r)}))})}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(20)),o=r(n(6)),a=r(n(1)),l=r(n(25)),c=r(n(186)),s=r(n(796));const d=(0,a.default)("Dispatcher"),u=function(){(0,o.default)(this),this.callbacks={}};u.prototype.registerCallback=function(e,t){this.callbacks[e]=t},u.prototype.triggerCallback=function(e){if(!e)return;const t=this.callbacks[e];if(t&&(0,i.default)(t)){const e=Array.prototype.slice.call(arguments);e.shift(),t(...e)}delete this.callbacks[e]},u.prototype.onClose=function(e){this.emit("close",e)},u.prototype.onReconnected=function(){this.emit("reconnected")},u.prototype.onReconnecting=function(){this.emit("reconnecting")},u.prototype.dispatch=function(e){var t,n;if(e.type===c.default.STATUS){var r;let t;if(d.debug(e),e.isError){let n;if("string"==typeof e.data)try{const t=JSON.parse(e.data);t&&"object"==typeof t&&(n=t.reason)}catch(e){d.warn("Failed to parse rumorMessage.data",e)}t=new l.default(e.status,n)}const n=e.data?JSON.parse(e.data):"";return null!=n&&null!=(r=n.mute)&&r.active&&this.dispatchMuteOnEntry(),void this.triggerCallback(e.transactionId,t,e)}const i=(0,s.default)(e);switch("data"===i.resource?d.spam(i.signature+":",i):d.debug(i.signature+":",i),i.resource){case"session":this.dispatchSession(i);break;case"connection":if(null!=i&&null!=(t=i.content)&&null!=(n=t.userAgent)&&n.includes("auriga"))return;this.dispatchConnection(i);break;case"stream":this.dispatchStream(i);break;case"stream_channel":this.dispatchStreamChannel(i);break;case"subscriber":this.dispatchSubscriber(i);break;case"subscriber_channel":this.dispatchSubscriberChannel(i);break;case"signal":this.dispatchSignal(i);break;case"data":"caption1"===i.params.channel?this.dispatchCaption(i):"downlinkStats1"===i.params.channel&&this.dispatchSenderStats(i);break;case"archive":this.dispatchArchive(i);break;case"source":this.dispatchSource(i);break;default:d.debug(`Type ${i.resource} is not currently implemented`)}},u.prototype.dispatchSession=function(e){switch(e.method){case"read":this.emit("session#read",e.content,e.transactionId);break;case"update":this.emit("session#update",e.content);break;default:d.debug(e.signature+" is not currently implemented")}},u.prototype.dispatchMuteOnEntry=function(){this.emit("session#muted")},u.prototype.dispatchConnection=function(e){switch(e.method){case"created":this.emit("connection#created",e.content);break;case"deleted":this.emit("connection#deleted",e.params.connection,e.reason);break;default:d.debug(e.signature+" is not currently implemented")}},u.prototype.dispatchStream=function(e){switch(e.method){case"created":this.emit("stream#created",e.content,e.transactionId);break;case"deleted":this.emit("stream#deleted",e.params.stream,e.reason,e.content);break;case"updated":this.emit("stream#updated",e.params.stream,e.content);break;case"update":this.emit("stream#update",e.params.stream,e.content);break;case"generateoffer":case"answer":case"pranswer":case"offer":case"candidate":this.dispatchJsep(e.method,e);break;default:d.debug(e.signature+" is not currently implemented")}},u.prototype.dispatchStreamChannel=function(e){switch(e.method){case"updated":this.emit("streamChannel#updated",e.params.stream,e.params.channel,e.content);break;default:d.debug(e.signature+" is not currently implemented")}},u.prototype.dispatchJsep=function(e,t){this.emit("jsep#"+e,t.params.stream,t.fromAddress,t)},u.prototype.dispatchSubscriberChannel=function(e){switch(e.method){case"updated":this.emit("subscriberChannel#updated",e.params.stream,e.params.channel,e.content);break;case"update":this.emit("subscriberChannel#update",e.params.subscriber,e.params.stream,e.content);break;default:d.debug(e.signature+" is not currently implemented")}},u.prototype.dispatchSubscriber=function(e){switch(e.method){case"created":this.emit("subscriber#created",e.params.stream,e.fromAddress,e.content.id);break;case"deleted":this.dispatchJsep("unsubscribe",e),this.emit("subscriber#deleted",e.params.stream,e.fromAddress);break;case"generateoffer":case"answer":case"pranswer":case"offer":case"candidate":this.dispatchJsep(e.method,e);break;default:d.debug(e.signature+" is not currently implemented")}},u.prototype.dispatchSignal=function(e){"signal"===e.method?this.emit("signal",e.fromAddress,e.content):d.debug(e.signature+" is not currently implemented")},u.prototype.dispatchCaption=function(e){this.emit("caption",e.fromAddress,e.content)},u.prototype.dispatchSenderStats=function(e){this.emit("senderStatsReceived",e.params.subscriber,e.content)},u.prototype.dispatchArchive=function(e){switch(e.method){case"created":this.emit("archive#created",e.content);break;case"updated":this.emit("archive#updated",e.params.archive,e.content)}},u.prototype.dispatchSource=function(e){switch(e.method){case"create":this.emit("source#create",e.params.source,e.params.stream,e.reason);break;case"delete":this.emit("source#delete",e.params.source,e.params.stream,e.reason);break;default:d.debug(e.signature+" is not currently implemented")}};var A=u;t.default=A},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(17)),o=r(n(798)),a=r(n(799)),l=r(n(7)),c=r(n(800)),s=r(n(350));const d=(0,r(n(37)).default)().onlyLocal(),u={connections:{}};u.connections.create=function(e){const t=e.apiKey,n=e.sessionId,r=e.connectionId,i=e.connectionEventsSuppressed,o=e.capabilities;return(0,s.default)({method:"create",uri:`/v2/partner/${t}/session/${n}/connection/${r}`,content:{userAgent:l.default.env.userAgent,clientVersion:d.clientVersion,capabilities:o||[],connectionEventsSuppressed:i}})},u.connections.destroy=function(e){const t=e.apiKey,n=e.sessionId,r=e.connectionId;return(0,s.default)({method:"delete",uri:`/v2/partner/${t}/session/${n}/connection/${r}`,content:{}})},u.sessions={},u.sessions.get=function(e,t){return(0,s.default)({method:"read",uri:`/v2/partner/${e}/session/${t}`,content:{}})},u.streams={},u.streams.get=function(e,t,n){return(0,s.default)({method:"read",uri:`/v2/partner/${e}/session/${t}/stream/${n}`,content:{}})},u.streams.channelFromOTChannel=function(e){const t={id:e.id,type:e.type,active:e.active};return"video"===e.type&&(t.width=e.width,t.height=e.height,t.orientation=e.orientation,t.frameRate=e.frameRate,"default"!==e.source&&(t.source=e.source),t.fitMode=e.fitMode),t},u.streams.create=function(e){void 0===e&&(e={});const t=e,n=t.apiKey,r=t.sessionId,i=t.streamId,o=t.name,a=t.audioFallbackEnabled,l=t.publisherAudioFallbackEnabled,c=t.subscriberAudioFallbackEnabled,d=t.channels,A=t.minBitrate,h=t.maxBitrate,g=t.sourceStreamId,F=t.e2ee,Q=t.customProperties,p={id:i,name:o,audioFallbackEnabled:a,publisherAudioFallbackEnabled:l,subscriberAudioFallbackEnabled:c,channel:d.map(e=>u.streams.channelFromOTChannel(e)),e2ee:F,customProperties:Q};return A&&(p.minBitrate=Math.round(A)),h&&(p.maxBitrate=Math.round(h)),g&&(p.sourceStreamId=g),"boolean"==typeof F&&(p.e2ee=F),(0,s.default)({method:"create",uri:`/v2/partner/${n}/session/${r}/stream/${i}`,content:p})},u.streams.destroy=function(e,t,n,r){const i={};return r&&(i.sourceStreamId=r),(0,s.default)({method:"delete",uri:`/v2/partner/${e}/session/${t}/stream/${n}`,content:i})},u.streamChannels={},u.streamChannels.update=function(e,t,n,r,i){return(0,s.default)({method:"update",uri:`/v2/partner/${e}/session/${t}/stream/${n}/channel/${r}`,content:i})},u.subscribers={},u.subscribers.create=function(e){void 0===e&&(e={});const t=e,n=t.apiKey,r=t.sessionId,i=t.streamId,l=t.subscriberId,d=t.connectionId,u=t.channelsToSubscribeTo,A=t.sourceStreamId,h=t.e2ee,g={id:l,connection:d,keyManagementMethod:o.default,bundleSupport:(0,c.default)(),rtcpMuxSupport:(0,a.default)(),e2ee:h};return u&&(g.channel=u),A&&(g.sourceStreamId=A),(0,s.default)({method:"create",uri:`/v2/partner/${n}/session/${r}/stream/${i}/subscriber/${l}`,content:g})},u.subscribers.destroy=function(e,t,n,r,i){const o={};return i&&(o.sourceStreamId=i),(0,s.default)({method:"delete",uri:`/v2/partner/${e}/session/${t}/stream/${n}/subscriber/${r}`,content:o})},u.subscribers.update=function(e,t,n,r,i){return(0,s.default)({method:"update",uri:`/v2/partner/${e}/session/${t}/stream/${n}/subscriber/${r}`,content:i})},u.subscriberChannels={},u.subscriberChannels.update=function(e,t,n,r,i,o){return(0,s.default)({method:"update",uri:`/v2/partner/${e}/session/${t}/stream/${n}/subscriber/${r}/channel/${i}`,content:o})},u.signals={},u.signals.create=function(e,t,n,r,o){const a={};return void 0!==r&&(a.type=r),void 0!==o&&(a.data=o),(0,s.default)({method:"signal",uri:`/v2/partner/${e}/session/${t}${void 0!==n?"/connection/"+n:""}/signal/${(0,i.default)()}`,content:a})},u.forceMute={},u.forceMute.update=e=>{const t=e.apiKey,n=e.sessionId,r=e.streamId,i=e.active,o=e.excludedStreamIds,a={reason:"mute",channels:["audio"],active:i,locked:!1};return o&&(a.exclusion=o),(0,s.default)({method:"update",uri:`/v2/partner/${t}/session/${n}${r?"/stream/"+r:""}`,content:a})};var A=u;t.default=A},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e,t,n){this.toRaptorMessage=function(){let t=this.to;return t&&"string"!=typeof t&&(t=t.id),l.default.signals.create(o.default.value,e,t,this.type,this.data)},this.toHash=function(){return n},this.error=null,this.retryAfterReconnect=!0,n&&(n.hasOwnProperty("data")&&(this.data=(0,i.default)(n.data),this.error=function(e){let t=null;if(null==e)t={code:400,reason:"The signal data was null or undefined. Either set it to a String value or omit it"};else try{JSON.stringify(e).length>8192&&(t={code:413,reason:"The data field was too long, the maximum size of it is 8192 characters"})}catch(e){t={code:400,reason:"The data field was not valid JSON"}}return t}(this.data)),n.hasOwnProperty("to")&&(this.to=n.to,this.error||(this.error=(r=this.to)?r instanceof a.default||r._tag===c.default?null:{code:400,reason:"The To field was invalid"}:{code:400,reason:"The signal to field was invalid. Either set it to a OT.Connection, OT.Session, or omit it entirely"})),n.hasOwnProperty("type")&&(this.error||(this.error=function(e){let t=null;return null==e?t={code:400,reason:"The signal type was null or undefined. Either set it to a String value or omit it"}:e.length>128?t={code:413,reason:"The signal type was too long, the maximum length of it is 128 characters"}:function(e){return!/^[a-zA-Z0-9\-\._~]+$/.exec(e)}(e)&&(t={code:400,reason:"The signal type was invalid, it can only contain letters, numbers, '-', '_', and '~'."}),t}(n.type)),this.type=n.type),n.hasOwnProperty("retryAfterReconnect")&&(this.error||(this.error=function(e){let t=null;return!0!==e&&!1!==e&&(t={code:400,reason:"The signal retryAfterReconnect was not true or false. Either set it to a Boolean value or omit it"}),t}(n.retryAfterReconnect)),this.retryAfterReconnect=n.retryAfterReconnect));var r;this.valid=null===this.error};var i=r(n(42)),o=r(n(73)),a=r(n(187)),l=r(n(353)),c=r(n(355))},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;t.default={}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e,t){let n=(void 0===t?{}:t).connectionEventsSuppressed;const r=new A.default;let a=!1;const c=new U(r);r.on("reconnecting",()=>{e._.reconnecting()}),r.on("reconnected",()=>{e._.reconnected()}),r.on("close",t=>{const n=e.connection;n&&(n.destroyedReason()?Q.debug("Socket was closed but the connection had already been destroyed. Reason: "+n.destroyedReason()):n.destroy(t))});const u=function(t,n){return e.connections.has(t.id)?e.connections.get(t.id):(t=d.default.fromHash(t),(n||e.connection&&t.id!==e.connection.id)&&(e.connections.add(t),c.triggerConnectionCreated(t)),Object.keys(b).forEach(r=>{const i=b[r];if(i&&t.id===i.connection.id){p(i,e),delete b[i.id];const r={debug:n?"connection came in session#read":"connection came in connection#created",streamId:i.id,connectionId:t.id};e.logEvent("streamCreated","warning",r)}}),t)};r.on("session#read",(t,n)=>{let i;const o={streams:[],connections:[],archives:[]};t.connection.forEach(e=>{i=u(e,!0),o.connections.push(i)}),t.stream.forEach(t=>{o.streams.push(p(t,e))}),(t.archive||t.archives).forEach(t=>{o.archives.push(m(t,e))}),r.triggerCallback(n,null,o),a=!0,c.triggerSessionConnected(e.connections)}),r.on("session#update",t=>{if("mute"!==t.reason)return void Q.debug("session#update that handle this reason is not currently implemented");const n=!0===t.active;e._.forceMute({active:n}),n?e._.enableMuteOnEntry():e._.disableMuteOnEntry()}),r.on("session#muted",()=>{e._.enableMuteOnEntry(),e._.forceMute({active:!0})}),r.on("connection#created",e=>{u(e)}),r.on("connection#deleted",(t,n)=>{(t=e.connections.get(t))?t.destroy(n):Q.warn("A connection was deleted that we do not know about")}),r.on("stream#created",(t,i)=>{const o=t.id,a=t.sourceStreamId,c=t.connection;let s;if(n){if(null==c||null==c.id)return void e.logEvent("SessionDispatcher:stream#created","Event",{connection:c,info:"Stream did not contain a connection object. Event ignored"});u(c)}const d=t.connectionId||c.id;if(e.connections.has(d))s=p(t,e);else{b[o]=t;const n={debug:"eventOrderError -- streamCreated event before connectionCreated",streamId:o,sourceStreamId:(0,F.default)(a)};e.logEvent("streamCreated","warning",n)}s?(s.publisher&&s.publisher.setStream(s),r.triggerCallback(i,null,s)):e.sessionInfo.isAdaptiveEnabled&&"P2P"===a&&l.default.subscribers.where({streamId:o}).forEach(e=>{e._.startRoutedToRelayedTransition()})}),r.on("stream#deleted",(t,n,r)=>{const i=e.streams.get(t),o=r.sourceStreamId,a=l.default.subscribers,c=e.sessionInfo.isAdaptiveEnabled&&"P2P"===o;(i||c)&&(c?a.where({streamId:t}).forEach(e=>{e._.startRelayedToRoutedTransition()}):i.destroy(n))}),r.on("stream#updated",(t,n)=>{const r=e.streams.get(t);r?r._.update(n):Q.error(`A stream does not exist with the id of ${t}, for stream#updated message!`)}),r.on("stream#update",(t,n)=>{const r=e.streams.get(t),i=n.reason,o=n.active;r?"mute"===i?o&&r._.forceMute(n):Q.debug("stream#update that handle this reason is not currently implemented"):Q.error(`A stream does not exist with the id of ${t}, for stream#updated message!`)}),r.on("streamChannel#updated",(t,n,r)=>{let i;e.sessionInfo.isAdaptiveEnabled&&"P2P"===r.sourceStreamId||(t&&(i=e.streams.get(t))?i._.updateChannel(n,r):Q.error("Unable to determine streamId, or the stream does not exist, for streamChannel message!"))});const h=(t,n,r,a)=>{let c,u;const A={streamId:n},h=l.default.subscribers,g=l.default.publishers;switch(c=a.params.subscriber?{widgetId:a.params.subscriber}:A,t){case"offer":u=[].concat(h.where(c),g.where(A)).slice(0,1);break;case"answer":case"pranswer":u=[].concat(g.where(A),h.where(c)).slice(0,1);break;case"generateoffer":case"unsubscribe":u=g.where(A);break;case"candidate":u=[].concat(h.where(c),g.where(A));break;default:return void Q.debug(`jsep#${t} is not currently implemented`)}if(0===u.length)return;let F=e.connections.get(r);!F&&r.match(/^symphony\./)&&(F=d.default.fromHash({id:r,creationTime:Math.floor((0,s.default)())}),e.connections.add(F)),u.forEach(function(){var e=(0,o.default)(i.default.mark((function e(n){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,n.processMessage(t,r,a);case 3:e.next=8;break;case 5:e.prev=5,e.t0=e.catch(0),Q.error("Error occurred during processMessage",e.t0);case 8:case"end":return e.stop()}}),e,null,[[0,5]])})));return function(t){return e.apply(this,arguments)}}())};return r.on("jsep#offer",h.bind(null,"offer")),r.on("jsep#answer",h.bind(null,"answer")),r.on("jsep#pranswer",h.bind(null,"pranswer")),r.on("jsep#generateoffer",h.bind(null,"generateoffer")),r.on("jsep#unsubscribe",h.bind(null,"unsubscribe")),r.on("jsep#candidate",h.bind(null,"candidate")),r.on("subscriberChannel#updated",(t,n,r)=>{t&&e.streams.has(t)?e.streams.get(t)._.updateChannel(n,r):Q.error("Unable to determine streamId, or the stream does not exist, for subscriberChannel#updated message!")}),r.on("subscriberChannel#update",(t,n,r)=>{n&&e.streams.has(n)?l.default.subscribers.has(t)?l.default.subscribers.get(t).disableVideo(r.active):Q.error("Unable to determine subscriberId, or the subscriber does not exist, for subscriberChannel#update message!"):Q.error("Unable to determine streamId, or the stream does not exist, for subscriberChannel#update message!")}),r.on("signal",(t,r)=>{if(n){let n=r.connection||r.fromConnection;null!=n&&null!=n.id||(n=function(e){return{id:e,creationTime:(new Date).getTime(),data:{},capablities:{},permissions:[]}}(t),e.logEvent("SessionDispatcher:Signal","Event",{fromAddress:t,connection:r.connection,fromConnection:r.fromConnection,info:"Signal did not contain a connection object. One has been constructed",constructedConnection:n})),u(n)}const i=r.type,o=r.data,l=e.connections.get(t);e.connection&&t===e.connection.connectionId?a?e._.dispatchSignal(l,i,o):c.enqueue("sessionConnected","signal",t,i,o):e.connections.get(t)?e._.dispatchSignal(l,i,o):""===t?e._.dispatchSignal(null,i,o):c.enqueue("connectionCreated"+t,"signal",t,i,o)}),r.on("caption",(t,n)=>{e._.dispatchCaption(t,n)}),r.on("senderStatsReceived",(e,t)=>{var n;null==(n=l.default.subscribers.get(e))||n._onSenderStatsReceived(t)}),r.on("archive#created",t=>{m(t,e)}),r.on("archive#updated",(t,n)=>{const r=e.archives.get(t);r?r._.update(n):Q.error(`An archive does not exist with the id of ${t}, for archive#updated message!`)}),r.on("source#create",(t,n,r)=>{const i=(0,F.default)(t);e.logEvent("SessionDispatcher:source#create","Event",{sourceStreamId:i,streamId:n,reason:r}),Q.debug(`Received a request from RUMOR to start a transition to ${t} for the stream ID ${n} with the reason: ${r}`),l.default.publishers.where({streamId:n}).forEach(e=>{e._.startRoutedToRelayedTransition()})}),r.on("source#delete",(t,n,r)=>{e.logEvent("SessionDispatcher:source#delete","Event",{sourceStreamId:(0,F.default)(t),streamId:n,reason:r}),Q.debug(`Received a request from RUMOR to start a transition from P2P to MANTIS for the stream ID ${n} with the reason: ${r}`),l.default.publishers.where({streamId:n}).forEach(e=>{e._.startRelayedToRoutedTransition()})}),r};var i=r(n(4)),o=r(n(5)),a=r(n(1)),l=r(n(26)),c=r(n(357)),s=r(n(51)),d=r(n(187)),u=r(n(803)),A=r(n(352)),h=r(n(185)),g=r(n(161)),F=r(n(179));const Q=(0,a.default)("SessionDispatcher");function p(e,t){if(t.streams.has(e.id))return;const n=function(e,t){const n=e.channel.map(e=>new g.default(e)),r=e.connectionId?e.connectionId:e.connection.id;return new h.default(e.id,e.name,e.creationTime,t.connections.get(r),t,n,e.customProperties&&e.customProperties.initials)}(e,t);return t.streams.add(n),n}function m(e,t){if(t.archives.has(e.id))return;const n=function(e){return new c.default(e.id,e.name,e.status)}(e);return t.archives.add(n),n}const U=function(e){const t={};this.enqueue=function(){const n=arguments[0],r=Array.prototype.slice.call(arguments,1);t[n]||(t[n]=new u.default(e)),t[n].enqueue.apply(t[n],r)},this.triggerConnectionCreated=function(e){t["connectionCreated"+e.id]&&t["connectionCreated"+e.id].triggerAll()},this.triggerSessionConnected=function(e){t.sessionConnected&&t.sessionConnected.triggerAll(),e.forEach((function(e){this.triggerConnectionCreated(e)}),this)}},b={}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e,t,n){this.id=e,this.name=t,this.status=n,this._={},(0,i.default)(this),this._.update=e=>{Object.keys(e).forEach(t=>{const n=this[t];this[t]=e[t];const r=new o.ArchiveUpdatedEvent(this,t,n,this[t]);this.dispatchEvent(r)})},this.destroy=()=>{}};var i=r(n(6));const o=(0,r(n(18)).default)()},function(e,t,n){(function(e){function n(e,t){for(var n=0,r=e.length-1;r>=0;r--){var i=e[r];"."===i?e.splice(r,1):".."===i?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}function r(e,t){if(e.filter)return e.filter(t);for(var n=[],r=0;r<e.length;r++)t(e[r],r,e)&&n.push(e[r]);return n}t.resolve=function(){for(var t="",i=!1,o=arguments.length-1;o>=-1&&!i;o--){var a=o>=0?arguments[o]:e.cwd();if("string"!=typeof a)throw new TypeError("Arguments to path.resolve must be strings");a&&(t=a+"/"+t,i="/"===a.charAt(0))}return(i?"/":"")+(t=n(r(t.split("/"),(function(e){return!!e})),!i).join("/"))||"."},t.normalize=function(e){var o=t.isAbsolute(e),a="/"===i(e,-1);return(e=n(r(e.split("/"),(function(e){return!!e})),!o).join("/"))||o||(e="."),e&&a&&(e+="/"),(o?"/":"")+e},t.isAbsolute=function(e){return"/"===e.charAt(0)},t.join=function(){var e=Array.prototype.slice.call(arguments,0);return t.normalize(r(e,(function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e})).join("/"))},t.relative=function(e,n){function r(e){for(var t=0;t<e.length&&""===e[t];t++);for(var n=e.length-1;n>=0&&""===e[n];n--);return t>n?[]:e.slice(t,n-t+1)}e=t.resolve(e).substr(1),n=t.resolve(n).substr(1);for(var i=r(e.split("/")),o=r(n.split("/")),a=Math.min(i.length,o.length),l=a,c=0;c<a;c++)if(i[c]!==o[c]){l=c;break}var s=[];for(c=l;c<i.length;c++)s.push("..");return(s=s.concat(o.slice(l))).join("/")},t.sep="/",t.delimiter=":",t.dirname=function(e){if("string"!=typeof e&&(e+=""),0===e.length)return".";for(var t=e.charCodeAt(0),n=47===t,r=-1,i=!0,o=e.length-1;o>=1;--o)if(47===(t=e.charCodeAt(o))){if(!i){r=o;break}}else i=!1;return-1===r?n?"/":".":n&&1===r?"/":e.slice(0,r)},t.basename=function(e,t){var n=function(e){"string"!=typeof e&&(e+="");var t,n=0,r=-1,i=!0;for(t=e.length-1;t>=0;--t)if(47===e.charCodeAt(t)){if(!i){n=t+1;break}}else-1===r&&(i=!1,r=t+1);return-1===r?"":e.slice(n,r)}(e);return t&&n.substr(-1*t.length)===t&&(n=n.substr(0,n.length-t.length)),n},t.extname=function(e){"string"!=typeof e&&(e+="");for(var t=-1,n=0,r=-1,i=!0,o=0,a=e.length-1;a>=0;--a){var l=e.charCodeAt(a);if(47!==l)-1===r&&(i=!1,r=a+1),46===l?-1===t?t=a:1!==o&&(o=1):-1!==t&&(o=-1);else if(!i){n=a+1;break}}return-1===t||-1===r||0===o||1===o&&t===r-1&&t===n+1?"":e.slice(t,r)};var i="b"==="ab".substr(-1)?function(e,t,n){return e.substr(t,n)}:function(e,t,n){return t<0&&(t=e.length+t),e.substr(t,n)}}).call(this,n(29))},function(e,t,n){var r=n(817),i=n(255),o=n(90),a=n(151),l=o((function(e,t){return a(e)?r(e,i(t,1,a,!0)):[]}));e.exports=l},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;const i=(0,r(n(22)).default)().getAudioOutputMediaDevices;t.default=()=>i()},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;const i=(0,r(n(22)).default)().getActiveAudioOutputDevice;t.default=()=>i()},function(e,t,n){"use strict";(function(e){var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(4)),o=r(n(5)),a=r(n(107)),l=r(n(22)),c=r(n(258)),s=r(n(31)),d=r(n(26)),u=r(n(361));const A=a.default.setCurrentAudioOutputDeviceId,h=(0,l.default)(),g=h.getDefaultAudioOutputDeviceId,F=h.getAudioOutputMediaDevices,Q=new s.default,p=(e,t)=>{Q.logEvent({action:"updateSubscribersSinkId",variation:e,payload:t})},m=t=>{const n=d.default.subscribers.map(e=>e._.setSinkId(t));return e.all(n)},U=function(){var e=(0,o.default)(i.default.mark((function e(t){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,c.default)();case 2:return e.prev=2,p("Attempt",{deviceId:t}),e.next=6,m(t);case 6:p("Success",{deviceId:t}),e.next=13;break;case 9:throw e.prev=9,e.t0=e.catch(2),p("Failure",{deviceId:t,error:null==e.t0?void 0:e.t0.message}),e.t0;case 13:case"end":return e.stop()}}),e,null,[[2,9]])})));return function(t){return e.apply(this,arguments)}}(),b=function(){var e=(0,o.default)(i.default.mark((function e(){var t,n;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,F();case 2:return t=e.sent,n=g(t),e.prev=4,e.next=7,U(n);case 7:A(n),e.next=12;break;case 10:e.prev=10,e.t0=e.catch(4);case 12:case"end":return e.stop()}}),e,null,[[4,10]])})));return function(){return e.apply(this,arguments)}}(),Z=function(){var e=(0,o.default)(i.default.mark((function e(){var t;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,u.default)();case 2:return t=e.sent,e.prev=3,e.next=6,U(t.deviceId);case 6:e.next=12;break;case 8:return e.prev=8,e.t0=e.catch(3),e.next=12,b();case 12:case"end":return e.stop()}}),e,null,[[3,8]])})));return function(){return e.apply(this,arguments)}}();var B=function(){var e=(0,o.default)(i.default.mark((function e(t){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,p("Attempt",{deviceId:t}),e.next=4,m(t);case 4:p("Success",{deviceId:t}),A(t),e.next=14;break;case 8:return e.prev=8,e.t0=e.catch(0),p("Failure",{deviceId:t,error:null==e.t0?void 0:e.t0.message}),e.next=13,Z();case 13:throw e.t0;case 14:case"end":return e.stop()}}),e,null,[[0,8]])})));return function(t){return e.apply(this,arguments)}}();t.default=B}).call(this,n(2))},function(e,t,n){"use strict";var r=n(0),i=r(n(42)),o=r(n(205)),a=r(n(6)),l=r(n(1)),c=r(n(130)),s=r(n(22)),d=r(n(145)),u=r(n(274)),A=r(n(146)),h=r(n(74)),g=r(n(10)),F=r(n(25)),Q=r(n(259)),p=r(n(109)),m=r(n(154)),U=r(n(30)),b=r(n(148)),Z=r(n(37)),B=r(n(31)),f=r(n(263)),R=r(n(590)),I=r(n(591)),y=r(n(592)),V=r(n(26)),C=r(n(15)),W=r(n(8)),E=r(n(155)),v=r(n(7)),S=r(n(73)),J=r(n(156)),G=r(n(276)),N=r(n(157)),X=r(n(158)),k=r(n(277)),T=r(n(270)),Y=r(n(620)),w=n(110),D=r(n(290)),x=r(n(161)),M=r(n(162)),H=r(n(163)),K=r(n(75)),L=r(n(307)),z=r(n(308)),O=r(n(18)),j=r(n(170)),P=r(n(673)),_=r(n(171)),q=r(n(678)),$=r(n(681)),ee=r(n(172)),te=r(n(318)),ne=r(n(272)),re=r(n(173)),ie=r(n(319)),oe=r(n(325)),ae=r(n(326)),le=r(n(702)),ce=r(n(176)),se=r(n(330)),de=r(n(181)),ue=r(n(346)),Ae=r(n(347)),he=r(n(824)),ge=r(n(825)),Fe=r(n(826)),Qe=r(n(827)),pe=r(n(357)),me=r(n(184)),Ue=r(n(187)),be=r(n(828)),Ze=r(n(360)),Be=r(n(361)),fe=r(n(829)),Re=r(n(305)),Ie=r(n(356)),ye=r(n(354)),Ve=r(n(185)),Ce=r(n(337)),We=r(n(78)),Ee=r(n(301)),ve=n(72),Se=r(n(177)),Je=r(n(830));n(832);const Ge=(0,Z.default)(),Ne=(0,l.default)("OT"),Xe=Ge.onlyLocal(),ke={};ke.noConflict=(0,y.default)(),(void 0!==typeof window?window:global).OT=ke,e.exports=ke,(()=>{let e=ke;Object.defineProperty(void 0!==typeof window?window:global,"TB",{get:()=>(e===ke&&console.warn("window.TB is deprecated, and will be removed in the future. Please access via window.OT"),e),set:t=>{e=t},configurable:!0})})();const Te=(0,E.default)(void 0!==typeof window?window:global),Ye=(0,K.default)({global:Te}),we=(0,C.default)({}),De=(0,d.default)(),xe=(0,L.default)({otError:we}),Me=(0,z.default)(),He=(0,Q.default)({global:Te}),Ke=(0,s.default)({getNativeEnumerateDevices:He}),Le=(0,O.default)(),ze=(0,j.default)(),Oe=(0,P.default)({otError:we,global:Te}),je=(0,_.default)({chromeExtensionHelper:xe,otError:we}),Pe=(0,q.default)({deviceHelpers:Ke,generateConstraintInfo:k.default,getUserMediaHelper:Oe,global:Te,OTHelpers:v.default,screenSharing:je}),_e=(0,$.default)({otError:we,processPubOptions:Pe}),qe=(0,ee.default)({otError:we}),$e=(0,te.default)(),et=(0,ne.default)({otError:we}),tt=(0,o.default)({global:Te,videoElementErrorMap:et}),nt=(0,re.default)({global:Te}),rt=(0,ie.default)({PeerConnection:Ye,setCertificates:nt}),it=(0,oe.default)({PeerConnection:Ye,setCertificates:nt}),ot=(0,ae.default)(),at=(0,le.default)({otError:we}),lt=(0,p.default)({NativeVideoElementWrapper:tt}),ct=(0,m.default)(),st=(0,ce.default)({VideoElementFacade:lt}),dt=(0,se.default)({interpretPeerConnectionError:qe,otError:we,SubscriberPeerConnection:it,WidgetView:st}),ut=(0,de.default)({APIKEY:S.default,createChromeMixin:Me,deviceHelpers:Ke,EnvironmentLoader:X.default,Errors:W.default,Events:Le,ExceptionCodes:g.default,calculateCapableSimulcastStreams:G.default,global:Te,interpretPeerConnectionError:qe,IntervalRunner:h.default,Microphone:$e,otError:we,OTErrorClass:F.default,OTHelpers:v.default,parseIceServers:w.parseIceServers,processPubOptions:Pe,PUBLISH_MAX_DELAY:D.default,PublisherPeerConnection:rt,PublishingState:ot,StreamChannel:x.default,systemRequirements:H.default,VideoOrientation:ct,WidgetView:st}),At=(0,ue.default)({otError:we,Publisher:ut}),ht=(0,Ae.default)({global:Te,initPublisher:At,otError:we,Publisher:ut,Subscriber:dt}),gt=(0,he.default)({Session:ht});(0,a.default)(ke),(0,f.default)(ke,"$",{name:"OT.$",getMessage:"Please use an external library like jQuery to select elements from the page.",value:v.default}),ke.APIKEY=S.default.value,ke.AnalyserAudioLevelSampler=A.default,ke.Archive=pe.default,ke.ArchiveEvent=Le.ArchiveEvent,ke.ArchiveUpdatedEvent=Le.ArchiveUpdatedEvent,ke.AudioLevelTransformer=J.default,ke.AudioLevelUpdatedEvent=Le.AudioLevelUpdatedEvent,ke.AudioInputDeviceChangedEvent=Le.AudioInputDeviceChangedEvent,ke.Capabilities=me.default,ke.Chrome=N.default,ke.Connection=Ue.default,ke.ConnectionCapabilities=ke.Connection.Capabilities,ke.ConnectionEvent=Le.ConnectionEvent,ke.CpuPerformanceChangedEvent=Le.CpuPerformanceChangedEvent,Object.keys(c.default).forEach(e=>{ke[e.toUpperCase()]=c.default[e].priority}),ke.NONE=0,ke.debug=Ne.debug,ke.error=Ne.error,ke.info=Ne.info,ke.log=Ne.log,ke.warn=Ne.warn,ke.DestroyedEvent=Le.DestroyedEvent,ke.EnvLoadedEvent=Le.EnvLoadedEvent,ke.Error=F.default,ke.Error.on(U.default.EXCEPTION,e=>{if(e.target===ke.Error){const t=(0,i.default)(e);t.target=ke,ke.dispatchEvent(t)}else ke.dispatchEvent(e)}),ke.Event=b.default,ke.ExceptionCodes=g.default,ke.ExceptionEvent=Le.ExceptionEvent,ke.getDevices=be.default,ke.getAudioOutputDevices=Ze.default,ke.getActiveAudioOutputDevice=Be.default,ke.setAudioOutputDevice=(0,fe.default)(),ke.GetAudioLevelSampler=u.default,ke.HAS_REQUIREMENTS=1,ke.IntervalRunner=h.default,ke.IssueReportedEvent=Le.IssueReportedEvent,ke.MediaStoppedEvent=Le.MediaStoppedEvent,ke.MediaStreamAvailableEvent=Le.MediaStreamAvailableEvent,ke.Microphone=$e,ke.NOT_HAS_REQUIREMENTS=0,ke.PeerConnection=Ye,ke.PeerConnection.QOS=Re.default,ke.Publisher=ut,ke.PublisherPeerConnection=rt,ke.PublishingState=ot,ke.MuteForcedEvent=Le.MuteForcedEvent,ke.Session=ht,ke.SessionConnectEvent=Le.SessionConnectEvent,ke.SessionDisconnectEvent=Le.SessionDisconnectEvent,ke.SessionDispatcher=Ie.default,ke.Signal=ye.default,ke.SignalEvent=Le.SignalEvent,ke.Stream=Ve.default,ke.StreamChannel=x.default,ke.StreamEvent=Le.StreamEvent,ke.StreamPropertyChangedEvent=Le.StreamPropertyChangedEvent,ke.StreamUpdatedEvent=Le.StreamUpdatedEvent,ke.StylableComponent=M.default,ke.Subscriber=dt,ke.SubscriberPeerConnection=it,ke.SubscribingState=Ce.default,ke.VideoDimensionsChangedEvent=Le.VideoDimensionsChangedEvent,ke.VideoDisableWarningEvent=Le.VideoDisableWarningEvent,ke.VideoElement=lt,ke.VideoEnabledChangedEvent=Le.VideoEnabledChangedEvent,ke.VideoOrientation=ct,ke.WidgetView=st,ke.getSupportedCodecs=ge.default,ke.hasMediaProcessorSupport=Fe.default,ke.hasEndToEndEncryptionSupport=Qe.default,ke._={AnalyticsHelper:B.default,getClientGuid:T.default.get,StaticConfig:Ge},Object.defineProperty(ke,"version",{value:Xe.version});const Ft={};(0,f.default)(Ft,"version",{value:Xe.version,name:"OT.properties.version",getWarning:"Please use OT.version instead",warnOnSet:!0,setWarning:"Mutating version has no effect"}),R.default.forEach(e=>{let t,n;if(Array.isArray(e)){const r=e[0],i=e[1];n=r,t=Xe[i]||i}else t=Xe[e],n=e;const r=(i=n,I.default.includes(i));var i;(0,f.default)(Ft,n,{value:t,name:"OT.properties."+n,warnOnSet:!0,canSet:r,setWarning:r?`Mutating ${n} can cause side effects`:`Mutating ${n} has no effect`})}),ke.properties=Ft,ke.audioContext=De,ke.checkScreenSharingCapability=je.checkCapability,ke.checkSystemRequirements=H.default.check,ke.components={},ke.generateSimpleStateMachine=ze,ke.getErrorTitleByCode=F.default.getTitleByCode,ke.getLogs=Ne.getLogs,ke.getStatsAdpater=Ee.default,ke.getStatsHelpers=We.default,ke.getUserMedia=_e,ke.handleJsException=F.default.handleJsException,ke.initPublisher=At,ke.setProxyUrl=ve.setProxyUrl,ke.initSession=function(e,t,n){return null==t&&(t=e,e=null),0===S.default.value.length&&e&&(S.default.value=e,ke.APIKEY=e),gt(e,t,n)};const Qt=(e,t)=>()=>(console.warn(e+" is deprecated and will be removed in a future version of OpenTok"),t);Object.defineProperties(ke,{isUnloaded:{get:Qt("OT.isUnloaded",X.default.isUnloaded)},onLoad:{get:Qt("OT.onLoad",X.default.onLoad)},onUnload:{get:Qt("OT.onUnload",X.default.onUnload)},overrideGuidStorage:{get:Qt("OT.overrideGuidStorage",T.default.override)}}),ke.pickScreenSharingHelper=je.pickHelper,ke.publishers=V.default.publishers,ke.registerScreenSharingExtension=je.registerExtension,ke.registerScreenSharingExtensionHelper=je.registerExtensionHelper,ke.reportIssue=at,ke.sessions=V.default.sessions,ke.setLogLevel=Y.default,ke.shouldLog=Ne.shouldLog,ke.subscribers=V.default.subscribers,ke.unblockAudio=Se.default,ke.upgradeSystemRequirements=H.default.upgrade,X.default.onUnload(()=>{V.default.publishers.destroy(),V.default.subscribers.destroy(),V.default.sessions.destroy("unloaded")}),(0,Je.default)()},function(e,t){e.exports=function(){this.__data__=[],this.size=0}},function(e,t,n){var r=n(83),i=Array.prototype.splice;e.exports=function(e){var t=this.__data__,n=r(t,e);return!(n<0)&&(n==t.length-1?t.pop():i.call(t,n,1),--this.size,!0)}},function(e,t,n){var r=n(83);e.exports=function(e){var t=this.__data__,n=r(t,e);return n<0?void 0:t[n][1]}},function(e,t,n){var r=n(83);e.exports=function(e){return r(this.__data__,e)>-1}},function(e,t,n){var r=n(83);e.exports=function(e,t){var n=this.__data__,i=r(n,e);return i<0?(++this.size,n.push([e,t])):n[i][1]=t,this}},function(e,t,n){var r=n(82);e.exports=function(){this.__data__=new r,this.size=0}},function(e,t){e.exports=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}},function(e,t){e.exports=function(e){return this.__data__.get(e)}},function(e,t){e.exports=function(e){return this.__data__.has(e)}},function(e,t,n){var r=n(82),i=n(116),o=n(117);e.exports=function(e,t){var n=this.__data__;if(n instanceof r){var a=n.__data__;if(!i||a.length<199)return a.push([e,t]),this.size=++n.size,this;n=this.__data__=new o(a)}return n.set(e,t),this.size=n.size,this}},function(e,t,n){var r=n(20),i=n(377),o=n(11),a=n(189),l=/^\[object .+?Constructor\]$/,c=Function.prototype,s=Object.prototype,d=c.toString,u=s.hasOwnProperty,A=RegExp("^"+d.call(u).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!o(e)||i(e))&&(r(e)?A:l).test(a(e))}},function(e,t,n){var r=n(44),i=Object.prototype,o=i.hasOwnProperty,a=i.toString,l=r?r.toStringTag:void 0;e.exports=function(e){var t=o.call(e,l),n=e[l];try{e[l]=void 0;var r=!0}catch(e){}var i=a.call(e);return r&&(t?e[l]=n:delete e[l]),i}},function(e,t){var n=Object.prototype.toString;e.exports=function(e){return n.call(e)}},function(e,t,n){var r,i=n(378),o=(r=/[^.]+$/.exec(i&&i.keys&&i.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";e.exports=function(e){return!!o&&o in e}},function(e,t,n){var r=n(16)["__core-js_shared__"];e.exports=r},function(e,t){e.exports=function(e,t){return null==e?void 0:e[t]}},function(e,t,n){var r=n(381),i=n(82),o=n(116);e.exports=function(){this.size=0,this.__data__={hash:new r,map:new(o||i),string:new r}}},function(e,t,n){var r=n(382),i=n(383),o=n(384),a=n(385),l=n(386);function c(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}c.prototype.clear=r,c.prototype.delete=i,c.prototype.get=o,c.prototype.has=a,c.prototype.set=l,e.exports=c},function(e,t,n){var r=n(84);e.exports=function(){this.__data__=r?r(null):{},this.size=0}},function(e,t){e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},function(e,t,n){var r=n(84),i=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(r){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return i.call(t,e)?t[e]:void 0}},function(e,t,n){var r=n(84),i=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return r?void 0!==t[e]:i.call(t,e)}},function(e,t,n){var r=n(84);e.exports=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=r&&void 0===t?"__lodash_hash_undefined__":t,this}},function(e,t,n){var r=n(85);e.exports=function(e){var t=r(this,e).delete(e);return this.size-=t?1:0,t}},function(e,t){e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},function(e,t,n){var r=n(85);e.exports=function(e){return r(this,e).get(e)}},function(e,t,n){var r=n(85);e.exports=function(e){return r(this,e).has(e)}},function(e,t,n){var r=n(85);e.exports=function(e,t){var n=r(this,e),i=n.size;return n.set(e,t),this.size+=n.size==i?0:1,this}},function(e,t){e.exports=function(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}},function(e,t,n){var r=n(33),i=n(21);e.exports=function(e){return i(e)&&"[object Arguments]"==r(e)}},function(e,t){e.exports=function(){return!1}},function(e,t,n){var r=n(33),i=n(119),o=n(21),a={};a["[object Float32Array]"]=a["[object Float64Array]"]=a["[object Int8Array]"]=a["[object Int16Array]"]=a["[object Int32Array]"]=a["[object Uint8Array]"]=a["[object Uint8ClampedArray]"]=a["[object Uint16Array]"]=a["[object Uint32Array]"]=!0,a["[object Arguments]"]=a["[object Array]"]=a["[object ArrayBuffer]"]=a["[object Boolean]"]=a["[object DataView]"]=a["[object Date]"]=a["[object Error]"]=a["[object Function]"]=a["[object Map]"]=a["[object Number]"]=a["[object Object]"]=a["[object RegExp]"]=a["[object Set]"]=a["[object String]"]=a["[object WeakMap]"]=!1,e.exports=function(e){return o(e)&&i(e.length)&&!!a[r(e)]}},function(e,t,n){var r=n(193)(Object.keys,Object);e.exports=r},function(e,t,n){var r=n(45),i=n(55);e.exports=function(e,t){return e&&r(t,i(t),e)}},function(e,t,n){var r=n(11),i=n(69),o=n(399),a=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return o(e);var t=i(e),n=[];for(var l in e)("constructor"!=l||!t&&a.call(e,l))&&n.push(l);return n}},function(e,t){e.exports=function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t}},function(e,t,n){var r=n(45),i=n(122);e.exports=function(e,t){return r(e,i(e),t)}},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,i=0,o=[];++n<r;){var a=e[n];t(a,n,e)&&(o[i++]=a)}return o}},function(e,t,n){var r=n(45),i=n(196);e.exports=function(e,t){return r(e,i(e),t)}},function(e,t,n){var r=n(43)(n(16),"DataView");e.exports=r},function(e,t,n){var r=n(43)(n(16),"Promise");e.exports=r},function(e,t){var n=Object.prototype.hasOwnProperty;e.exports=function(e){var t=e.length,r=new e.constructor(t);return t&&"string"==typeof e[0]&&n.call(e,"index")&&(r.index=e.index,r.input=e.input),r}},function(e,t,n){var r=n(125),i=n(407),o=n(408),a=n(409),l=n(203);e.exports=function(e,t,n){var c=e.constructor;switch(t){case"[object ArrayBuffer]":return r(e);case"[object Boolean]":case"[object Date]":return new c(+e);case"[object DataView]":return i(e,n);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return l(e,n);case"[object Map]":return new c;case"[object Number]":case"[object String]":return new c(e);case"[object RegExp]":return o(e);case"[object Set]":return new c;case"[object Symbol]":return a(e)}}},function(e,t,n){var r=n(125);e.exports=function(e,t){var n=t?r(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}},function(e,t){var n=/\w*$/;e.exports=function(e){var t=new e.constructor(e.source,n.exec(e));return t.lastIndex=e.lastIndex,t}},function(e,t,n){var r=n(44),i=r?r.prototype:void 0,o=i?i.valueOf:void 0;e.exports=function(e){return o?Object(o.call(e)):{}}},function(e,t,n){var r=n(411),i=n(68),o=n(120),a=o&&o.isMap,l=a?i(a):r;e.exports=l},function(e,t,n){var r=n(46),i=n(21);e.exports=function(e){return i(e)&&"[object Map]"==r(e)}},function(e,t,n){var r=n(413),i=n(68),o=n(120),a=o&&o.isSet,l=a?i(a):r;e.exports=l},function(e,t,n){var r=n(46),i=n(21);e.exports=function(e){return i(e)&&"[object Set]"==r(e)}},function(e,t,n){var r=function(){return this||"object"==typeof self&&self}()||Function("return this")(),i=r.regeneratorRuntime&&Object.getOwnPropertyNames(r).indexOf("regeneratorRuntime")>=0,o=i&&r.regeneratorRuntime;if(r.regeneratorRuntime=void 0,e.exports=n(415),i)r.regeneratorRuntime=o;else try{delete r.regeneratorRuntime}catch(e){r.regeneratorRuntime=void 0}},function(e,t,n){(function(t){!function(n){"use strict";var r=Object.prototype,i=r.hasOwnProperty,o="function"==typeof Symbol?Symbol:{},a=o.iterator||"@@iterator",l=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag",s="object"==typeof e,d=n.regeneratorRuntime;if(d)s&&(e.exports=d);else{(d=n.regeneratorRuntime=s?e.exports:{}).wrap=Q;var u={},A={};A[a]=function(){return this};var h=Object.getPrototypeOf,g=h&&h(h(V([])));g&&g!==r&&i.call(g,a)&&(A=g);var F=b.prototype=m.prototype=Object.create(A);U.prototype=F.constructor=b,b.constructor=U,b[c]=U.displayName="GeneratorFunction",d.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===U||"GeneratorFunction"===(t.displayName||t.name))},d.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,b):(e.__proto__=b,c in e||(e[c]="GeneratorFunction")),e.prototype=Object.create(F),e},d.awrap=function(e){return{__await:e}},Z(B.prototype),B.prototype[l]=function(){return this},d.AsyncIterator=B,d.async=function(e,t,n,r){var i=new B(Q(e,t,n,r));return d.isGeneratorFunction(t)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},Z(F),F[c]="Generator",F[a]=function(){return this},F.toString=function(){return"[object Generator]"},d.keys=function(e){var t=[];for(var n in e)t.push(n);return t.reverse(),function n(){for(;t.length;){var r=t.pop();if(r in e)return n.value=r,n.done=!1,n}return n.done=!0,n}},d.values=V,y.prototype={constructor:y,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(I),!e)for(var t in this)"t"===t.charAt(0)&&i.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function n(n,r){return a.type="throw",a.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r],a=o.completion;if("root"===o.tryLoc)return n("end");if(o.tryLoc<=this.prev){var l=i.call(o,"catchLoc"),c=i.call(o,"finallyLoc");if(l&&c){if(this.prev<o.catchLoc)return n(o.catchLoc,!0);if(this.prev<o.finallyLoc)return n(o.finallyLoc)}else if(l){if(this.prev<o.catchLoc)return n(o.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return n(o.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var o=r;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=e,a.arg=t,o?(this.method="next",this.next=o.finallyLoc,u):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),u},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),I(n),u}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var i=r.arg;I(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:V(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),u}}}function Q(e,t,n,r){var i=t&&t.prototype instanceof m?t:m,o=Object.create(i.prototype),a=new y(r||[]);return o._invoke=function(e,t,n){var r="suspendedStart";return function(i,o){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===i)throw o;return C()}for(n.method=i,n.arg=o;;){var a=n.delegate;if(a){var l=f(a,n);if(l){if(l===u)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var c=p(e,t,n);if("normal"===c.type){if(r=n.done?"completed":"suspendedYield",c.arg===u)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(r="completed",n.method="throw",n.arg=c.arg)}}}(e,n,a),o}function p(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}function m(){}function U(){}function b(){}function Z(e){["next","throw","return"].forEach((function(t){e[t]=function(e){return this._invoke(t,e)}}))}function B(e){var n;this._invoke=function(r,o){function a(){return new t((function(n,a){!function n(r,o,a,l){var c=p(e[r],e,o);if("throw"!==c.type){var s=c.arg,d=s.value;return d&&"object"==typeof d&&i.call(d,"__await")?t.resolve(d.__await).then((function(e){n("next",e,a,l)}),(function(e){n("throw",e,a,l)})):t.resolve(d).then((function(e){s.value=e,a(s)}),(function(e){return n("throw",e,a,l)}))}l(c.arg)}(r,o,n,a)}))}return n=n?n.then(a,a):a()}}function f(e,t){var n=e.iterator[t.method];if(void 0===n){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,f(e,t),"throw"===t.method))return u;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return u}var r=p(n,e.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,u;var i=r.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,u):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,u)}function R(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function I(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function y(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(R,this),this.reset(!0)}function V(e){if(e){var t=e[a];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,r=function t(){for(;++n<e.length;)if(i.call(e,n))return t.value=e[n],t.done=!1,t;return t.value=void 0,t.done=!0,t};return r.next=r}}return{next:C}}function C(){return{value:void 0,done:!0}}}(function(){return this||"object"==typeof self&&self}()||Function("return this")())}).call(this,n(2))},function(e,t,n){var r=n(417),i=n(190),o=n(91),a=i?function(e,t){return i(e,"toString",{configurable:!0,enumerable:!1,value:r(t),writable:!0})}:o;e.exports=a},function(e,t){e.exports=function(e){return function(){return e}}},function(e,t,n){(function(r){t.log=function(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)},t.formatArgs=function(t){var n=this.useColors;if(t[0]=(n?"%c":"")+this.namespace+(n?" %c":" ")+t[0]+(n?"%c ":" ")+"+"+e.exports.humanize(this.diff),!n)return;var r="color: "+this.color;t.splice(1,0,r,"color: inherit");var i=0,o=0;t[0].replace(/%[a-zA-Z%]/g,(function(e){"%%"!==e&&(i++,"%c"===e&&(o=i))})),t.splice(o,0,r)},t.save=function(e){try{null==e?t.storage.removeItem("debug"):t.storage.setItem("debug",e)}catch(e){}},t.load=function(){var e;try{e=t.storage.getItem("debug")}catch(e){}!e&&void 0!==r&&"env"in r&&(e=r.env.DEBUG);return e},t.useColors=function(){var e=function(e){var n="debug_"+e.toLowerCase();try{return t.storage.getItem(n)}catch(e){return void 0!==r&&"env"in r?r.env[n.toUpperCase()]:void 0}}("colors");if(/^(no|off|false|disabled)$/i.test(e))return!1;if("undefined"!=typeof window&&window.process&&"renderer"===window.process.type)return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;return Boolean("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.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"],e.exports=n(419)(t),e.exports.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}).call(this,n(29))},function(e,t,n){e.exports=function(e){function t(e){var t,n=0;for(t in e)n=(n<<5)-n+e.charCodeAt(t),n|=0;return r.colors[Math.abs(n)%r.colors.length]}function r(e){var n;function o(){if(o.enabled){var e=o,t=+new Date,i=t-(n||t);e.diff=i,e.prev=n,e.curr=t,n=t;for(var a=new Array(arguments.length),l=0;l<a.length;l++)a[l]=arguments[l];a[0]=r.coerce(a[0]),"string"!=typeof a[0]&&a.unshift("%O");var c=0;a[0]=a[0].replace(/%([a-zA-Z%])/g,(function(t,n){if("%%"===t)return t;c++;var i=r.formatters[n];if("function"==typeof i){var o=a[c];t=i.call(e,o),a.splice(c,1),c--}return t})),r.formatArgs.call(e,a);var s=e.log||r.log;s.apply(e,a)}}return o.namespace=e,o.enabled=r.enabled(e),o.useColors=r.useColors(),o.color=t(e),o.destroy=i,"function"==typeof r.init&&r.init(o),r.instances.push(o),o}function i(){var e=r.instances.indexOf(this);return-1!==e&&(r.instances.splice(e,1),!0)}return r.debug=r.default=r,r.coerce=function(e){return e instanceof Error?e.stack||e.message:e},r.disable=function(){r.enable("")},r.enable=function(e){var t;r.save(e),r.names=[],r.skips=[];var n=("string"==typeof e?e:"").split(/[\s,]+/),i=n.length;for(t=0;t<i;t++)n[t]&&("-"===(e=n[t].replace(/\*/g,".*?"))[0]?r.skips.push(new RegExp("^"+e.substr(1)+"$")):r.names.push(new RegExp("^"+e+"$")));for(t=0;t<r.instances.length;t++){var o=r.instances[t];o.enabled=r.enabled(o.namespace)}},r.enabled=function(e){if("*"===e[e.length-1])return!0;var t,n;for(t=0,n=r.skips.length;t<n;t++)if(r.skips[t].test(e))return!1;for(t=0,n=r.names.length;t<n;t++)if(r.names[t].test(e))return!0;return!1},r.humanize=n(420),Object.keys(e).forEach((function(t){r[t]=e[t]})),r.instances=[],r.names=[],r.skips=[],r.formatters={},r.selectColor=t,r.enable(r.load()),r}},function(e,t){var n=1e3,r=6e4,i=60*r,o=24*i;function a(e,t,n,r){var i=t>=1.5*n;return Math.round(e/n)+" "+r+(i?"s":"")}e.exports=function(e,t){t=t||{};var l=typeof e;if("string"===l&&e.length>0)return function(e){if((e=String(e)).length>100)return;var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(!t)return;var a=parseFloat(t[1]);switch((t[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*a;case"weeks":case"week":case"w":return 6048e5*a;case"days":case"day":case"d":return a*o;case"hours":case"hour":case"hrs":case"hr":case"h":return a*i;case"minutes":case"minute":case"mins":case"min":case"m":return a*r;case"seconds":case"second":case"secs":case"sec":case"s":return a*n;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return a;default:return}}(e);if("number"===l&&isFinite(e))return t.long?function(e){var t=Math.abs(e);if(t>=o)return a(e,t,o,"day");if(t>=i)return a(e,t,i,"hour");if(t>=r)return a(e,t,r,"minute");if(t>=n)return a(e,t,n,"second");return e+" ms"}(e):function(e){var t=Math.abs(e);if(t>=o)return Math.round(e/o)+"d";if(t>=i)return Math.round(e/i)+"h";if(t>=r)return Math.round(e/r)+"m";if(t>=n)return Math.round(e/n)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(209));const o=new i.default;var a=function(e,t){if(void 0===t)return e;o.has(t)||o.set(t,new i.default);const n=o.get(t);return n.has(e)||n.set(e,e.bind(t)),n.get(e)};t.default=a},function(e,t,n){"use strict";e.exports=function(){var e,t;if("function"!=typeof WeakMap)return!1;try{e=new WeakMap([[t={},"one"],[{},"two"],[{},"three"]])}catch(e){return!1}return"[object WeakMap]"===String(e)&&("function"==typeof e.set&&(e.set({},1)===e&&("function"==typeof e.delete&&("function"==typeof e.has&&"one"===e.get(t)))))}},function(e,t,n){"use strict";var r,i=n(47),o=n(131),a=n(426),l=n(35),c=n(427),s=n(36),d=n(216),u=n(469),A=n(48).toStringTag,h=n(470),g=Array.isArray,F=Object.defineProperty,Q=Object.prototype.hasOwnProperty,p=Object.getPrototypeOf;e.exports=r=function(){var e,t=arguments[0];if(!(this instanceof r))throw new TypeError("Constructor requires 'new'");return e=h&&o&&WeakMap!==r?o(new WeakMap,p(this)):this,i(t)&&(g(t)||(t=d(t))),F(e,"__weakMapData__",s("c","$weakMap$"+c())),t?(u(t,(function(t){l(t),e.set(t[0],t[1])})),e):e},h&&(o&&o(r,WeakMap),r.prototype=Object.create(WeakMap.prototype,{constructor:s(r)})),Object.defineProperties(r.prototype,{delete:s((function(e){return!!Q.call(a(e),this.__weakMapData__)&&(delete e[this.__weakMapData__],!0)})),get:s((function(e){if(Q.call(a(e),this.__weakMapData__))return e[this.__weakMapData__]})),has:s((function(e){return Q.call(a(e),this.__weakMapData__)})),set:s((function(e,t){return F(a(e),this.__weakMapData__,s("c",t)),this})),toString:s((function(){return"[object WeakMap]"}))}),F(r.prototype,A,s("c","WeakMap"))},function(e,t,n){"use strict";e.exports=function(){}},function(e,t,n){"use strict";var r,i,o,a,l=Object.create;n(210)()||(r=n(211)),e.exports=r?1!==r.level?l:(i={},o={},a={configurable:!1,enumerable:!1,writable:!0,value:void 0},Object.getOwnPropertyNames(Object.prototype).forEach((function(e){o[e]="__proto__"!==e?a:{configurable:!0,enumerable:!1,writable:!0,value:void 0}})),Object.defineProperties(i,o),Object.defineProperty(r,"nullPolyfill",{configurable:!1,enumerable:!1,writable:!1,value:i}),function(e,t){return l(null===e?i:e,t)}):l},function(e,t,n){"use strict";var r=n(212);e.exports=function(e){if(!r(e))throw new TypeError(e+" is not an Object");return e}},function(e,t,n){"use strict";var r=Object.create(null),i=Math.random;e.exports=function(){var e;do{e=i().toString(36).slice(2)}while(r[e]);return e}},function(e,t,n){"use strict";var r=n(429);e.exports=function(e){if("function"!=typeof e)return!1;if(!hasOwnProperty.call(e,"length"))return!1;try{if("number"!=typeof e.length)return!1;if("function"!=typeof e.call)return!1;if("function"!=typeof e.apply)return!1}catch(e){return!1}return!r(e)}},function(e,t,n){"use strict";var r=n(132);e.exports=function(e){if(!r(e))return!1;try{return!!e.constructor&&e.constructor.prototype===e}catch(e){return!1}}},function(e,t,n){"use strict";e.exports=function(){var e,t=Object.assign;return"function"==typeof t&&(t(e={foo:"raz"},{bar:"dwa"},{trzy:"trzy"}),e.foo+e.bar+e.trzy==="razdwatrzy")}},function(e,t,n){"use strict";var r=n(432),i=n(35),o=Math.max;e.exports=function(e,t){var n,a,l,c=o(arguments.length,2);for(e=Object(i(e)),l=function(r){try{e[r]=t[r]}catch(e){n||(n=e)}},a=1;a<c;++a)r(t=arguments[a]).forEach(l);if(void 0!==n)throw n;return e}},function(e,t,n){"use strict";e.exports=n(433)()?Object.keys:n(434)},function(e,t,n){"use strict";e.exports=function(){try{return Object.keys("primitive"),!0}catch(e){return!1}}},function(e,t,n){"use strict";var r=n(47),i=Object.keys;e.exports=function(e){return i(r(e)?Object(e):e)}},function(e,t,n){"use strict";var r="razdwatrzy";e.exports=function(){return"function"==typeof r.contains&&(!0===r.contains("dwa")&&!1===r.contains("foo"))}},function(e,t,n){"use strict";var r=String.prototype.indexOf;e.exports=function(e){return r.call(this,e,arguments[1])>-1}},function(e,t,n){"use strict";var r,i=n(131),o=n(215),a=n(36),l=n(48),c=n(218),s=Object.defineProperty;r=e.exports=function(e,t){if(!(this instanceof r))throw new TypeError("Constructor requires 'new'");c.call(this,e),t=t?o.call(t,"key+value")?"key+value":o.call(t,"key")?"key":"value":"value",s(this,"__kind__",a("",t))},i&&i(r,c),delete r.prototype.constructor,r.prototype=Object.create(c.prototype,{_resolve:a((function(e){return"value"===this.__kind__?this.__list__[e]:"key+value"===this.__kind__?[e,this.__list__[e]]:e}))}),s(r.prototype,l.toStringTag,a("c","Array Iterator"))},function(e,t,n){"use strict";var r=n(94),i={object:!0,symbol:!0};e.exports=function(){var e,t=r.Symbol;if("function"!=typeof t)return!1;e=t("test symbol");try{String(e)}catch(e){return!1}return!!i[typeof t.iterator]&&(!!i[typeof t.toPrimitive]&&!!i[typeof t.toStringTag])}},function(e,t,n){"use strict";e.exports=function(){return"object"==typeof globalThis&&(!!globalThis&&globalThis.Array===Array)}},function(e,t){var n=function(){if("object"==typeof self&&self)return self;if("object"==typeof window&&window)return window;throw new Error("Unable to resolve global `this`")};e.exports=function(){if(this)return this;try{Object.defineProperty(Object.prototype,"__global__",{get:function(){return this},configurable:!0})}catch(e){return n()}try{return __global__||n()}finally{delete Object.prototype.__global__}}()},function(e,t,n){"use strict";var r,i,o,a=n(36),l=n(217),c=n(94).Symbol,s=n(443),d=n(444),u=n(445),A=Object.create,h=Object.defineProperties,g=Object.defineProperty;if("function"==typeof c)try{String(c()),o=!0}catch(e){}else c=null;i=function(e){if(this instanceof i)throw new TypeError("Symbol is not a constructor");return r(e)},e.exports=r=function e(t){var n;if(this instanceof e)throw new TypeError("Symbol is not a constructor");return o?c(t):(n=A(i.prototype),t=void 0===t?"":String(t),h(n,{__description__:a("",t),__name__:a("",s(t))}))},d(r),u(r),h(i.prototype,{constructor:a(r),toString:a("",(function(){return this.__name__}))}),h(r.prototype,{toString:a((function(){return"Symbol ("+l(this).__description__+")"})),valueOf:a((function(){return l(this)}))}),g(r.prototype,r.toPrimitive,a("",(function(){var e=l(this);return"symbol"==typeof e?e:e.toString()}))),g(r.prototype,r.toStringTag,a("c","Symbol")),g(i.prototype,r.toStringTag,a("c",r.prototype[r.toStringTag])),g(i.prototype,r.toPrimitive,a("c",r.prototype[r.toPrimitive]))},function(e,t,n){"use strict";e.exports=function(e){return!!e&&("symbol"==typeof e||!!e.constructor&&("Symbol"===e.constructor.name&&"Symbol"===e[e.constructor.toStringTag]))}},function(e,t,n){"use strict";var r=n(36),i=Object.create,o=Object.defineProperty,a=Object.prototype,l=i(null);e.exports=function(e){for(var t,n,i=0;l[e+(i||"")];)++i;return l[e+=i||""]=!0,o(a,t="@@"+e,r.gs(null,(function(e){n||(n=!0,o(this,t,r(e)),n=!1)}))),t}},function(e,t,n){"use strict";var r=n(36),i=n(94).Symbol;e.exports=function(e){return Object.defineProperties(e,{hasInstance:r("",i&&i.hasInstance||e("hasInstance")),isConcatSpreadable:r("",i&&i.isConcatSpreadable||e("isConcatSpreadable")),iterator:r("",i&&i.iterator||e("iterator")),match:r("",i&&i.match||e("match")),replace:r("",i&&i.replace||e("replace")),search:r("",i&&i.search||e("search")),species:r("",i&&i.species||e("species")),split:r("",i&&i.split||e("split")),toPrimitive:r("",i&&i.toPrimitive||e("toPrimitive")),toStringTag:r("",i&&i.toStringTag||e("toStringTag")),unscopables:r("",i&&i.unscopables||e("unscopables"))})}},function(e,t,n){"use strict";var r=n(36),i=n(217),o=Object.create(null);e.exports=function(e){return Object.defineProperties(e,{for:r((function(t){return o[t]?o[t]:o[t]=e(String(t))})),keyFor:r((function(e){var t;for(t in i(e),o)if(o[t]===e)return t}))})}},function(e,t,n){"use strict";var r=n(35);e.exports=function(){return r(this).length=0,this}},function(e,t,n){"use strict";var r,i=n(57),o=n(448),a=n(452),l=n(453),c=n(214),s=n(463),d=Function.prototype.bind,u=Object.defineProperty,A=Object.prototype.hasOwnProperty;r=function(e,t,n){var r,i=o(t)&&a(t.value);return delete(r=l(t)).writable,delete r.value,r.get=function(){return!n.overwriteDefinition&&A.call(this,e)?i:(t.value=d.call(i,n.resolveContext?n.resolveContext(this):this),u(this,e,t),this[e])},r},e.exports=function(e){var t=c(arguments[1]);return i(t.resolveContext)&&a(t.resolveContext),s(e,(function(e,n){return r(n,e,t)}))}},function(e,t,n){"use strict";var r=n(219),i=n(57);e.exports=function(e){return i(e)?e:r(e,"Cannot use %v",arguments[1])}},function(e,t,n){"use strict";var r=n(57),i=n(132),o=Object.prototype.toString;e.exports=function(e){if(!r(e))return null;if(i(e)){var t=e.toString;if("function"!=typeof t)return null;if(t===o)return null}try{return""+e}catch(e){return null}}},function(e,t,n){"use strict";var r=n(451),i=/[\n\r\u2028\u2029]/g;e.exports=function(e){var t=r(e);return null===t?"<Non-coercible to string value>":(t.length>100&&(t=t.slice(0,99)+"…"),t=t.replace(i,(function(e){switch(e){case"\n":return"\\n";case"\r":return"\\r";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";default:throw new Error("Unexpected character")}})))}},function(e,t,n){"use strict";e.exports=function(e){try{return e.toString()}catch(t){try{return String(e)}catch(e){return null}}}},function(e,t,n){"use strict";var r=n(219),i=n(213);e.exports=function(e){return i(e)?e:r(e,"%v is not a plain function",arguments[1])}},function(e,t,n){"use strict";var r=n(454),i=n(133),o=n(35);e.exports=function(e){var t=Object(o(e)),n=arguments[1],a=Object(arguments[2]);if(t!==e&&!n)return t;var l={};return n?r(n,(function(t){(a.ensure||t in e)&&(l[t]=e[t])})):i(l,e),l}},function(e,t,n){"use strict";e.exports=n(455)()?Array.from:n(456)},function(e,t,n){"use strict";e.exports=function(){var e,t,n=Array.from;return"function"==typeof n&&(t=n(e=["raz","dwa"]),Boolean(t&&t!==e&&"dwa"===t[1]))}},function(e,t,n){"use strict";var r=n(48).iterator,i=n(92),o=n(457),a=n(458),l=n(70),c=n(35),s=n(47),d=n(93),u=Array.isArray,A=Function.prototype.call,h={configurable:!0,enumerable:!0,writable:!0,value:null},g=Object.defineProperty;e.exports=function(e){var t,n,F,Q,p,m,U,b,Z,B,f=arguments[1],R=arguments[2];if(e=Object(c(e)),s(f)&&l(f),this&&this!==Array&&o(this))t=this;else{if(!f){if(i(e))return 1!==(p=e.length)?Array.apply(null,e):((Q=new Array(1))[0]=e[0],Q);if(u(e)){for(Q=new Array(p=e.length),n=0;n<p;++n)Q[n]=e[n];return Q}}Q=[]}if(!u(e))if(void 0!==(Z=e[r])){for(U=l(Z).call(e),t&&(Q=new t),b=U.next(),n=0;!b.done;)B=f?A.call(f,R,b.value,n):b.value,t?(h.value=B,g(Q,n,h)):Q[n]=B,b=U.next(),++n;p=n}else if(d(e)){for(p=e.length,t&&(Q=new t),n=0,F=0;n<p;++n)B=e[n],n+1<p&&(m=B.charCodeAt(0))>=55296&&m<=56319&&(B+=e[++n]),B=f?A.call(f,R,B,F):B,t?(h.value=B,g(Q,F,h)):Q[F]=B,++F;p=F}if(void 0===p)for(p=a(e.length),t&&(Q=new t(p)),n=0;n<p;++n)B=f?A.call(f,R,e[n],n):e[n],t?(h.value=B,g(Q,n,h)):Q[n]=B;return t&&(h.value=null,Q.length=p),Q}},function(e,t,n){"use strict";var r=Object.prototype.toString,i=RegExp.prototype.test.bind(/^[object [A-Za-z0-9]*Function]$/);e.exports=function(e){return"function"==typeof e&&i(r.call(e))}},function(e,t,n){"use strict";var r=n(459),i=Math.max;e.exports=function(e){return i(0,r(e))}},function(e,t,n){"use strict";var r=n(460),i=Math.abs,o=Math.floor;e.exports=function(e){return isNaN(e)?0:0!==(e=Number(e))&&isFinite(e)?r(e)*o(i(e)):e}},function(e,t,n){"use strict";e.exports=n(461)()?Math.sign:n(462)},function(e,t,n){"use strict";e.exports=function(){var e=Math.sign;return"function"==typeof e&&(1===e(10)&&-1===e(-20))}},function(e,t,n){"use strict";e.exports=function(e){return e=Number(e),isNaN(e)||0===e?e:e>0?1:-1}},function(e,t,n){"use strict";var r=n(70),i=n(464),o=Function.prototype.call;e.exports=function(e,t){var n={},a=arguments[2];return r(t),i(e,(function(e,r,i,l){n[r]=o.call(t,a,e,r,i,l)})),n}},function(e,t,n){"use strict";e.exports=n(465)("forEach")},function(e,t,n){"use strict";var r=n(70),i=n(35),o=Function.prototype.bind,a=Function.prototype.call,l=Object.keys,c=Object.prototype.propertyIsEnumerable;e.exports=function(e,t){return function(n,s){var d,u=arguments[2],A=arguments[3];return n=Object(i(n)),r(s),d=l(n),A&&d.sort("function"==typeof A?o.call(A,n):void 0),"function"!=typeof e&&(e=d[e]),a.call(e,d,(function(e,r){return c.call(n,e)?a.call(s,u,n[e],e,n,r):t}))}}},function(e,t,n){"use strict";var r,i=n(131),o=n(36),a=n(48),l=n(218),c=Object.defineProperty;r=e.exports=function(e){if(!(this instanceof r))throw new TypeError("Constructor requires 'new'");e=String(e),l.call(this,e),c(this,"__length__",o("",e.length))},i&&i(r,l),delete r.prototype.constructor,r.prototype=Object.create(l.prototype,{_next:o((function(){if(this.__list__)return this.__nextIndex__<this.__length__?this.__nextIndex__++:void this._unBind()})),_resolve:o((function(e){var t,n=this.__list__[e];return this.__nextIndex__===this.__length__?n:(t=n.charCodeAt(0))>=55296&&t<=56319?n+this.__list__[this.__nextIndex__++]:n}))}),c(r.prototype,a.toStringTag,o("c","String Iterator"))},function(e,t,n){"use strict";var r=n(468);e.exports=function(e){if(!r(e))throw new TypeError(e+" is not iterable");return e}},function(e,t,n){"use strict";var r=n(92),i=n(47),o=n(93),a=n(48).iterator,l=Array.isArray;e.exports=function(e){return!!i(e)&&(!!l(e)||(!!o(e)||(!!r(e)||"function"==typeof e[a])))}},function(e,t,n){"use strict";var r=n(92),i=n(70),o=n(93),a=n(216),l=Array.isArray,c=Function.prototype.call,s=Array.prototype.some;e.exports=function(e,t){var n,d,u,A,h,g,F,Q,p=arguments[2];if(l(e)||r(e)?n="array":o(e)?n="string":e=a(e),i(t),u=function(){A=!0},"array"!==n)if("string"!==n)for(d=e.next();!d.done;){if(c.call(t,p,d.value,u),A)return;d=e.next()}else for(g=e.length,h=0;h<g&&(F=e[h],h+1<g&&(Q=F.charCodeAt(0))>=55296&&Q<=56319&&(F+=e[++h]),c.call(t,p,F,u),!A);++h);else s.call(e,(function(e){return c.call(t,p,e,u),A}))}},function(e,t,n){"use strict";e.exports="function"==typeof WeakMap&&"[object WeakMap]"===Object.prototype.toString.call(new WeakMap)},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){const n=(t,n)=>()=>{throw new Error(`Cannot ${t} ${n}, ${e} is destroyed`)};Object.keys(t).forEach(e=>{"function"==typeof t[e]?t[e]=n("call",e):Object.defineProperty(t,e,{get:n("get",e),set:n("set",e)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r=e=>{if("srcObject"in e)return;const t=window&&window.URL;"srcObject"in window.HTMLMediaElement.prototype||Object.defineProperty(e,"srcObject",{get(){return this._srcObject},set(e){const n=this;if(this._srcObject=e,this.src&&t.revokeObjectURL(this.src),e)return this.src=t.createObjectURL(e),e.addEventListener("addtrack",()=>{n.src&&t.revokeObjectURL(n.src),n.src=t.createObjectURL(e)}),e.addEventListener("removetrack",()=>{n.src&&t.revokeObjectURL(n.src),n.src=t.createObjectURL(e)}),this._srcObject;this.src=""}})};t.default=r},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;t.default=e=>{return!(!(t=e)||"function"!=typeof t.getBoundingClientRect)&&(e=>{const t=e.getBoundingClientRect(),n=window.innerHeight||document.documentElement.clientHeight,r=window.innerWidth||document.documentElement.clientWidth,i=t.top<=n&&t.top+t.height>=0,o=t.left<=r&&t.left+t.width>=0;return i&&o})(e)&&(e=>{const t=e=>!(!e.style||"hidden"!==e.style.visibility)||!!e.parentNode&&t(e.parentNode);return null!==e.offsetParent&&!t(e)})(e);var t}},function(e,t,n){"use strict";(function(e){var r=n(0);t.__esModule=!0,t.default=void 0;var i=n(475),o=n(476),a=r(n(562)),l=r(n(563));const c=e=>{var t,n;return(null==(n=e=e||(null==(t=void 0!==typeof window?window:global)?void 0:t.navigator))?void 0:n.userAgent.toLowerCase().indexOf("electron"))>=0},s=()=>{var e,t,n;return"string"==typeof(null==(e=void 0!==typeof window?window:global)||null==(t=e.process)||null==(n=t.versions)?void 0:n.node)&&!c()};let d;var u={parse:t=>(d={version:-1,name:"unknown"},s()?(d.name="Node",d.isNode=!0,d.version=parseInt(e.versions.node,10),d.userAgent=`${d.name} ${d.version}`):(e=>{if(e=e||(void 0!==typeof window?window:global).navigator,d.userAgent=e.userAgent.toLowerCase(),d.name="unknown",d.userAgent.indexOf("opera")>-1||d.userAgent.indexOf("opr/")>-1)d.name="Opera",d.isOpera=!0,null!==/opr\/([0-9]{1,}[.0-9]{0,})/.exec(d.userAgent)&&(d.version=parseFloat(RegExp.$1));else if(d.userAgent.indexOf("firefox")>-1)d.name="Firefox",d.isFirefox=!0,null!==/firefox\/([0-9]{1,}[.0-9]{0,})/.exec(d.userAgent)&&(d.version=parseFloat(RegExp.$1));else if(d.userAgent.match(/edge?\/(\d+)(?:\.\d+)+$/)){d.name="Edge",d.isEdge=!0;const e=RegExp.$1;d.version=parseInt(e,10)}else d.userAgent.indexOf("chrome")>-1?(d.name="Chrome",d.isElectron=c(e),d.isElectron?d.electronVersion=(0,l.default)(e.userAgent):d.isChrome=!0,null!==/chrome\/([0-9]{1,}[.0-9]{0,})/.exec(d.userAgent)&&(d.version=parseFloat(RegExp.$1))):e.vendor&&e.vendor.toLowerCase().indexOf("apple")>-1?(d.name="Safari",d.isSafari=!0,d.isiPhone=(0,i.isiPhone)(e.userAgent),d.isiPad=(0,i.isiPad)(e.userAgent),d.isiOS=(0,i.isiOS)(e.userAgent),d.isiOS&&(d.iOSVersion=(0,a.default)(e.userAgent)),(null!==/version\/([0-9]{1,}[.0-9]{0,})/.exec(d.userAgent)||null!==/fxios\/([0-9]{1,}[.0-9]{0,})/.exec(d.userAgent)||null!==/crios\/([0-9]{1,}[.0-9]{0,})/.exec(d.userAgent))&&(d.version=parseFloat(RegExp.$1))):d.userAgent.indexOf("applewebkit")>-1&&-1===d.userAgent.indexOf("version")&&(d.isIosWebView=!0);d.isChromiumEdge="Edge"===d.name&&d.version>=79,d.isLegacyEdge="Edge"===d.name&&d.version<79,d.isLegacyElectron=d.isElectron&&d.electronVersion<16,d.isLegacyChrome=d.isChrome&&d.version<87,d.isLegacyFirefox=d.isFirefox&&d.version<=98,d.isChromium=!!(d.isChrome||d.isChromiumEdge||d.isElectron||d.isOpera),d.isAndroid=d.userAgent.indexOf("android")>-1,d.userAgent=e.userAgent,d.protocol=location.protocol,d.hostName=location.hostName,d.isProd=(0,o.isProd)(),d.isRel=(0,o.isRel)(),d.isDev=(0,o.isDev)(),(-1===d.version||"unknown"===d.name||d.isiOS&&!d.iOSVersion)&&(d.error=!0)})(t),d),isNode:s};t.default=u}).call(this,n(29))},function(e,t,n){"use strict";t.__esModule=!0,t.isiPhone=t.isiPad=t.isiOS=void 0;const r=e=>/iPhone/.test(e);t.isiPhone=r;const i=e=>/iPad/.test(e)||(e=>{try{return e.includes("Mac")&&"ontouchend"in document}catch(e){return!1}})(e);t.isiPad=i;t.isiOS=e=>r(e)||i(e)},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.isRel=t.isProd=t.isDev=void 0;const i=(0,r(n(37)).default)(),o=(e,t)=>(t.StaticConfig||i.onlyLocal()).apiUrl.includes(e);t.isProd=function(e){return void 0===e&&(e={}),o("anvil.opentok.com",e)};t.isDev=function(e){return void 0===e&&(e={}),o("api.dev.opentok.com",e)};t.isRel=function(e){return void 0===e&&(e={}),o("api.rel.opentok.com",e)}},function(e,t,n){"use strict";(function(t){var r=n(13),i=n(221),o=n(478),a=n(231),l=n(134),c=n(227);var s=function e(t){var n=new o(t),l=i(o.prototype.request,n);return r.extend(l,o.prototype,n),r.extend(l,n),l.create=function(n){return e(a(t,n))},l}(l);s.Axios=o,s.CanceledError=n(97),s.CancelToken=n(499),s.isCancel=n(230),s.VERSION=n(232).version,s.toFormData=n(96),s.AxiosError=n(49),s.Cancel=s.CanceledError,s.all=function(e){return t.all(e)},s.spread=n(500),s.isAxiosError=n(501),s.formToJSON=function(e){return c(r.isHTMLForm(e)?new FormData(e):e)},e.exports=s,e.exports.default=s}).call(this,n(2))},function(e,t,n){"use strict";(function(t){var r=n(13),i=n(222),o=n(484),a=n(485),l=n(231),c=n(229),s=n(498),d=s.validators;function u(e){this.defaults=e,this.interceptors={request:new o,response:new o}}u.prototype.request=function(e,n){"string"==typeof e?(n=n||{}).url=e:n=e||{},(n=l(this.defaults,n)).method?n.method=n.method.toLowerCase():this.defaults.method?n.method=this.defaults.method.toLowerCase():n.method="get";var i=n.transitional;void 0!==i&&s.assertOptions(i,{silentJSONParsing:d.transitional(d.boolean),forcedJSONParsing:d.transitional(d.boolean),clarifyTimeoutError:d.transitional(d.boolean)},!1);var o=n.paramsSerializer;null!=o&&(r.isFunction(o)?n.paramsSerializer={serialize:o}:s.assertOptions(o,{encode:d.function,serialize:d.function},!0));var c=[],u=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(n)||(u=u&&e.synchronous,c.unshift(e.fulfilled,e.rejected))}));var A,h=[];if(this.interceptors.response.forEach((function(e){h.push(e.fulfilled,e.rejected)})),!u){var g=[a,void 0];for(Array.prototype.unshift.apply(g,c),g=g.concat(h),A=t.resolve(n);g.length;)A=A.then(g.shift(),g.shift());return A}for(var F=n;c.length;){var Q=c.shift(),p=c.shift();try{F=Q(F)}catch(e){p(e);break}}try{A=a(F)}catch(e){return t.reject(e)}for(;h.length;)A=A.then(h.shift(),h.shift());return A},u.prototype.getUri=function(e){e=l(this.defaults,e);var t=c(e.baseURL,e.url);return i(t,e.params,e.paramsSerializer)},r.forEach(["delete","get","head","options"],(function(e){u.prototype[e]=function(t,n){return this.request(l(n||{},{method:e,url:t,data:(n||{}).data}))}})),r.forEach(["post","put","patch"],(function(e){function t(t){return function(n,r,i){return this.request(l(i||{},{method:e,headers:t?{"Content-Type":"multipart/form-data"}:{},url:n,data:r}))}}u.prototype[e]=t(),u.prototype[e+"Form"]=t(!0)})),e.exports=u}).call(this,n(2))},function(e,t,n){"use strict";t.byteLength=function(e){var t=s(e),n=t[0],r=t[1];return 3*(n+r)/4-r},t.toByteArray=function(e){var t,n,r=s(e),a=r[0],l=r[1],c=new o(function(e,t,n){return 3*(t+n)/4-n}(0,a,l)),d=0,u=l>0?a-4:a;for(n=0;n<u;n+=4)t=i[e.charCodeAt(n)]<<18|i[e.charCodeAt(n+1)]<<12|i[e.charCodeAt(n+2)]<<6|i[e.charCodeAt(n+3)],c[d++]=t>>16&255,c[d++]=t>>8&255,c[d++]=255&t;2===l&&(t=i[e.charCodeAt(n)]<<2|i[e.charCodeAt(n+1)]>>4,c[d++]=255&t);1===l&&(t=i[e.charCodeAt(n)]<<10|i[e.charCodeAt(n+1)]<<4|i[e.charCodeAt(n+2)]>>2,c[d++]=t>>8&255,c[d++]=255&t);return c},t.fromByteArray=function(e){for(var t,n=e.length,i=n%3,o=[],a=0,l=n-i;a<l;a+=16383)o.push(d(e,a,a+16383>l?l:a+16383));1===i?(t=e[n-1],o.push(r[t>>2]+r[t<<4&63]+"==")):2===i&&(t=(e[n-2]<<8)+e[n-1],o.push(r[t>>10]+r[t>>4&63]+r[t<<2&63]+"="));return o.join("")};for(var r=[],i=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",l=0,c=a.length;l<c;++l)r[l]=a[l],i[a.charCodeAt(l)]=l;function s(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function d(e,t,n){for(var i,o,a=[],l=t;l<n;l+=3)i=(e[l]<<16&16711680)+(e[l+1]<<8&65280)+(255&e[l+2]),a.push(r[(o=i)>>18&63]+r[o>>12&63]+r[o>>6&63]+r[63&o]);return a.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},function(e,t){
34
34
  /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
35
- t.read=function(e,t,n,r,i){var o,a,l=8*i-r-1,c=(1<<l)-1,s=c>>1,d=-7,u=n?i-1:0,A=n?-1:1,h=e[t+u];for(u+=A,o=h&(1<<-d)-1,h>>=-d,d+=l;d>0;o=256*o+e[t+u],u+=A,d-=8);for(a=o&(1<<-d)-1,o>>=-d,d+=r;d>0;a=256*a+e[t+u],u+=A,d-=8);if(0===o)o=1-s;else{if(o===c)return a?NaN:1/0*(h?-1:1);a+=Math.pow(2,r),o-=s}return(h?-1:1)*a*Math.pow(2,o-r)},t.write=function(e,t,n,r,i,o){var a,l,c,s=8*o-i-1,d=(1<<s)-1,u=d>>1,A=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,h=r?0:o-1,g=r?1:-1,F=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(l=isNaN(t)?1:0,a=d):(a=Math.floor(Math.log(t)/Math.LN2),t*(c=Math.pow(2,-a))<1&&(a--,c*=2),(t+=a+u>=1?A/c:A*Math.pow(2,1-u))*c>=2&&(a++,c/=2),a+u>=d?(l=0,a=d):a+u>=1?(l=(t*c-1)*Math.pow(2,i),a+=u):(l=t*Math.pow(2,u-1)*Math.pow(2,i),a=0));i>=8;e[n+h]=255&l,h+=g,l/=256,i-=8);for(a=a<<i|l,s+=i;s>0;e[n+h]=255&a,h+=g,a/=256,s-=8);e[n+h-g]|=128*F}},function(e,t){var n={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==n.call(e)}},function(e,t,n){e.exports=n(483)},function(e,t){e.exports="object"==typeof self?self.FormData:window.FormData},function(e,t,n){"use strict";var r=n(13);function i(){this.handlers=[]}i.prototype.use=function(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1},i.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},i.prototype.clear=function(){this.handlers&&(this.handlers=[])},i.prototype.forEach=function(e){r.forEach(this.handlers,(function(t){null!==t&&e(t)}))},e.exports=i},function(e,t,n){"use strict";(function(t){var r=n(13),i=n(486),o=n(230),a=n(134),l=n(97),c=n(225);function s(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new l}e.exports=function(e){return s(e),e.headers=e.headers||{},e.data=i.call(e,e.data,e.headers,null,e.transformRequest),c(e.headers,"Accept"),c(e.headers,"Content-Type"),e.headers=r.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),r.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||a.adapter)(e).then((function(t){return s(e),t.data=i.call(e,t.data,t.headers,t.status,e.transformResponse),t}),(function(n){return o(n)||(s(e),n&&n.response&&(n.response.data=i.call(e,n.response.data,n.response.headers,n.response.status,e.transformResponse))),t.reject(n)}))}}).call(this,n(2))},function(e,t,n){"use strict";var r=n(13),i=n(134);e.exports=function(e,t,n,o){var a=this||i;return r.forEach(o,(function(r){e=r.call(a,e,t,n)})),e}},function(e,t,n){"use strict";var r=n(13),i=n(96),o=n(135);e.exports=function(e,t){return i(e,new o.classes.URLSearchParams,Object.assign({visitor:function(e,t,n,i){return o.isNode&&r.isBuffer(e)?(this.append(t,e.toString("base64")),!1):i.defaultVisitor.apply(this,arguments)}},t))}},function(e,t,n){"use strict";e.exports={isBrowser:!0,classes:{URLSearchParams:n(489),FormData:n(490),Blob:Blob},protocols:["http","https","file","blob","url","data"]}},function(e,t,n){"use strict";var r=n(223);e.exports="undefined"!=typeof URLSearchParams?URLSearchParams:r},function(e,t,n){"use strict";e.exports=FormData},function(e,t,n){"use strict";var r=n(49);e.exports=function(e,t,n){var i=n.config.validateStatus;n.status&&i&&!i(n.status)?t(new r("Request failed with status code "+n.status,[r.ERR_BAD_REQUEST,r.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}},function(e,t,n){"use strict";var r=n(13);e.exports=r.isStandardBrowserEnv()?{write:function(e,t,n,i,o,a){var l=[];l.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&l.push("expires="+new Date(n).toGMTString()),r.isString(i)&&l.push("path="+i),r.isString(o)&&l.push("domain="+o),!0===a&&l.push("secure"),document.cookie=l.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(e,t,n){"use strict";e.exports=function(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}},function(e,t,n){"use strict";e.exports=function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}},function(e,t,n){"use strict";var r=n(13),i=["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"];e.exports=function(e){var t,n,o,a={};return e?(r.forEach(e.split("\n"),(function(e){if(o=e.indexOf(":"),t=r.trim(e.slice(0,o)).toLowerCase(),n=r.trim(e.slice(o+1)),t){if(a[t]&&i.indexOf(t)>=0)return;a[t]="set-cookie"===t?(a[t]?a[t]:[]).concat([n]):a[t]?a[t]+", "+n:n}})),a):a}},function(e,t,n){"use strict";var r=n(13);e.exports=r.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function i(e){var r=e;return t&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return e=i(window.location.href),function(t){var n=r.isString(t)?i(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0}},function(e,t,n){"use strict";e.exports=function(e){var t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}},function(e,t,n){"use strict";var r=n(232).version,i=n(49),o={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){o[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}}));var a={};o.transitional=function(e,t,n){function o(e,t){return"[Axios v"+r+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return function(n,r,l){if(!1===e)throw new i(o(r," has been removed"+(t?" in "+t:"")),i.ERR_DEPRECATED);return t&&!a[r]&&(a[r]=!0,console.warn(o(r," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,r,l)}},e.exports={assertOptions:function(e,t,n){if("object"!=typeof e)throw new i("options must be an object",i.ERR_BAD_OPTION_VALUE);for(var r=Object.keys(e),o=r.length;o-- >0;){var a=r[o],l=t[a];if(l){var c=e[a],s=void 0===c||l(c,a,e);if(!0!==s)throw new i("option "+a+" must be "+s,i.ERR_BAD_OPTION_VALUE)}else if(!0!==n)throw new i("Unknown option "+a,i.ERR_BAD_OPTION)}},validators:o}},function(e,t,n){"use strict";(function(t){var r=n(97);function i(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var n;this.promise=new t((function(e){n=e}));var i=this;this.promise.then((function(e){if(i._listeners){for(var t=i._listeners.length;t-- >0;)i._listeners[t](e);i._listeners=null}})),this.promise.then=function(e){var n,r=new t((function(e){i.subscribe(e),n=e})).then(e);return r.cancel=function(){i.unsubscribe(n)},r},e((function(e,t,o){i.reason||(i.reason=new r(e,t,o),n(i.reason))}))}i.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},i.prototype.subscribe=function(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]},i.prototype.unsubscribe=function(e){if(this._listeners){var t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}},i.source=function(){var e;return{token:new i((function(t){e=t})),cancel:e}},e.exports=i}).call(this,n(2))},function(e,t,n){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}},function(e,t,n){"use strict";var r=n(13);e.exports=function(e){return r.isObject(e)&&!0===e.isAxiosError}},function(e,t,n){var r=n(233)("mapKeys",n(551));r.placeholder=n(136),e.exports=r},function(e,t,n){var r=n(504),i=n(136),o=Array.prototype.push;function a(e,t){return 2==t?function(t,n){return e(t,n)}:function(t){return e(t)}}function l(e){for(var t=e?e.length:0,n=Array(t);t--;)n[t]=e[t];return n}function c(e,t){return function(){var n=arguments.length;if(n){for(var r=Array(n);n--;)r[n]=arguments[n];var i=r[0]=t.apply(void 0,r);return e.apply(void 0,r),i}}}e.exports=function e(t,n,s,d){var u="function"==typeof n,A=n===Object(n);if(A&&(d=s,s=n,n=void 0),null==s)throw new TypeError;d||(d={});var h=!("cap"in d)||d.cap,g=!("curry"in d)||d.curry,F=!("fixed"in d)||d.fixed,Q=!("immutable"in d)||d.immutable,p=!("rearg"in d)||d.rearg,m=u?s:i,U="curry"in d&&d.curry,b="fixed"in d&&d.fixed,Z="rearg"in d&&d.rearg,B=u?s.runInContext():void 0,f=u?s:{ary:t.ary,assign:t.assign,clone:t.clone,curry:t.curry,forEach:t.forEach,isArray:t.isArray,isError:t.isError,isFunction:t.isFunction,isWeakMap:t.isWeakMap,iteratee:t.iteratee,keys:t.keys,rearg:t.rearg,toInteger:t.toInteger,toPath:t.toPath},R=f.ary,I=f.assign,y=f.clone,V=f.curry,C=f.forEach,W=f.isArray,E=f.isError,v=f.isFunction,S=f.isWeakMap,J=f.keys,G=f.rearg,N=f.toInteger,X=f.toPath,k=J(r.aryMethod),T={castArray:function(e){return function(){var t=arguments[0];return W(t)?e(l(t)):e.apply(void 0,arguments)}},iteratee:function(e){return function(){var t=arguments[0],n=arguments[1],r=e(t,n),i=r.length;return h&&"number"==typeof n?(n=n>2?n-2:1,i&&i<=n?r:a(r,n)):r}},mixin:function(e){return function(t){var n=this;if(!v(n))return e(n,Object(t));var r=[];return C(J(t),(function(e){v(t[e])&&r.push([e,n.prototype[e]])})),e(n,Object(t)),C(r,(function(e){var t=e[1];v(t)?n.prototype[e[0]]=t:delete n.prototype[e[0]]})),n}},nthArg:function(e){return function(t){var n=t<0?1:N(t)+1;return V(e(t),n)}},rearg:function(e){return function(t,n){var r=n?n.length:0;return V(e(t,n),r)}},runInContext:function(n){return function(r){return e(t,n(r),d)}}};function Y(e,t){if(h){var n=r.iterateeRearg[e];if(n)return function(e,t){return H(e,(function(e){var n=t.length;return function(e,t){return 2==t?function(t,n){return e.apply(void 0,arguments)}:function(t){return e.apply(void 0,arguments)}}(G(a(e,n),t),n)}))}(t,n);var i=!u&&r.iterateeAry[e];if(i)return function(e,t){return H(e,(function(e){return"function"==typeof e?a(e,t):e}))}(t,i)}return t}function w(e,t,n){if(F&&(b||!r.skipFixed[e])){var i=r.methodSpread[e],a=i&&i.start;return void 0===a?R(t,n):function(e,t){return function(){for(var n=arguments.length,r=n-1,i=Array(n);n--;)i[n]=arguments[n];var a=i[t],l=i.slice(0,t);return a&&o.apply(l,a),t!=r&&o.apply(l,i.slice(t+1)),e.apply(this,l)}}(t,a)}return t}function D(e,t,n){return p&&n>1&&(Z||!r.skipRearg[e])?G(t,r.methodRearg[e]||r.aryRearg[n]):t}function x(e,t){for(var n=-1,r=(t=X(t)).length,i=r-1,o=y(Object(e)),a=o;null!=a&&++n<r;){var l=t[n],c=a[l];null==c||v(c)||E(c)||S(c)||(a[l]=y(n==i?c:Object(c))),a=a[l]}return o}function M(t,n){var i=r.aliasToReal[t]||t,o=r.remap[i]||i,a=d;return function(t){var r=u?B:f,l=u?B[o]:n,c=I(I({},a),t);return e(r,i,l,c)}}function H(e,t){return function(){var n=arguments.length;if(!n)return e();for(var r=Array(n);n--;)r[n]=arguments[n];var i=p?0:n-1;return r[i]=t(r[i]),e.apply(void 0,r)}}function K(e,t,n){var i,o=r.aliasToReal[e]||e,a=t,s=T[o];return s?a=s(t):Q&&(r.mutate.array[o]?a=c(t,l):r.mutate.object[o]?a=c(t,function(e){return function(t){return e({},t)}}(t)):r.mutate.set[o]&&(a=c(t,x))),C(k,(function(e){return C(r.aryMethod[e],(function(t){if(o==t){var n=r.methodSpread[o],l=n&&n.afterRearg;return i=l?w(o,D(o,a,e),e):D(o,w(o,a,e),e),i=function(e,t,n){return U||g&&n>1?V(t,n):t}(0,i=Y(o,i),e),!1}})),!i})),i||(i=a),i==t&&(i=U?V(i,1):function(){return t.apply(this,arguments)}),i.convert=M(o,t),i.placeholder=t.placeholder=n,i}if(!A)return K(n,s,m);var L=s,z=[];return C(k,(function(e){C(r.aryMethod[e],(function(e){var t=L[r.remap[e]||e];t&&z.push([e,K(e,t,L)])}))})),C(J(L),(function(e){var t=L[e];if("function"==typeof t){for(var n=z.length;n--;)if(z[n][0]==e)return;t.convert=M(e,t),z.push([e,t])}})),C(z,(function(e){L[e[0]]=e[1]})),L.convert=function(e){return L.runInContext.convert(e)(void 0)},L.placeholder=L,C(J(L),(function(e){C(r.realToAlias[e]||[],(function(t){L[t]=L[e]}))})),L}},function(e,t){t.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"},t.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]},t.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]},t.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2},t.iterateeRearg={mapKeys:[1],reduceRight:[1,0]},t.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]},t.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}},t.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}},t.realToAlias=function(){var e=Object.prototype.hasOwnProperty,n=t.aliasToReal,r={};for(var i in n){var o=n[i];e.call(r,o)?r[o].push(i):r[o]=[i]}return r}(),t.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"},t.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0},t.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}},function(e,t,n){e.exports={ary:n(506),assign:n(191),clone:n(42),curry:n(527),forEach:n(118),isArray:n(14),isError:n(528),isFunction:n(20),isWeakMap:n(529),iteratee:n(530),keys:n(121),rearg:n(547),toInteger:n(100),toPath:n(550)}},function(e,t,n){var r=n(137);e.exports=function(e,t,n){return t=n?void 0:t,t=e&&null==t?e.length:t,r(e,128,void 0,void 0,void 0,void 0,t)}},function(e,t,n){var r=n(98),i=n(16);e.exports=function(e,t,n){var o=1&t,a=r(e);return function t(){var r=this&&this!==i&&this instanceof t?a:e;return r.apply(o?n:this,arguments)}}},function(e,t,n){var r=n(126),i=n(98),o=n(236),a=n(239),l=n(246),c=n(140),s=n(16);e.exports=function(e,t,n){var d=i(e);return function i(){for(var u=arguments.length,A=Array(u),h=u,g=l(i);h--;)A[h]=arguments[h];var F=u<3&&A[0]!==g&&A[u-1]!==g?[]:c(A,g);if((u-=F.length)<n)return a(e,t,o,i.placeholder,void 0,A,F,void 0,void 0,n-u);var Q=this&&this!==s&&this instanceof i?d:e;return r(Q,this,A)}}},function(e,t){e.exports=function(e,t){for(var n=e.length,r=0;n--;)e[n]===t&&++r;return r}},function(e,t,n){var r=n(138),i=n(240),o=n(511),a=n(513);e.exports=function(e){var t=o(e),n=a[t];if("function"!=typeof n||!(t in r.prototype))return!1;if(e===n)return!0;var l=i(n);return!!l&&e===l[0]}},function(e,t,n){var r=n(512),i=Object.prototype.hasOwnProperty;e.exports=function(e){for(var t=e.name+"",n=r[t],o=i.call(r,t)?n.length:0;o--;){var a=n[o],l=a.func;if(null==l||l==e)return a.name}return t}},function(e,t){e.exports={}},function(e,t,n){var r=n(138),i=n(242),o=n(139),a=n(14),l=n(21),c=n(514),s=Object.prototype.hasOwnProperty;function d(e){if(l(e)&&!a(e)&&!(e instanceof r)){if(e instanceof i)return e;if(s.call(e,"__wrapped__"))return c(e)}return new i(e)}d.prototype=o.prototype,d.prototype.constructor=d,e.exports=d},function(e,t,n){var r=n(138),i=n(242),o=n(56);e.exports=function(e){if(e instanceof r)return e.clone();var t=new i(e.__wrapped__,e.__chain__);return t.__actions__=o(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}},function(e,t){var n=/\{\n\/\* \[wrapped with (.+)\] \*/,r=/,? & /;e.exports=function(e){var t=e.match(n);return t?t[1].split(r):[]}},function(e,t){var n=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;e.exports=function(e,t){var r=t.length;if(!r)return e;var i=r-1;return t[i]=(r>1?"& ":"")+t[i],t=t.join(r>2?", ":" "),e.replace(n,"{\n/* [wrapped with "+t+"] */\n")}},function(e,t,n){var r=n(118),i=n(99),o=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]];e.exports=function(e,t){return r(o,(function(n){var r="_."+n[0];t&n[1]&&!i(e,r)&&e.push(r)})),e.sort()}},function(e,t,n){var r=n(245),i=n(519),o=n(520);e.exports=function(e,t,n){return t==t?o(e,t,n):r(e,i,n)}},function(e,t){e.exports=function(e){return e!=e}},function(e,t){e.exports=function(e,t,n){for(var r=n-1,i=e.length;++r<i;)if(e[r]===t)return r;return-1}},function(e,t,n){var r=n(56),i=n(67),o=Math.min;e.exports=function(e,t){for(var n=e.length,a=o(t.length,n),l=r(e);a--;){var c=t[a];e[a]=i(c,n)?l[c]:void 0}return e}},function(e,t,n){var r=n(126),i=n(98),o=n(16);e.exports=function(e,t,n,a){var l=1&t,c=i(e);return function t(){for(var i=-1,s=arguments.length,d=-1,u=a.length,A=Array(u+s),h=this&&this!==o&&this instanceof t?c:e;++d<u;)A[d]=a[d];for(;s--;)A[d++]=arguments[++i];return r(h,l?n:this,A)}}},function(e,t,n){var r=n(237),i=n(238),o=n(140),a=Math.min;e.exports=function(e,t){var n=e[1],l=t[1],c=n|l,s=c<131,d=128==l&&8==n||128==l&&256==n&&e[7].length<=t[8]||384==l&&t[7].length<=t[8]&&8==n;if(!s&&!d)return e;1&l&&(e[2]=t[2],c|=1&n?0:4);var u=t[3];if(u){var A=e[3];e[3]=A?r(A,u,t[4]):u,e[4]=A?o(e[3],"__lodash_placeholder__"):t[4]}return(u=t[5])&&(A=e[5],e[5]=A?i(A,u,t[6]):u,e[6]=A?o(e[5],"__lodash_placeholder__"):t[6]),(u=t[7])&&(e[7]=u),128&l&&(e[8]=null==e[8]?t[8]:a(e[8],t[8])),null==e[9]&&(e[9]=t[9]),e[0]=t[0],e[1]=c,e}},function(e,t,n){var r=n(247);e.exports=function(e){return e?(e=r(e))===1/0||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}},function(e,t,n){var r=n(526),i=/^\s+/;e.exports=function(e){return e?e.slice(0,r(e)+1).replace(i,""):e}},function(e,t){var n=/\s/;e.exports=function(e){for(var t=e.length;t--&&n.test(e.charAt(t)););return t}},function(e,t,n){var r=n(137);function i(e,t,n){var o=r(e,8,void 0,void 0,void 0,void 0,void 0,t=n?void 0:t);return o.placeholder=i.placeholder,o}i.placeholder={},e.exports=i},function(e,t,n){var r=n(33),i=n(21),o=n(141);e.exports=function(e){if(!i(e))return!1;var t=r(e);return"[object Error]"==t||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!o(e)}},function(e,t,n){var r=n(46),i=n(21);e.exports=function(e){return i(e)&&"[object WeakMap]"==r(e)}},function(e,t,n){var r=n(80),i=n(38);e.exports=function(e){return i("function"==typeof e?e:r(e,1))}},function(e,t,n){var r=n(532),i=n(538),o=n(252);e.exports=function(e){var t=i(e);return 1==t.length&&t[0][2]?o(t[0][0],t[0][1]):function(n){return n===e||r(n,e,t)}}},function(e,t,n){var r=n(81),i=n(142);e.exports=function(e,t,n,o){var a=n.length,l=a,c=!o;if(null==e)return!l;for(e=Object(e);a--;){var s=n[a];if(c&&s[2]?s[1]!==e[s[0]]:!(s[0]in e))return!1}for(;++a<l;){var d=(s=n[a])[0],u=e[d],A=s[1];if(c&&s[2]){if(void 0===u&&!(d in e))return!1}else{var h=new r;if(o)var g=o(u,A,d,e,t,h);if(!(void 0===g?i(A,u,3,o,h):g))return!1}}return!0}},function(e,t,n){var r=n(81),i=n(248),o=n(536),a=n(537),l=n(46),c=n(14),s=n(66),d=n(88),u="[object Object]",A=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,h,g,F){var Q=c(e),p=c(t),m=Q?"[object Array]":l(e),U=p?"[object Array]":l(t),b=(m="[object Arguments]"==m?u:m)==u,Z=(U="[object Arguments]"==U?u:U)==u,B=m==U;if(B&&s(e)){if(!s(t))return!1;Q=!0,b=!1}if(B&&!b)return F||(F=new r),Q||d(e)?i(e,t,n,h,g,F):o(e,t,m,n,h,g,F);if(!(1&n)){var f=b&&A.call(e,"__wrapped__"),R=Z&&A.call(t,"__wrapped__");if(f||R){var I=f?e.value():e,y=R?t.value():t;return F||(F=new r),g(I,y,n,h,F)}}return!!B&&(F||(F=new r),a(e,t,n,h,g,F))}},function(e,t){e.exports=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}},function(e,t){e.exports=function(e){return this.__data__.has(e)}},function(e,t,n){var r=n(44),i=n(202),o=n(54),a=n(248),l=n(250),c=n(103),s=r?r.prototype:void 0,d=s?s.valueOf:void 0;e.exports=function(e,t,n,r,s,u,A){switch(n){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!u(new i(e),new i(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return o(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var h=l;case"[object Set]":var g=1&r;if(h||(h=c),e.size!=t.size&&!g)return!1;var F=A.get(e);if(F)return F==t;r|=2,A.set(e,t);var Q=a(h(e),h(t),r,s,u,A);return A.delete(e),Q;case"[object Symbol]":if(d)return d.call(e)==d.call(t)}return!1}},function(e,t,n){var r=n(197),i=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,o,a,l){var c=1&n,s=r(e),d=s.length;if(d!=r(t).length&&!c)return!1;for(var u=d;u--;){var A=s[u];if(!(c?A in t:i.call(t,A)))return!1}var h=l.get(e),g=l.get(t);if(h&&g)return h==t&&g==e;var F=!0;l.set(e,t),l.set(t,e);for(var Q=c;++u<d;){var p=e[A=s[u]],m=t[A];if(o)var U=c?o(m,p,A,t,e,l):o(p,m,A,e,t,l);if(!(void 0===U?p===m||a(p,m,n,o,l):U)){F=!1;break}Q||(Q="constructor"==A)}if(F&&!Q){var b=e.constructor,Z=t.constructor;b==Z||!("constructor"in e)||!("constructor"in t)||"function"==typeof b&&b instanceof b&&"function"==typeof Z&&Z instanceof Z||(F=!1)}return l.delete(e),l.delete(t),F}},function(e,t,n){var r=n(251),i=n(34);e.exports=function(e){for(var t=i(e),n=t.length;n--;){var o=t[n],a=e[o];t[n]=[o,a,r(a)]}return t}},function(e,t,n){var r=n(142),i=n(59),o=n(254),a=n(143),l=n(251),c=n(252),s=n(50);e.exports=function(e,t){return a(e)&&l(t)?c(s(e),t):function(n){var a=i(n,e);return void 0===a&&a===t?o(n,e):r(t,a,3)}}},function(e,t,n){var r=n(129);e.exports=function(e){var t=r(e,(function(e){return 500===n.size&&n.clear(),e})),n=t.cache;return t}},function(e,t,n){var r=n(44),i=n(39),o=n(14),a=n(71),l=r?r.prototype:void 0,c=l?l.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(o(t))return i(t,e)+"";if(a(t))return c?c.call(t):"";var n=t+"";return"0"==n&&1/t==-1/0?"-0":n}},function(e,t){e.exports=function(e,t){return null!=e&&t in Object(e)}},function(e,t,n){var r=n(60),i=n(65),o=n(14),a=n(67),l=n(119),c=n(50);e.exports=function(e,t,n){for(var s=-1,d=(t=r(t,e)).length,u=!1;++s<d;){var A=c(t[s]);if(!(u=null!=e&&n(e,A)))break;e=e[A]}return u||++s!=d?u:!!(d=null==e?0:e.length)&&l(d)&&a(A,d)&&(o(e)||i(e))}},function(e,t,n){var r=n(545),i=n(546),o=n(143),a=n(50);e.exports=function(e){return o(e)?r(a(e)):i(e)}},function(e,t){e.exports=function(e){return function(t){return null==t?void 0:t[e]}}},function(e,t,n){var r=n(104);e.exports=function(e){return function(t){return r(t,e)}}},function(e,t,n){var r=n(137),i=n(144),o=i((function(e,t){return r(e,256,void 0,void 0,void 0,t)}));e.exports=o},function(e,t,n){var r=n(255);e.exports=function(e){return(null==e?0:e.length)?r(e,1):[]}},function(e,t,n){var r=n(44),i=n(65),o=n(14),a=r?r.isConcatSpreadable:void 0;e.exports=function(e){return o(e)||i(e)||!!(a&&e&&e[a])}},function(e,t,n){var r=n(39),i=n(56),o=n(14),a=n(71),l=n(253),c=n(50),s=n(61);e.exports=function(e){return o(e)?r(e,c):a(e)?[e]:i(l(s(e)))}},function(e,t,n){var r=n(64),i=n(105),o=n(38);e.exports=function(e,t){var n={};return t=o(t,3),i(e,(function(e,i,o){r(n,t(e,i,o),e)})),n}},function(e,t){e.exports=function(e){return function(t,n,r){for(var i=-1,o=Object(t),a=r(t),l=a.length;l--;){var c=a[e?l:++i];if(!1===n(o[c],c,o))break}return t}}},function(e,t,n){var r=n(233)("pick",n(40));r.placeholder=n(136),e.exports=r},function(e,t,n){var r=n(555),i=n(254);e.exports=function(e,t){return r(e,t,(function(t,n){return i(e,n)}))}},function(e,t,n){var r=n(104),i=n(556),o=n(60);e.exports=function(e,t,n){for(var a=-1,l=t.length,c={};++a<l;){var s=t[a],d=r(e,s);n(d,s)&&i(c,o(s,e),d)}return c}},function(e,t,n){var r=n(86),i=n(60),o=n(67),a=n(11),l=n(50);e.exports=function(e,t,n,c){if(!a(e))return e;for(var s=-1,d=(t=i(t,e)).length,u=d-1,A=e;null!=A&&++s<d;){var h=l(t[s]),g=n;if("__proto__"===h||"constructor"===h||"prototype"===h)return e;if(s!=u){var F=A[h];void 0===(g=c?c(F,h,A):void 0)&&(g=a(F)?F:o(t[s+1])?[]:{})}r(A,h,g),A=A[h]}return e}},function(e,t,n){(function(e){var r;/*! https://mths.be/punycode v1.4.1 by @mathias */!function(i){t&&t.nodeType,e&&e.nodeType;var o="object"==typeof(void 0!==typeof window?window:global)&&(void 0!==typeof window?window:global);o.global!==o&&o.window!==o&&o.self;var a,l=2147483647,c=/^xn--/,s=/[^\x20-\x7E]/,d=/[\x2E\u3002\uFF0E\uFF61]/g,u={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},A=Math.floor,h=String.fromCharCode;function g(e){throw new RangeError(u[e])}function F(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}function Q(e,t){var n=e.split("@"),r="";return n.length>1&&(r=n[0]+"@",e=n[1]),r+F((e=e.replace(d,".")).split("."),t).join(".")}function p(e){for(var t,n,r=[],i=0,o=e.length;i<o;)(t=e.charCodeAt(i++))>=55296&&t<=56319&&i<o?56320==(64512&(n=e.charCodeAt(i++)))?r.push(((1023&t)<<10)+(1023&n)+65536):(r.push(t),i--):r.push(t);return r}function m(e){return F(e,(function(e){var t="";return e>65535&&(t+=h((e-=65536)>>>10&1023|55296),e=56320|1023&e),t+=h(e)})).join("")}function U(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function b(e,t,n){var r=0;for(e=n?A(e/700):e>>1,e+=A(e/t);e>455;r+=36)e=A(e/35);return A(r+36*e/(e+38))}function Z(e){var t,n,r,i,o,a,c,s,d,u,h,F=[],Q=e.length,p=0,U=128,Z=72;for((n=e.lastIndexOf("-"))<0&&(n=0),r=0;r<n;++r)e.charCodeAt(r)>=128&&g("not-basic"),F.push(e.charCodeAt(r));for(i=n>0?n+1:0;i<Q;){for(o=p,a=1,c=36;i>=Q&&g("invalid-input"),((s=(h=e.charCodeAt(i++))-48<10?h-22:h-65<26?h-65:h-97<26?h-97:36)>=36||s>A((l-p)/a))&&g("overflow"),p+=s*a,!(s<(d=c<=Z?1:c>=Z+26?26:c-Z));c+=36)a>A(l/(u=36-d))&&g("overflow"),a*=u;Z=b(p-o,t=F.length+1,0==o),A(p/t)>l-U&&g("overflow"),U+=A(p/t),p%=t,F.splice(p++,0,U)}return m(F)}function B(e){var t,n,r,i,o,a,c,s,d,u,F,Q,m,Z,B,f=[];for(Q=(e=p(e)).length,t=128,n=0,o=72,a=0;a<Q;++a)(F=e[a])<128&&f.push(h(F));for(r=i=f.length,i&&f.push("-");r<Q;){for(c=l,a=0;a<Q;++a)(F=e[a])>=t&&F<c&&(c=F);for(c-t>A((l-n)/(m=r+1))&&g("overflow"),n+=(c-t)*m,t=c,a=0;a<Q;++a)if((F=e[a])<t&&++n>l&&g("overflow"),F==t){for(s=n,d=36;!(s<(u=d<=o?1:d>=o+26?26:d-o));d+=36)B=s-u,Z=36-u,f.push(h(U(u+B%Z,0))),s=A(B/Z);f.push(h(U(s,0))),o=b(n,m,r==i),n=0,++r}++n,++t}return f.join("")}a={version:"1.4.1",ucs2:{decode:p,encode:m},decode:Z,encode:B,toASCII:function(e){return Q(e,(function(e){return s.test(e)?"xn--"+B(e):e}))},toUnicode:function(e){return Q(e,(function(e){return c.test(e)?Z(e.slice(4).toLowerCase()):e}))}},void 0===(r=function(){return a}.call(t,n,t,e))||(e.exports=r)}()}).call(this,n(87)(e))},function(e,t,n){"use strict";e.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},function(e,t,n){"use strict";t.decode=t.parse=n(560),t.encode=t.stringify=n(561)},function(e,t,n){"use strict";function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,t,n,o){t=t||"&",n=n||"=";var a={};if("string"!=typeof e||0===e.length)return a;var l=/\+/g;e=e.split(t);var c=1e3;o&&"number"==typeof o.maxKeys&&(c=o.maxKeys);var s=e.length;c>0&&s>c&&(s=c);for(var d=0;d<s;++d){var u,A,h,g,F=e[d].replace(l,"%20"),Q=F.indexOf(n);Q>=0?(u=F.substr(0,Q),A=F.substr(Q+1)):(u=F,A=""),h=decodeURIComponent(u),g=decodeURIComponent(A),r(a,h)?i(a[h])?a[h].push(g):a[h]=[a[h],g]:a[h]=g}return a};var i=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},function(e,t,n){"use strict";var r=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,t,n,l){return t=t||"&",n=n||"=",null===e&&(e=void 0),"object"==typeof e?o(a(e),(function(a){var l=encodeURIComponent(r(a))+n;return i(e[a])?o(e[a],(function(e){return l+encodeURIComponent(r(e))})).join(t):l+encodeURIComponent(r(e[a]))})).join(t):l?encodeURIComponent(r(l))+n+encodeURIComponent(r(e)):""};var i=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function o(e,t){if(e.map)return e.map(t);for(var n=[],r=0;r<e.length;r++)n.push(t(e[r],r));return n}var a=Object.keys||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t}},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){const t=e.match(/OS (\d+_\d+).* like Mac/);if(null===t||!t[1])return;return parseFloat(t[1].replace("_","."))}},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;const r=/(Electron)\/([0-9]{1,}[.0-9]{0,})/;var i=e=>{const t=e.match(r);return t&&parseFloat(t[2])};t.default=i},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;t.default=function(e){void 0===e&&(e={});const t=e.global||(void 0!==typeof window?window:global);return()=>t.navigator&&t.navigator.mediaDevices}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e,t,n){let r=n;(0,i.default)(e,{isRotated:{get(){return this.orientation()&&(270===this.orientation().videoOrientation||90===this.orientation().videoOrientation)}},orientation:{get:()=>r,set(n){r=n;const i=a[n.videoOrientation]||a.ROTATED_NORMAL;switch(o.default.env.name){case"Chrome":case"Safari":t().style.webkitTransform=i;break;default:t().style.transform=i}e.trigger("orientationChanged",r)}},audioChannelType:{get(){return"mozAudioChannelType"in this.domElement?this.domElement.mozAudioChannelType:"unknown"},set(e){"mozAudioChannelType"in this.domElement&&(this.domElement.mozAudioChannelType=e)}}})};var i=r(n(108)),o=r(n(7));const a={0:"rotate(0deg)",270:"rotate(90deg)",90:"rotate(-90deg)",180:"rotate(180deg)"}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(11));const o={for:"htmlFor",class:"className"};var a=e=>{e.prototype.attr=function(e,t){if((0,i.default)(e)){let t;Object.keys(e).forEach(n=>{t=o[n]||n,this.first.setAttribute(t,e[n])})}else{if(void 0===t)return this.first.getAttribute(o[e]||e);this.first.setAttribute(o[e]||e,t)}return this},e.prototype.removeAttr=function(e){const t=o[e]||e;return this.forEach(e=>{e.removeAttribute(t)}),this},e.prototype.html=function(e){return void 0!==e&&(this.first.innerHTML=e),this.first.innerHTML},e.prototype.center=function(t,n){let r;return this.forEach(i=>{r=new e(i),t=t||parseInt(r.width(),10),n=n||parseInt(r.height(),10);const o=-.5*t+"px",a=-.5*n+"px";r.css("margin",`${a} 0 0 ${o}`).addClass("OT_centered")}),this},e._attachToOTHelpers.centerElement=function(t,n,r){return new e(t).center(n,r)};const t=function(t){return t.offsetWidth>0?t.offsetWidth+"px":new e(t).css("width")},n=function(t){return t.offsetHeight>0?t.offsetHeight+"px":new e(t).css("height")};e.prototype.width=function(e){return e?(this.css("width",e),this):this.isDisplayNone()?this.makeVisibleAndYield(e=>t(e))[0]:t(this.get(0))},e._attachToOTHelpers.width=function(t,n){const r=new e(t).width(n);return n?e._attachToOTHelpers:r},e.prototype.height=function(e){return e?(this.css("height",e),this):this.isDisplayNone()?this.makeVisibleAndYield(e=>n(e))[0]:n(this.get(0))},e._attachToOTHelpers.height=function(t,n){const r=new e(t).height(n);return n?e._attachToOTHelpers:r}};t.default=a},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(3));const o=(void 0!==typeof window?window:global).getComputedStyle,a={Firefox:"moz",Opera:"O",Chrome:"Webkit",Safari:"Webkit"};var l=(e,t)=>{const n={},r={},l=function(e,t){if(t in e.style)return t;const n=a[i.default.name]+t[0].toUpperCase()+t.slice(1);return n in e.style?n:t};e.prototype.show=function(){return this.forEach(t=>{const i=t.style.display;""!==i&&"none"!==i||(t.style.display=n[t]||"",delete n[t]),function(e){return"none"===o(e).getPropertyValue("display")}(t)&&(n[t]="none",t.style.display=function(t){if(r[t.ownerDocument]&&r[t.ownerDocument][t.nodeName])return r[t.ownerDocument][t.nodeName];r[t.ownerDocument]||(r[t.ownerDocument]={});let n,i=t.ownerDocument.createElement(t.nodeName);return t.ownerDocument.body.appendChild(i),n=new e(i).css("display"),r[t.ownerDocument][t.nodeName]=n,new e(i).remove(),i=null,n}(t))})},e.prototype.hide=function(){return this.forEach(e=>{"none"!==e.style.display&&(n[e]=e.style.display,e.style.display="none")})},e.prototype.css=function(e,t){if(0!==this.length)return"string"!=typeof e?this.forEach(t=>{!function(e,t){const n=e.style;for(const r in t)t.hasOwnProperty(r)&&(n[l(e,r)]=t[r])}(t,e)}):void 0!==t?this.forEach(n=>{!function(e,t,n){e.style[l(e,t)]=n}(n,e,t)}):function(e,t){const n=l(e,t);let r=o(e).getPropertyValue(n);return""===r&&(r=e.style[n]),r}(this.first,e)},e.prototype.makeVisibleAndYield=function(n){const r={display:"block",visibility:"hidden"},i=[];return this.forEach(o=>{const a=t(o);a?i.push(function(t,n,r){const i=new e(t),o={};let a,l;for(a in n)n.hasOwnProperty(a)&&(o[a]=t.style[a],i.css(a,n[a]));for(a in l=r(t),n)n.hasOwnProperty(a)&&i.css(a,o[a]||"");return l}(a,r,n)):i.push(void 0)}),i}};t.default=l},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(569));function o(e,t){return!!t&&((0,i.default)()?e.classList.contains(t):e.className.indexOf(t)>-1)}var a=e=>{e.prototype.addClass=function(e){if(e){const t=e.trim().split(/\s+/);this.forEach(e=>{!function(e,t){if(!t||0===t.length)return;if(1!==e.nodeType)return;const n=t.length;let r=0;if((0,i.default)())for(;r<n;++r)e.classList.add(t[r]);else if(e.className||1!==t.length){let i=` ${e.className} `;for(;r<n;++r)~i.indexOf(` ${t[r]} `)||(i+=t[r]+" ");e.className=i.trim()}else e.className=t.join(" ")}(e,t)})}return this},e.prototype.removeClass=function(e){if(e){const t=e.trim().split(/\s+/);this.forEach(e=>{!function(e,t){if(!t||0===t.length)return;if(1!==e.nodeType)return;const n=t.length;let r=0;if((0,i.default)()){for(;r<n;++r)e.classList.remove(t[r]);return}let o=` ${e.className} `.replace(/[\s+]/," ");for(;r<n;++r)o=o.replace(` ${t[r]} `," ");e.className=o.trim()}(e,t)})}return this},e.prototype.toggleClass=function(e){if(e){const t=e.trim().split(/\s+/);this.forEach(e=>{!function(e,t){if(!t||0===t.length)return;if(1!==e.nodeType)return;const n=t.length;let r=0;if((0,i.default)()){for(;r<n;++r)e.classList.toggle(t[r]);return}let a=` ${e.className} `.replace(/[\s+]/," ");for(;r<n;++r)o(e,t[r])?a=a.replace(` ${t[r]} `," "):a+=t[r]+" ";e.className=a.trim()}(e,t)})}return this},e.prototype.hasClass=function(e){return this.some(t=>o(t,e))}};t.default=a},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;t.default=()=>"undefined"!=typeof document&&"classList"in document.createElement("a")},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(571));var o=e=>{let t=0,n=0;e.prototype.observeStyleChanges=function(t,n){const r=[];return this.forEach(o=>{r.push(function(t,n,r){const o={},a=function(n){switch(n){case"width":return new e(t).width();case"height":return new e(t).height();default:return new e(t).css(n)}};n.forEach(e=>{o[e]=a(e)});const l=new(void 0!==typeof window?window:global).MutationObserver(l=>{const c={};l.forEach(r=>{if("style"!==r.attributeName)return;const i=new e(t).isDisplayNone();n.forEach(e=>{if(i&&("width"===e||"height"===e))return;const t=a(e);t!==o[e]&&(c[e]=[o[e],t],o[e]=t)})}),(0,i.default)(c)||setTimeout(()=>{r.call(null,c)})});return l.observe(t,{attributes:!0,attributeFilter:["style"],childList:!1,characterData:!1,subtree:!1}),l}(o,t,n))}),r},e.prototype.observeNodeOrChildNodeRemoval=function(t){const r=[];return this.forEach(i=>{r.push(function(t,r){const i=new(void 0!==typeof window?window:global).MutationObserver(t=>{let n=[];t.forEach(e=>{e.removedNodes.length&&(n=n.concat(Array.prototype.slice.call(e.removedNodes)))}),n.length&&setTimeout(()=>{r(new e(n))})});i.observe(t,{attributes:!1,childList:!0,characterData:!1,subtree:!0}),n++;const o=i.disconnect;return i.disconnect=function(){o.apply(i,arguments),n--},i}(i,t))}),r},e.prototype.observeSize=function(e){const n=[];return this.forEach(r=>{n.push(function(e,n){let r={width:0,height:0};const i=setInterval(()=>{const t=e.getBoundingClientRect();r.width===t.width&&r.height===t.height||(n(t,r),r={width:t.width,height:t.height})},200);return t++,{disconnect(){clearInterval(i),t--}}}(r,e))}),n},e._attachToOTHelpers.observeStyleChanges=function(t,n,r){return new e(t).observeStyleChanges(n,r)[0]},e._attachToOTHelpers.observeNodeOrChildNodeRemoval=function(t,n){return new e(t).observeNodeOrChildNodeRemoval(n)[0]},e.__testOnly||(e.__testOnly={}),e.__testOnly.sizeObserverCount=function(){return t},e.__testOnly.nodeRemovalObserverCount=function(){return n}};t.default=o},function(e,t,n){var r=n(121),i=n(46),o=n(65),a=n(14),l=n(28),c=n(66),s=n(69),d=n(88),u=Object.prototype.hasOwnProperty;e.exports=function(e){if(null==e)return!0;if(l(e)&&(a(e)||"string"==typeof e||"function"==typeof e.splice||c(e)||d(e)||o(e)))return!e.length;var t=i(e);if("[object Map]"==t||"[object Set]"==t)return!e.size;if(s(e))return!r(e).length;for(var n in e)if(u.call(e,n))return!1;return!0}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e,t,n,r,o){let a,l=n;e.currentState=n;return e.is=function(){return-1!==Array.prototype.indexOf.call(arguments,l)},e.isNot=function(){return-1===Array.prototype.indexOf.call(arguments,l)},function(n){if(l!==n){if(-1===t.indexOf(n))return void(o&&(0,i.default)(o)&&o("invalidState",n));e.previousState=l,a=l,e.currentState=n,l=n,r&&(0,i.default)(r)&&r(n,a)}}};var i=r(n(20))},function(e,t,n){var r,i,o=n(267),a=n(268),l=0,c=0;e.exports=function(e,t,n){var s=t&&n||0,d=t||[],u=(e=e||{}).node||r,A=void 0!==e.clockseq?e.clockseq:i;if(null==u||null==A){var h=o();null==u&&(u=r=[1|h[0],h[1],h[2],h[3],h[4],h[5]]),null==A&&(A=i=16383&(h[6]<<8|h[7]))}var g=void 0!==e.msecs?e.msecs:(new Date).getTime(),F=void 0!==e.nsecs?e.nsecs:c+1,Q=g-l+(F-c)/1e4;if(Q<0&&void 0===e.clockseq&&(A=A+1&16383),(Q<0||g>l)&&void 0===e.nsecs&&(F=0),F>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");l=g,c=F,i=A;var p=(1e4*(268435455&(g+=122192928e5))+F)%4294967296;d[s++]=p>>>24&255,d[s++]=p>>>16&255,d[s++]=p>>>8&255,d[s++]=255&p;var m=g/4294967296*1e4&268435455;d[s++]=m>>>8&255,d[s++]=255&m,d[s++]=m>>>24&15|16,d[s++]=m>>>16&255,d[s++]=A>>>8|128,d[s++]=255&A;for(var U=0;U<6;++U)d[s+U]=u[U];return t||a(d)}},function(e,t,n){var r=n(267),i=n(268);e.exports=function(e,t,n){var o=t&&n||0;"string"==typeof e&&(t="binary"===e?new Array(16):null,e=null);var a=(e=e||{}).random||(e.rng||r)();if(a[6]=15&a[6]|64,a[8]=63&a[8]|128,t)for(var l=0;l<16;++l)t[o+l]=a[l];return t||i(a)}},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r=function(){function e(e){let t=(void 0===e?{}:e).waitTime,n=void 0===t?50:t;this.queue=[],this.running=!1,this.waitTime=n}var t=e.prototype;return t.add=function(e){this.queue.push(e),this.run()},t.run=function(){if(this.running)return;this.running=!0;const e=()=>{if(0===this.queue.length)return void(this.running=!1);this.queue.shift()(()=>{setTimeout(e,this.waitTime)})};e()},e}();t.default=r},function(e,t,n){var r=n(101),i=n(99),o=n(150),a=n(39),l=n(68),c=n(102),s=Math.min;e.exports=function(e,t,n){for(var d=n?o:i,u=e[0].length,A=e.length,h=A,g=Array(A),F=1/0,Q=[];h--;){var p=e[h];h&&t&&(p=a(p,l(t))),F=s(p.length,F),g[h]=!n&&(t||u>=120&&p.length>=120)?new r(h&&p):void 0}p=e[0];var m=-1,U=g[0];e:for(;++m<u&&Q.length<F;){var b=p[m],Z=t?t(b):b;if(b=n||0!==b?b:0,!(U?c(U,Z):d(Q,Z,n))){for(h=A;--h;){var B=g[h];if(!(B?c(B,Z):d(e[h],Z,n)))continue e}U&&U.push(Z),Q.push(b)}}return Q}},function(e,t,n){var r=n(151);e.exports=function(e){return r(e)?e:[]}},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;t.default={1004:"Authentication error",1005:"Invalid Session ID",1006:"Connect Failed",1007:"Connect Rejected",1008:"Connect Time-out",1009:"Security Error",1010:"Not Connected",1011:"Invalid Parameter",1012:"Peer-to-peer Stream Play Failed",1013:"Connection Failed",1014:"API Response Failure",1015:"PeerConnection not connected, cannot call this method",1021:"Request Timeout",1026:"Terms of Service Violation: Export Compliance",1027:"Connection Limit Exceeded",1040:"Set Video Source Failure",1041:"Invalid Video Source",1500:"Unable to Publish",1501:"Unable to Subscribe",1502:"Unsupported Video Codec",1503:"No TURN server found",1520:"Unable to Force Disconnect",1530:"Unable to Force Unpublish",1540:"Unable to Force Mute",1553:"Publisher ICEWorkflow failed",1554:"Subscriber ICEWorkflow failed",1600:"createOffer, createAnswer, setLocalDescription, setRemoteDescription",1605:"Stream Limit Exceeded",2e3:"Internal Error",2001:"Unexpected Server Response",2021:"Proxy URL Timing Error",2022:"Proxy URL Already Set Error",2031:"getRtcStatsReport is not supported in this browser",4e3:"WebSocket Connection Failed",4001:"WebSocket Network Disconnected",5001:"Unable to access media engine"}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(580));t.default=(e,t)=>{if("string"==typeof e&&"string"==typeof t){const n=(0,i.default)(e),r=t.match(/(\w+:\/\/)(.*)/);return`${r[1]}${n}/${r[2]}`}return t}},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r=e=>e.replace(/\/+$/,"").replace(/^.*:\/+/,"");t.default=r},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e){void 0===e&&(e={});const t=e.isSessionProxied||o.default,n=e.sessionId;if(!t(n))return;i.default.forEach(t=>{t in e&&(e[t]="")})};var i=r(n(582)),o=r(n(583))},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;t.default=["audioLocalAddress","audioRemoteAddress","videoLocalAddress","videoRemoteAddress"]},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;const i=r(n(26)).default.sessions;t.default=e=>{const t=i.get(e);return!!t&&!!t._.getProxyUrl()}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(4)),o=r(n(5));const a={architecture:"event_ua_arch",bitness:"event_ua_bitness",model:"event_ua_model",platformVersion:"event_ua_platform_version"};var l=function(){var e=(0,o.default)(i.default.mark((function e(t){var n,r;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n={},null==t||!t.getHighEntropyValues){e.next=6;break}return e.next=4,t.getHighEntropyValues(Object.keys(a));case 4:(r=e.sent)&&Object.entries(a).forEach(e=>{let t=e[0],i=e[1];void 0!==r[t]&&(n[i]=r[t])});case 6:return e.abrupt("return",n);case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();t.default=l},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;const i={isElementNode:function(e){return e&&"object"==typeof e&&1===e.nodeType},createElement:function(e,t,n,r){const i=(r||document).createElement(e);t=t||{},Object.keys(t).forEach(e=>{if("object"==typeof t[e]){i[e]||(i[e]={});const n=t[e];Object.keys(n).forEach(t=>{i[e][t]=n[t]})}else"className"===e?i.className=t[e]:i.setAttribute(e,t[e])});const o=function(e){"string"==typeof e?i.innerHTML+=e:i.appendChild(e)};return Array.isArray(n)?n.forEach(o):n&&o(n),i}};(0,r(n(265)).default)(i);var o=i;t.default=o},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(){return function(e,t,n){const r=[];function i(i){setTimeout(()=>{if(r.length)if(function(e){return e.getTracks().every(e=>"ended"===e.readyState)}(e))a(),"function"==typeof t&&t();else{const e=i.target;o(e),"function"==typeof n&&n(e)}},100)}function o(e){e.onended=null;const t=r.indexOf(e);t>=0&&r.splice(t,1)}function a(){r.slice().forEach(o)}function l(){e.getTracks().forEach(e=>{r.push(e);const t=e.onended;e.onended=function(){t&&t(...arguments),i(...arguments)}})}return l(),{stop:a,refresh:()=>{a(),l()}}}}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(153)),o=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=a(t);if(n&&n.has(e))return n.get(e);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var l=i?Object.getOwnPropertyDescriptor(e,o):null;l&&(l.get||l.set)?Object.defineProperty(r,o,l):r[o]=e[o]}r.default=e,n&&n.set(e,r);return r}(n(588));function a(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(a=function(e){return e?n:t})(e)}var l=function(e){void 0===e&&(e={});const t=e.document||document,n=e.videoElementBuffer||o,r=e.createVideoElementUsingNativeAPI||i.default;return t.hasFocus()?(n.fillBuffer(),r()):n.getNext()||r()};t.default=l},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.sizeOfBuffer=t.getNext=t.fillBuffer=t.clearBuffer=t.MAX_VIDEO_ELEMENTS=void 0;var i=r(n(153));t.MAX_VIDEO_ELEMENTS=20;const o=[],a=()=>o.length;t.sizeOfBuffer=a;t.fillBuffer=()=>{for(;a()<20;){const e=(0,i.default)();e.play().catch(()=>{}),o.push(e)}};t.getNext=()=>o.shift();t.clearBuffer=()=>{o.length=0}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(3));const o=["abort","canplay","canplaythrough","durationchange","emptied","ended","error","loadeddata","loadedmetadata","loadstart","pause","play","playing","progress","ratechange","seeked","seeking","stalled","suspend","volumechange","waiting"];var a=function(e,t,n){void 0===n&&(n={});const r=n.env||i.default;null!=r&&r.isDev?e instanceof HTMLMediaElement?o.forEach(n=>{e.addEventListener(n,e=>{t("mediaElement:"+n),console.debug("HTMLMediaElement triggered: "+n,e)})}):console.error("addMediaElementListeners: Invalid HTMLMediaElement"):console.debug("Not in DEV, so won't add debug listeners")};t.default=a},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r=["buildHash","minimumVersion","debug",["websiteURL","websiteUrl"],["cdnURL","cdnUrl"],["loggingURL","loggingUrl"],["apiURL","apiUrl"],["supportSSL",!0],["cdnURLSSL","cdnUrl"],["loggingURLSSL","loggingUrl"],["apiURLSSL","apiUrl"],["assetURL","assetUrl"]];t.default=r},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r=["apiUrl","apiURL","apiURLSSL"];t.default=r},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(){const e=(void 0!==typeof window?window:global).OT,t=(void 0!==typeof window?window:global).TB;return()=>{const n=(void 0!==typeof window?window:global).OT;return(void 0!==typeof window?window:global).OT=e,(void 0!==typeof window?window:global).TB=t,n}}},function(e,t,n){"use strict";var r=n(32);e.exports=function(e,t){var i=e&&e.window,o={shimChrome:!0,shimFirefox:!0,shimEdge:!0,shimSafari:!0};for(var a in t)hasOwnProperty.call(t,a)&&(o[a]=t[a]);var l=r.log,c=r.detectBrowser(i),s=n(594)||null,d=n(596)||null,u=n(600)||null,A=n(602)||null,h=n(603)||null,g={browserDetails:c,commonShim:h,extractVersion:r.extractVersion,disableLog:r.disableLog,disableWarnings:r.disableWarnings};switch(c.browser){case"chrome":if(!s||!s.shimPeerConnection||!o.shimChrome)return l("Chrome shim is not included in this adapter release."),g;l("adapter.js shimming chrome."),g.browserShim=s,h.shimCreateObjectURL(i),s.shimGetUserMedia(i),s.shimMediaStream(i),s.shimSourceObject(i),s.shimPeerConnection(i),s.shimOnTrack(i),s.shimAddTrackRemoveTrack(i),s.shimGetSendersWithDtmf(i),s.shimSenderReceiverGetStats(i),s.fixNegotiationNeeded(i),h.shimRTCIceCandidate(i),h.shimMaxMessageSize(i),h.shimSendThrowTypeError(i);break;case"firefox":if(!u||!u.shimPeerConnection||!o.shimFirefox)return l("Firefox shim is not included in this adapter release."),g;l("adapter.js shimming firefox."),g.browserShim=u,h.shimCreateObjectURL(i),u.shimGetUserMedia(i),u.shimSourceObject(i),u.shimPeerConnection(i),u.shimOnTrack(i),u.shimRemoveStream(i),u.shimSenderGetStats(i),u.shimReceiverGetStats(i),u.shimRTCDataChannel(i),h.shimRTCIceCandidate(i),h.shimMaxMessageSize(i),h.shimSendThrowTypeError(i);break;case"edge":if(!d||!d.shimPeerConnection||!o.shimEdge)return l("MS edge shim is not included in this adapter release."),g;l("adapter.js shimming edge."),g.browserShim=d,h.shimCreateObjectURL(i),d.shimGetUserMedia(i),d.shimPeerConnection(i),d.shimReplaceTrack(i),d.shimGetDisplayMedia(i),h.shimMaxMessageSize(i),h.shimSendThrowTypeError(i);break;case"safari":if(!A||!o.shimSafari)return l("Safari shim is not included in this adapter release."),g;l("adapter.js shimming safari."),g.browserShim=A,h.shimCreateObjectURL(i),A.shimRTCIceServerUrls(i),A.shimCreateOfferLegacy(i),A.shimCallbacksAPI(i),A.shimLocalStreamsAPI(i),A.shimRemoteStreamsAPI(i),A.shimTrackEventTransceiver(i),A.shimGetUserMedia(i),h.shimRTCIceCandidate(i),h.shimMaxMessageSize(i),h.shimSendThrowTypeError(i);break;default:l("Unsupported browser!")}return g}},function(e,t,n){"use strict";(function(t){var r=n(32),i=r.log;function o(e,t,n){var r=n?"outbound-rtp":"inbound-rtp",i=new Map;if(null===t)return i;var o=[];return e.forEach((function(e){"track"===e.type&&e.trackIdentifier===t.id&&o.push(e)})),o.forEach((function(t){e.forEach((function(n){n.type===r&&n.trackId===t.id&&function e(t,n,r){n&&!r.has(n.id)&&(r.set(n.id,n),Object.keys(n).forEach((function(i){i.endsWith("Id")?e(t,t.get(n[i]),r):i.endsWith("Ids")&&n[i].forEach((function(n){e(t,t.get(n),r)}))})))}(e,n,i)}))})),i}e.exports={shimGetUserMedia:n(595),shimMediaStream:function(e){e.MediaStream=e.MediaStream||e.webkitMediaStream},shimOnTrack:function(e){if("object"==typeof e&&e.RTCPeerConnection&&!("ontrack"in e.RTCPeerConnection.prototype)){Object.defineProperty(e.RTCPeerConnection.prototype,"ontrack",{get:function(){return this._ontrack},set:function(e){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=e)},enumerable:!0,configurable:!0});var t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){var n=this;return n._ontrackpoly||(n._ontrackpoly=function(t){t.stream.addEventListener("addtrack",(function(r){var i;i=e.RTCPeerConnection.prototype.getReceivers?n.getReceivers().find((function(e){return e.track&&e.track.id===r.track.id})):{track:r.track};var o=new Event("track");o.track=r.track,o.receiver=i,o.transceiver={receiver:i},o.streams=[t.stream],n.dispatchEvent(o)})),t.stream.getTracks().forEach((function(r){var i;i=e.RTCPeerConnection.prototype.getReceivers?n.getReceivers().find((function(e){return e.track&&e.track.id===r.id})):{track:r};var o=new Event("track");o.track=r,o.receiver=i,o.transceiver={receiver:i},o.streams=[t.stream],n.dispatchEvent(o)}))},n.addEventListener("addstream",n._ontrackpoly)),t.apply(n,arguments)}}else r.wrapPeerConnectionEvent(e,"track",(function(e){return e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e}))},shimGetSendersWithDtmf:function(e){if("object"==typeof e&&e.RTCPeerConnection&&!("getSenders"in e.RTCPeerConnection.prototype)&&"createDTMFSender"in e.RTCPeerConnection.prototype){var 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()};var n=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,r){var i=this,o=n.apply(i,arguments);return o||(o=t(i,e),i._senders.push(o)),o};var r=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){var t=this;r.apply(t,arguments);var n=t._senders.indexOf(e);-1!==n&&t._senders.splice(n,1)}}var i=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){var n=this;n._senders=n._senders||[],i.apply(n,[e]),e.getTracks().forEach((function(e){n._senders.push(t(n,e))}))};var o=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){var t=this;t._senders=t._senders||[],o.apply(t,[e]),e.getTracks().forEach((function(e){var n=t._senders.find((function(t){return t.track===e}));n&&t._senders.splice(t._senders.indexOf(n),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)){var a=e.RTCPeerConnection.prototype.getSenders;e.RTCPeerConnection.prototype.getSenders=function(){var e=this,t=a.apply(e,[]);return t.forEach((function(t){t._pc=e})),t},Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get:function(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}},shimSenderReceiverGetStats:function(e){if("object"==typeof e&&e.RTCPeerConnection&&e.RTCRtpSender&&e.RTCRtpReceiver){if(!("getStats"in e.RTCRtpSender.prototype)){var n=e.RTCPeerConnection.prototype.getSenders;n&&(e.RTCPeerConnection.prototype.getSenders=function(){var e=this,t=n.apply(e,[]);return t.forEach((function(t){t._pc=e})),t});var i=e.RTCPeerConnection.prototype.addTrack;i&&(e.RTCPeerConnection.prototype.addTrack=function(){var e=i.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){var e=this;return this._pc.getStats().then((function(t){return o(t,e.track,!0)}))}}if(!("getStats"in e.RTCRtpReceiver.prototype)){var a=e.RTCPeerConnection.prototype.getReceivers;a&&(e.RTCPeerConnection.prototype.getReceivers=function(){var e=this,t=a.apply(e,[]);return t.forEach((function(t){t._pc=e})),t}),r.wrapPeerConnectionEvent(e,"track",(function(e){return e.receiver._pc=e.srcElement,e})),e.RTCRtpReceiver.prototype.getStats=function(){var e=this;return this._pc.getStats().then((function(t){return o(t,e.track,!1)}))}}if("getStats"in e.RTCRtpSender.prototype&&"getStats"in e.RTCRtpReceiver.prototype){var l=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){var n=this;if(arguments.length>0&&arguments[0]instanceof e.MediaStreamTrack){var r,i,o,a=arguments[0];return n.getSenders().forEach((function(e){e.track===a&&(r?o=!0:r=e)})),n.getReceivers().forEach((function(e){return e.track===a&&(i?o=!0:i=e),e.track===a})),o||r&&i?t.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):r?r.getStats():i?i.getStats():t.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return l.apply(n,arguments)}}}},shimSourceObject:function(e){var t=e&&e.URL;"object"==typeof e&&e.HTMLMediaElement&&!("srcObject"in e.HTMLMediaElement.prototype)&&Object.defineProperty(e.HTMLMediaElement.prototype,"srcObject",{get:function(){return this._srcObject},set:function(e){var n=this;this._srcObject=e,this.src&&t.revokeObjectURL(this.src),e?(this.src=t.createObjectURL(e),e.addEventListener("addtrack",(function(){n.src&&t.revokeObjectURL(n.src),n.src=t.createObjectURL(e)})),e.addEventListener("removetrack",(function(){n.src&&t.revokeObjectURL(n.src),n.src=t.createObjectURL(e)}))):this.src=""}})},shimAddTrackRemoveTrackWithNative:function(e){e.RTCPeerConnection.prototype.getLocalStreams=function(){var e=this;return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map((function(t){return e._shimmedLocalStreams[t][0]}))};var t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,n){if(!n)return t.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};var r=t.apply(this,arguments);return this._shimmedLocalStreams[n.id]?-1===this._shimmedLocalStreams[n.id].indexOf(r)&&this._shimmedLocalStreams[n.id].push(r):this._shimmedLocalStreams[n.id]=[n,r],r};var n=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){var t=this;this._shimmedLocalStreams=this._shimmedLocalStreams||{},e.getTracks().forEach((function(e){if(t.getSenders().find((function(t){return t.track===e})))throw new DOMException("Track already exists.","InvalidAccessError")}));var r=t.getSenders();n.apply(this,arguments);var i=t.getSenders().filter((function(e){return-1===r.indexOf(e)}));this._shimmedLocalStreams[e.id]=[e].concat(i)};var r=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[e.id],r.apply(this,arguments)};var i=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){var t=this;return this._shimmedLocalStreams=this._shimmedLocalStreams||{},e&&Object.keys(this._shimmedLocalStreams).forEach((function(n){var r=t._shimmedLocalStreams[n].indexOf(e);-1!==r&&t._shimmedLocalStreams[n].splice(r,1),1===t._shimmedLocalStreams[n].length&&delete t._shimmedLocalStreams[n]})),i.apply(this,arguments)}},shimAddTrackRemoveTrack:function(e){if(e.RTCPeerConnection){var n=r.detectBrowser(e);if(e.RTCPeerConnection.prototype.addTrack&&n.version>=65)return this.shimAddTrackRemoveTrackWithNative(e);var i=e.RTCPeerConnection.prototype.getLocalStreams;e.RTCPeerConnection.prototype.getLocalStreams=function(){var e=this,t=i.apply(this);return e._reverseStreams=e._reverseStreams||{},t.map((function(t){return e._reverseStreams[t.id]}))};var o=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(t){var n=this;if(n._streams=n._streams||{},n._reverseStreams=n._reverseStreams||{},t.getTracks().forEach((function(e){if(n.getSenders().find((function(t){return t.track===e})))throw new DOMException("Track already exists.","InvalidAccessError")})),!n._reverseStreams[t.id]){var r=new e.MediaStream(t.getTracks());n._streams[t.id]=r,n._reverseStreams[r.id]=t,t=r}o.apply(n,[t])};var a=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){var t=this;t._streams=t._streams||{},t._reverseStreams=t._reverseStreams||{},a.apply(t,[t._streams[e.id]||e]),delete t._reverseStreams[t._streams[e.id]?t._streams[e.id].id:e.id],delete t._streams[e.id]},e.RTCPeerConnection.prototype.addTrack=function(n,r){var i=this;if("closed"===i.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");var o=[].slice.call(arguments,1);if(1!==o.length||!o[0].getTracks().find((function(e){return e===n})))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");var a=i.getSenders().find((function(e){return e.track===n}));if(a)throw new DOMException("Track already exists.","InvalidAccessError");i._streams=i._streams||{},i._reverseStreams=i._reverseStreams||{};var l=i._streams[r.id];if(l)l.addTrack(n),t.resolve().then((function(){i.dispatchEvent(new Event("negotiationneeded"))}));else{var c=new e.MediaStream([n]);i._streams[r.id]=c,i._reverseStreams[c.id]=r,i.addStream(c)}return i.getSenders().find((function(e){return e.track===n}))},["createOffer","createAnswer"].forEach((function(t){var n=e.RTCPeerConnection.prototype[t];e.RTCPeerConnection.prototype[t]=function(){var e=this,t=arguments,r=arguments.length&&"function"==typeof arguments[0];return r?n.apply(e,[function(n){var r=s(e,n);t[0].apply(null,[r])},function(e){t[1]&&t[1].apply(null,e)},arguments[2]]):n.apply(e,arguments).then((function(t){return s(e,t)}))}}));var l=e.RTCPeerConnection.prototype.setLocalDescription;e.RTCPeerConnection.prototype.setLocalDescription=function(){var e=this;return arguments.length&&arguments[0].type?(arguments[0]=d(e,arguments[0]),l.apply(e,arguments)):l.apply(e,arguments)};var c=Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(e.RTCPeerConnection.prototype,"localDescription",{get:function(){var e=c.get.apply(this);return""===e.type?e:s(this,e)}}),e.RTCPeerConnection.prototype.removeTrack=function(e){var t,n=this;if("closed"===n.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===n))throw new DOMException("Sender was not created by this connection.","InvalidAccessError");n._streams=n._streams||{},Object.keys(n._streams).forEach((function(r){n._streams[r].getTracks().find((function(t){return e.track===t}))&&(t=n._streams[r])})),t&&(1===t.getTracks().length?n.removeStream(n._reverseStreams[t.id]):t.removeTrack(e.track),n.dispatchEvent(new Event("negotiationneeded")))}}function s(e,t){var n=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((function(t){var r=e._reverseStreams[t],i=e._streams[r.id];n=n.replace(new RegExp(i.id,"g"),r.id)})),new RTCSessionDescription({type:t.type,sdp:n})}function d(e,t){var n=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((function(t){var r=e._reverseStreams[t],i=e._streams[r.id];n=n.replace(new RegExp(r.id,"g"),i.id)})),new RTCSessionDescription({type:t.type,sdp:n})}},shimPeerConnection:function(e){var n=r.detectBrowser(e);if(!e.RTCPeerConnection&&e.webkitRTCPeerConnection&&(e.RTCPeerConnection=function(t,n){return i("PeerConnection"),t&&t.iceTransportPolicy&&(t.iceTransports=t.iceTransportPolicy),new e.webkitRTCPeerConnection(t,n)},e.RTCPeerConnection.prototype=e.webkitRTCPeerConnection.prototype,e.webkitRTCPeerConnection.generateCertificate&&Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:function(){return e.webkitRTCPeerConnection.generateCertificate}})),e.RTCPeerConnection){var o=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(e,n,r){var i=this,a=arguments;if(arguments.length>0&&"function"==typeof e)return o.apply(this,arguments);if(0===o.length&&(0===arguments.length||"function"!=typeof arguments[0]))return o.apply(this,[]);var l=function(e){var t={};return e.result().forEach((function(e){var n={id:e.id,timestamp:e.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[e.type]||e.type};e.names().forEach((function(t){n[t]=e.stat(t)})),t[n.id]=n})),t},c=function(e){return new Map(Object.keys(e).map((function(t){return[t,e[t]]})))};if(arguments.length>=2){var s=function(e){a[1](c(l(e)))};return o.apply(this,[s,arguments[0]])}return new t((function(e,t){o.apply(i,[function(t){e(c(l(t)))},t])})).then(n,r)},n.version<51&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(n){var r=e.RTCPeerConnection.prototype[n];e.RTCPeerConnection.prototype[n]=function(){var e=arguments,n=this,i=new t((function(t,i){r.apply(n,[e[0],t,i])}));return e.length<2?i:i.then((function(){e[1].apply(null,[])}),(function(t){e.length>=3&&e[2].apply(null,[t])}))}})),n.version<52&&["createOffer","createAnswer"].forEach((function(n){var r=e.RTCPeerConnection.prototype[n];e.RTCPeerConnection.prototype[n]=function(){var e=this;if(arguments.length<1||1===arguments.length&&"object"==typeof arguments[0]){var n=1===arguments.length?arguments[0]:void 0;return new t((function(t,i){r.apply(e,[t,i,n])}))}return r.apply(this,arguments)}})),["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){var n=e.RTCPeerConnection.prototype[t];e.RTCPeerConnection.prototype[t]=function(){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),n.apply(this,arguments)}}));var a=e.RTCPeerConnection.prototype.addIceCandidate;e.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?a.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),t.resolve())}}},fixNegotiationNeeded:function(e){r.wrapPeerConnectionEvent(e,"negotiationneeded",(function(e){if("stable"===e.target.signalingState)return e}))},shimGetDisplayMedia:function(e,t){e.navigator&&e.navigator.mediaDevices&&!("getDisplayMedia"in e.navigator.mediaDevices)&&("function"==typeof t?(e.navigator.mediaDevices.getDisplayMedia=function(n){return t(n).then((function(t){var r=n.video&&n.video.width,i=n.video&&n.video.height,o=n.video&&n.video.frameRate;return n.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:t,maxFrameRate:o||3}},r&&(n.video.mandatory.maxWidth=r),i&&(n.video.mandatory.maxHeight=i),e.navigator.mediaDevices.getUserMedia(n)}))},e.navigator.getDisplayMedia=function(t){return r.deprecated("navigator.getDisplayMedia","navigator.mediaDevices.getDisplayMedia"),e.navigator.mediaDevices.getDisplayMedia(t)}):console.error("shimGetDisplayMedia: getSourceId argument is not a function"))}}}).call(this,n(2))},function(e,t,n){"use strict";(function(t){var r=n(32),i=r.log;e.exports=function(e){var n=r.detectBrowser(e),o=e&&e.navigator,a=function(e){if("object"!=typeof e||e.mandatory||e.optional)return e;var t={};return Object.keys(e).forEach((function(n){if("require"!==n&&"advanced"!==n&&"mediaSource"!==n){var r="object"==typeof e[n]?e[n]:{ideal:e[n]};void 0!==r.exact&&"number"==typeof r.exact&&(r.min=r.max=r.exact);var i=function(e,t){return e?e+t.charAt(0).toUpperCase()+t.slice(1):"deviceId"===t?"sourceId":t};if(void 0!==r.ideal){t.optional=t.optional||[];var o={};"number"==typeof r.ideal?(o[i("min",n)]=r.ideal,t.optional.push(o),(o={})[i("max",n)]=r.ideal,t.optional.push(o)):(o[i("",n)]=r.ideal,t.optional.push(o))}void 0!==r.exact&&"number"!=typeof r.exact?(t.mandatory=t.mandatory||{},t.mandatory[i("",n)]=r.exact):["min","max"].forEach((function(e){void 0!==r[e]&&(t.mandatory=t.mandatory||{},t.mandatory[i(e,n)]=r[e])}))}})),e.advanced&&(t.optional=(t.optional||[]).concat(e.advanced)),t},l=function(e,t){if(n.version>=61)return t(e);if((e=JSON.parse(JSON.stringify(e)))&&"object"==typeof e.audio){var r=function(e,t,n){t in e&&!(n in e)&&(e[n]=e[t],delete e[t])};r((e=JSON.parse(JSON.stringify(e))).audio,"autoGainControl","googAutoGainControl"),r(e.audio,"noiseSuppression","googNoiseSuppression"),e.audio=a(e.audio)}if(e&&"object"==typeof e.video){var l=e.video.facingMode;l=l&&("object"==typeof l?l:{ideal:l});var c,s=n.version<66;if(l&&("user"===l.exact||"environment"===l.exact||"user"===l.ideal||"environment"===l.ideal)&&(!o.mediaDevices.getSupportedConstraints||!o.mediaDevices.getSupportedConstraints().facingMode||s))if(delete e.video.facingMode,"environment"===l.exact||"environment"===l.ideal?c=["back","rear"]:"user"!==l.exact&&"user"!==l.ideal||(c=["front"]),c)return o.mediaDevices.enumerateDevices().then((function(n){var r=(n=n.filter((function(e){return"videoinput"===e.kind}))).find((function(e){return c.some((function(t){return-1!==e.label.toLowerCase().indexOf(t)}))}));return!r&&n.length&&-1!==c.indexOf("back")&&(r=n[n.length-1]),r&&(e.video.deviceId=l.exact?{exact:r.deviceId}:{ideal:r.deviceId}),e.video=a(e.video),i("chrome: "+JSON.stringify(e)),t(e)}));e.video=a(e.video)}return i("chrome: "+JSON.stringify(e)),t(e)},c=function(e){return n.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:function(){return this.name+(this.message&&": ")+this.message}}};o.getUserMedia=function(e,t,n){l(e,(function(e){o.webkitGetUserMedia(e,t,(function(e){n&&n(c(e))}))}))};var s=function(e){return new t((function(t,n){o.getUserMedia(e,t,n)}))};if(o.mediaDevices||(o.mediaDevices={getUserMedia:s,enumerateDevices:function(){return new t((function(t){var n={audio:"audioinput",video:"videoinput"};return e.MediaStreamTrack.getSources((function(e){t(e.map((function(e){return{label:e.label,kind:n[e.kind],deviceId:e.id,groupId:""}})))}))}))},getSupportedConstraints:function(){return{deviceId:!0,echoCancellation:!0,facingMode:!0,frameRate:!0,height:!0,width:!0}}}),o.mediaDevices.getUserMedia){var d=o.mediaDevices.getUserMedia.bind(o.mediaDevices);o.mediaDevices.getUserMedia=function(e){return l(e,(function(e){return d(e).then((function(t){if(e.audio&&!t.getAudioTracks().length||e.video&&!t.getVideoTracks().length)throw t.getTracks().forEach((function(e){e.stop()})),new DOMException("","NotFoundError");return t}),(function(e){return t.reject(c(e))}))}))}}else o.mediaDevices.getUserMedia=function(e){return s(e)};void 0===o.mediaDevices.addEventListener&&(o.mediaDevices.addEventListener=function(){i("Dummy mediaDevices.addEventListener called.")}),void 0===o.mediaDevices.removeEventListener&&(o.mediaDevices.removeEventListener=function(){i("Dummy mediaDevices.removeEventListener called.")})}}).call(this,n(2))},function(e,t,n){"use strict";var r=n(32),i=n(597),o=n(598);e.exports={shimGetUserMedia:n(599),shimPeerConnection:function(e){var t=r.detectBrowser(e);if(e.RTCIceGatherer&&(e.RTCIceCandidate||(e.RTCIceCandidate=function(e){return e}),e.RTCSessionDescription||(e.RTCSessionDescription=function(e){return e}),t.version<15025)){var n=Object.getOwnPropertyDescriptor(e.MediaStreamTrack.prototype,"enabled");Object.defineProperty(e.MediaStreamTrack.prototype,"enabled",{set:function(e){n.set.call(this,e);var t=new Event("enabled");t.enabled=e,this.dispatchEvent(t)}})}e.RTCRtpSender&&!("dtmf"in e.RTCRtpSender.prototype)&&Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get:function(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=new e.RTCDtmfSender(this):"video"===this.track.kind&&(this._dtmf=null)),this._dtmf}}),e.RTCDtmfSender&&!e.RTCDTMFSender&&(e.RTCDTMFSender=e.RTCDtmfSender);var a=o(e,t.version);e.RTCPeerConnection=function(e){return e&&e.iceServers&&(e.iceServers=i(e.iceServers)),new a(e)},e.RTCPeerConnection.prototype=a.prototype},shimReplaceTrack:function(e){e.RTCRtpSender&&!("replaceTrack"in e.RTCRtpSender.prototype)&&(e.RTCRtpSender.prototype.replaceTrack=e.RTCRtpSender.prototype.setTrack)},shimGetDisplayMedia:function(e,t){if("getDisplayMedia"in e.navigator&&e.navigator.mediaDevices&&!("getDisplayMedia"in e.navigator.mediaDevices)){var n=e.navigator.getDisplayMedia;e.navigator.mediaDevices.getDisplayMedia=function(t){return n.call(e.navigator,t)},e.navigator.getDisplayMedia=function(t){return r.deprecated("navigator.getDisplayMedia","navigator.mediaDevices.getDisplayMedia"),n.call(e.navigator,t)}}}}},function(e,t,n){"use strict";var r=n(32);e.exports=function(e,t){var n=!1;return(e=JSON.parse(JSON.stringify(e))).filter((function(e){if(e&&(e.urls||e.url)){var i=e.urls||e.url;e.url&&!e.urls&&r.deprecated("RTCIceServer.url","RTCIceServer.urls");var o="string"==typeof i;return o&&(i=[i]),i=i.filter((function(e){return 0===e.indexOf("turn:")&&-1!==e.indexOf("transport=udp")&&-1===e.indexOf("turn:[")&&!n?(n=!0,!0):0===e.indexOf("stun:")&&t>=14393&&-1===e.indexOf("?transport=udp")})),delete e.url,e.urls=o?i[0]:i,!!i.length}}))}},function(e,t,n){"use strict";(function(t){var r=n(275);function i(e,t,n,i,o){var a=r.writeRtpDescription(e.kind,t);if(a+=r.writeIceParameters(e.iceGatherer.getLocalParameters()),a+=r.writeDtlsParameters(e.dtlsTransport.getLocalParameters(),"offer"===n?"actpass":o||"active"),a+="a=mid:"+e.mid+"\r\n",e.rtpSender&&e.rtpReceiver?a+="a=sendrecv\r\n":e.rtpSender?a+="a=sendonly\r\n":e.rtpReceiver?a+="a=recvonly\r\n":a+="a=inactive\r\n",e.rtpSender){var l=e.rtpSender._initialTrackId||e.rtpSender.track.id;e.rtpSender._initialTrackId=l;var c="msid:"+(i?i.id:"-")+" "+l+"\r\n";a+="a="+c,a+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" "+c,e.sendEncodingParameters[0].rtx&&(a+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" "+c,a+="a=ssrc-group:FID "+e.sendEncodingParameters[0].ssrc+" "+e.sendEncodingParameters[0].rtx.ssrc+"\r\n")}return a+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" cname:"+r.localCName+"\r\n",e.rtpSender&&e.sendEncodingParameters[0].rtx&&(a+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" cname:"+r.localCName+"\r\n"),a}function o(e,t){var n={codecs:[],headerExtensions:[],fecMechanisms:[]},r=function(e,t){e=parseInt(e,10);for(var n=0;n<t.length;n++)if(t[n].payloadType===e||t[n].preferredPayloadType===e)return t[n]},i=function(e,t,n,i){var o=r(e.parameters.apt,n),a=r(t.parameters.apt,i);return o&&a&&o.name.toLowerCase()===a.name.toLowerCase()};return e.codecs.forEach((function(r){for(var o=0;o<t.codecs.length;o++){var a=t.codecs[o];if(r.name.toLowerCase()===a.name.toLowerCase()&&r.clockRate===a.clockRate){if("rtx"===r.name.toLowerCase()&&r.parameters&&a.parameters.apt&&!i(r,a,e.codecs,t.codecs))continue;(a=JSON.parse(JSON.stringify(a))).numChannels=Math.min(r.numChannels,a.numChannels),n.codecs.push(a),a.rtcpFeedback=a.rtcpFeedback.filter((function(e){for(var t=0;t<r.rtcpFeedback.length;t++)if(r.rtcpFeedback[t].type===e.type&&r.rtcpFeedback[t].parameter===e.parameter)return!0;return!1}));break}}})),e.headerExtensions.forEach((function(e){for(var r=0;r<t.headerExtensions.length;r++){var i=t.headerExtensions[r];if(e.uri===i.uri){n.headerExtensions.push(i);break}}})),n}function a(e,t,n){return-1!=={offer:{setLocalDescription:["stable","have-local-offer"],setRemoteDescription:["stable","have-remote-offer"]},answer:{setLocalDescription:["have-remote-offer","have-local-pranswer"],setRemoteDescription:["have-local-offer","have-remote-pranswer"]}}[t][e].indexOf(n)}function l(e,t){var n=e.getRemoteCandidates().find((function(e){return t.foundation===e.foundation&&t.ip===e.ip&&t.port===e.port&&t.priority===e.priority&&t.protocol===e.protocol&&t.type===e.type}));return n||e.addRemoteCandidate(t),!n}function c(e,t){var n=new Error(t);return n.name=e,n.code={NotSupportedError:9,InvalidStateError:11,InvalidAccessError:15,TypeError:void 0,OperationError:void 0}[e],n}e.exports=function(e,n){function s(t,n){n.addTrack(t),n.dispatchEvent(new e.MediaStreamTrackEvent("addtrack",{track:t}))}function d(t,n,r,i){var o=new Event("track");o.track=n,o.receiver=r,o.transceiver={receiver:r},o.streams=i,e.setTimeout((function(){t._dispatchEvent("track",o)}))}var u=function(t){var i=this,o=document.createDocumentFragment();if(["addEventListener","removeEventListener","dispatchEvent"].forEach((function(e){i[e]=o[e].bind(o)})),this.canTrickleIceCandidates=null,this.needNegotiation=!1,this.localStreams=[],this.remoteStreams=[],this._localDescription=null,this._remoteDescription=null,this.signalingState="stable",this.iceConnectionState="new",this.connectionState="new",this.iceGatheringState="new",t=JSON.parse(JSON.stringify(t||{})),this.usingBundle="max-bundle"===t.bundlePolicy,"negotiate"===t.rtcpMuxPolicy)throw c("NotSupportedError","rtcpMuxPolicy 'negotiate' is not supported");switch(t.rtcpMuxPolicy||(t.rtcpMuxPolicy="require"),t.iceTransportPolicy){case"all":case"relay":break;default:t.iceTransportPolicy="all"}switch(t.bundlePolicy){case"balanced":case"max-compat":case"max-bundle":break;default:t.bundlePolicy="balanced"}if(t.iceServers=function(e,t){var n=!1;return(e=JSON.parse(JSON.stringify(e))).filter((function(e){if(e&&(e.urls||e.url)){var r=e.urls||e.url;e.url&&!e.urls&&console.warn("RTCIceServer.url is deprecated! Use urls instead.");var i="string"==typeof r;return i&&(r=[r]),r=r.filter((function(e){return 0===e.indexOf("turn:")&&-1!==e.indexOf("transport=udp")&&-1===e.indexOf("turn:[")&&!n?(n=!0,!0):0===e.indexOf("stun:")&&t>=14393&&-1===e.indexOf("?transport=udp")})),delete e.url,e.urls=i?r[0]:r,!!r.length}}))}(t.iceServers||[],n),this._iceGatherers=[],t.iceCandidatePoolSize)for(var a=t.iceCandidatePoolSize;a>0;a--)this._iceGatherers.push(new e.RTCIceGatherer({iceServers:t.iceServers,gatherPolicy:t.iceTransportPolicy}));else t.iceCandidatePoolSize=0;this._config=t,this.transceivers=[],this._sdpSessionId=r.generateSessionId(),this._sdpSessionVersion=0,this._dtlsRole=void 0,this._isClosed=!1};Object.defineProperty(u.prototype,"localDescription",{configurable:!0,get:function(){return this._localDescription}}),Object.defineProperty(u.prototype,"remoteDescription",{configurable:!0,get:function(){return this._remoteDescription}}),u.prototype.onicecandidate=null,u.prototype.onaddstream=null,u.prototype.ontrack=null,u.prototype.onremovestream=null,u.prototype.onsignalingstatechange=null,u.prototype.oniceconnectionstatechange=null,u.prototype.onconnectionstatechange=null,u.prototype.onicegatheringstatechange=null,u.prototype.onnegotiationneeded=null,u.prototype.ondatachannel=null,u.prototype._dispatchEvent=function(e,t){this._isClosed||(this.dispatchEvent(t),"function"==typeof this["on"+e]&&this["on"+e](t))},u.prototype._emitGatheringStateChange=function(){var e=new Event("icegatheringstatechange");this._dispatchEvent("icegatheringstatechange",e)},u.prototype.getConfiguration=function(){return this._config},u.prototype.getLocalStreams=function(){return this.localStreams},u.prototype.getRemoteStreams=function(){return this.remoteStreams},u.prototype._createTransceiver=function(e,t){var n=this.transceivers.length>0,r={track:null,iceGatherer:null,iceTransport:null,dtlsTransport:null,localCapabilities:null,remoteCapabilities:null,rtpSender:null,rtpReceiver:null,kind:e,mid:null,sendEncodingParameters:null,recvEncodingParameters:null,stream:null,associatedRemoteMediaStreams:[],wantReceive:!0};if(this.usingBundle&&n)r.iceTransport=this.transceivers[0].iceTransport,r.dtlsTransport=this.transceivers[0].dtlsTransport;else{var i=this._createIceAndDtlsTransports();r.iceTransport=i.iceTransport,r.dtlsTransport=i.dtlsTransport}return t||this.transceivers.push(r),r},u.prototype.addTrack=function(t,n){if(this._isClosed)throw c("InvalidStateError","Attempted to call addTrack on a closed peerconnection.");var r;if(this.transceivers.find((function(e){return e.track===t})))throw c("InvalidAccessError","Track already exists.");for(var i=0;i<this.transceivers.length;i++)this.transceivers[i].track||this.transceivers[i].kind!==t.kind||(r=this.transceivers[i]);return r||(r=this._createTransceiver(t.kind)),this._maybeFireNegotiationNeeded(),-1===this.localStreams.indexOf(n)&&this.localStreams.push(n),r.track=t,r.stream=n,r.rtpSender=new e.RTCRtpSender(t,r.dtlsTransport),r.rtpSender},u.prototype.addStream=function(e){var t=this;if(n>=15025)e.getTracks().forEach((function(n){t.addTrack(n,e)}));else{var r=e.clone();e.getTracks().forEach((function(e,t){var n=r.getTracks()[t];e.addEventListener("enabled",(function(e){n.enabled=e.enabled}))})),r.getTracks().forEach((function(e){t.addTrack(e,r)}))}},u.prototype.removeTrack=function(t){if(this._isClosed)throw c("InvalidStateError","Attempted to call removeTrack on a closed peerconnection.");if(!(t instanceof e.RTCRtpSender))throw new TypeError("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.");var n=this.transceivers.find((function(e){return e.rtpSender===t}));if(!n)throw c("InvalidAccessError","Sender was not created by this connection.");var r=n.stream;n.rtpSender.stop(),n.rtpSender=null,n.track=null,n.stream=null,-1===this.transceivers.map((function(e){return e.stream})).indexOf(r)&&this.localStreams.indexOf(r)>-1&&this.localStreams.splice(this.localStreams.indexOf(r),1),this._maybeFireNegotiationNeeded()},u.prototype.removeStream=function(e){var t=this;e.getTracks().forEach((function(e){var n=t.getSenders().find((function(t){return t.track===e}));n&&t.removeTrack(n)}))},u.prototype.getSenders=function(){return this.transceivers.filter((function(e){return!!e.rtpSender})).map((function(e){return e.rtpSender}))},u.prototype.getReceivers=function(){return this.transceivers.filter((function(e){return!!e.rtpReceiver})).map((function(e){return e.rtpReceiver}))},u.prototype._createIceGatherer=function(t,n){var r=this;if(n&&t>0)return this.transceivers[0].iceGatherer;if(this._iceGatherers.length)return this._iceGatherers.shift();var i=new e.RTCIceGatherer({iceServers:this._config.iceServers,gatherPolicy:this._config.iceTransportPolicy});return Object.defineProperty(i,"state",{value:"new",writable:!0}),this.transceivers[t].bufferedCandidateEvents=[],this.transceivers[t].bufferCandidates=function(e){var n=!e.candidate||0===Object.keys(e.candidate).length;i.state=n?"completed":"gathering",null!==r.transceivers[t].bufferedCandidateEvents&&r.transceivers[t].bufferedCandidateEvents.push(e)},i.addEventListener("localcandidate",this.transceivers[t].bufferCandidates),i},u.prototype._gather=function(t,n){var i=this,o=this.transceivers[n].iceGatherer;if(!o.onlocalcandidate){var a=this.transceivers[n].bufferedCandidateEvents;this.transceivers[n].bufferedCandidateEvents=null,o.removeEventListener("localcandidate",this.transceivers[n].bufferCandidates),o.onlocalcandidate=function(e){if(!(i.usingBundle&&n>0)){var a=new Event("icecandidate");a.candidate={sdpMid:t,sdpMLineIndex:n};var l=e.candidate,c=!l||0===Object.keys(l).length;if(c)"new"!==o.state&&"gathering"!==o.state||(o.state="completed");else{"new"===o.state&&(o.state="gathering"),l.component=1,l.ufrag=o.getLocalParameters().usernameFragment;var s=r.writeCandidate(l);a.candidate=Object.assign(a.candidate,r.parseCandidate(s)),a.candidate.candidate=s,a.candidate.toJSON=function(){return{candidate:a.candidate.candidate,sdpMid:a.candidate.sdpMid,sdpMLineIndex:a.candidate.sdpMLineIndex,usernameFragment:a.candidate.usernameFragment}}}var d=r.getMediaSections(i._localDescription.sdp);d[a.candidate.sdpMLineIndex]+=c?"a=end-of-candidates\r\n":"a="+a.candidate.candidate+"\r\n",i._localDescription.sdp=r.getDescription(i._localDescription.sdp)+d.join("");var u=i.transceivers.every((function(e){return e.iceGatherer&&"completed"===e.iceGatherer.state}));"gathering"!==i.iceGatheringState&&(i.iceGatheringState="gathering",i._emitGatheringStateChange()),c||i._dispatchEvent("icecandidate",a),u&&(i._dispatchEvent("icecandidate",new Event("icecandidate")),i.iceGatheringState="complete",i._emitGatheringStateChange())}},e.setTimeout((function(){a.forEach((function(e){o.onlocalcandidate(e)}))}),0)}},u.prototype._createIceAndDtlsTransports=function(){var t=this,n=new e.RTCIceTransport(null);n.onicestatechange=function(){t._updateIceConnectionState(),t._updateConnectionState()};var r=new e.RTCDtlsTransport(n);return r.ondtlsstatechange=function(){t._updateConnectionState()},r.onerror=function(){Object.defineProperty(r,"state",{value:"failed",writable:!0}),t._updateConnectionState()},{iceTransport:n,dtlsTransport:r}},u.prototype._disposeIceAndDtlsTransports=function(e){var t=this.transceivers[e].iceGatherer;t&&(delete t.onlocalcandidate,delete this.transceivers[e].iceGatherer);var n=this.transceivers[e].iceTransport;n&&(delete n.onicestatechange,delete this.transceivers[e].iceTransport);var r=this.transceivers[e].dtlsTransport;r&&(delete r.ondtlsstatechange,delete r.onerror,delete this.transceivers[e].dtlsTransport)},u.prototype._transceive=function(e,t,i){var a=o(e.localCapabilities,e.remoteCapabilities);t&&e.rtpSender&&(a.encodings=e.sendEncodingParameters,a.rtcp={cname:r.localCName,compound:e.rtcpParameters.compound},e.recvEncodingParameters.length&&(a.rtcp.ssrc=e.recvEncodingParameters[0].ssrc),e.rtpSender.send(a)),i&&e.rtpReceiver&&a.codecs.length>0&&("video"===e.kind&&e.recvEncodingParameters&&n<15019&&e.recvEncodingParameters.forEach((function(e){delete e.rtx})),e.recvEncodingParameters.length?a.encodings=e.recvEncodingParameters:a.encodings=[{}],a.rtcp={compound:e.rtcpParameters.compound},e.rtcpParameters.cname&&(a.rtcp.cname=e.rtcpParameters.cname),e.sendEncodingParameters.length&&(a.rtcp.ssrc=e.sendEncodingParameters[0].ssrc),e.rtpReceiver.receive(a))},u.prototype.setLocalDescription=function(e){var n,i,l=this;if(-1===["offer","answer"].indexOf(e.type))return t.reject(c("TypeError",'Unsupported type "'+e.type+'"'));if(!a("setLocalDescription",e.type,l.signalingState)||l._isClosed)return t.reject(c("InvalidStateError","Can not set local "+e.type+" in state "+l.signalingState));if("offer"===e.type)n=r.splitSections(e.sdp),i=n.shift(),n.forEach((function(e,t){var n=r.parseRtpParameters(e);l.transceivers[t].localCapabilities=n})),l.transceivers.forEach((function(e,t){l._gather(e.mid,t)}));else if("answer"===e.type){n=r.splitSections(l._remoteDescription.sdp),i=n.shift();var s=r.matchPrefix(i,"a=ice-lite").length>0;n.forEach((function(e,t){var n=l.transceivers[t],a=n.iceGatherer,c=n.iceTransport,d=n.dtlsTransport,u=n.localCapabilities,A=n.remoteCapabilities;if(!(r.isRejected(e)&&0===r.matchPrefix(e,"a=bundle-only").length)&&!n.rejected){var h=r.getIceParameters(e,i),g=r.getDtlsParameters(e,i);s&&(g.role="server"),l.usingBundle&&0!==t||(l._gather(n.mid,t),"new"===c.state&&c.start(a,h,s?"controlling":"controlled"),"new"===d.state&&d.start(g));var F=o(u,A);l._transceive(n,F.codecs.length>0,!1)}}))}return l._localDescription={type:e.type,sdp:e.sdp},"offer"===e.type?l._updateSignalingState("have-local-offer"):l._updateSignalingState("stable"),t.resolve()},u.prototype.setRemoteDescription=function(i){var u=this;if(-1===["offer","answer"].indexOf(i.type))return t.reject(c("TypeError",'Unsupported type "'+i.type+'"'));if(!a("setRemoteDescription",i.type,u.signalingState)||u._isClosed)return t.reject(c("InvalidStateError","Can not set remote "+i.type+" in state "+u.signalingState));var A={};u.remoteStreams.forEach((function(e){A[e.id]=e}));var h=[],g=r.splitSections(i.sdp),F=g.shift(),Q=r.matchPrefix(F,"a=ice-lite").length>0,p=r.matchPrefix(F,"a=group:BUNDLE ").length>0;u.usingBundle=p;var m=r.matchPrefix(F,"a=ice-options:")[0];return u.canTrickleIceCandidates=!!m&&m.substr(14).split(" ").indexOf("trickle")>=0,g.forEach((function(t,a){var c=r.splitLines(t),d=r.getKind(t),g=r.isRejected(t)&&0===r.matchPrefix(t,"a=bundle-only").length,m=c[0].substr(2).split(" ")[2],U=r.getDirection(t,F),b=r.parseMsid(t),Z=r.getMid(t)||r.generateIdentifier();if(g||"application"===d&&("DTLS/SCTP"===m||"UDP/DTLS/SCTP"===m))u.transceivers[a]={mid:Z,kind:d,protocol:m,rejected:!0};else{var B,f,R,I,y,V,C,W,E;!g&&u.transceivers[a]&&u.transceivers[a].rejected&&(u.transceivers[a]=u._createTransceiver(d,!0));var v,S,J=r.parseRtpParameters(t);g||(v=r.getIceParameters(t,F),(S=r.getDtlsParameters(t,F)).role="client"),C=r.parseRtpEncodingParameters(t);var G=r.parseRtcpParameters(t),N=r.matchPrefix(t,"a=end-of-candidates",F).length>0,X=r.matchPrefix(t,"a=candidate:").map((function(e){return r.parseCandidate(e)})).filter((function(e){return 1===e.component}));if(("offer"===i.type||"answer"===i.type)&&!g&&p&&a>0&&u.transceivers[a]&&(u._disposeIceAndDtlsTransports(a),u.transceivers[a].iceGatherer=u.transceivers[0].iceGatherer,u.transceivers[a].iceTransport=u.transceivers[0].iceTransport,u.transceivers[a].dtlsTransport=u.transceivers[0].dtlsTransport,u.transceivers[a].rtpSender&&u.transceivers[a].rtpSender.setTransport(u.transceivers[0].dtlsTransport),u.transceivers[a].rtpReceiver&&u.transceivers[a].rtpReceiver.setTransport(u.transceivers[0].dtlsTransport)),"offer"!==i.type||g){if("answer"===i.type&&!g){f=(B=u.transceivers[a]).iceGatherer,R=B.iceTransport,I=B.dtlsTransport,y=B.rtpReceiver,V=B.sendEncodingParameters,W=B.localCapabilities,u.transceivers[a].recvEncodingParameters=C,u.transceivers[a].remoteCapabilities=J,u.transceivers[a].rtcpParameters=G,X.length&&"new"===R.state&&(!Q&&!N||p&&0!==a?X.forEach((function(e){l(B.iceTransport,e)})):R.setRemoteCandidates(X)),p&&0!==a||("new"===R.state&&R.start(f,v,"controlling"),"new"===I.state&&I.start(S)),!o(B.localCapabilities,B.remoteCapabilities).codecs.filter((function(e){return"rtx"===e.name.toLowerCase()})).length&&B.sendEncodingParameters[0].rtx&&delete B.sendEncodingParameters[0].rtx,u._transceive(B,"sendrecv"===U||"recvonly"===U,"sendrecv"===U||"sendonly"===U),!y||"sendrecv"!==U&&"sendonly"!==U?delete B.rtpReceiver:(E=y.track,b?(A[b.stream]||(A[b.stream]=new e.MediaStream),s(E,A[b.stream]),h.push([E,y,A[b.stream]])):(A.default||(A.default=new e.MediaStream),s(E,A.default),h.push([E,y,A.default])))}}else{(B=u.transceivers[a]||u._createTransceiver(d)).mid=Z,B.iceGatherer||(B.iceGatherer=u._createIceGatherer(a,p)),X.length&&"new"===B.iceTransport.state&&(!N||p&&0!==a?X.forEach((function(e){l(B.iceTransport,e)})):B.iceTransport.setRemoteCandidates(X)),W=e.RTCRtpReceiver.getCapabilities(d),n<15019&&(W.codecs=W.codecs.filter((function(e){return"rtx"!==e.name}))),V=B.sendEncodingParameters||[{ssrc:1001*(2*a+2)}];var k,T=!1;if("sendrecv"===U||"sendonly"===U){if(T=!B.rtpReceiver,y=B.rtpReceiver||new e.RTCRtpReceiver(B.dtlsTransport,d),T)E=y.track,b&&"-"===b.stream||(b?(A[b.stream]||(A[b.stream]=new e.MediaStream,Object.defineProperty(A[b.stream],"id",{get:function(){return b.stream}})),Object.defineProperty(E,"id",{get:function(){return b.track}}),k=A[b.stream]):(A.default||(A.default=new e.MediaStream),k=A.default)),k&&(s(E,k),B.associatedRemoteMediaStreams.push(k)),h.push([E,y,k])}else B.rtpReceiver&&B.rtpReceiver.track&&(B.associatedRemoteMediaStreams.forEach((function(t){var n=t.getTracks().find((function(e){return e.id===B.rtpReceiver.track.id}));n&&function(t,n){n.removeTrack(t),n.dispatchEvent(new e.MediaStreamTrackEvent("removetrack",{track:t}))}(n,t)})),B.associatedRemoteMediaStreams=[]);B.localCapabilities=W,B.remoteCapabilities=J,B.rtpReceiver=y,B.rtcpParameters=G,B.sendEncodingParameters=V,B.recvEncodingParameters=C,u._transceive(u.transceivers[a],!1,T)}}})),void 0===u._dtlsRole&&(u._dtlsRole="offer"===i.type?"active":"passive"),u._remoteDescription={type:i.type,sdp:i.sdp},"offer"===i.type?u._updateSignalingState("have-remote-offer"):u._updateSignalingState("stable"),Object.keys(A).forEach((function(t){var n=A[t];if(n.getTracks().length){if(-1===u.remoteStreams.indexOf(n)){u.remoteStreams.push(n);var r=new Event("addstream");r.stream=n,e.setTimeout((function(){u._dispatchEvent("addstream",r)}))}h.forEach((function(e){var t=e[0],r=e[1];n.id===e[2].id&&d(u,t,r,[n])}))}})),h.forEach((function(e){e[2]||d(u,e[0],e[1],[])})),e.setTimeout((function(){u&&u.transceivers&&u.transceivers.forEach((function(e){e.iceTransport&&"new"===e.iceTransport.state&&e.iceTransport.getRemoteCandidates().length>0&&(console.warn("Timeout for addRemoteCandidate. Consider sending an end-of-candidates notification"),e.iceTransport.addRemoteCandidate({}))}))}),4e3),t.resolve()},u.prototype.close=function(){this.transceivers.forEach((function(e){e.iceTransport&&e.iceTransport.stop(),e.dtlsTransport&&e.dtlsTransport.stop(),e.rtpSender&&e.rtpSender.stop(),e.rtpReceiver&&e.rtpReceiver.stop()})),this._isClosed=!0,this._updateSignalingState("closed")},u.prototype._updateSignalingState=function(e){this.signalingState=e;var t=new Event("signalingstatechange");this._dispatchEvent("signalingstatechange",t)},u.prototype._maybeFireNegotiationNeeded=function(){var t=this;"stable"===this.signalingState&&!0!==this.needNegotiation&&(this.needNegotiation=!0,e.setTimeout((function(){if(t.needNegotiation){t.needNegotiation=!1;var e=new Event("negotiationneeded");t._dispatchEvent("negotiationneeded",e)}}),0))},u.prototype._updateIceConnectionState=function(){var e,t={new:0,closed:0,checking:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach((function(e){e.iceTransport&&!e.rejected&&t[e.iceTransport.state]++})),e="new",t.failed>0?e="failed":t.checking>0?e="checking":t.disconnected>0?e="disconnected":t.new>0?e="new":t.connected>0?e="connected":t.completed>0&&(e="completed"),e!==this.iceConnectionState){this.iceConnectionState=e;var n=new Event("iceconnectionstatechange");this._dispatchEvent("iceconnectionstatechange",n)}},u.prototype._updateConnectionState=function(){var e,t={new:0,closed:0,connecting:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach((function(e){e.iceTransport&&e.dtlsTransport&&!e.rejected&&(t[e.iceTransport.state]++,t[e.dtlsTransport.state]++)})),t.connected+=t.completed,e="new",t.failed>0?e="failed":t.connecting>0?e="connecting":t.disconnected>0?e="disconnected":t.new>0?e="new":t.connected>0&&(e="connected"),e!==this.connectionState){this.connectionState=e;var n=new Event("connectionstatechange");this._dispatchEvent("connectionstatechange",n)}},u.prototype.createOffer=function(){var o=this;if(o._isClosed)return t.reject(c("InvalidStateError","Can not call createOffer after close"));var a=o.transceivers.filter((function(e){return"audio"===e.kind})).length,l=o.transceivers.filter((function(e){return"video"===e.kind})).length,s=arguments[0];if(s){if(s.mandatory||s.optional)throw new TypeError("Legacy mandatory/optional constraints not supported.");void 0!==s.offerToReceiveAudio&&(a=!0===s.offerToReceiveAudio?1:!1===s.offerToReceiveAudio?0:s.offerToReceiveAudio),void 0!==s.offerToReceiveVideo&&(l=!0===s.offerToReceiveVideo?1:!1===s.offerToReceiveVideo?0:s.offerToReceiveVideo)}for(o.transceivers.forEach((function(e){"audio"===e.kind?--a<0&&(e.wantReceive=!1):"video"===e.kind&&--l<0&&(e.wantReceive=!1)}));a>0||l>0;)a>0&&(o._createTransceiver("audio"),a--),l>0&&(o._createTransceiver("video"),l--);var d=r.writeSessionBoilerplate(o._sdpSessionId,o._sdpSessionVersion++);o.transceivers.forEach((function(t,i){var a=t.track,l=t.kind,c=t.mid||r.generateIdentifier();t.mid=c,t.iceGatherer||(t.iceGatherer=o._createIceGatherer(i,o.usingBundle));var s=e.RTCRtpSender.getCapabilities(l);n<15019&&(s.codecs=s.codecs.filter((function(e){return"rtx"!==e.name}))),s.codecs.forEach((function(e){"H264"===e.name&&void 0===e.parameters["level-asymmetry-allowed"]&&(e.parameters["level-asymmetry-allowed"]="1"),t.remoteCapabilities&&t.remoteCapabilities.codecs&&t.remoteCapabilities.codecs.forEach((function(t){e.name.toLowerCase()===t.name.toLowerCase()&&e.clockRate===t.clockRate&&(e.preferredPayloadType=t.payloadType)}))})),s.headerExtensions.forEach((function(e){(t.remoteCapabilities&&t.remoteCapabilities.headerExtensions||[]).forEach((function(t){e.uri===t.uri&&(e.id=t.id)}))}));var d=t.sendEncodingParameters||[{ssrc:1001*(2*i+1)}];a&&n>=15019&&"video"===l&&!d[0].rtx&&(d[0].rtx={ssrc:d[0].ssrc+1}),t.wantReceive&&(t.rtpReceiver=new e.RTCRtpReceiver(t.dtlsTransport,l)),t.localCapabilities=s,t.sendEncodingParameters=d})),"max-compat"!==o._config.bundlePolicy&&(d+="a=group:BUNDLE "+o.transceivers.map((function(e){return e.mid})).join(" ")+"\r\n"),d+="a=ice-options:trickle\r\n",o.transceivers.forEach((function(e,t){d+=i(e,e.localCapabilities,"offer",e.stream,o._dtlsRole),d+="a=rtcp-rsize\r\n",!e.iceGatherer||"new"===o.iceGatheringState||0!==t&&o.usingBundle||(e.iceGatherer.getLocalCandidates().forEach((function(e){e.component=1,d+="a="+r.writeCandidate(e)+"\r\n"})),"completed"===e.iceGatherer.state&&(d+="a=end-of-candidates\r\n"))}));var u=new e.RTCSessionDescription({type:"offer",sdp:d});return t.resolve(u)},u.prototype.createAnswer=function(){var a=this;if(a._isClosed)return t.reject(c("InvalidStateError","Can not call createAnswer after close"));if("have-remote-offer"!==a.signalingState&&"have-local-pranswer"!==a.signalingState)return t.reject(c("InvalidStateError","Can not call createAnswer in signalingState "+a.signalingState));var l=r.writeSessionBoilerplate(a._sdpSessionId,a._sdpSessionVersion++);a.usingBundle&&(l+="a=group:BUNDLE "+a.transceivers.map((function(e){return e.mid})).join(" ")+"\r\n"),l+="a=ice-options:trickle\r\n";var s=r.getMediaSections(a._remoteDescription.sdp).length;a.transceivers.forEach((function(e,t){if(!(t+1>s)){if(e.rejected)return"application"===e.kind?"DTLS/SCTP"===e.protocol?l+="m=application 0 DTLS/SCTP 5000\r\n":l+="m=application 0 "+e.protocol+" webrtc-datachannel\r\n":"audio"===e.kind?l+="m=audio 0 UDP/TLS/RTP/SAVPF 0\r\na=rtpmap:0 PCMU/8000\r\n":"video"===e.kind&&(l+="m=video 0 UDP/TLS/RTP/SAVPF 120\r\na=rtpmap:120 VP8/90000\r\n"),void(l+="c=IN IP4 0.0.0.0\r\na=inactive\r\na=mid:"+e.mid+"\r\n");var r;if(e.stream)"audio"===e.kind?r=e.stream.getAudioTracks()[0]:"video"===e.kind&&(r=e.stream.getVideoTracks()[0]),r&&n>=15019&&"video"===e.kind&&!e.sendEncodingParameters[0].rtx&&(e.sendEncodingParameters[0].rtx={ssrc:e.sendEncodingParameters[0].ssrc+1});var c=o(e.localCapabilities,e.remoteCapabilities);!c.codecs.filter((function(e){return"rtx"===e.name.toLowerCase()})).length&&e.sendEncodingParameters[0].rtx&&delete e.sendEncodingParameters[0].rtx,l+=i(e,c,"answer",e.stream,a._dtlsRole),e.rtcpParameters&&e.rtcpParameters.reducedSize&&(l+="a=rtcp-rsize\r\n")}}));var d=new e.RTCSessionDescription({type:"answer",sdp:l});return t.resolve(d)},u.prototype.addIceCandidate=function(e){var n,i=this;return e&&void 0===e.sdpMLineIndex&&!e.sdpMid?t.reject(new TypeError("sdpMLineIndex or sdpMid required")):new t((function(t,o){if(!i._remoteDescription)return o(c("InvalidStateError","Can not add ICE candidate without a remote description"));if(e&&""!==e.candidate){var a=e.sdpMLineIndex;if(e.sdpMid)for(var s=0;s<i.transceivers.length;s++)if(i.transceivers[s].mid===e.sdpMid){a=s;break}var d=i.transceivers[a];if(!d)return o(c("OperationError","Can not add ICE candidate"));if(d.rejected)return t();var u=Object.keys(e.candidate).length>0?r.parseCandidate(e.candidate):{};if("tcp"===u.protocol&&(0===u.port||9===u.port))return t();if(u.component&&1!==u.component)return t();if((0===a||a>0&&d.iceTransport!==i.transceivers[0].iceTransport)&&!l(d.iceTransport,u))return o(c("OperationError","Can not add ICE candidate"));var A=e.candidate.trim();0===A.indexOf("a=")&&(A=A.substr(2)),(n=r.getMediaSections(i._remoteDescription.sdp))[a]+="a="+(u.type?A:"end-of-candidates")+"\r\n",i._remoteDescription.sdp=r.getDescription(i._remoteDescription.sdp)+n.join("")}else for(var h=0;h<i.transceivers.length&&(i.transceivers[h].rejected||(i.transceivers[h].iceTransport.addRemoteCandidate({}),(n=r.getMediaSections(i._remoteDescription.sdp))[h]+="a=end-of-candidates\r\n",i._remoteDescription.sdp=r.getDescription(i._remoteDescription.sdp)+n.join(""),!i.usingBundle));h++);t()}))},u.prototype.getStats=function(n){if(n&&n instanceof e.MediaStreamTrack){var r=null;if(this.transceivers.forEach((function(e){e.rtpSender&&e.rtpSender.track===n?r=e.rtpSender:e.rtpReceiver&&e.rtpReceiver.track===n&&(r=e.rtpReceiver)})),!r)throw c("InvalidAccessError","Invalid selector.");return r.getStats()}var i=[];return this.transceivers.forEach((function(e){["rtpSender","rtpReceiver","iceGatherer","iceTransport","dtlsTransport"].forEach((function(t){e[t]&&i.push(e[t].getStats())}))})),t.all(i).then((function(e){var t=new Map;return e.forEach((function(e){e.forEach((function(e){t.set(e.id,e)}))})),t}))};["RTCRtpSender","RTCRtpReceiver","RTCIceGatherer","RTCIceTransport","RTCDtlsTransport"].forEach((function(t){var n=e[t];if(n&&n.prototype&&n.prototype.getStats){var r=n.prototype.getStats;n.prototype.getStats=function(){return r.apply(this).then((function(e){var t=new Map;return Object.keys(e).forEach((function(n){var r;e[n].type={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[(r=e[n]).type]||r.type,t.set(n,e[n])})),t}))}}}));var A=["createOffer","createAnswer"];return A.forEach((function(e){var t=u.prototype[e];u.prototype[e]=function(){var e=arguments;return"function"==typeof e[0]||"function"==typeof e[1]?t.apply(this,[arguments[2]]).then((function(t){"function"==typeof e[0]&&e[0].apply(null,[t])}),(function(t){"function"==typeof e[1]&&e[1].apply(null,[t])})):t.apply(this,arguments)}})),(A=["setLocalDescription","setRemoteDescription","addIceCandidate"]).forEach((function(e){var t=u.prototype[e];u.prototype[e]=function(){var e=arguments;return"function"==typeof e[1]||"function"==typeof e[2]?t.apply(this,arguments).then((function(){"function"==typeof e[1]&&e[1].apply(null)}),(function(t){"function"==typeof e[2]&&e[2].apply(null,[t])})):t.apply(this,arguments)}})),["getStats"].forEach((function(e){var t=u.prototype[e];u.prototype[e]=function(){var e=arguments;return"function"==typeof e[1]?t.apply(this,arguments).then((function(){"function"==typeof e[1]&&e[1].apply(null)})):t.apply(this,arguments)}})),u}}).call(this,n(2))},function(e,t,n){"use strict";(function(t){e.exports=function(e){var n=e&&e.navigator,r=n.mediaDevices.getUserMedia.bind(n.mediaDevices);n.mediaDevices.getUserMedia=function(e){return r(e).catch((function(e){return t.reject(function(e){return{name:{PermissionDeniedError:"NotAllowedError"}[e.name]||e.name,message:e.message,constraint:e.constraint,toString:function(){return this.name}}}(e))}))}}}).call(this,n(2))},function(e,t,n){"use strict";(function(t){var r=n(32);e.exports={shimGetUserMedia:n(601),shimOnTrack:function(e){"object"==typeof e&&e.RTCPeerConnection&&!("ontrack"in e.RTCPeerConnection.prototype)&&Object.defineProperty(e.RTCPeerConnection.prototype,"ontrack",{get:function(){return this._ontrack},set:function(e){this._ontrack&&(this.removeEventListener("track",this._ontrack),this.removeEventListener("addstream",this._ontrackpoly)),this.addEventListener("track",this._ontrack=e),this.addEventListener("addstream",this._ontrackpoly=function(e){e.stream.getTracks().forEach(function(t){var n=new Event("track");n.track=t,n.receiver={track:t},n.transceiver={receiver:n.receiver},n.streams=[e.stream],this.dispatchEvent(n)}.bind(this))}.bind(this))},enumerable:!0,configurable:!0}),"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get:function(){return{receiver:this.receiver}}})},shimSourceObject:function(e){"object"==typeof e&&e.HTMLMediaElement&&!("srcObject"in e.HTMLMediaElement.prototype)&&Object.defineProperty(e.HTMLMediaElement.prototype,"srcObject",{get:function(){return this.mozSrcObject},set:function(e){this.mozSrcObject=e}})},shimPeerConnection:function(e){var n=r.detectBrowser(e);if("object"==typeof e&&(e.RTCPeerConnection||e.mozRTCPeerConnection)){e.RTCPeerConnection||(e.RTCPeerConnection=function(t,r){if(n.version<38&&t&&t.iceServers){for(var i=[],o=0;o<t.iceServers.length;o++){var a=t.iceServers[o];if(a.hasOwnProperty("urls"))for(var l=0;l<a.urls.length;l++){var c={url:a.urls[l]};0===a.urls[l].indexOf("turn")&&(c.username=a.username,c.credential=a.credential),i.push(c)}else i.push(t.iceServers[o])}t.iceServers=i}return new e.mozRTCPeerConnection(t,r)},e.RTCPeerConnection.prototype=e.mozRTCPeerConnection.prototype,e.mozRTCPeerConnection.generateCertificate&&Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:function(){return e.mozRTCPeerConnection.generateCertificate}}),e.RTCSessionDescription=e.mozRTCSessionDescription,e.RTCIceCandidate=e.mozRTCIceCandidate),["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){var n=e.RTCPeerConnection.prototype[t];e.RTCPeerConnection.prototype[t]=function(){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),n.apply(this,arguments)}}));var i=e.RTCPeerConnection.prototype.addIceCandidate;e.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?i.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),t.resolve())};var o={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},a=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(e,t,r){return a.apply(this,[e||null]).then((function(e){if(n.version<48&&(e=function(e){var t=new Map;return Object.keys(e).forEach((function(n){t.set(n,e[n]),t[n]=e[n]})),t}(e)),n.version<53&&!t)try{e.forEach((function(e){e.type=o[e.type]||e.type}))}catch(t){if("TypeError"!==t.name)throw t;e.forEach((function(t,n){e.set(n,Object.assign({},t,{type:o[t.type]||t.type}))}))}return e})).then(t,r)}}},shimSenderGetStats:function(e){if("object"==typeof e&&e.RTCPeerConnection&&e.RTCRtpSender&&(!e.RTCRtpSender||!("getStats"in e.RTCRtpSender.prototype))){var n=e.RTCPeerConnection.prototype.getSenders;n&&(e.RTCPeerConnection.prototype.getSenders=function(){var e=this,t=n.apply(e,[]);return t.forEach((function(t){t._pc=e})),t});var r=e.RTCPeerConnection.prototype.addTrack;r&&(e.RTCPeerConnection.prototype.addTrack=function(){var e=r.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):t.resolve(new Map)}}},shimReceiverGetStats:function(e){if("object"==typeof e&&e.RTCPeerConnection&&e.RTCRtpSender&&(!e.RTCRtpSender||!("getStats"in e.RTCRtpReceiver.prototype))){var t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){var e=this,n=t.apply(e,[]);return n.forEach((function(t){t._pc=e})),n}),r.wrapPeerConnectionEvent(e,"track",(function(e){return e.receiver._pc=e.srcElement,e})),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}},shimRemoveStream:function(e){e.RTCPeerConnection&&!("removeStream"in e.RTCPeerConnection.prototype)&&(e.RTCPeerConnection.prototype.removeStream=function(e){var t=this;r.deprecated("removeStream","removeTrack"),this.getSenders().forEach((function(n){n.track&&-1!==e.getTracks().indexOf(n.track)&&t.removeTrack(n)}))})},shimRTCDataChannel:function(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)},shimGetDisplayMedia:function(e,n){e.navigator&&e.navigator.mediaDevices&&!("getDisplayMedia"in e.navigator.mediaDevices)&&(e.navigator.mediaDevices.getDisplayMedia=function(r){if(!r||!r.video){var i=new DOMException("getDisplayMedia without video constraints is undefined");return i.name="NotFoundError",i.code=8,t.reject(i)}return!0===r.video?r.video={mediaSource:n}:r.video.mediaSource=n,e.navigator.mediaDevices.getUserMedia(r)},e.navigator.getDisplayMedia=function(t){return r.deprecated("navigator.getDisplayMedia","navigator.mediaDevices.getDisplayMedia"),e.navigator.mediaDevices.getDisplayMedia(t)})}}}).call(this,n(2))},function(e,t,n){"use strict";(function(t){var r=n(32),i=r.log;e.exports=function(e){var n=r.detectBrowser(e),o=e&&e.navigator,a=e&&e.MediaStreamTrack,l=function(e){return{name:{InternalError:"NotReadableError",NotSupportedError:"TypeError",PermissionDeniedError:"NotAllowedError",SecurityError:"NotAllowedError"}[e.name]||e.name,message:{"The operation is insecure.":"The request is not allowed by the user agent or the platform in the current context."}[e.message]||e.message,constraint:e.constraint,toString:function(){return this.name+(this.message&&": ")+this.message}}},c=function(e,t,r){var a=function(e){if("object"!=typeof e||e.require)return e;var t=[];return Object.keys(e).forEach((function(n){if("require"!==n&&"advanced"!==n&&"mediaSource"!==n){var r=e[n]="object"==typeof e[n]?e[n]:{ideal:e[n]};if(void 0===r.min&&void 0===r.max&&void 0===r.exact||t.push(n),void 0!==r.exact&&("number"==typeof r.exact?r.min=r.max=r.exact:e[n]=r.exact,delete r.exact),void 0!==r.ideal){e.advanced=e.advanced||[];var i={};"number"==typeof r.ideal?i[n]={min:r.ideal,max:r.ideal}:i[n]=r.ideal,e.advanced.push(i),delete r.ideal,Object.keys(r).length||delete e[n]}}})),t.length&&(e.require=t),e};return e=JSON.parse(JSON.stringify(e)),n.version<38&&(i("spec: "+JSON.stringify(e)),e.audio&&(e.audio=a(e.audio)),e.video&&(e.video=a(e.video)),i("ff37: "+JSON.stringify(e))),o.mozGetUserMedia(e,t,(function(e){r(l(e))}))};if(o.mediaDevices||(o.mediaDevices={getUserMedia:function(e){return new t((function(t,n){c(e,t,n)}))},addEventListener:function(){},removeEventListener:function(){}}),o.mediaDevices.enumerateDevices=o.mediaDevices.enumerateDevices||function(){return new t((function(e){e([{kind:"audioinput",deviceId:"default",label:"",groupId:""},{kind:"videoinput",deviceId:"default",label:"",groupId:""}])}))},n.version<41){var s=o.mediaDevices.enumerateDevices.bind(o.mediaDevices);o.mediaDevices.enumerateDevices=function(){return s().then(void 0,(function(e){if("NotFoundError"===e.name)return[];throw e}))}}if(n.version<49){var d=o.mediaDevices.getUserMedia.bind(o.mediaDevices);o.mediaDevices.getUserMedia=function(e){return d(e).then((function(t){if(e.audio&&!t.getAudioTracks().length||e.video&&!t.getVideoTracks().length)throw t.getTracks().forEach((function(e){e.stop()})),new DOMException("The object can not be found here.","NotFoundError");return t}),(function(e){return t.reject(l(e))}))}}if(!(n.version>55&&"autoGainControl"in o.mediaDevices.getSupportedConstraints())){var u=function(e,t,n){t in e&&!(n in e)&&(e[n]=e[t],delete e[t])},A=o.mediaDevices.getUserMedia.bind(o.mediaDevices);if(o.mediaDevices.getUserMedia=function(e){return"object"==typeof e&&"object"==typeof e.audio&&(e=JSON.parse(JSON.stringify(e)),u(e.audio,"autoGainControl","mozAutoGainControl"),u(e.audio,"noiseSuppression","mozNoiseSuppression")),A(e)},a&&a.prototype.getSettings){var h=a.prototype.getSettings;a.prototype.getSettings=function(){var e=h.apply(this,arguments);return u(e,"mozAutoGainControl","autoGainControl"),u(e,"mozNoiseSuppression","noiseSuppression"),e}}if(a&&a.prototype.applyConstraints){var g=a.prototype.applyConstraints;a.prototype.applyConstraints=function(e){return"audio"===this.kind&&"object"==typeof e&&(e=JSON.parse(JSON.stringify(e)),u(e,"autoGainControl","mozAutoGainControl"),u(e,"noiseSuppression","mozNoiseSuppression")),g.apply(this,[e])}}}o.getUserMedia=function(e,t,i){if(n.version<44)return c(e,t,i);r.deprecated("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),o.mediaDevices.getUserMedia(e).then(t,i)}}}).call(this,n(2))},function(e,t,n){"use strict";(function(t){var r=n(32);e.exports={shimLocalStreamsAPI:function(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}),"getStreamById"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getStreamById=function(e){var t=null;return this._localStreams&&this._localStreams.forEach((function(n){n.id===e&&(t=n)})),this._remoteStreams&&this._remoteStreams.forEach((function(n){n.id===e&&(t=n)})),t}),!("addStream"in e.RTCPeerConnection.prototype)){var t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addStream=function(e){this._localStreams||(this._localStreams=[]),-1===this._localStreams.indexOf(e)&&this._localStreams.push(e);var n=this;e.getTracks().forEach((function(r){t.call(n,r,e)}))},e.RTCPeerConnection.prototype.addTrack=function(e,n){return n&&(this._localStreams?-1===this._localStreams.indexOf(n)&&this._localStreams.push(n):this._localStreams=[n]),t.call(this,e,n)}}"removeStream"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.removeStream=function(e){this._localStreams||(this._localStreams=[]);var t=this._localStreams.indexOf(e);if(-1!==t){this._localStreams.splice(t,1);var n=this,r=e.getTracks();this.getSenders().forEach((function(e){-1!==r.indexOf(e.track)&&n.removeTrack(e)}))}})}},shimRemoteStreamsAPI:function(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:function(){return this._onaddstream},set:function(e){this._onaddstream&&this.removeEventListener("addstream",this._onaddstream),this.addEventListener("addstream",this._onaddstream=e)}});var t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){var e=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(t){t.streams.forEach((function(t){if(e._remoteStreams||(e._remoteStreams=[]),!(e._remoteStreams.indexOf(t)>=0)){e._remoteStreams.push(t);var n=new Event("addstream");n.stream=t,e.dispatchEvent(n)}}))}),t.apply(e,arguments)}}},shimCallbacksAPI:function(e){if("object"==typeof e&&e.RTCPeerConnection){var n=e.RTCPeerConnection.prototype,r=n.createOffer,i=n.createAnswer,o=n.setLocalDescription,a=n.setRemoteDescription,l=n.addIceCandidate;n.createOffer=function(e,n){var i=arguments.length>=2?arguments[2]:arguments[0],o=r.apply(this,[i]);return n?(o.then(e,n),t.resolve()):o},n.createAnswer=function(e,n){var r=arguments.length>=2?arguments[2]:arguments[0],o=i.apply(this,[r]);return n?(o.then(e,n),t.resolve()):o};var c=function(e,n,r){var i=o.apply(this,[e]);return r?(i.then(n,r),t.resolve()):i};n.setLocalDescription=c,c=function(e,n,r){var i=a.apply(this,[e]);return r?(i.then(n,r),t.resolve()):i},n.setRemoteDescription=c,c=function(e,n,r){var i=l.apply(this,[e]);return r?(i.then(n,r),t.resolve()):i},n.addIceCandidate=c}},shimGetUserMedia:function(e){var t=e&&e.navigator;t.getUserMedia||(t.webkitGetUserMedia?t.getUserMedia=t.webkitGetUserMedia.bind(t):t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=function(e,n,r){t.mediaDevices.getUserMedia(e).then(n,r)}.bind(t)))},shimRTCIceServerUrls:function(e){var t=e.RTCPeerConnection;e.RTCPeerConnection=function(e,n){if(e&&e.iceServers){for(var i=[],o=0;o<e.iceServers.length;o++){var a=e.iceServers[o];!a.hasOwnProperty("urls")&&a.hasOwnProperty("url")?(r.deprecated("RTCIceServer.url","RTCIceServer.urls"),(a=JSON.parse(JSON.stringify(a))).urls=a.url,delete a.url,i.push(a)):i.push(e.iceServers[o])}e.iceServers=i}return new t(e,n)},e.RTCPeerConnection.prototype=t.prototype,"generateCertificate"in e.RTCPeerConnection&&Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:function(){return t.generateCertificate}})},shimTrackEventTransceiver:function(e){"object"==typeof e&&e.RTCPeerConnection&&"receiver"in e.RTCTrackEvent.prototype&&!e.RTCTransceiver&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get:function(){return{receiver:this.receiver}}})},shimCreateOfferLegacy:function(e){var t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(e){var n=this;if(e){void 0!==e.offerToReceiveAudio&&(e.offerToReceiveAudio=!!e.offerToReceiveAudio);var r=n.getTransceivers().find((function(e){return e.sender.track&&"audio"===e.sender.track.kind}));!1===e.offerToReceiveAudio&&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.offerToReceiveAudio||r||n.addTransceiver("audio"),void 0!==e.offerToReceiveVideo&&(e.offerToReceiveVideo=!!e.offerToReceiveVideo);var i=n.getTransceivers().find((function(e){return e.sender.track&&"video"===e.sender.track.kind}));!1===e.offerToReceiveVideo&&i?"sendrecv"===i.direction?i.setDirection("sendonly"):"recvonly"===i.direction&&i.setDirection("inactive"):!0!==e.offerToReceiveVideo||i||n.addTransceiver("video")}return t.apply(n,arguments)}}}}).call(this,n(2))},function(e,t,n){"use strict";var r=n(275),i=n(32);e.exports={shimRTCIceCandidate:function(e){if(!(!e.RTCIceCandidate||e.RTCIceCandidate&&"foundation"in e.RTCIceCandidate.prototype)){var t=e.RTCIceCandidate;e.RTCIceCandidate=function(e){if("object"==typeof e&&e.candidate&&0===e.candidate.indexOf("a=")&&((e=JSON.parse(JSON.stringify(e))).candidate=e.candidate.substr(2)),e.candidate&&e.candidate.length){var n=new t(e),i=r.parseCandidate(e.candidate),o=Object.assign(n,i);return o.toJSON=function(){return{candidate:o.candidate,sdpMid:o.sdpMid,sdpMLineIndex:o.sdpMLineIndex,usernameFragment:o.usernameFragment}},o}return new t(e)},e.RTCIceCandidate.prototype=t.prototype,i.wrapPeerConnectionEvent(e,"icecandidate",(function(t){return t.candidate&&Object.defineProperty(t,"candidate",{value:new e.RTCIceCandidate(t.candidate),writable:"false"}),t}))}},shimCreateObjectURL:function(e){var t=e&&e.URL;if("object"==typeof e&&e.HTMLMediaElement&&"srcObject"in e.HTMLMediaElement.prototype&&t.createObjectURL&&t.revokeObjectURL){var n=t.createObjectURL.bind(t),r=t.revokeObjectURL.bind(t),o=new Map,a=0;t.createObjectURL=function(e){if("getTracks"in e){var t="polyblob:"+ ++a;return o.set(t,e),i.deprecated("URL.createObjectURL(stream)","elem.srcObject = stream"),t}return n(e)},t.revokeObjectURL=function(e){r(e),o.delete(e)};var l=Object.getOwnPropertyDescriptor(e.HTMLMediaElement.prototype,"src");Object.defineProperty(e.HTMLMediaElement.prototype,"src",{get:function(){return l.get.apply(this)},set:function(e){return this.srcObject=o.get(e)||null,l.set.apply(this,[e])}});var c=e.HTMLMediaElement.prototype.setAttribute;e.HTMLMediaElement.prototype.setAttribute=function(){return 2===arguments.length&&"src"===(""+arguments[0]).toLowerCase()&&(this.srcObject=o.get(arguments[1])||null),c.apply(this,arguments)}}},shimMaxMessageSize:function(e){if(!e.RTCSctpTransport&&e.RTCPeerConnection){var t=i.detectBrowser(e);"sctp"in e.RTCPeerConnection.prototype||Object.defineProperty(e.RTCPeerConnection.prototype,"sctp",{get:function(){return void 0===this._sctp?null:this._sctp}});var n=function(e){var t=r.splitSections(e.sdp);return t.shift(),t.some((function(e){var t=r.parseMLine(e);return t&&"application"===t.kind&&-1!==t.protocol.indexOf("SCTP")}))},o=function(e){var t=e.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(null===t||t.length<2)return-1;var n=parseInt(t[1],10);return n!=n?-1:n},a=function(e){var n=65536;return"firefox"===t.browser&&(n=t.version<57?-1===e?16384:2147483637:t.version<60?57===t.version?65535:65536:2147483637),n},l=function(e,n){var i=65536;"firefox"===t.browser&&57===t.version&&(i=65535);var o=r.matchPrefix(e.sdp,"a=max-message-size:");return o.length>0?i=parseInt(o[0].substr(19),10):"firefox"===t.browser&&-1!==n&&(i=2147483637),i},c=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){var e=this;if(e._sctp=null,n(arguments[0])){var t,r=o(arguments[0]),i=a(r),s=l(arguments[0],r);t=0===i&&0===s?Number.POSITIVE_INFINITY:0===i||0===s?Math.max(i,s):Math.min(i,s);var d={};Object.defineProperty(d,"maxMessageSize",{get:function(){return t}}),e._sctp=d}return c.apply(e,arguments)}}},shimSendThrowTypeError:function(e){if(e.RTCPeerConnection&&"createDataChannel"in e.RTCPeerConnection.prototype){var t=e.RTCPeerConnection.prototype.createDataChannel;e.RTCPeerConnection.prototype.createDataChannel=function(){var e=this,r=t.apply(e,arguments);return n(r,e),r},i.wrapPeerConnectionEvent(e,"datachannel",(function(e){return n(e.channel,e.target),e}))}function n(e,t){var n=e.send;e.send=function(){var r=arguments[0],i=r.length||r.size||r.byteLength;if("open"===e.readyState&&t.sctp&&i>t.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+t.sctp.maxMessageSize+" bytes)");return n.apply(e,arguments)}}}}},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){function t(){for(var n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];const o=new e(...r);return Object.setPrototypeOf(o,t.prototype),o}return t.prototype=Object.create(e.prototype),Object.defineProperties(t.prototype,(e=>{const t={};return Object.getOwnPropertyNames(e).forEach(n=>{t[n]=Object.getOwnPropertyDescriptor(e,n)}),t})(e.prototype)),Object.keys(e).forEach(n=>{t[n]=e[n]}),t}},function(e,t,n){"use strict";(function(e){var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(6)),o=r(n(606));function a(){return"undefined"==typeof document||"complete"===document.readyState||"interactive"===document.readyState&&document.body}let l=!1;var c=function(t){void 0===t&&(t={});const n=t.window||window,r=t.isPageHideSupported||o.default,c={isDomLoaded:a,isDomUnloaded:()=>l,whenUnloaded:new e(e=>{if(void 0!==n){const t=()=>{l=!0,e()},i=r()?"pagehide":"unload";n.addEventListener(i,t)}}),whenLoaded:new e(e=>{if(a())return void e();const t=()=>{document.removeEventListener("DOMContentLoaded",t),document.removeEventListener("load",t),c.emit("load"),e()};document.addEventListener("DOMContentLoaded",t),document.addEventListener("load",t)})};return(0,i.default)(c),c};t.default=c}).call(this,n(2))},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;t.default=function(e){void 0===e&&(e={});return"onpagehide"in(e.window||window)}},function(e,t,n){var r=n(81),i=n(279),o=n(256),a=n(608),l=n(11),c=n(55),s=n(280);e.exports=function e(t,n,d,u,A){t!==n&&o(n,(function(o,c){if(A||(A=new r),l(o))a(t,n,c,d,e,u,A);else{var h=u?u(s(t,c),o,c+"",t,n,A):void 0;void 0===h&&(h=o),i(t,c,h)}}),c)}},function(e,t,n){var r=n(279),i=n(194),o=n(203),a=n(56),l=n(204),c=n(65),s=n(14),d=n(151),u=n(66),A=n(20),h=n(11),g=n(141),F=n(88),Q=n(280),p=n(609);e.exports=function(e,t,n,m,U,b,Z){var B=Q(e,n),f=Q(t,n),R=Z.get(f);if(R)r(e,n,R);else{var I=b?b(B,f,n+"",e,t,Z):void 0,y=void 0===I;if(y){var V=s(f),C=!V&&u(f),W=!V&&!C&&F(f);I=f,V||C||W?s(B)?I=B:d(B)?I=a(B):C?(y=!1,I=i(f,!0)):W?(y=!1,I=o(f,!0)):I=[]:g(f)||c(f)?(I=B,c(B)?I=p(B):h(B)&&!A(B)||(I=l(f))):y=!1}y&&(Z.set(f,I),U(I,f,m,b,Z),Z.delete(f)),r(e,n,I)}}},function(e,t,n){var r=n(45),i=n(55);e.exports=function(e){return r(e,i(e))}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e){const t=A(e),n=e.env||{},r=e.isScreenSharing,o=e.isCustomAudioTrack,a=e.isCustomVideoTrack;r&&!l.default&&(0,i.default)(e.usingOptionalMandatoryStyle,"Screensharing only uses optional-mandatory constraints right now");return["echoCancellation","autoGainControl","noiseSuppression"].forEach(t=>{!1!==e[t]&&Object.assign(e,{[t]:!0})}),{isScreenSharing:r,isCustomAudioTrack:o,isCustomVideoTrack:a,audio:g("audio",e),video:g("video",e),usingOptionalMandatoryStyle:e.usingOptionalMandatoryStyle,enableRenegotiation:e.enableRenegotiation,enableStereo:e.enableStereo,noiseSuppression:e.noiseSuppression,autoGainControl:e.autoGainControl,echoCancellation:e.echoCancellation,disableAudioProcessing:e.disableAudioProcessing,videoDimensions:h("resolution",e.resolution,e=>d[e],`"${Object.keys(d).join('", "')}"`,t),frameRate:F(n,h("frameRate",e.frameRate,e=>-1!==u.indexOf(e)?e:void 0,u.join(","),t)),maxResolution:function(){if(void 0===e.maxResolution)return r?{width:1920,height:1920}:void 0;const n={width:e.maxResolution.width,height:e.maxResolution.height};return Object.keys(n).forEach(e=>{const r=n[e];("number"!=typeof r||r>1920)&&(t.warn(`Invalid maxResolution passed to the Publisher. maxResolution.${e} must be less than or equal to 1920`),n[e]=1920)}),n}(),facingMode:p(e.facingMode,e)}};var i=r(n(159)),o=r(n(281)),a=r(n(1)),l=r(n(286)),c=r(n(287));const s=(0,a.default)("normalizeConstraintInput"),d={"320x240":{width:320,height:240},"320x180":{width:320,height:180},"640x480":{width:640,height:480},"640x360":{width:640,height:360},"1280x720":{width:1280,height:720},"1280x960":{width:1280,height:960},"1920x1080":{width:1920,height:1080}},u=[1,7,15,30];function A(e){return e._inject&&e._inject.logging||s}function h(e,t,n,r,i){if(void 0===t)return;const o=n(t);return o||i.warn(`Invalid ${e} passed to the Publisher. Got: ${t}, expecting one of ${r}`),o}function g(e,t){const n=A(t),r=(()=>{const n=t["publish"+(0,o.default)(e)];return void 0===n||Boolean(n)})();let i=(()=>{const r=t[e+"Source"];return void 0===r||null!==r&&!1!==r&&("object"==typeof r?!t[`isCustom${(0,o.default)(e)}Track`]&&("string"!=typeof r.deviceId?(n.warn(`Invalid ${e}Source passed to Publisher. Expected either a device ID or device.`),!0):r.deviceId):"string"!=typeof r?(n.warn(`Ignoring invalid ${e}Source parameter`),!0):r)})();return"audio"===e&&t.isScreenSharing&&!c.default&&!1!==i&&(t.audioSource&&A(t).warn("Invalid audioSource passed to Publisher - when using screen sharing no audioSource may be used"),i=!1),{source:i,publish:r}}function F(e,t){return"Chrome"===e.name&&-1!==e.userAgent.indexOf("Mac OS X")&&1===t?2:t}const Q=["user","environment","left","right"],p=(e,t)=>{if(void 0===e||Q.indexOf(e)>=0)return e;A(t).warn("Invalid facingMode passed to Publisher. Expected one of: "+Q.join(", "))}},function(e,t,n){"use strict";
35
+ t.read=function(e,t,n,r,i){var o,a,l=8*i-r-1,c=(1<<l)-1,s=c>>1,d=-7,u=n?i-1:0,A=n?-1:1,h=e[t+u];for(u+=A,o=h&(1<<-d)-1,h>>=-d,d+=l;d>0;o=256*o+e[t+u],u+=A,d-=8);for(a=o&(1<<-d)-1,o>>=-d,d+=r;d>0;a=256*a+e[t+u],u+=A,d-=8);if(0===o)o=1-s;else{if(o===c)return a?NaN:1/0*(h?-1:1);a+=Math.pow(2,r),o-=s}return(h?-1:1)*a*Math.pow(2,o-r)},t.write=function(e,t,n,r,i,o){var a,l,c,s=8*o-i-1,d=(1<<s)-1,u=d>>1,A=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,h=r?0:o-1,g=r?1:-1,F=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(l=isNaN(t)?1:0,a=d):(a=Math.floor(Math.log(t)/Math.LN2),t*(c=Math.pow(2,-a))<1&&(a--,c*=2),(t+=a+u>=1?A/c:A*Math.pow(2,1-u))*c>=2&&(a++,c/=2),a+u>=d?(l=0,a=d):a+u>=1?(l=(t*c-1)*Math.pow(2,i),a+=u):(l=t*Math.pow(2,u-1)*Math.pow(2,i),a=0));i>=8;e[n+h]=255&l,h+=g,l/=256,i-=8);for(a=a<<i|l,s+=i;s>0;e[n+h]=255&a,h+=g,a/=256,s-=8);e[n+h-g]|=128*F}},function(e,t){var n={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==n.call(e)}},function(e,t,n){e.exports=n(483)},function(e,t){e.exports="object"==typeof self?self.FormData:window.FormData},function(e,t,n){"use strict";var r=n(13);function i(){this.handlers=[]}i.prototype.use=function(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1},i.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},i.prototype.clear=function(){this.handlers&&(this.handlers=[])},i.prototype.forEach=function(e){r.forEach(this.handlers,(function(t){null!==t&&e(t)}))},e.exports=i},function(e,t,n){"use strict";(function(t){var r=n(13),i=n(486),o=n(230),a=n(134),l=n(97),c=n(225);function s(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new l}e.exports=function(e){return s(e),e.headers=e.headers||{},e.data=i.call(e,e.data,e.headers,null,e.transformRequest),c(e.headers,"Accept"),c(e.headers,"Content-Type"),e.headers=r.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),r.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||a.adapter)(e).then((function(t){return s(e),t.data=i.call(e,t.data,t.headers,t.status,e.transformResponse),t}),(function(n){return o(n)||(s(e),n&&n.response&&(n.response.data=i.call(e,n.response.data,n.response.headers,n.response.status,e.transformResponse))),t.reject(n)}))}}).call(this,n(2))},function(e,t,n){"use strict";var r=n(13),i=n(134);e.exports=function(e,t,n,o){var a=this||i;return r.forEach(o,(function(r){e=r.call(a,e,t,n)})),e}},function(e,t,n){"use strict";var r=n(13),i=n(96),o=n(135);e.exports=function(e,t){return i(e,new o.classes.URLSearchParams,Object.assign({visitor:function(e,t,n,i){return o.isNode&&r.isBuffer(e)?(this.append(t,e.toString("base64")),!1):i.defaultVisitor.apply(this,arguments)}},t))}},function(e,t,n){"use strict";e.exports={isBrowser:!0,classes:{URLSearchParams:n(489),FormData:n(490),Blob:Blob},protocols:["http","https","file","blob","url","data"]}},function(e,t,n){"use strict";var r=n(223);e.exports="undefined"!=typeof URLSearchParams?URLSearchParams:r},function(e,t,n){"use strict";e.exports=FormData},function(e,t,n){"use strict";var r=n(49);e.exports=function(e,t,n){var i=n.config.validateStatus;n.status&&i&&!i(n.status)?t(new r("Request failed with status code "+n.status,[r.ERR_BAD_REQUEST,r.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}},function(e,t,n){"use strict";var r=n(13);e.exports=r.isStandardBrowserEnv()?{write:function(e,t,n,i,o,a){var l=[];l.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&l.push("expires="+new Date(n).toGMTString()),r.isString(i)&&l.push("path="+i),r.isString(o)&&l.push("domain="+o),!0===a&&l.push("secure"),document.cookie=l.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(e,t,n){"use strict";e.exports=function(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}},function(e,t,n){"use strict";e.exports=function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}},function(e,t,n){"use strict";var r=n(13),i=["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"];e.exports=function(e){var t,n,o,a={};return e?(r.forEach(e.split("\n"),(function(e){if(o=e.indexOf(":"),t=r.trim(e.slice(0,o)).toLowerCase(),n=r.trim(e.slice(o+1)),t){if(a[t]&&i.indexOf(t)>=0)return;a[t]="set-cookie"===t?(a[t]?a[t]:[]).concat([n]):a[t]?a[t]+", "+n:n}})),a):a}},function(e,t,n){"use strict";var r=n(13);e.exports=r.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function i(e){var r=e;return t&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return e=i(window.location.href),function(t){var n=r.isString(t)?i(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0}},function(e,t,n){"use strict";e.exports=function(e){var t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}},function(e,t,n){"use strict";var r=n(232).version,i=n(49),o={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){o[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}}));var a={};o.transitional=function(e,t,n){function o(e,t){return"[Axios v"+r+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return function(n,r,l){if(!1===e)throw new i(o(r," has been removed"+(t?" in "+t:"")),i.ERR_DEPRECATED);return t&&!a[r]&&(a[r]=!0,console.warn(o(r," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,r,l)}},e.exports={assertOptions:function(e,t,n){if("object"!=typeof e)throw new i("options must be an object",i.ERR_BAD_OPTION_VALUE);for(var r=Object.keys(e),o=r.length;o-- >0;){var a=r[o],l=t[a];if(l){var c=e[a],s=void 0===c||l(c,a,e);if(!0!==s)throw new i("option "+a+" must be "+s,i.ERR_BAD_OPTION_VALUE)}else if(!0!==n)throw new i("Unknown option "+a,i.ERR_BAD_OPTION)}},validators:o}},function(e,t,n){"use strict";(function(t){var r=n(97);function i(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var n;this.promise=new t((function(e){n=e}));var i=this;this.promise.then((function(e){if(i._listeners){for(var t=i._listeners.length;t-- >0;)i._listeners[t](e);i._listeners=null}})),this.promise.then=function(e){var n,r=new t((function(e){i.subscribe(e),n=e})).then(e);return r.cancel=function(){i.unsubscribe(n)},r},e((function(e,t,o){i.reason||(i.reason=new r(e,t,o),n(i.reason))}))}i.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},i.prototype.subscribe=function(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]},i.prototype.unsubscribe=function(e){if(this._listeners){var t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}},i.source=function(){var e;return{token:new i((function(t){e=t})),cancel:e}},e.exports=i}).call(this,n(2))},function(e,t,n){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}},function(e,t,n){"use strict";var r=n(13);e.exports=function(e){return r.isObject(e)&&!0===e.isAxiosError}},function(e,t,n){var r=n(233)("mapKeys",n(551));r.placeholder=n(136),e.exports=r},function(e,t,n){var r=n(504),i=n(136),o=Array.prototype.push;function a(e,t){return 2==t?function(t,n){return e(t,n)}:function(t){return e(t)}}function l(e){for(var t=e?e.length:0,n=Array(t);t--;)n[t]=e[t];return n}function c(e,t){return function(){var n=arguments.length;if(n){for(var r=Array(n);n--;)r[n]=arguments[n];var i=r[0]=t.apply(void 0,r);return e.apply(void 0,r),i}}}e.exports=function e(t,n,s,d){var u="function"==typeof n,A=n===Object(n);if(A&&(d=s,s=n,n=void 0),null==s)throw new TypeError;d||(d={});var h=!("cap"in d)||d.cap,g=!("curry"in d)||d.curry,F=!("fixed"in d)||d.fixed,Q=!("immutable"in d)||d.immutable,p=!("rearg"in d)||d.rearg,m=u?s:i,U="curry"in d&&d.curry,b="fixed"in d&&d.fixed,Z="rearg"in d&&d.rearg,B=u?s.runInContext():void 0,f=u?s:{ary:t.ary,assign:t.assign,clone:t.clone,curry:t.curry,forEach:t.forEach,isArray:t.isArray,isError:t.isError,isFunction:t.isFunction,isWeakMap:t.isWeakMap,iteratee:t.iteratee,keys:t.keys,rearg:t.rearg,toInteger:t.toInteger,toPath:t.toPath},R=f.ary,I=f.assign,y=f.clone,V=f.curry,C=f.forEach,W=f.isArray,E=f.isError,v=f.isFunction,S=f.isWeakMap,J=f.keys,G=f.rearg,N=f.toInteger,X=f.toPath,k=J(r.aryMethod),T={castArray:function(e){return function(){var t=arguments[0];return W(t)?e(l(t)):e.apply(void 0,arguments)}},iteratee:function(e){return function(){var t=arguments[0],n=arguments[1],r=e(t,n),i=r.length;return h&&"number"==typeof n?(n=n>2?n-2:1,i&&i<=n?r:a(r,n)):r}},mixin:function(e){return function(t){var n=this;if(!v(n))return e(n,Object(t));var r=[];return C(J(t),(function(e){v(t[e])&&r.push([e,n.prototype[e]])})),e(n,Object(t)),C(r,(function(e){var t=e[1];v(t)?n.prototype[e[0]]=t:delete n.prototype[e[0]]})),n}},nthArg:function(e){return function(t){var n=t<0?1:N(t)+1;return V(e(t),n)}},rearg:function(e){return function(t,n){var r=n?n.length:0;return V(e(t,n),r)}},runInContext:function(n){return function(r){return e(t,n(r),d)}}};function Y(e,t){if(h){var n=r.iterateeRearg[e];if(n)return function(e,t){return H(e,(function(e){var n=t.length;return function(e,t){return 2==t?function(t,n){return e.apply(void 0,arguments)}:function(t){return e.apply(void 0,arguments)}}(G(a(e,n),t),n)}))}(t,n);var i=!u&&r.iterateeAry[e];if(i)return function(e,t){return H(e,(function(e){return"function"==typeof e?a(e,t):e}))}(t,i)}return t}function w(e,t,n){if(F&&(b||!r.skipFixed[e])){var i=r.methodSpread[e],a=i&&i.start;return void 0===a?R(t,n):function(e,t){return function(){for(var n=arguments.length,r=n-1,i=Array(n);n--;)i[n]=arguments[n];var a=i[t],l=i.slice(0,t);return a&&o.apply(l,a),t!=r&&o.apply(l,i.slice(t+1)),e.apply(this,l)}}(t,a)}return t}function D(e,t,n){return p&&n>1&&(Z||!r.skipRearg[e])?G(t,r.methodRearg[e]||r.aryRearg[n]):t}function x(e,t){for(var n=-1,r=(t=X(t)).length,i=r-1,o=y(Object(e)),a=o;null!=a&&++n<r;){var l=t[n],c=a[l];null==c||v(c)||E(c)||S(c)||(a[l]=y(n==i?c:Object(c))),a=a[l]}return o}function M(t,n){var i=r.aliasToReal[t]||t,o=r.remap[i]||i,a=d;return function(t){var r=u?B:f,l=u?B[o]:n,c=I(I({},a),t);return e(r,i,l,c)}}function H(e,t){return function(){var n=arguments.length;if(!n)return e();for(var r=Array(n);n--;)r[n]=arguments[n];var i=p?0:n-1;return r[i]=t(r[i]),e.apply(void 0,r)}}function K(e,t,n){var i,o=r.aliasToReal[e]||e,a=t,s=T[o];return s?a=s(t):Q&&(r.mutate.array[o]?a=c(t,l):r.mutate.object[o]?a=c(t,function(e){return function(t){return e({},t)}}(t)):r.mutate.set[o]&&(a=c(t,x))),C(k,(function(e){return C(r.aryMethod[e],(function(t){if(o==t){var n=r.methodSpread[o],l=n&&n.afterRearg;return i=l?w(o,D(o,a,e),e):D(o,w(o,a,e),e),i=function(e,t,n){return U||g&&n>1?V(t,n):t}(0,i=Y(o,i),e),!1}})),!i})),i||(i=a),i==t&&(i=U?V(i,1):function(){return t.apply(this,arguments)}),i.convert=M(o,t),i.placeholder=t.placeholder=n,i}if(!A)return K(n,s,m);var L=s,z=[];return C(k,(function(e){C(r.aryMethod[e],(function(e){var t=L[r.remap[e]||e];t&&z.push([e,K(e,t,L)])}))})),C(J(L),(function(e){var t=L[e];if("function"==typeof t){for(var n=z.length;n--;)if(z[n][0]==e)return;t.convert=M(e,t),z.push([e,t])}})),C(z,(function(e){L[e[0]]=e[1]})),L.convert=function(e){return L.runInContext.convert(e)(void 0)},L.placeholder=L,C(J(L),(function(e){C(r.realToAlias[e]||[],(function(t){L[t]=L[e]}))})),L}},function(e,t){t.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"},t.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]},t.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]},t.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2},t.iterateeRearg={mapKeys:[1],reduceRight:[1,0]},t.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]},t.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}},t.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}},t.realToAlias=function(){var e=Object.prototype.hasOwnProperty,n=t.aliasToReal,r={};for(var i in n){var o=n[i];e.call(r,o)?r[o].push(i):r[o]=[i]}return r}(),t.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"},t.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0},t.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}},function(e,t,n){e.exports={ary:n(506),assign:n(191),clone:n(42),curry:n(527),forEach:n(118),isArray:n(14),isError:n(528),isFunction:n(20),isWeakMap:n(529),iteratee:n(530),keys:n(121),rearg:n(547),toInteger:n(100),toPath:n(550)}},function(e,t,n){var r=n(137);e.exports=function(e,t,n){return t=n?void 0:t,t=e&&null==t?e.length:t,r(e,128,void 0,void 0,void 0,void 0,t)}},function(e,t,n){var r=n(98),i=n(16);e.exports=function(e,t,n){var o=1&t,a=r(e);return function t(){var r=this&&this!==i&&this instanceof t?a:e;return r.apply(o?n:this,arguments)}}},function(e,t,n){var r=n(126),i=n(98),o=n(236),a=n(239),l=n(246),c=n(140),s=n(16);e.exports=function(e,t,n){var d=i(e);return function i(){for(var u=arguments.length,A=Array(u),h=u,g=l(i);h--;)A[h]=arguments[h];var F=u<3&&A[0]!==g&&A[u-1]!==g?[]:c(A,g);if((u-=F.length)<n)return a(e,t,o,i.placeholder,void 0,A,F,void 0,void 0,n-u);var Q=this&&this!==s&&this instanceof i?d:e;return r(Q,this,A)}}},function(e,t){e.exports=function(e,t){for(var n=e.length,r=0;n--;)e[n]===t&&++r;return r}},function(e,t,n){var r=n(138),i=n(240),o=n(511),a=n(513);e.exports=function(e){var t=o(e),n=a[t];if("function"!=typeof n||!(t in r.prototype))return!1;if(e===n)return!0;var l=i(n);return!!l&&e===l[0]}},function(e,t,n){var r=n(512),i=Object.prototype.hasOwnProperty;e.exports=function(e){for(var t=e.name+"",n=r[t],o=i.call(r,t)?n.length:0;o--;){var a=n[o],l=a.func;if(null==l||l==e)return a.name}return t}},function(e,t){e.exports={}},function(e,t,n){var r=n(138),i=n(242),o=n(139),a=n(14),l=n(21),c=n(514),s=Object.prototype.hasOwnProperty;function d(e){if(l(e)&&!a(e)&&!(e instanceof r)){if(e instanceof i)return e;if(s.call(e,"__wrapped__"))return c(e)}return new i(e)}d.prototype=o.prototype,d.prototype.constructor=d,e.exports=d},function(e,t,n){var r=n(138),i=n(242),o=n(56);e.exports=function(e){if(e instanceof r)return e.clone();var t=new i(e.__wrapped__,e.__chain__);return t.__actions__=o(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}},function(e,t){var n=/\{\n\/\* \[wrapped with (.+)\] \*/,r=/,? & /;e.exports=function(e){var t=e.match(n);return t?t[1].split(r):[]}},function(e,t){var n=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;e.exports=function(e,t){var r=t.length;if(!r)return e;var i=r-1;return t[i]=(r>1?"& ":"")+t[i],t=t.join(r>2?", ":" "),e.replace(n,"{\n/* [wrapped with "+t+"] */\n")}},function(e,t,n){var r=n(118),i=n(99),o=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]];e.exports=function(e,t){return r(o,(function(n){var r="_."+n[0];t&n[1]&&!i(e,r)&&e.push(r)})),e.sort()}},function(e,t,n){var r=n(245),i=n(519),o=n(520);e.exports=function(e,t,n){return t==t?o(e,t,n):r(e,i,n)}},function(e,t){e.exports=function(e){return e!=e}},function(e,t){e.exports=function(e,t,n){for(var r=n-1,i=e.length;++r<i;)if(e[r]===t)return r;return-1}},function(e,t,n){var r=n(56),i=n(67),o=Math.min;e.exports=function(e,t){for(var n=e.length,a=o(t.length,n),l=r(e);a--;){var c=t[a];e[a]=i(c,n)?l[c]:void 0}return e}},function(e,t,n){var r=n(126),i=n(98),o=n(16);e.exports=function(e,t,n,a){var l=1&t,c=i(e);return function t(){for(var i=-1,s=arguments.length,d=-1,u=a.length,A=Array(u+s),h=this&&this!==o&&this instanceof t?c:e;++d<u;)A[d]=a[d];for(;s--;)A[d++]=arguments[++i];return r(h,l?n:this,A)}}},function(e,t,n){var r=n(237),i=n(238),o=n(140),a=Math.min;e.exports=function(e,t){var n=e[1],l=t[1],c=n|l,s=c<131,d=128==l&&8==n||128==l&&256==n&&e[7].length<=t[8]||384==l&&t[7].length<=t[8]&&8==n;if(!s&&!d)return e;1&l&&(e[2]=t[2],c|=1&n?0:4);var u=t[3];if(u){var A=e[3];e[3]=A?r(A,u,t[4]):u,e[4]=A?o(e[3],"__lodash_placeholder__"):t[4]}return(u=t[5])&&(A=e[5],e[5]=A?i(A,u,t[6]):u,e[6]=A?o(e[5],"__lodash_placeholder__"):t[6]),(u=t[7])&&(e[7]=u),128&l&&(e[8]=null==e[8]?t[8]:a(e[8],t[8])),null==e[9]&&(e[9]=t[9]),e[0]=t[0],e[1]=c,e}},function(e,t,n){var r=n(247);e.exports=function(e){return e?(e=r(e))===1/0||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}},function(e,t,n){var r=n(526),i=/^\s+/;e.exports=function(e){return e?e.slice(0,r(e)+1).replace(i,""):e}},function(e,t){var n=/\s/;e.exports=function(e){for(var t=e.length;t--&&n.test(e.charAt(t)););return t}},function(e,t,n){var r=n(137);function i(e,t,n){var o=r(e,8,void 0,void 0,void 0,void 0,void 0,t=n?void 0:t);return o.placeholder=i.placeholder,o}i.placeholder={},e.exports=i},function(e,t,n){var r=n(33),i=n(21),o=n(141);e.exports=function(e){if(!i(e))return!1;var t=r(e);return"[object Error]"==t||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!o(e)}},function(e,t,n){var r=n(46),i=n(21);e.exports=function(e){return i(e)&&"[object WeakMap]"==r(e)}},function(e,t,n){var r=n(80),i=n(38);e.exports=function(e){return i("function"==typeof e?e:r(e,1))}},function(e,t,n){var r=n(532),i=n(538),o=n(252);e.exports=function(e){var t=i(e);return 1==t.length&&t[0][2]?o(t[0][0],t[0][1]):function(n){return n===e||r(n,e,t)}}},function(e,t,n){var r=n(81),i=n(142);e.exports=function(e,t,n,o){var a=n.length,l=a,c=!o;if(null==e)return!l;for(e=Object(e);a--;){var s=n[a];if(c&&s[2]?s[1]!==e[s[0]]:!(s[0]in e))return!1}for(;++a<l;){var d=(s=n[a])[0],u=e[d],A=s[1];if(c&&s[2]){if(void 0===u&&!(d in e))return!1}else{var h=new r;if(o)var g=o(u,A,d,e,t,h);if(!(void 0===g?i(A,u,3,o,h):g))return!1}}return!0}},function(e,t,n){var r=n(81),i=n(248),o=n(536),a=n(537),l=n(46),c=n(14),s=n(66),d=n(88),u="[object Object]",A=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,h,g,F){var Q=c(e),p=c(t),m=Q?"[object Array]":l(e),U=p?"[object Array]":l(t),b=(m="[object Arguments]"==m?u:m)==u,Z=(U="[object Arguments]"==U?u:U)==u,B=m==U;if(B&&s(e)){if(!s(t))return!1;Q=!0,b=!1}if(B&&!b)return F||(F=new r),Q||d(e)?i(e,t,n,h,g,F):o(e,t,m,n,h,g,F);if(!(1&n)){var f=b&&A.call(e,"__wrapped__"),R=Z&&A.call(t,"__wrapped__");if(f||R){var I=f?e.value():e,y=R?t.value():t;return F||(F=new r),g(I,y,n,h,F)}}return!!B&&(F||(F=new r),a(e,t,n,h,g,F))}},function(e,t){e.exports=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}},function(e,t){e.exports=function(e){return this.__data__.has(e)}},function(e,t,n){var r=n(44),i=n(202),o=n(54),a=n(248),l=n(250),c=n(103),s=r?r.prototype:void 0,d=s?s.valueOf:void 0;e.exports=function(e,t,n,r,s,u,A){switch(n){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!u(new i(e),new i(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return o(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var h=l;case"[object Set]":var g=1&r;if(h||(h=c),e.size!=t.size&&!g)return!1;var F=A.get(e);if(F)return F==t;r|=2,A.set(e,t);var Q=a(h(e),h(t),r,s,u,A);return A.delete(e),Q;case"[object Symbol]":if(d)return d.call(e)==d.call(t)}return!1}},function(e,t,n){var r=n(197),i=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,o,a,l){var c=1&n,s=r(e),d=s.length;if(d!=r(t).length&&!c)return!1;for(var u=d;u--;){var A=s[u];if(!(c?A in t:i.call(t,A)))return!1}var h=l.get(e),g=l.get(t);if(h&&g)return h==t&&g==e;var F=!0;l.set(e,t),l.set(t,e);for(var Q=c;++u<d;){var p=e[A=s[u]],m=t[A];if(o)var U=c?o(m,p,A,t,e,l):o(p,m,A,e,t,l);if(!(void 0===U?p===m||a(p,m,n,o,l):U)){F=!1;break}Q||(Q="constructor"==A)}if(F&&!Q){var b=e.constructor,Z=t.constructor;b==Z||!("constructor"in e)||!("constructor"in t)||"function"==typeof b&&b instanceof b&&"function"==typeof Z&&Z instanceof Z||(F=!1)}return l.delete(e),l.delete(t),F}},function(e,t,n){var r=n(251),i=n(34);e.exports=function(e){for(var t=i(e),n=t.length;n--;){var o=t[n],a=e[o];t[n]=[o,a,r(a)]}return t}},function(e,t,n){var r=n(142),i=n(59),o=n(254),a=n(143),l=n(251),c=n(252),s=n(50);e.exports=function(e,t){return a(e)&&l(t)?c(s(e),t):function(n){var a=i(n,e);return void 0===a&&a===t?o(n,e):r(t,a,3)}}},function(e,t,n){var r=n(129);e.exports=function(e){var t=r(e,(function(e){return 500===n.size&&n.clear(),e})),n=t.cache;return t}},function(e,t,n){var r=n(44),i=n(39),o=n(14),a=n(71),l=r?r.prototype:void 0,c=l?l.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(o(t))return i(t,e)+"";if(a(t))return c?c.call(t):"";var n=t+"";return"0"==n&&1/t==-1/0?"-0":n}},function(e,t){e.exports=function(e,t){return null!=e&&t in Object(e)}},function(e,t,n){var r=n(60),i=n(65),o=n(14),a=n(67),l=n(119),c=n(50);e.exports=function(e,t,n){for(var s=-1,d=(t=r(t,e)).length,u=!1;++s<d;){var A=c(t[s]);if(!(u=null!=e&&n(e,A)))break;e=e[A]}return u||++s!=d?u:!!(d=null==e?0:e.length)&&l(d)&&a(A,d)&&(o(e)||i(e))}},function(e,t,n){var r=n(545),i=n(546),o=n(143),a=n(50);e.exports=function(e){return o(e)?r(a(e)):i(e)}},function(e,t){e.exports=function(e){return function(t){return null==t?void 0:t[e]}}},function(e,t,n){var r=n(104);e.exports=function(e){return function(t){return r(t,e)}}},function(e,t,n){var r=n(137),i=n(144),o=i((function(e,t){return r(e,256,void 0,void 0,void 0,t)}));e.exports=o},function(e,t,n){var r=n(255);e.exports=function(e){return(null==e?0:e.length)?r(e,1):[]}},function(e,t,n){var r=n(44),i=n(65),o=n(14),a=r?r.isConcatSpreadable:void 0;e.exports=function(e){return o(e)||i(e)||!!(a&&e&&e[a])}},function(e,t,n){var r=n(39),i=n(56),o=n(14),a=n(71),l=n(253),c=n(50),s=n(61);e.exports=function(e){return o(e)?r(e,c):a(e)?[e]:i(l(s(e)))}},function(e,t,n){var r=n(64),i=n(105),o=n(38);e.exports=function(e,t){var n={};return t=o(t,3),i(e,(function(e,i,o){r(n,t(e,i,o),e)})),n}},function(e,t){e.exports=function(e){return function(t,n,r){for(var i=-1,o=Object(t),a=r(t),l=a.length;l--;){var c=a[e?l:++i];if(!1===n(o[c],c,o))break}return t}}},function(e,t,n){var r=n(233)("pick",n(40));r.placeholder=n(136),e.exports=r},function(e,t,n){var r=n(555),i=n(254);e.exports=function(e,t){return r(e,t,(function(t,n){return i(e,n)}))}},function(e,t,n){var r=n(104),i=n(556),o=n(60);e.exports=function(e,t,n){for(var a=-1,l=t.length,c={};++a<l;){var s=t[a],d=r(e,s);n(d,s)&&i(c,o(s,e),d)}return c}},function(e,t,n){var r=n(86),i=n(60),o=n(67),a=n(11),l=n(50);e.exports=function(e,t,n,c){if(!a(e))return e;for(var s=-1,d=(t=i(t,e)).length,u=d-1,A=e;null!=A&&++s<d;){var h=l(t[s]),g=n;if("__proto__"===h||"constructor"===h||"prototype"===h)return e;if(s!=u){var F=A[h];void 0===(g=c?c(F,h,A):void 0)&&(g=a(F)?F:o(t[s+1])?[]:{})}r(A,h,g),A=A[h]}return e}},function(e,t,n){(function(e){var r;/*! https://mths.be/punycode v1.4.1 by @mathias */!function(i){t&&t.nodeType,e&&e.nodeType;var o="object"==typeof(void 0!==typeof window?window:global)&&(void 0!==typeof window?window:global);o.global!==o&&o.window!==o&&o.self;var a,l=2147483647,c=/^xn--/,s=/[^\x20-\x7E]/,d=/[\x2E\u3002\uFF0E\uFF61]/g,u={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},A=Math.floor,h=String.fromCharCode;function g(e){throw new RangeError(u[e])}function F(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}function Q(e,t){var n=e.split("@"),r="";return n.length>1&&(r=n[0]+"@",e=n[1]),r+F((e=e.replace(d,".")).split("."),t).join(".")}function p(e){for(var t,n,r=[],i=0,o=e.length;i<o;)(t=e.charCodeAt(i++))>=55296&&t<=56319&&i<o?56320==(64512&(n=e.charCodeAt(i++)))?r.push(((1023&t)<<10)+(1023&n)+65536):(r.push(t),i--):r.push(t);return r}function m(e){return F(e,(function(e){var t="";return e>65535&&(t+=h((e-=65536)>>>10&1023|55296),e=56320|1023&e),t+=h(e)})).join("")}function U(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function b(e,t,n){var r=0;for(e=n?A(e/700):e>>1,e+=A(e/t);e>455;r+=36)e=A(e/35);return A(r+36*e/(e+38))}function Z(e){var t,n,r,i,o,a,c,s,d,u,h,F=[],Q=e.length,p=0,U=128,Z=72;for((n=e.lastIndexOf("-"))<0&&(n=0),r=0;r<n;++r)e.charCodeAt(r)>=128&&g("not-basic"),F.push(e.charCodeAt(r));for(i=n>0?n+1:0;i<Q;){for(o=p,a=1,c=36;i>=Q&&g("invalid-input"),((s=(h=e.charCodeAt(i++))-48<10?h-22:h-65<26?h-65:h-97<26?h-97:36)>=36||s>A((l-p)/a))&&g("overflow"),p+=s*a,!(s<(d=c<=Z?1:c>=Z+26?26:c-Z));c+=36)a>A(l/(u=36-d))&&g("overflow"),a*=u;Z=b(p-o,t=F.length+1,0==o),A(p/t)>l-U&&g("overflow"),U+=A(p/t),p%=t,F.splice(p++,0,U)}return m(F)}function B(e){var t,n,r,i,o,a,c,s,d,u,F,Q,m,Z,B,f=[];for(Q=(e=p(e)).length,t=128,n=0,o=72,a=0;a<Q;++a)(F=e[a])<128&&f.push(h(F));for(r=i=f.length,i&&f.push("-");r<Q;){for(c=l,a=0;a<Q;++a)(F=e[a])>=t&&F<c&&(c=F);for(c-t>A((l-n)/(m=r+1))&&g("overflow"),n+=(c-t)*m,t=c,a=0;a<Q;++a)if((F=e[a])<t&&++n>l&&g("overflow"),F==t){for(s=n,d=36;!(s<(u=d<=o?1:d>=o+26?26:d-o));d+=36)B=s-u,Z=36-u,f.push(h(U(u+B%Z,0))),s=A(B/Z);f.push(h(U(s,0))),o=b(n,m,r==i),n=0,++r}++n,++t}return f.join("")}a={version:"1.4.1",ucs2:{decode:p,encode:m},decode:Z,encode:B,toASCII:function(e){return Q(e,(function(e){return s.test(e)?"xn--"+B(e):e}))},toUnicode:function(e){return Q(e,(function(e){return c.test(e)?Z(e.slice(4).toLowerCase()):e}))}},void 0===(r=function(){return a}.call(t,n,t,e))||(e.exports=r)}()}).call(this,n(87)(e))},function(e,t,n){"use strict";e.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},function(e,t,n){"use strict";t.decode=t.parse=n(560),t.encode=t.stringify=n(561)},function(e,t,n){"use strict";function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,t,n,o){t=t||"&",n=n||"=";var a={};if("string"!=typeof e||0===e.length)return a;var l=/\+/g;e=e.split(t);var c=1e3;o&&"number"==typeof o.maxKeys&&(c=o.maxKeys);var s=e.length;c>0&&s>c&&(s=c);for(var d=0;d<s;++d){var u,A,h,g,F=e[d].replace(l,"%20"),Q=F.indexOf(n);Q>=0?(u=F.substr(0,Q),A=F.substr(Q+1)):(u=F,A=""),h=decodeURIComponent(u),g=decodeURIComponent(A),r(a,h)?i(a[h])?a[h].push(g):a[h]=[a[h],g]:a[h]=g}return a};var i=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},function(e,t,n){"use strict";var r=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,t,n,l){return t=t||"&",n=n||"=",null===e&&(e=void 0),"object"==typeof e?o(a(e),(function(a){var l=encodeURIComponent(r(a))+n;return i(e[a])?o(e[a],(function(e){return l+encodeURIComponent(r(e))})).join(t):l+encodeURIComponent(r(e[a]))})).join(t):l?encodeURIComponent(r(l))+n+encodeURIComponent(r(e)):""};var i=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function o(e,t){if(e.map)return e.map(t);for(var n=[],r=0;r<e.length;r++)n.push(t(e[r],r));return n}var a=Object.keys||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t}},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){const t=e.match(/OS (\d+_\d+).* like Mac/);if(null===t||!t[1])return;return parseFloat(t[1].replace("_","."))}},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;const r=/(Electron)\/([0-9]{1,}[.0-9]{0,})/;var i=e=>{const t=e.match(r);return t&&parseFloat(t[2])};t.default=i},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;t.default=function(e){void 0===e&&(e={});const t=e.global||(void 0!==typeof window?window:global);return()=>t.navigator&&t.navigator.mediaDevices}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e,t,n){let r=n;(0,i.default)(e,{isRotated:{get(){return this.orientation()&&(270===this.orientation().videoOrientation||90===this.orientation().videoOrientation)}},orientation:{get:()=>r,set(n){r=n;const i=a[n.videoOrientation]||a.ROTATED_NORMAL;switch(o.default.env.name){case"Chrome":case"Safari":t().style.webkitTransform=i;break;default:t().style.transform=i}e.trigger("orientationChanged",r)}},audioChannelType:{get(){return"mozAudioChannelType"in this.domElement?this.domElement.mozAudioChannelType:"unknown"},set(e){"mozAudioChannelType"in this.domElement&&(this.domElement.mozAudioChannelType=e)}}})};var i=r(n(108)),o=r(n(7));const a={0:"rotate(0deg)",270:"rotate(90deg)",90:"rotate(-90deg)",180:"rotate(180deg)"}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(11));const o={for:"htmlFor",class:"className"};var a=e=>{e.prototype.attr=function(e,t){if((0,i.default)(e)){let t;Object.keys(e).forEach(n=>{t=o[n]||n,this.first.setAttribute(t,e[n])})}else{if(void 0===t)return this.first.getAttribute(o[e]||e);this.first.setAttribute(o[e]||e,t)}return this},e.prototype.removeAttr=function(e){const t=o[e]||e;return this.forEach(e=>{e.removeAttribute(t)}),this},e.prototype.html=function(e){return void 0!==e&&(this.first.innerHTML=e),this.first.innerHTML},e.prototype.center=function(t,n){let r;return this.forEach(i=>{r=new e(i),t=t||parseInt(r.width(),10),n=n||parseInt(r.height(),10);const o=-.5*t+"px",a=-.5*n+"px";r.css("margin",`${a} 0 0 ${o}`).addClass("OT_centered")}),this},e._attachToOTHelpers.centerElement=function(t,n,r){return new e(t).center(n,r)};const t=function(t){return t.offsetWidth>0?t.offsetWidth+"px":new e(t).css("width")},n=function(t){return t.offsetHeight>0?t.offsetHeight+"px":new e(t).css("height")};e.prototype.width=function(e){return e?(this.css("width",e),this):this.isDisplayNone()?this.makeVisibleAndYield(e=>t(e))[0]:t(this.get(0))},e._attachToOTHelpers.width=function(t,n){const r=new e(t).width(n);return n?e._attachToOTHelpers:r},e.prototype.height=function(e){return e?(this.css("height",e),this):this.isDisplayNone()?this.makeVisibleAndYield(e=>n(e))[0]:n(this.get(0))},e._attachToOTHelpers.height=function(t,n){const r=new e(t).height(n);return n?e._attachToOTHelpers:r}};t.default=a},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(3));const o=(void 0!==typeof window?window:global).getComputedStyle,a={Firefox:"moz",Opera:"O",Chrome:"Webkit",Safari:"Webkit"};var l=(e,t)=>{const n={},r={},l=function(e,t){if(t in e.style)return t;const n=a[i.default.name]+t[0].toUpperCase()+t.slice(1);return n in e.style?n:t};e.prototype.show=function(){return this.forEach(t=>{const i=t.style.display;""!==i&&"none"!==i||(t.style.display=n[t]||"",delete n[t]),function(e){return"none"===o(e).getPropertyValue("display")}(t)&&(n[t]="none",t.style.display=function(t){if(r[t.ownerDocument]&&r[t.ownerDocument][t.nodeName])return r[t.ownerDocument][t.nodeName];r[t.ownerDocument]||(r[t.ownerDocument]={});let n,i=t.ownerDocument.createElement(t.nodeName);return t.ownerDocument.body.appendChild(i),n=new e(i).css("display"),r[t.ownerDocument][t.nodeName]=n,new e(i).remove(),i=null,n}(t))})},e.prototype.hide=function(){return this.forEach(e=>{"none"!==e.style.display&&(n[e]=e.style.display,e.style.display="none")})},e.prototype.css=function(e,t){if(0!==this.length)return"string"!=typeof e?this.forEach(t=>{!function(e,t){const n=e.style;for(const r in t)t.hasOwnProperty(r)&&(n[l(e,r)]=t[r])}(t,e)}):void 0!==t?this.forEach(n=>{!function(e,t,n){e.style[l(e,t)]=n}(n,e,t)}):function(e,t){const n=l(e,t);let r=o(e).getPropertyValue(n);return""===r&&(r=e.style[n]),r}(this.first,e)},e.prototype.makeVisibleAndYield=function(n){const r={display:"block",visibility:"hidden"},i=[];return this.forEach(o=>{const a=t(o);a?i.push(function(t,n,r){const i=new e(t),o={};let a,l;for(a in n)n.hasOwnProperty(a)&&(o[a]=t.style[a],i.css(a,n[a]));for(a in l=r(t),n)n.hasOwnProperty(a)&&i.css(a,o[a]||"");return l}(a,r,n)):i.push(void 0)}),i}};t.default=l},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(569));function o(e,t){return!!t&&((0,i.default)()?e.classList.contains(t):e.className.indexOf(t)>-1)}var a=e=>{e.prototype.addClass=function(e){if(e){const t=e.trim().split(/\s+/);this.forEach(e=>{!function(e,t){if(!t||0===t.length)return;if(1!==e.nodeType)return;const n=t.length;let r=0;if((0,i.default)())for(;r<n;++r)e.classList.add(t[r]);else if(e.className||1!==t.length){let i=` ${e.className} `;for(;r<n;++r)~i.indexOf(` ${t[r]} `)||(i+=t[r]+" ");e.className=i.trim()}else e.className=t.join(" ")}(e,t)})}return this},e.prototype.removeClass=function(e){if(e){const t=e.trim().split(/\s+/);this.forEach(e=>{!function(e,t){if(!t||0===t.length)return;if(1!==e.nodeType)return;const n=t.length;let r=0;if((0,i.default)()){for(;r<n;++r)e.classList.remove(t[r]);return}let o=` ${e.className} `.replace(/[\s+]/," ");for(;r<n;++r)o=o.replace(` ${t[r]} `," ");e.className=o.trim()}(e,t)})}return this},e.prototype.toggleClass=function(e){if(e){const t=e.trim().split(/\s+/);this.forEach(e=>{!function(e,t){if(!t||0===t.length)return;if(1!==e.nodeType)return;const n=t.length;let r=0;if((0,i.default)()){for(;r<n;++r)e.classList.toggle(t[r]);return}let a=` ${e.className} `.replace(/[\s+]/," ");for(;r<n;++r)o(e,t[r])?a=a.replace(` ${t[r]} `," "):a+=t[r]+" ";e.className=a.trim()}(e,t)})}return this},e.prototype.hasClass=function(e){return this.some(t=>o(t,e))}};t.default=a},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;t.default=()=>"undefined"!=typeof document&&"classList"in document.createElement("a")},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(571));var o=e=>{let t=0,n=0;e.prototype.observeStyleChanges=function(t,n){const r=[];return this.forEach(o=>{r.push(function(t,n,r){const o={},a=function(n){switch(n){case"width":return new e(t).width();case"height":return new e(t).height();default:return new e(t).css(n)}};n.forEach(e=>{o[e]=a(e)});const l=new(void 0!==typeof window?window:global).MutationObserver(l=>{const c={};l.forEach(r=>{if("style"!==r.attributeName)return;const i=new e(t).isDisplayNone();n.forEach(e=>{if(i&&("width"===e||"height"===e))return;const t=a(e);t!==o[e]&&(c[e]=[o[e],t],o[e]=t)})}),(0,i.default)(c)||setTimeout(()=>{r.call(null,c)})});return l.observe(t,{attributes:!0,attributeFilter:["style"],childList:!1,characterData:!1,subtree:!1}),l}(o,t,n))}),r},e.prototype.observeNodeOrChildNodeRemoval=function(t){const r=[];return this.forEach(i=>{r.push(function(t,r){const i=new(void 0!==typeof window?window:global).MutationObserver(t=>{let n=[];t.forEach(e=>{e.removedNodes.length&&(n=n.concat(Array.prototype.slice.call(e.removedNodes)))}),n.length&&setTimeout(()=>{r(new e(n))})});i.observe(t,{attributes:!1,childList:!0,characterData:!1,subtree:!0}),n++;const o=i.disconnect;return i.disconnect=function(){o.apply(i,arguments),n--},i}(i,t))}),r},e.prototype.observeSize=function(e){const n=[];return this.forEach(r=>{n.push(function(e,n){let r={width:0,height:0};const i=setInterval(()=>{const t=e.getBoundingClientRect();r.width===t.width&&r.height===t.height||(n(t,r),r={width:t.width,height:t.height})},200);return t++,{disconnect(){clearInterval(i),t--}}}(r,e))}),n},e._attachToOTHelpers.observeStyleChanges=function(t,n,r){return new e(t).observeStyleChanges(n,r)[0]},e._attachToOTHelpers.observeNodeOrChildNodeRemoval=function(t,n){return new e(t).observeNodeOrChildNodeRemoval(n)[0]},e.__testOnly||(e.__testOnly={}),e.__testOnly.sizeObserverCount=function(){return t},e.__testOnly.nodeRemovalObserverCount=function(){return n}};t.default=o},function(e,t,n){var r=n(121),i=n(46),o=n(65),a=n(14),l=n(28),c=n(66),s=n(69),d=n(88),u=Object.prototype.hasOwnProperty;e.exports=function(e){if(null==e)return!0;if(l(e)&&(a(e)||"string"==typeof e||"function"==typeof e.splice||c(e)||d(e)||o(e)))return!e.length;var t=i(e);if("[object Map]"==t||"[object Set]"==t)return!e.size;if(s(e))return!r(e).length;for(var n in e)if(u.call(e,n))return!1;return!0}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e,t,n,r,o){let a,l=n;e.currentState=n;return e.is=function(){return-1!==Array.prototype.indexOf.call(arguments,l)},e.isNot=function(){return-1===Array.prototype.indexOf.call(arguments,l)},function(n){if(l!==n){if(-1===t.indexOf(n))return void(o&&(0,i.default)(o)&&o("invalidState",n));e.previousState=l,a=l,e.currentState=n,l=n,r&&(0,i.default)(r)&&r(n,a)}}};var i=r(n(20))},function(e,t,n){var r,i,o=n(267),a=n(268),l=0,c=0;e.exports=function(e,t,n){var s=t&&n||0,d=t||[],u=(e=e||{}).node||r,A=void 0!==e.clockseq?e.clockseq:i;if(null==u||null==A){var h=o();null==u&&(u=r=[1|h[0],h[1],h[2],h[3],h[4],h[5]]),null==A&&(A=i=16383&(h[6]<<8|h[7]))}var g=void 0!==e.msecs?e.msecs:(new Date).getTime(),F=void 0!==e.nsecs?e.nsecs:c+1,Q=g-l+(F-c)/1e4;if(Q<0&&void 0===e.clockseq&&(A=A+1&16383),(Q<0||g>l)&&void 0===e.nsecs&&(F=0),F>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");l=g,c=F,i=A;var p=(1e4*(268435455&(g+=122192928e5))+F)%4294967296;d[s++]=p>>>24&255,d[s++]=p>>>16&255,d[s++]=p>>>8&255,d[s++]=255&p;var m=g/4294967296*1e4&268435455;d[s++]=m>>>8&255,d[s++]=255&m,d[s++]=m>>>24&15|16,d[s++]=m>>>16&255,d[s++]=A>>>8|128,d[s++]=255&A;for(var U=0;U<6;++U)d[s+U]=u[U];return t||a(d)}},function(e,t,n){var r=n(267),i=n(268);e.exports=function(e,t,n){var o=t&&n||0;"string"==typeof e&&(t="binary"===e?new Array(16):null,e=null);var a=(e=e||{}).random||(e.rng||r)();if(a[6]=15&a[6]|64,a[8]=63&a[8]|128,t)for(var l=0;l<16;++l)t[o+l]=a[l];return t||i(a)}},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r=function(){function e(e){let t=(void 0===e?{}:e).waitTime,n=void 0===t?50:t;this.queue=[],this.running=!1,this.waitTime=n}var t=e.prototype;return t.add=function(e){this.queue.push(e),this.run()},t.run=function(){if(this.running)return;this.running=!0;const e=()=>{if(0===this.queue.length)return void(this.running=!1);this.queue.shift()(()=>{setTimeout(e,this.waitTime)})};e()},e}();t.default=r},function(e,t,n){var r=n(101),i=n(99),o=n(150),a=n(39),l=n(68),c=n(102),s=Math.min;e.exports=function(e,t,n){for(var d=n?o:i,u=e[0].length,A=e.length,h=A,g=Array(A),F=1/0,Q=[];h--;){var p=e[h];h&&t&&(p=a(p,l(t))),F=s(p.length,F),g[h]=!n&&(t||u>=120&&p.length>=120)?new r(h&&p):void 0}p=e[0];var m=-1,U=g[0];e:for(;++m<u&&Q.length<F;){var b=p[m],Z=t?t(b):b;if(b=n||0!==b?b:0,!(U?c(U,Z):d(Q,Z,n))){for(h=A;--h;){var B=g[h];if(!(B?c(B,Z):d(e[h],Z,n)))continue e}U&&U.push(Z),Q.push(b)}}return Q}},function(e,t,n){var r=n(151);e.exports=function(e){return r(e)?e:[]}},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;t.default={1004:"Authentication error",1005:"Invalid Session ID",1006:"Connect Failed",1007:"Connect Rejected",1008:"Connect Time-out",1009:"Security Error",1010:"Not Connected",1011:"Invalid Parameter",1012:"Peer-to-peer Stream Play Failed",1013:"Connection Failed",1014:"API Response Failure",1015:"PeerConnection not connected, cannot call this method",1021:"Request Timeout",1026:"Terms of Service Violation: Export Compliance",1027:"Connection Limit Exceeded",1040:"Set Video Source Failure",1041:"Invalid Video Source",1500:"Unable to Publish",1501:"Unable to Subscribe",1502:"Unsupported Video Codec",1503:"No TURN server found",1520:"Unable to Force Disconnect",1530:"Unable to Force Unpublish",1540:"Unable to Force Mute",1553:"Publisher ICEWorkflow failed",1554:"Subscriber ICEWorkflow failed",1600:"createOffer, createAnswer, setLocalDescription, setRemoteDescription",1605:"Stream Limit Exceeded",2e3:"Internal Error",2001:"Unexpected Server Response",2021:"Proxy URL Timing Error",2022:"Proxy URL Already Set Error",2031:"getRtcStatsReport is not supported in this browser",4e3:"WebSocket Connection Failed",4001:"WebSocket Network Disconnected",5001:"Unable to access media engine"}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(580));t.default=(e,t)=>{if("string"==typeof e&&"string"==typeof t){const n=(0,i.default)(e),r=t.match(/(\w+:\/\/)(.*)/);return`${r[1]}${n}/${r[2]}`}return t}},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r=e=>e.replace(/\/+$/,"").replace(/^.*:\/+/,"");t.default=r},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e){void 0===e&&(e={});const t=e.isSessionProxied||o.default,n=e.sessionId;if(!t(n))return;i.default.forEach(t=>{t in e&&(e[t]="")})};var i=r(n(582)),o=r(n(583))},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;t.default=["audioLocalAddress","audioRemoteAddress","videoLocalAddress","videoRemoteAddress"]},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;const i=r(n(26)).default.sessions;t.default=e=>{const t=i.get(e);return!!t&&!!t._.getProxyUrl()}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(4)),o=r(n(5));const a={architecture:"event_ua_arch",bitness:"event_ua_bitness",model:"event_ua_model",platformVersion:"event_ua_platform_version"};var l=function(){var e=(0,o.default)(i.default.mark((function e(t){var n,r;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n={},null==t||!t.getHighEntropyValues){e.next=6;break}return e.next=4,t.getHighEntropyValues(Object.keys(a));case 4:(r=e.sent)&&Object.entries(a).forEach(e=>{let t=e[0],i=e[1];void 0!==r[t]&&(n[i]=r[t])});case 6:return e.abrupt("return",n);case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();t.default=l},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;const i={isElementNode:function(e){return e&&"object"==typeof e&&1===e.nodeType},createElement:function(e,t,n,r){const i=(r||document).createElement(e);t=t||{},Object.keys(t).forEach(e=>{if("object"==typeof t[e]){i[e]||(i[e]={});const n=t[e];Object.keys(n).forEach(t=>{i[e][t]=n[t]})}else"className"===e?i.className=t[e]:i.setAttribute(e,t[e])});const o=function(e){"string"==typeof e?i.innerHTML+=e:i.appendChild(e)};return Array.isArray(n)?n.forEach(o):n&&o(n),i}};(0,r(n(265)).default)(i);var o=i;t.default=o},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(){return function(e,t,n){const r=[];function i(i){setTimeout(()=>{if(r.length)if(function(e){return e.getTracks().every(e=>"ended"===e.readyState)}(e))a(),"function"==typeof t&&t();else{const e=i.target;o(e),"function"==typeof n&&n(e)}},100)}function o(e){e.onended=null;const t=r.indexOf(e);t>=0&&r.splice(t,1)}function a(){r.slice().forEach(o)}function l(){e.getTracks().forEach(e=>{r.push(e);const t=e.onended;e.onended=function(){t&&t(...arguments),i(...arguments)}})}return l(),{stop:a,refresh:()=>{a(),l()}}}}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(153)),o=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=a(t);if(n&&n.has(e))return n.get(e);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var l=i?Object.getOwnPropertyDescriptor(e,o):null;l&&(l.get||l.set)?Object.defineProperty(r,o,l):r[o]=e[o]}r.default=e,n&&n.set(e,r);return r}(n(588));function a(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(a=function(e){return e?n:t})(e)}var l=function(e){void 0===e&&(e={});const t=e.document||document,n=e.videoElementBuffer||o,r=e.createVideoElementUsingNativeAPI||i.default;return t.hasFocus()?(n.fillBuffer(),r()):n.getNext()||r()};t.default=l},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.sizeOfBuffer=t.getNext=t.fillBuffer=t.clearBuffer=t.MAX_VIDEO_ELEMENTS=void 0;var i=r(n(153));t.MAX_VIDEO_ELEMENTS=20;const o=[],a=()=>o.length;t.sizeOfBuffer=a;t.fillBuffer=()=>{for(;a()<20;){const e=(0,i.default)();e.play().catch(()=>{}),o.push(e)}};t.getNext=()=>o.shift();t.clearBuffer=()=>{o.length=0}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.removeMediaElementListeners=t.addMediaElementListeners=void 0;var i=r(n(3));const o=["abort","canplay","canplaythrough","durationchange","emptied","ended","error","loadeddata","loadedmetadata","loadstart","pause","play","playing","progress","ratechange","seeked","seeking","stalled","suspend","volumechange","waiting"],a={},l=(e,t)=>null!=t&&t.isDev?e instanceof HTMLMediaElement||(console.error("mediaElementListeners: Invalid HTMLMediaElement"),!1):(console.debug("Not in DEV, so won't add/remove debug listeners"),!1);t.addMediaElementListeners=function(e,t,n){void 0===n&&(n={});const r=n.env||i.default;l(e,r)&&o.forEach(n=>{a[n]=e=>{t("mediaElement:"+n),console.debug("HTMLMediaElement triggered: "+n,e)},e.addEventListener(n,a[n])})};t.removeMediaElementListeners=function(e,t){void 0===t&&(t={});const n=t.env||i.default;l(e,n)&&o.forEach(t=>{e.removeEventListener(t,a[t]),delete a[t]})}},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r=["buildHash","minimumVersion","debug",["websiteURL","websiteUrl"],["cdnURL","cdnUrl"],["loggingURL","loggingUrl"],["apiURL","apiUrl"],["supportSSL",!0],["cdnURLSSL","cdnUrl"],["loggingURLSSL","loggingUrl"],["apiURLSSL","apiUrl"],["assetURL","assetUrl"]];t.default=r},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r=["apiUrl","apiURL","apiURLSSL"];t.default=r},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(){const e=(void 0!==typeof window?window:global).OT,t=(void 0!==typeof window?window:global).TB;return()=>{const n=(void 0!==typeof window?window:global).OT;return(void 0!==typeof window?window:global).OT=e,(void 0!==typeof window?window:global).TB=t,n}}},function(e,t,n){"use strict";var r=n(32);e.exports=function(e,t){var i=e&&e.window,o={shimChrome:!0,shimFirefox:!0,shimEdge:!0,shimSafari:!0};for(var a in t)hasOwnProperty.call(t,a)&&(o[a]=t[a]);var l=r.log,c=r.detectBrowser(i),s=n(594)||null,d=n(596)||null,u=n(600)||null,A=n(602)||null,h=n(603)||null,g={browserDetails:c,commonShim:h,extractVersion:r.extractVersion,disableLog:r.disableLog,disableWarnings:r.disableWarnings};switch(c.browser){case"chrome":if(!s||!s.shimPeerConnection||!o.shimChrome)return l("Chrome shim is not included in this adapter release."),g;l("adapter.js shimming chrome."),g.browserShim=s,h.shimCreateObjectURL(i),s.shimGetUserMedia(i),s.shimMediaStream(i),s.shimSourceObject(i),s.shimPeerConnection(i),s.shimOnTrack(i),s.shimAddTrackRemoveTrack(i),s.shimGetSendersWithDtmf(i),s.shimSenderReceiverGetStats(i),s.fixNegotiationNeeded(i),h.shimRTCIceCandidate(i),h.shimMaxMessageSize(i),h.shimSendThrowTypeError(i);break;case"firefox":if(!u||!u.shimPeerConnection||!o.shimFirefox)return l("Firefox shim is not included in this adapter release."),g;l("adapter.js shimming firefox."),g.browserShim=u,h.shimCreateObjectURL(i),u.shimGetUserMedia(i),u.shimSourceObject(i),u.shimPeerConnection(i),u.shimOnTrack(i),u.shimRemoveStream(i),u.shimSenderGetStats(i),u.shimReceiverGetStats(i),u.shimRTCDataChannel(i),h.shimRTCIceCandidate(i),h.shimMaxMessageSize(i),h.shimSendThrowTypeError(i);break;case"edge":if(!d||!d.shimPeerConnection||!o.shimEdge)return l("MS edge shim is not included in this adapter release."),g;l("adapter.js shimming edge."),g.browserShim=d,h.shimCreateObjectURL(i),d.shimGetUserMedia(i),d.shimPeerConnection(i),d.shimReplaceTrack(i),d.shimGetDisplayMedia(i),h.shimMaxMessageSize(i),h.shimSendThrowTypeError(i);break;case"safari":if(!A||!o.shimSafari)return l("Safari shim is not included in this adapter release."),g;l("adapter.js shimming safari."),g.browserShim=A,h.shimCreateObjectURL(i),A.shimRTCIceServerUrls(i),A.shimCreateOfferLegacy(i),A.shimCallbacksAPI(i),A.shimLocalStreamsAPI(i),A.shimRemoteStreamsAPI(i),A.shimTrackEventTransceiver(i),A.shimGetUserMedia(i),h.shimRTCIceCandidate(i),h.shimMaxMessageSize(i),h.shimSendThrowTypeError(i);break;default:l("Unsupported browser!")}return g}},function(e,t,n){"use strict";(function(t){var r=n(32),i=r.log;function o(e,t,n){var r=n?"outbound-rtp":"inbound-rtp",i=new Map;if(null===t)return i;var o=[];return e.forEach((function(e){"track"===e.type&&e.trackIdentifier===t.id&&o.push(e)})),o.forEach((function(t){e.forEach((function(n){n.type===r&&n.trackId===t.id&&function e(t,n,r){n&&!r.has(n.id)&&(r.set(n.id,n),Object.keys(n).forEach((function(i){i.endsWith("Id")?e(t,t.get(n[i]),r):i.endsWith("Ids")&&n[i].forEach((function(n){e(t,t.get(n),r)}))})))}(e,n,i)}))})),i}e.exports={shimGetUserMedia:n(595),shimMediaStream:function(e){e.MediaStream=e.MediaStream||e.webkitMediaStream},shimOnTrack:function(e){if("object"==typeof e&&e.RTCPeerConnection&&!("ontrack"in e.RTCPeerConnection.prototype)){Object.defineProperty(e.RTCPeerConnection.prototype,"ontrack",{get:function(){return this._ontrack},set:function(e){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=e)},enumerable:!0,configurable:!0});var t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){var n=this;return n._ontrackpoly||(n._ontrackpoly=function(t){t.stream.addEventListener("addtrack",(function(r){var i;i=e.RTCPeerConnection.prototype.getReceivers?n.getReceivers().find((function(e){return e.track&&e.track.id===r.track.id})):{track:r.track};var o=new Event("track");o.track=r.track,o.receiver=i,o.transceiver={receiver:i},o.streams=[t.stream],n.dispatchEvent(o)})),t.stream.getTracks().forEach((function(r){var i;i=e.RTCPeerConnection.prototype.getReceivers?n.getReceivers().find((function(e){return e.track&&e.track.id===r.id})):{track:r};var o=new Event("track");o.track=r,o.receiver=i,o.transceiver={receiver:i},o.streams=[t.stream],n.dispatchEvent(o)}))},n.addEventListener("addstream",n._ontrackpoly)),t.apply(n,arguments)}}else r.wrapPeerConnectionEvent(e,"track",(function(e){return e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e}))},shimGetSendersWithDtmf:function(e){if("object"==typeof e&&e.RTCPeerConnection&&!("getSenders"in e.RTCPeerConnection.prototype)&&"createDTMFSender"in e.RTCPeerConnection.prototype){var 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()};var n=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,r){var i=this,o=n.apply(i,arguments);return o||(o=t(i,e),i._senders.push(o)),o};var r=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){var t=this;r.apply(t,arguments);var n=t._senders.indexOf(e);-1!==n&&t._senders.splice(n,1)}}var i=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){var n=this;n._senders=n._senders||[],i.apply(n,[e]),e.getTracks().forEach((function(e){n._senders.push(t(n,e))}))};var o=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){var t=this;t._senders=t._senders||[],o.apply(t,[e]),e.getTracks().forEach((function(e){var n=t._senders.find((function(t){return t.track===e}));n&&t._senders.splice(t._senders.indexOf(n),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)){var a=e.RTCPeerConnection.prototype.getSenders;e.RTCPeerConnection.prototype.getSenders=function(){var e=this,t=a.apply(e,[]);return t.forEach((function(t){t._pc=e})),t},Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get:function(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}},shimSenderReceiverGetStats:function(e){if("object"==typeof e&&e.RTCPeerConnection&&e.RTCRtpSender&&e.RTCRtpReceiver){if(!("getStats"in e.RTCRtpSender.prototype)){var n=e.RTCPeerConnection.prototype.getSenders;n&&(e.RTCPeerConnection.prototype.getSenders=function(){var e=this,t=n.apply(e,[]);return t.forEach((function(t){t._pc=e})),t});var i=e.RTCPeerConnection.prototype.addTrack;i&&(e.RTCPeerConnection.prototype.addTrack=function(){var e=i.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){var e=this;return this._pc.getStats().then((function(t){return o(t,e.track,!0)}))}}if(!("getStats"in e.RTCRtpReceiver.prototype)){var a=e.RTCPeerConnection.prototype.getReceivers;a&&(e.RTCPeerConnection.prototype.getReceivers=function(){var e=this,t=a.apply(e,[]);return t.forEach((function(t){t._pc=e})),t}),r.wrapPeerConnectionEvent(e,"track",(function(e){return e.receiver._pc=e.srcElement,e})),e.RTCRtpReceiver.prototype.getStats=function(){var e=this;return this._pc.getStats().then((function(t){return o(t,e.track,!1)}))}}if("getStats"in e.RTCRtpSender.prototype&&"getStats"in e.RTCRtpReceiver.prototype){var l=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){var n=this;if(arguments.length>0&&arguments[0]instanceof e.MediaStreamTrack){var r,i,o,a=arguments[0];return n.getSenders().forEach((function(e){e.track===a&&(r?o=!0:r=e)})),n.getReceivers().forEach((function(e){return e.track===a&&(i?o=!0:i=e),e.track===a})),o||r&&i?t.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):r?r.getStats():i?i.getStats():t.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return l.apply(n,arguments)}}}},shimSourceObject:function(e){var t=e&&e.URL;"object"==typeof e&&e.HTMLMediaElement&&!("srcObject"in e.HTMLMediaElement.prototype)&&Object.defineProperty(e.HTMLMediaElement.prototype,"srcObject",{get:function(){return this._srcObject},set:function(e){var n=this;this._srcObject=e,this.src&&t.revokeObjectURL(this.src),e?(this.src=t.createObjectURL(e),e.addEventListener("addtrack",(function(){n.src&&t.revokeObjectURL(n.src),n.src=t.createObjectURL(e)})),e.addEventListener("removetrack",(function(){n.src&&t.revokeObjectURL(n.src),n.src=t.createObjectURL(e)}))):this.src=""}})},shimAddTrackRemoveTrackWithNative:function(e){e.RTCPeerConnection.prototype.getLocalStreams=function(){var e=this;return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map((function(t){return e._shimmedLocalStreams[t][0]}))};var t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,n){if(!n)return t.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};var r=t.apply(this,arguments);return this._shimmedLocalStreams[n.id]?-1===this._shimmedLocalStreams[n.id].indexOf(r)&&this._shimmedLocalStreams[n.id].push(r):this._shimmedLocalStreams[n.id]=[n,r],r};var n=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){var t=this;this._shimmedLocalStreams=this._shimmedLocalStreams||{},e.getTracks().forEach((function(e){if(t.getSenders().find((function(t){return t.track===e})))throw new DOMException("Track already exists.","InvalidAccessError")}));var r=t.getSenders();n.apply(this,arguments);var i=t.getSenders().filter((function(e){return-1===r.indexOf(e)}));this._shimmedLocalStreams[e.id]=[e].concat(i)};var r=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[e.id],r.apply(this,arguments)};var i=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){var t=this;return this._shimmedLocalStreams=this._shimmedLocalStreams||{},e&&Object.keys(this._shimmedLocalStreams).forEach((function(n){var r=t._shimmedLocalStreams[n].indexOf(e);-1!==r&&t._shimmedLocalStreams[n].splice(r,1),1===t._shimmedLocalStreams[n].length&&delete t._shimmedLocalStreams[n]})),i.apply(this,arguments)}},shimAddTrackRemoveTrack:function(e){if(e.RTCPeerConnection){var n=r.detectBrowser(e);if(e.RTCPeerConnection.prototype.addTrack&&n.version>=65)return this.shimAddTrackRemoveTrackWithNative(e);var i=e.RTCPeerConnection.prototype.getLocalStreams;e.RTCPeerConnection.prototype.getLocalStreams=function(){var e=this,t=i.apply(this);return e._reverseStreams=e._reverseStreams||{},t.map((function(t){return e._reverseStreams[t.id]}))};var o=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(t){var n=this;if(n._streams=n._streams||{},n._reverseStreams=n._reverseStreams||{},t.getTracks().forEach((function(e){if(n.getSenders().find((function(t){return t.track===e})))throw new DOMException("Track already exists.","InvalidAccessError")})),!n._reverseStreams[t.id]){var r=new e.MediaStream(t.getTracks());n._streams[t.id]=r,n._reverseStreams[r.id]=t,t=r}o.apply(n,[t])};var a=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){var t=this;t._streams=t._streams||{},t._reverseStreams=t._reverseStreams||{},a.apply(t,[t._streams[e.id]||e]),delete t._reverseStreams[t._streams[e.id]?t._streams[e.id].id:e.id],delete t._streams[e.id]},e.RTCPeerConnection.prototype.addTrack=function(n,r){var i=this;if("closed"===i.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");var o=[].slice.call(arguments,1);if(1!==o.length||!o[0].getTracks().find((function(e){return e===n})))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");var a=i.getSenders().find((function(e){return e.track===n}));if(a)throw new DOMException("Track already exists.","InvalidAccessError");i._streams=i._streams||{},i._reverseStreams=i._reverseStreams||{};var l=i._streams[r.id];if(l)l.addTrack(n),t.resolve().then((function(){i.dispatchEvent(new Event("negotiationneeded"))}));else{var c=new e.MediaStream([n]);i._streams[r.id]=c,i._reverseStreams[c.id]=r,i.addStream(c)}return i.getSenders().find((function(e){return e.track===n}))},["createOffer","createAnswer"].forEach((function(t){var n=e.RTCPeerConnection.prototype[t];e.RTCPeerConnection.prototype[t]=function(){var e=this,t=arguments,r=arguments.length&&"function"==typeof arguments[0];return r?n.apply(e,[function(n){var r=s(e,n);t[0].apply(null,[r])},function(e){t[1]&&t[1].apply(null,e)},arguments[2]]):n.apply(e,arguments).then((function(t){return s(e,t)}))}}));var l=e.RTCPeerConnection.prototype.setLocalDescription;e.RTCPeerConnection.prototype.setLocalDescription=function(){var e=this;return arguments.length&&arguments[0].type?(arguments[0]=d(e,arguments[0]),l.apply(e,arguments)):l.apply(e,arguments)};var c=Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(e.RTCPeerConnection.prototype,"localDescription",{get:function(){var e=c.get.apply(this);return""===e.type?e:s(this,e)}}),e.RTCPeerConnection.prototype.removeTrack=function(e){var t,n=this;if("closed"===n.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===n))throw new DOMException("Sender was not created by this connection.","InvalidAccessError");n._streams=n._streams||{},Object.keys(n._streams).forEach((function(r){n._streams[r].getTracks().find((function(t){return e.track===t}))&&(t=n._streams[r])})),t&&(1===t.getTracks().length?n.removeStream(n._reverseStreams[t.id]):t.removeTrack(e.track),n.dispatchEvent(new Event("negotiationneeded")))}}function s(e,t){var n=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((function(t){var r=e._reverseStreams[t],i=e._streams[r.id];n=n.replace(new RegExp(i.id,"g"),r.id)})),new RTCSessionDescription({type:t.type,sdp:n})}function d(e,t){var n=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((function(t){var r=e._reverseStreams[t],i=e._streams[r.id];n=n.replace(new RegExp(r.id,"g"),i.id)})),new RTCSessionDescription({type:t.type,sdp:n})}},shimPeerConnection:function(e){var n=r.detectBrowser(e);if(!e.RTCPeerConnection&&e.webkitRTCPeerConnection&&(e.RTCPeerConnection=function(t,n){return i("PeerConnection"),t&&t.iceTransportPolicy&&(t.iceTransports=t.iceTransportPolicy),new e.webkitRTCPeerConnection(t,n)},e.RTCPeerConnection.prototype=e.webkitRTCPeerConnection.prototype,e.webkitRTCPeerConnection.generateCertificate&&Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:function(){return e.webkitRTCPeerConnection.generateCertificate}})),e.RTCPeerConnection){var o=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(e,n,r){var i=this,a=arguments;if(arguments.length>0&&"function"==typeof e)return o.apply(this,arguments);if(0===o.length&&(0===arguments.length||"function"!=typeof arguments[0]))return o.apply(this,[]);var l=function(e){var t={};return e.result().forEach((function(e){var n={id:e.id,timestamp:e.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[e.type]||e.type};e.names().forEach((function(t){n[t]=e.stat(t)})),t[n.id]=n})),t},c=function(e){return new Map(Object.keys(e).map((function(t){return[t,e[t]]})))};if(arguments.length>=2){var s=function(e){a[1](c(l(e)))};return o.apply(this,[s,arguments[0]])}return new t((function(e,t){o.apply(i,[function(t){e(c(l(t)))},t])})).then(n,r)},n.version<51&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(n){var r=e.RTCPeerConnection.prototype[n];e.RTCPeerConnection.prototype[n]=function(){var e=arguments,n=this,i=new t((function(t,i){r.apply(n,[e[0],t,i])}));return e.length<2?i:i.then((function(){e[1].apply(null,[])}),(function(t){e.length>=3&&e[2].apply(null,[t])}))}})),n.version<52&&["createOffer","createAnswer"].forEach((function(n){var r=e.RTCPeerConnection.prototype[n];e.RTCPeerConnection.prototype[n]=function(){var e=this;if(arguments.length<1||1===arguments.length&&"object"==typeof arguments[0]){var n=1===arguments.length?arguments[0]:void 0;return new t((function(t,i){r.apply(e,[t,i,n])}))}return r.apply(this,arguments)}})),["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){var n=e.RTCPeerConnection.prototype[t];e.RTCPeerConnection.prototype[t]=function(){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),n.apply(this,arguments)}}));var a=e.RTCPeerConnection.prototype.addIceCandidate;e.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?a.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),t.resolve())}}},fixNegotiationNeeded:function(e){r.wrapPeerConnectionEvent(e,"negotiationneeded",(function(e){if("stable"===e.target.signalingState)return e}))},shimGetDisplayMedia:function(e,t){e.navigator&&e.navigator.mediaDevices&&!("getDisplayMedia"in e.navigator.mediaDevices)&&("function"==typeof t?(e.navigator.mediaDevices.getDisplayMedia=function(n){return t(n).then((function(t){var r=n.video&&n.video.width,i=n.video&&n.video.height,o=n.video&&n.video.frameRate;return n.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:t,maxFrameRate:o||3}},r&&(n.video.mandatory.maxWidth=r),i&&(n.video.mandatory.maxHeight=i),e.navigator.mediaDevices.getUserMedia(n)}))},e.navigator.getDisplayMedia=function(t){return r.deprecated("navigator.getDisplayMedia","navigator.mediaDevices.getDisplayMedia"),e.navigator.mediaDevices.getDisplayMedia(t)}):console.error("shimGetDisplayMedia: getSourceId argument is not a function"))}}}).call(this,n(2))},function(e,t,n){"use strict";(function(t){var r=n(32),i=r.log;e.exports=function(e){var n=r.detectBrowser(e),o=e&&e.navigator,a=function(e){if("object"!=typeof e||e.mandatory||e.optional)return e;var t={};return Object.keys(e).forEach((function(n){if("require"!==n&&"advanced"!==n&&"mediaSource"!==n){var r="object"==typeof e[n]?e[n]:{ideal:e[n]};void 0!==r.exact&&"number"==typeof r.exact&&(r.min=r.max=r.exact);var i=function(e,t){return e?e+t.charAt(0).toUpperCase()+t.slice(1):"deviceId"===t?"sourceId":t};if(void 0!==r.ideal){t.optional=t.optional||[];var o={};"number"==typeof r.ideal?(o[i("min",n)]=r.ideal,t.optional.push(o),(o={})[i("max",n)]=r.ideal,t.optional.push(o)):(o[i("",n)]=r.ideal,t.optional.push(o))}void 0!==r.exact&&"number"!=typeof r.exact?(t.mandatory=t.mandatory||{},t.mandatory[i("",n)]=r.exact):["min","max"].forEach((function(e){void 0!==r[e]&&(t.mandatory=t.mandatory||{},t.mandatory[i(e,n)]=r[e])}))}})),e.advanced&&(t.optional=(t.optional||[]).concat(e.advanced)),t},l=function(e,t){if(n.version>=61)return t(e);if((e=JSON.parse(JSON.stringify(e)))&&"object"==typeof e.audio){var r=function(e,t,n){t in e&&!(n in e)&&(e[n]=e[t],delete e[t])};r((e=JSON.parse(JSON.stringify(e))).audio,"autoGainControl","googAutoGainControl"),r(e.audio,"noiseSuppression","googNoiseSuppression"),e.audio=a(e.audio)}if(e&&"object"==typeof e.video){var l=e.video.facingMode;l=l&&("object"==typeof l?l:{ideal:l});var c,s=n.version<66;if(l&&("user"===l.exact||"environment"===l.exact||"user"===l.ideal||"environment"===l.ideal)&&(!o.mediaDevices.getSupportedConstraints||!o.mediaDevices.getSupportedConstraints().facingMode||s))if(delete e.video.facingMode,"environment"===l.exact||"environment"===l.ideal?c=["back","rear"]:"user"!==l.exact&&"user"!==l.ideal||(c=["front"]),c)return o.mediaDevices.enumerateDevices().then((function(n){var r=(n=n.filter((function(e){return"videoinput"===e.kind}))).find((function(e){return c.some((function(t){return-1!==e.label.toLowerCase().indexOf(t)}))}));return!r&&n.length&&-1!==c.indexOf("back")&&(r=n[n.length-1]),r&&(e.video.deviceId=l.exact?{exact:r.deviceId}:{ideal:r.deviceId}),e.video=a(e.video),i("chrome: "+JSON.stringify(e)),t(e)}));e.video=a(e.video)}return i("chrome: "+JSON.stringify(e)),t(e)},c=function(e){return n.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:function(){return this.name+(this.message&&": ")+this.message}}};o.getUserMedia=function(e,t,n){l(e,(function(e){o.webkitGetUserMedia(e,t,(function(e){n&&n(c(e))}))}))};var s=function(e){return new t((function(t,n){o.getUserMedia(e,t,n)}))};if(o.mediaDevices||(o.mediaDevices={getUserMedia:s,enumerateDevices:function(){return new t((function(t){var n={audio:"audioinput",video:"videoinput"};return e.MediaStreamTrack.getSources((function(e){t(e.map((function(e){return{label:e.label,kind:n[e.kind],deviceId:e.id,groupId:""}})))}))}))},getSupportedConstraints:function(){return{deviceId:!0,echoCancellation:!0,facingMode:!0,frameRate:!0,height:!0,width:!0}}}),o.mediaDevices.getUserMedia){var d=o.mediaDevices.getUserMedia.bind(o.mediaDevices);o.mediaDevices.getUserMedia=function(e){return l(e,(function(e){return d(e).then((function(t){if(e.audio&&!t.getAudioTracks().length||e.video&&!t.getVideoTracks().length)throw t.getTracks().forEach((function(e){e.stop()})),new DOMException("","NotFoundError");return t}),(function(e){return t.reject(c(e))}))}))}}else o.mediaDevices.getUserMedia=function(e){return s(e)};void 0===o.mediaDevices.addEventListener&&(o.mediaDevices.addEventListener=function(){i("Dummy mediaDevices.addEventListener called.")}),void 0===o.mediaDevices.removeEventListener&&(o.mediaDevices.removeEventListener=function(){i("Dummy mediaDevices.removeEventListener called.")})}}).call(this,n(2))},function(e,t,n){"use strict";var r=n(32),i=n(597),o=n(598);e.exports={shimGetUserMedia:n(599),shimPeerConnection:function(e){var t=r.detectBrowser(e);if(e.RTCIceGatherer&&(e.RTCIceCandidate||(e.RTCIceCandidate=function(e){return e}),e.RTCSessionDescription||(e.RTCSessionDescription=function(e){return e}),t.version<15025)){var n=Object.getOwnPropertyDescriptor(e.MediaStreamTrack.prototype,"enabled");Object.defineProperty(e.MediaStreamTrack.prototype,"enabled",{set:function(e){n.set.call(this,e);var t=new Event("enabled");t.enabled=e,this.dispatchEvent(t)}})}e.RTCRtpSender&&!("dtmf"in e.RTCRtpSender.prototype)&&Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get:function(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=new e.RTCDtmfSender(this):"video"===this.track.kind&&(this._dtmf=null)),this._dtmf}}),e.RTCDtmfSender&&!e.RTCDTMFSender&&(e.RTCDTMFSender=e.RTCDtmfSender);var a=o(e,t.version);e.RTCPeerConnection=function(e){return e&&e.iceServers&&(e.iceServers=i(e.iceServers)),new a(e)},e.RTCPeerConnection.prototype=a.prototype},shimReplaceTrack:function(e){e.RTCRtpSender&&!("replaceTrack"in e.RTCRtpSender.prototype)&&(e.RTCRtpSender.prototype.replaceTrack=e.RTCRtpSender.prototype.setTrack)},shimGetDisplayMedia:function(e,t){if("getDisplayMedia"in e.navigator&&e.navigator.mediaDevices&&!("getDisplayMedia"in e.navigator.mediaDevices)){var n=e.navigator.getDisplayMedia;e.navigator.mediaDevices.getDisplayMedia=function(t){return n.call(e.navigator,t)},e.navigator.getDisplayMedia=function(t){return r.deprecated("navigator.getDisplayMedia","navigator.mediaDevices.getDisplayMedia"),n.call(e.navigator,t)}}}}},function(e,t,n){"use strict";var r=n(32);e.exports=function(e,t){var n=!1;return(e=JSON.parse(JSON.stringify(e))).filter((function(e){if(e&&(e.urls||e.url)){var i=e.urls||e.url;e.url&&!e.urls&&r.deprecated("RTCIceServer.url","RTCIceServer.urls");var o="string"==typeof i;return o&&(i=[i]),i=i.filter((function(e){return 0===e.indexOf("turn:")&&-1!==e.indexOf("transport=udp")&&-1===e.indexOf("turn:[")&&!n?(n=!0,!0):0===e.indexOf("stun:")&&t>=14393&&-1===e.indexOf("?transport=udp")})),delete e.url,e.urls=o?i[0]:i,!!i.length}}))}},function(e,t,n){"use strict";(function(t){var r=n(275);function i(e,t,n,i,o){var a=r.writeRtpDescription(e.kind,t);if(a+=r.writeIceParameters(e.iceGatherer.getLocalParameters()),a+=r.writeDtlsParameters(e.dtlsTransport.getLocalParameters(),"offer"===n?"actpass":o||"active"),a+="a=mid:"+e.mid+"\r\n",e.rtpSender&&e.rtpReceiver?a+="a=sendrecv\r\n":e.rtpSender?a+="a=sendonly\r\n":e.rtpReceiver?a+="a=recvonly\r\n":a+="a=inactive\r\n",e.rtpSender){var l=e.rtpSender._initialTrackId||e.rtpSender.track.id;e.rtpSender._initialTrackId=l;var c="msid:"+(i?i.id:"-")+" "+l+"\r\n";a+="a="+c,a+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" "+c,e.sendEncodingParameters[0].rtx&&(a+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" "+c,a+="a=ssrc-group:FID "+e.sendEncodingParameters[0].ssrc+" "+e.sendEncodingParameters[0].rtx.ssrc+"\r\n")}return a+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" cname:"+r.localCName+"\r\n",e.rtpSender&&e.sendEncodingParameters[0].rtx&&(a+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" cname:"+r.localCName+"\r\n"),a}function o(e,t){var n={codecs:[],headerExtensions:[],fecMechanisms:[]},r=function(e,t){e=parseInt(e,10);for(var n=0;n<t.length;n++)if(t[n].payloadType===e||t[n].preferredPayloadType===e)return t[n]},i=function(e,t,n,i){var o=r(e.parameters.apt,n),a=r(t.parameters.apt,i);return o&&a&&o.name.toLowerCase()===a.name.toLowerCase()};return e.codecs.forEach((function(r){for(var o=0;o<t.codecs.length;o++){var a=t.codecs[o];if(r.name.toLowerCase()===a.name.toLowerCase()&&r.clockRate===a.clockRate){if("rtx"===r.name.toLowerCase()&&r.parameters&&a.parameters.apt&&!i(r,a,e.codecs,t.codecs))continue;(a=JSON.parse(JSON.stringify(a))).numChannels=Math.min(r.numChannels,a.numChannels),n.codecs.push(a),a.rtcpFeedback=a.rtcpFeedback.filter((function(e){for(var t=0;t<r.rtcpFeedback.length;t++)if(r.rtcpFeedback[t].type===e.type&&r.rtcpFeedback[t].parameter===e.parameter)return!0;return!1}));break}}})),e.headerExtensions.forEach((function(e){for(var r=0;r<t.headerExtensions.length;r++){var i=t.headerExtensions[r];if(e.uri===i.uri){n.headerExtensions.push(i);break}}})),n}function a(e,t,n){return-1!=={offer:{setLocalDescription:["stable","have-local-offer"],setRemoteDescription:["stable","have-remote-offer"]},answer:{setLocalDescription:["have-remote-offer","have-local-pranswer"],setRemoteDescription:["have-local-offer","have-remote-pranswer"]}}[t][e].indexOf(n)}function l(e,t){var n=e.getRemoteCandidates().find((function(e){return t.foundation===e.foundation&&t.ip===e.ip&&t.port===e.port&&t.priority===e.priority&&t.protocol===e.protocol&&t.type===e.type}));return n||e.addRemoteCandidate(t),!n}function c(e,t){var n=new Error(t);return n.name=e,n.code={NotSupportedError:9,InvalidStateError:11,InvalidAccessError:15,TypeError:void 0,OperationError:void 0}[e],n}e.exports=function(e,n){function s(t,n){n.addTrack(t),n.dispatchEvent(new e.MediaStreamTrackEvent("addtrack",{track:t}))}function d(t,n,r,i){var o=new Event("track");o.track=n,o.receiver=r,o.transceiver={receiver:r},o.streams=i,e.setTimeout((function(){t._dispatchEvent("track",o)}))}var u=function(t){var i=this,o=document.createDocumentFragment();if(["addEventListener","removeEventListener","dispatchEvent"].forEach((function(e){i[e]=o[e].bind(o)})),this.canTrickleIceCandidates=null,this.needNegotiation=!1,this.localStreams=[],this.remoteStreams=[],this._localDescription=null,this._remoteDescription=null,this.signalingState="stable",this.iceConnectionState="new",this.connectionState="new",this.iceGatheringState="new",t=JSON.parse(JSON.stringify(t||{})),this.usingBundle="max-bundle"===t.bundlePolicy,"negotiate"===t.rtcpMuxPolicy)throw c("NotSupportedError","rtcpMuxPolicy 'negotiate' is not supported");switch(t.rtcpMuxPolicy||(t.rtcpMuxPolicy="require"),t.iceTransportPolicy){case"all":case"relay":break;default:t.iceTransportPolicy="all"}switch(t.bundlePolicy){case"balanced":case"max-compat":case"max-bundle":break;default:t.bundlePolicy="balanced"}if(t.iceServers=function(e,t){var n=!1;return(e=JSON.parse(JSON.stringify(e))).filter((function(e){if(e&&(e.urls||e.url)){var r=e.urls||e.url;e.url&&!e.urls&&console.warn("RTCIceServer.url is deprecated! Use urls instead.");var i="string"==typeof r;return i&&(r=[r]),r=r.filter((function(e){return 0===e.indexOf("turn:")&&-1!==e.indexOf("transport=udp")&&-1===e.indexOf("turn:[")&&!n?(n=!0,!0):0===e.indexOf("stun:")&&t>=14393&&-1===e.indexOf("?transport=udp")})),delete e.url,e.urls=i?r[0]:r,!!r.length}}))}(t.iceServers||[],n),this._iceGatherers=[],t.iceCandidatePoolSize)for(var a=t.iceCandidatePoolSize;a>0;a--)this._iceGatherers.push(new e.RTCIceGatherer({iceServers:t.iceServers,gatherPolicy:t.iceTransportPolicy}));else t.iceCandidatePoolSize=0;this._config=t,this.transceivers=[],this._sdpSessionId=r.generateSessionId(),this._sdpSessionVersion=0,this._dtlsRole=void 0,this._isClosed=!1};Object.defineProperty(u.prototype,"localDescription",{configurable:!0,get:function(){return this._localDescription}}),Object.defineProperty(u.prototype,"remoteDescription",{configurable:!0,get:function(){return this._remoteDescription}}),u.prototype.onicecandidate=null,u.prototype.onaddstream=null,u.prototype.ontrack=null,u.prototype.onremovestream=null,u.prototype.onsignalingstatechange=null,u.prototype.oniceconnectionstatechange=null,u.prototype.onconnectionstatechange=null,u.prototype.onicegatheringstatechange=null,u.prototype.onnegotiationneeded=null,u.prototype.ondatachannel=null,u.prototype._dispatchEvent=function(e,t){this._isClosed||(this.dispatchEvent(t),"function"==typeof this["on"+e]&&this["on"+e](t))},u.prototype._emitGatheringStateChange=function(){var e=new Event("icegatheringstatechange");this._dispatchEvent("icegatheringstatechange",e)},u.prototype.getConfiguration=function(){return this._config},u.prototype.getLocalStreams=function(){return this.localStreams},u.prototype.getRemoteStreams=function(){return this.remoteStreams},u.prototype._createTransceiver=function(e,t){var n=this.transceivers.length>0,r={track:null,iceGatherer:null,iceTransport:null,dtlsTransport:null,localCapabilities:null,remoteCapabilities:null,rtpSender:null,rtpReceiver:null,kind:e,mid:null,sendEncodingParameters:null,recvEncodingParameters:null,stream:null,associatedRemoteMediaStreams:[],wantReceive:!0};if(this.usingBundle&&n)r.iceTransport=this.transceivers[0].iceTransport,r.dtlsTransport=this.transceivers[0].dtlsTransport;else{var i=this._createIceAndDtlsTransports();r.iceTransport=i.iceTransport,r.dtlsTransport=i.dtlsTransport}return t||this.transceivers.push(r),r},u.prototype.addTrack=function(t,n){if(this._isClosed)throw c("InvalidStateError","Attempted to call addTrack on a closed peerconnection.");var r;if(this.transceivers.find((function(e){return e.track===t})))throw c("InvalidAccessError","Track already exists.");for(var i=0;i<this.transceivers.length;i++)this.transceivers[i].track||this.transceivers[i].kind!==t.kind||(r=this.transceivers[i]);return r||(r=this._createTransceiver(t.kind)),this._maybeFireNegotiationNeeded(),-1===this.localStreams.indexOf(n)&&this.localStreams.push(n),r.track=t,r.stream=n,r.rtpSender=new e.RTCRtpSender(t,r.dtlsTransport),r.rtpSender},u.prototype.addStream=function(e){var t=this;if(n>=15025)e.getTracks().forEach((function(n){t.addTrack(n,e)}));else{var r=e.clone();e.getTracks().forEach((function(e,t){var n=r.getTracks()[t];e.addEventListener("enabled",(function(e){n.enabled=e.enabled}))})),r.getTracks().forEach((function(e){t.addTrack(e,r)}))}},u.prototype.removeTrack=function(t){if(this._isClosed)throw c("InvalidStateError","Attempted to call removeTrack on a closed peerconnection.");if(!(t instanceof e.RTCRtpSender))throw new TypeError("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.");var n=this.transceivers.find((function(e){return e.rtpSender===t}));if(!n)throw c("InvalidAccessError","Sender was not created by this connection.");var r=n.stream;n.rtpSender.stop(),n.rtpSender=null,n.track=null,n.stream=null,-1===this.transceivers.map((function(e){return e.stream})).indexOf(r)&&this.localStreams.indexOf(r)>-1&&this.localStreams.splice(this.localStreams.indexOf(r),1),this._maybeFireNegotiationNeeded()},u.prototype.removeStream=function(e){var t=this;e.getTracks().forEach((function(e){var n=t.getSenders().find((function(t){return t.track===e}));n&&t.removeTrack(n)}))},u.prototype.getSenders=function(){return this.transceivers.filter((function(e){return!!e.rtpSender})).map((function(e){return e.rtpSender}))},u.prototype.getReceivers=function(){return this.transceivers.filter((function(e){return!!e.rtpReceiver})).map((function(e){return e.rtpReceiver}))},u.prototype._createIceGatherer=function(t,n){var r=this;if(n&&t>0)return this.transceivers[0].iceGatherer;if(this._iceGatherers.length)return this._iceGatherers.shift();var i=new e.RTCIceGatherer({iceServers:this._config.iceServers,gatherPolicy:this._config.iceTransportPolicy});return Object.defineProperty(i,"state",{value:"new",writable:!0}),this.transceivers[t].bufferedCandidateEvents=[],this.transceivers[t].bufferCandidates=function(e){var n=!e.candidate||0===Object.keys(e.candidate).length;i.state=n?"completed":"gathering",null!==r.transceivers[t].bufferedCandidateEvents&&r.transceivers[t].bufferedCandidateEvents.push(e)},i.addEventListener("localcandidate",this.transceivers[t].bufferCandidates),i},u.prototype._gather=function(t,n){var i=this,o=this.transceivers[n].iceGatherer;if(!o.onlocalcandidate){var a=this.transceivers[n].bufferedCandidateEvents;this.transceivers[n].bufferedCandidateEvents=null,o.removeEventListener("localcandidate",this.transceivers[n].bufferCandidates),o.onlocalcandidate=function(e){if(!(i.usingBundle&&n>0)){var a=new Event("icecandidate");a.candidate={sdpMid:t,sdpMLineIndex:n};var l=e.candidate,c=!l||0===Object.keys(l).length;if(c)"new"!==o.state&&"gathering"!==o.state||(o.state="completed");else{"new"===o.state&&(o.state="gathering"),l.component=1,l.ufrag=o.getLocalParameters().usernameFragment;var s=r.writeCandidate(l);a.candidate=Object.assign(a.candidate,r.parseCandidate(s)),a.candidate.candidate=s,a.candidate.toJSON=function(){return{candidate:a.candidate.candidate,sdpMid:a.candidate.sdpMid,sdpMLineIndex:a.candidate.sdpMLineIndex,usernameFragment:a.candidate.usernameFragment}}}var d=r.getMediaSections(i._localDescription.sdp);d[a.candidate.sdpMLineIndex]+=c?"a=end-of-candidates\r\n":"a="+a.candidate.candidate+"\r\n",i._localDescription.sdp=r.getDescription(i._localDescription.sdp)+d.join("");var u=i.transceivers.every((function(e){return e.iceGatherer&&"completed"===e.iceGatherer.state}));"gathering"!==i.iceGatheringState&&(i.iceGatheringState="gathering",i._emitGatheringStateChange()),c||i._dispatchEvent("icecandidate",a),u&&(i._dispatchEvent("icecandidate",new Event("icecandidate")),i.iceGatheringState="complete",i._emitGatheringStateChange())}},e.setTimeout((function(){a.forEach((function(e){o.onlocalcandidate(e)}))}),0)}},u.prototype._createIceAndDtlsTransports=function(){var t=this,n=new e.RTCIceTransport(null);n.onicestatechange=function(){t._updateIceConnectionState(),t._updateConnectionState()};var r=new e.RTCDtlsTransport(n);return r.ondtlsstatechange=function(){t._updateConnectionState()},r.onerror=function(){Object.defineProperty(r,"state",{value:"failed",writable:!0}),t._updateConnectionState()},{iceTransport:n,dtlsTransport:r}},u.prototype._disposeIceAndDtlsTransports=function(e){var t=this.transceivers[e].iceGatherer;t&&(delete t.onlocalcandidate,delete this.transceivers[e].iceGatherer);var n=this.transceivers[e].iceTransport;n&&(delete n.onicestatechange,delete this.transceivers[e].iceTransport);var r=this.transceivers[e].dtlsTransport;r&&(delete r.ondtlsstatechange,delete r.onerror,delete this.transceivers[e].dtlsTransport)},u.prototype._transceive=function(e,t,i){var a=o(e.localCapabilities,e.remoteCapabilities);t&&e.rtpSender&&(a.encodings=e.sendEncodingParameters,a.rtcp={cname:r.localCName,compound:e.rtcpParameters.compound},e.recvEncodingParameters.length&&(a.rtcp.ssrc=e.recvEncodingParameters[0].ssrc),e.rtpSender.send(a)),i&&e.rtpReceiver&&a.codecs.length>0&&("video"===e.kind&&e.recvEncodingParameters&&n<15019&&e.recvEncodingParameters.forEach((function(e){delete e.rtx})),e.recvEncodingParameters.length?a.encodings=e.recvEncodingParameters:a.encodings=[{}],a.rtcp={compound:e.rtcpParameters.compound},e.rtcpParameters.cname&&(a.rtcp.cname=e.rtcpParameters.cname),e.sendEncodingParameters.length&&(a.rtcp.ssrc=e.sendEncodingParameters[0].ssrc),e.rtpReceiver.receive(a))},u.prototype.setLocalDescription=function(e){var n,i,l=this;if(-1===["offer","answer"].indexOf(e.type))return t.reject(c("TypeError",'Unsupported type "'+e.type+'"'));if(!a("setLocalDescription",e.type,l.signalingState)||l._isClosed)return t.reject(c("InvalidStateError","Can not set local "+e.type+" in state "+l.signalingState));if("offer"===e.type)n=r.splitSections(e.sdp),i=n.shift(),n.forEach((function(e,t){var n=r.parseRtpParameters(e);l.transceivers[t].localCapabilities=n})),l.transceivers.forEach((function(e,t){l._gather(e.mid,t)}));else if("answer"===e.type){n=r.splitSections(l._remoteDescription.sdp),i=n.shift();var s=r.matchPrefix(i,"a=ice-lite").length>0;n.forEach((function(e,t){var n=l.transceivers[t],a=n.iceGatherer,c=n.iceTransport,d=n.dtlsTransport,u=n.localCapabilities,A=n.remoteCapabilities;if(!(r.isRejected(e)&&0===r.matchPrefix(e,"a=bundle-only").length)&&!n.rejected){var h=r.getIceParameters(e,i),g=r.getDtlsParameters(e,i);s&&(g.role="server"),l.usingBundle&&0!==t||(l._gather(n.mid,t),"new"===c.state&&c.start(a,h,s?"controlling":"controlled"),"new"===d.state&&d.start(g));var F=o(u,A);l._transceive(n,F.codecs.length>0,!1)}}))}return l._localDescription={type:e.type,sdp:e.sdp},"offer"===e.type?l._updateSignalingState("have-local-offer"):l._updateSignalingState("stable"),t.resolve()},u.prototype.setRemoteDescription=function(i){var u=this;if(-1===["offer","answer"].indexOf(i.type))return t.reject(c("TypeError",'Unsupported type "'+i.type+'"'));if(!a("setRemoteDescription",i.type,u.signalingState)||u._isClosed)return t.reject(c("InvalidStateError","Can not set remote "+i.type+" in state "+u.signalingState));var A={};u.remoteStreams.forEach((function(e){A[e.id]=e}));var h=[],g=r.splitSections(i.sdp),F=g.shift(),Q=r.matchPrefix(F,"a=ice-lite").length>0,p=r.matchPrefix(F,"a=group:BUNDLE ").length>0;u.usingBundle=p;var m=r.matchPrefix(F,"a=ice-options:")[0];return u.canTrickleIceCandidates=!!m&&m.substr(14).split(" ").indexOf("trickle")>=0,g.forEach((function(t,a){var c=r.splitLines(t),d=r.getKind(t),g=r.isRejected(t)&&0===r.matchPrefix(t,"a=bundle-only").length,m=c[0].substr(2).split(" ")[2],U=r.getDirection(t,F),b=r.parseMsid(t),Z=r.getMid(t)||r.generateIdentifier();if(g||"application"===d&&("DTLS/SCTP"===m||"UDP/DTLS/SCTP"===m))u.transceivers[a]={mid:Z,kind:d,protocol:m,rejected:!0};else{var B,f,R,I,y,V,C,W,E;!g&&u.transceivers[a]&&u.transceivers[a].rejected&&(u.transceivers[a]=u._createTransceiver(d,!0));var v,S,J=r.parseRtpParameters(t);g||(v=r.getIceParameters(t,F),(S=r.getDtlsParameters(t,F)).role="client"),C=r.parseRtpEncodingParameters(t);var G=r.parseRtcpParameters(t),N=r.matchPrefix(t,"a=end-of-candidates",F).length>0,X=r.matchPrefix(t,"a=candidate:").map((function(e){return r.parseCandidate(e)})).filter((function(e){return 1===e.component}));if(("offer"===i.type||"answer"===i.type)&&!g&&p&&a>0&&u.transceivers[a]&&(u._disposeIceAndDtlsTransports(a),u.transceivers[a].iceGatherer=u.transceivers[0].iceGatherer,u.transceivers[a].iceTransport=u.transceivers[0].iceTransport,u.transceivers[a].dtlsTransport=u.transceivers[0].dtlsTransport,u.transceivers[a].rtpSender&&u.transceivers[a].rtpSender.setTransport(u.transceivers[0].dtlsTransport),u.transceivers[a].rtpReceiver&&u.transceivers[a].rtpReceiver.setTransport(u.transceivers[0].dtlsTransport)),"offer"!==i.type||g){if("answer"===i.type&&!g){f=(B=u.transceivers[a]).iceGatherer,R=B.iceTransport,I=B.dtlsTransport,y=B.rtpReceiver,V=B.sendEncodingParameters,W=B.localCapabilities,u.transceivers[a].recvEncodingParameters=C,u.transceivers[a].remoteCapabilities=J,u.transceivers[a].rtcpParameters=G,X.length&&"new"===R.state&&(!Q&&!N||p&&0!==a?X.forEach((function(e){l(B.iceTransport,e)})):R.setRemoteCandidates(X)),p&&0!==a||("new"===R.state&&R.start(f,v,"controlling"),"new"===I.state&&I.start(S)),!o(B.localCapabilities,B.remoteCapabilities).codecs.filter((function(e){return"rtx"===e.name.toLowerCase()})).length&&B.sendEncodingParameters[0].rtx&&delete B.sendEncodingParameters[0].rtx,u._transceive(B,"sendrecv"===U||"recvonly"===U,"sendrecv"===U||"sendonly"===U),!y||"sendrecv"!==U&&"sendonly"!==U?delete B.rtpReceiver:(E=y.track,b?(A[b.stream]||(A[b.stream]=new e.MediaStream),s(E,A[b.stream]),h.push([E,y,A[b.stream]])):(A.default||(A.default=new e.MediaStream),s(E,A.default),h.push([E,y,A.default])))}}else{(B=u.transceivers[a]||u._createTransceiver(d)).mid=Z,B.iceGatherer||(B.iceGatherer=u._createIceGatherer(a,p)),X.length&&"new"===B.iceTransport.state&&(!N||p&&0!==a?X.forEach((function(e){l(B.iceTransport,e)})):B.iceTransport.setRemoteCandidates(X)),W=e.RTCRtpReceiver.getCapabilities(d),n<15019&&(W.codecs=W.codecs.filter((function(e){return"rtx"!==e.name}))),V=B.sendEncodingParameters||[{ssrc:1001*(2*a+2)}];var k,T=!1;if("sendrecv"===U||"sendonly"===U){if(T=!B.rtpReceiver,y=B.rtpReceiver||new e.RTCRtpReceiver(B.dtlsTransport,d),T)E=y.track,b&&"-"===b.stream||(b?(A[b.stream]||(A[b.stream]=new e.MediaStream,Object.defineProperty(A[b.stream],"id",{get:function(){return b.stream}})),Object.defineProperty(E,"id",{get:function(){return b.track}}),k=A[b.stream]):(A.default||(A.default=new e.MediaStream),k=A.default)),k&&(s(E,k),B.associatedRemoteMediaStreams.push(k)),h.push([E,y,k])}else B.rtpReceiver&&B.rtpReceiver.track&&(B.associatedRemoteMediaStreams.forEach((function(t){var n=t.getTracks().find((function(e){return e.id===B.rtpReceiver.track.id}));n&&function(t,n){n.removeTrack(t),n.dispatchEvent(new e.MediaStreamTrackEvent("removetrack",{track:t}))}(n,t)})),B.associatedRemoteMediaStreams=[]);B.localCapabilities=W,B.remoteCapabilities=J,B.rtpReceiver=y,B.rtcpParameters=G,B.sendEncodingParameters=V,B.recvEncodingParameters=C,u._transceive(u.transceivers[a],!1,T)}}})),void 0===u._dtlsRole&&(u._dtlsRole="offer"===i.type?"active":"passive"),u._remoteDescription={type:i.type,sdp:i.sdp},"offer"===i.type?u._updateSignalingState("have-remote-offer"):u._updateSignalingState("stable"),Object.keys(A).forEach((function(t){var n=A[t];if(n.getTracks().length){if(-1===u.remoteStreams.indexOf(n)){u.remoteStreams.push(n);var r=new Event("addstream");r.stream=n,e.setTimeout((function(){u._dispatchEvent("addstream",r)}))}h.forEach((function(e){var t=e[0],r=e[1];n.id===e[2].id&&d(u,t,r,[n])}))}})),h.forEach((function(e){e[2]||d(u,e[0],e[1],[])})),e.setTimeout((function(){u&&u.transceivers&&u.transceivers.forEach((function(e){e.iceTransport&&"new"===e.iceTransport.state&&e.iceTransport.getRemoteCandidates().length>0&&(console.warn("Timeout for addRemoteCandidate. Consider sending an end-of-candidates notification"),e.iceTransport.addRemoteCandidate({}))}))}),4e3),t.resolve()},u.prototype.close=function(){this.transceivers.forEach((function(e){e.iceTransport&&e.iceTransport.stop(),e.dtlsTransport&&e.dtlsTransport.stop(),e.rtpSender&&e.rtpSender.stop(),e.rtpReceiver&&e.rtpReceiver.stop()})),this._isClosed=!0,this._updateSignalingState("closed")},u.prototype._updateSignalingState=function(e){this.signalingState=e;var t=new Event("signalingstatechange");this._dispatchEvent("signalingstatechange",t)},u.prototype._maybeFireNegotiationNeeded=function(){var t=this;"stable"===this.signalingState&&!0!==this.needNegotiation&&(this.needNegotiation=!0,e.setTimeout((function(){if(t.needNegotiation){t.needNegotiation=!1;var e=new Event("negotiationneeded");t._dispatchEvent("negotiationneeded",e)}}),0))},u.prototype._updateIceConnectionState=function(){var e,t={new:0,closed:0,checking:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach((function(e){e.iceTransport&&!e.rejected&&t[e.iceTransport.state]++})),e="new",t.failed>0?e="failed":t.checking>0?e="checking":t.disconnected>0?e="disconnected":t.new>0?e="new":t.connected>0?e="connected":t.completed>0&&(e="completed"),e!==this.iceConnectionState){this.iceConnectionState=e;var n=new Event("iceconnectionstatechange");this._dispatchEvent("iceconnectionstatechange",n)}},u.prototype._updateConnectionState=function(){var e,t={new:0,closed:0,connecting:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach((function(e){e.iceTransport&&e.dtlsTransport&&!e.rejected&&(t[e.iceTransport.state]++,t[e.dtlsTransport.state]++)})),t.connected+=t.completed,e="new",t.failed>0?e="failed":t.connecting>0?e="connecting":t.disconnected>0?e="disconnected":t.new>0?e="new":t.connected>0&&(e="connected"),e!==this.connectionState){this.connectionState=e;var n=new Event("connectionstatechange");this._dispatchEvent("connectionstatechange",n)}},u.prototype.createOffer=function(){var o=this;if(o._isClosed)return t.reject(c("InvalidStateError","Can not call createOffer after close"));var a=o.transceivers.filter((function(e){return"audio"===e.kind})).length,l=o.transceivers.filter((function(e){return"video"===e.kind})).length,s=arguments[0];if(s){if(s.mandatory||s.optional)throw new TypeError("Legacy mandatory/optional constraints not supported.");void 0!==s.offerToReceiveAudio&&(a=!0===s.offerToReceiveAudio?1:!1===s.offerToReceiveAudio?0:s.offerToReceiveAudio),void 0!==s.offerToReceiveVideo&&(l=!0===s.offerToReceiveVideo?1:!1===s.offerToReceiveVideo?0:s.offerToReceiveVideo)}for(o.transceivers.forEach((function(e){"audio"===e.kind?--a<0&&(e.wantReceive=!1):"video"===e.kind&&--l<0&&(e.wantReceive=!1)}));a>0||l>0;)a>0&&(o._createTransceiver("audio"),a--),l>0&&(o._createTransceiver("video"),l--);var d=r.writeSessionBoilerplate(o._sdpSessionId,o._sdpSessionVersion++);o.transceivers.forEach((function(t,i){var a=t.track,l=t.kind,c=t.mid||r.generateIdentifier();t.mid=c,t.iceGatherer||(t.iceGatherer=o._createIceGatherer(i,o.usingBundle));var s=e.RTCRtpSender.getCapabilities(l);n<15019&&(s.codecs=s.codecs.filter((function(e){return"rtx"!==e.name}))),s.codecs.forEach((function(e){"H264"===e.name&&void 0===e.parameters["level-asymmetry-allowed"]&&(e.parameters["level-asymmetry-allowed"]="1"),t.remoteCapabilities&&t.remoteCapabilities.codecs&&t.remoteCapabilities.codecs.forEach((function(t){e.name.toLowerCase()===t.name.toLowerCase()&&e.clockRate===t.clockRate&&(e.preferredPayloadType=t.payloadType)}))})),s.headerExtensions.forEach((function(e){(t.remoteCapabilities&&t.remoteCapabilities.headerExtensions||[]).forEach((function(t){e.uri===t.uri&&(e.id=t.id)}))}));var d=t.sendEncodingParameters||[{ssrc:1001*(2*i+1)}];a&&n>=15019&&"video"===l&&!d[0].rtx&&(d[0].rtx={ssrc:d[0].ssrc+1}),t.wantReceive&&(t.rtpReceiver=new e.RTCRtpReceiver(t.dtlsTransport,l)),t.localCapabilities=s,t.sendEncodingParameters=d})),"max-compat"!==o._config.bundlePolicy&&(d+="a=group:BUNDLE "+o.transceivers.map((function(e){return e.mid})).join(" ")+"\r\n"),d+="a=ice-options:trickle\r\n",o.transceivers.forEach((function(e,t){d+=i(e,e.localCapabilities,"offer",e.stream,o._dtlsRole),d+="a=rtcp-rsize\r\n",!e.iceGatherer||"new"===o.iceGatheringState||0!==t&&o.usingBundle||(e.iceGatherer.getLocalCandidates().forEach((function(e){e.component=1,d+="a="+r.writeCandidate(e)+"\r\n"})),"completed"===e.iceGatherer.state&&(d+="a=end-of-candidates\r\n"))}));var u=new e.RTCSessionDescription({type:"offer",sdp:d});return t.resolve(u)},u.prototype.createAnswer=function(){var a=this;if(a._isClosed)return t.reject(c("InvalidStateError","Can not call createAnswer after close"));if("have-remote-offer"!==a.signalingState&&"have-local-pranswer"!==a.signalingState)return t.reject(c("InvalidStateError","Can not call createAnswer in signalingState "+a.signalingState));var l=r.writeSessionBoilerplate(a._sdpSessionId,a._sdpSessionVersion++);a.usingBundle&&(l+="a=group:BUNDLE "+a.transceivers.map((function(e){return e.mid})).join(" ")+"\r\n"),l+="a=ice-options:trickle\r\n";var s=r.getMediaSections(a._remoteDescription.sdp).length;a.transceivers.forEach((function(e,t){if(!(t+1>s)){if(e.rejected)return"application"===e.kind?"DTLS/SCTP"===e.protocol?l+="m=application 0 DTLS/SCTP 5000\r\n":l+="m=application 0 "+e.protocol+" webrtc-datachannel\r\n":"audio"===e.kind?l+="m=audio 0 UDP/TLS/RTP/SAVPF 0\r\na=rtpmap:0 PCMU/8000\r\n":"video"===e.kind&&(l+="m=video 0 UDP/TLS/RTP/SAVPF 120\r\na=rtpmap:120 VP8/90000\r\n"),void(l+="c=IN IP4 0.0.0.0\r\na=inactive\r\na=mid:"+e.mid+"\r\n");var r;if(e.stream)"audio"===e.kind?r=e.stream.getAudioTracks()[0]:"video"===e.kind&&(r=e.stream.getVideoTracks()[0]),r&&n>=15019&&"video"===e.kind&&!e.sendEncodingParameters[0].rtx&&(e.sendEncodingParameters[0].rtx={ssrc:e.sendEncodingParameters[0].ssrc+1});var c=o(e.localCapabilities,e.remoteCapabilities);!c.codecs.filter((function(e){return"rtx"===e.name.toLowerCase()})).length&&e.sendEncodingParameters[0].rtx&&delete e.sendEncodingParameters[0].rtx,l+=i(e,c,"answer",e.stream,a._dtlsRole),e.rtcpParameters&&e.rtcpParameters.reducedSize&&(l+="a=rtcp-rsize\r\n")}}));var d=new e.RTCSessionDescription({type:"answer",sdp:l});return t.resolve(d)},u.prototype.addIceCandidate=function(e){var n,i=this;return e&&void 0===e.sdpMLineIndex&&!e.sdpMid?t.reject(new TypeError("sdpMLineIndex or sdpMid required")):new t((function(t,o){if(!i._remoteDescription)return o(c("InvalidStateError","Can not add ICE candidate without a remote description"));if(e&&""!==e.candidate){var a=e.sdpMLineIndex;if(e.sdpMid)for(var s=0;s<i.transceivers.length;s++)if(i.transceivers[s].mid===e.sdpMid){a=s;break}var d=i.transceivers[a];if(!d)return o(c("OperationError","Can not add ICE candidate"));if(d.rejected)return t();var u=Object.keys(e.candidate).length>0?r.parseCandidate(e.candidate):{};if("tcp"===u.protocol&&(0===u.port||9===u.port))return t();if(u.component&&1!==u.component)return t();if((0===a||a>0&&d.iceTransport!==i.transceivers[0].iceTransport)&&!l(d.iceTransport,u))return o(c("OperationError","Can not add ICE candidate"));var A=e.candidate.trim();0===A.indexOf("a=")&&(A=A.substr(2)),(n=r.getMediaSections(i._remoteDescription.sdp))[a]+="a="+(u.type?A:"end-of-candidates")+"\r\n",i._remoteDescription.sdp=r.getDescription(i._remoteDescription.sdp)+n.join("")}else for(var h=0;h<i.transceivers.length&&(i.transceivers[h].rejected||(i.transceivers[h].iceTransport.addRemoteCandidate({}),(n=r.getMediaSections(i._remoteDescription.sdp))[h]+="a=end-of-candidates\r\n",i._remoteDescription.sdp=r.getDescription(i._remoteDescription.sdp)+n.join(""),!i.usingBundle));h++);t()}))},u.prototype.getStats=function(n){if(n&&n instanceof e.MediaStreamTrack){var r=null;if(this.transceivers.forEach((function(e){e.rtpSender&&e.rtpSender.track===n?r=e.rtpSender:e.rtpReceiver&&e.rtpReceiver.track===n&&(r=e.rtpReceiver)})),!r)throw c("InvalidAccessError","Invalid selector.");return r.getStats()}var i=[];return this.transceivers.forEach((function(e){["rtpSender","rtpReceiver","iceGatherer","iceTransport","dtlsTransport"].forEach((function(t){e[t]&&i.push(e[t].getStats())}))})),t.all(i).then((function(e){var t=new Map;return e.forEach((function(e){e.forEach((function(e){t.set(e.id,e)}))})),t}))};["RTCRtpSender","RTCRtpReceiver","RTCIceGatherer","RTCIceTransport","RTCDtlsTransport"].forEach((function(t){var n=e[t];if(n&&n.prototype&&n.prototype.getStats){var r=n.prototype.getStats;n.prototype.getStats=function(){return r.apply(this).then((function(e){var t=new Map;return Object.keys(e).forEach((function(n){var r;e[n].type={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[(r=e[n]).type]||r.type,t.set(n,e[n])})),t}))}}}));var A=["createOffer","createAnswer"];return A.forEach((function(e){var t=u.prototype[e];u.prototype[e]=function(){var e=arguments;return"function"==typeof e[0]||"function"==typeof e[1]?t.apply(this,[arguments[2]]).then((function(t){"function"==typeof e[0]&&e[0].apply(null,[t])}),(function(t){"function"==typeof e[1]&&e[1].apply(null,[t])})):t.apply(this,arguments)}})),(A=["setLocalDescription","setRemoteDescription","addIceCandidate"]).forEach((function(e){var t=u.prototype[e];u.prototype[e]=function(){var e=arguments;return"function"==typeof e[1]||"function"==typeof e[2]?t.apply(this,arguments).then((function(){"function"==typeof e[1]&&e[1].apply(null)}),(function(t){"function"==typeof e[2]&&e[2].apply(null,[t])})):t.apply(this,arguments)}})),["getStats"].forEach((function(e){var t=u.prototype[e];u.prototype[e]=function(){var e=arguments;return"function"==typeof e[1]?t.apply(this,arguments).then((function(){"function"==typeof e[1]&&e[1].apply(null)})):t.apply(this,arguments)}})),u}}).call(this,n(2))},function(e,t,n){"use strict";(function(t){e.exports=function(e){var n=e&&e.navigator,r=n.mediaDevices.getUserMedia.bind(n.mediaDevices);n.mediaDevices.getUserMedia=function(e){return r(e).catch((function(e){return t.reject(function(e){return{name:{PermissionDeniedError:"NotAllowedError"}[e.name]||e.name,message:e.message,constraint:e.constraint,toString:function(){return this.name}}}(e))}))}}}).call(this,n(2))},function(e,t,n){"use strict";(function(t){var r=n(32);e.exports={shimGetUserMedia:n(601),shimOnTrack:function(e){"object"==typeof e&&e.RTCPeerConnection&&!("ontrack"in e.RTCPeerConnection.prototype)&&Object.defineProperty(e.RTCPeerConnection.prototype,"ontrack",{get:function(){return this._ontrack},set:function(e){this._ontrack&&(this.removeEventListener("track",this._ontrack),this.removeEventListener("addstream",this._ontrackpoly)),this.addEventListener("track",this._ontrack=e),this.addEventListener("addstream",this._ontrackpoly=function(e){e.stream.getTracks().forEach(function(t){var n=new Event("track");n.track=t,n.receiver={track:t},n.transceiver={receiver:n.receiver},n.streams=[e.stream],this.dispatchEvent(n)}.bind(this))}.bind(this))},enumerable:!0,configurable:!0}),"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get:function(){return{receiver:this.receiver}}})},shimSourceObject:function(e){"object"==typeof e&&e.HTMLMediaElement&&!("srcObject"in e.HTMLMediaElement.prototype)&&Object.defineProperty(e.HTMLMediaElement.prototype,"srcObject",{get:function(){return this.mozSrcObject},set:function(e){this.mozSrcObject=e}})},shimPeerConnection:function(e){var n=r.detectBrowser(e);if("object"==typeof e&&(e.RTCPeerConnection||e.mozRTCPeerConnection)){e.RTCPeerConnection||(e.RTCPeerConnection=function(t,r){if(n.version<38&&t&&t.iceServers){for(var i=[],o=0;o<t.iceServers.length;o++){var a=t.iceServers[o];if(a.hasOwnProperty("urls"))for(var l=0;l<a.urls.length;l++){var c={url:a.urls[l]};0===a.urls[l].indexOf("turn")&&(c.username=a.username,c.credential=a.credential),i.push(c)}else i.push(t.iceServers[o])}t.iceServers=i}return new e.mozRTCPeerConnection(t,r)},e.RTCPeerConnection.prototype=e.mozRTCPeerConnection.prototype,e.mozRTCPeerConnection.generateCertificate&&Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:function(){return e.mozRTCPeerConnection.generateCertificate}}),e.RTCSessionDescription=e.mozRTCSessionDescription,e.RTCIceCandidate=e.mozRTCIceCandidate),["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){var n=e.RTCPeerConnection.prototype[t];e.RTCPeerConnection.prototype[t]=function(){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),n.apply(this,arguments)}}));var i=e.RTCPeerConnection.prototype.addIceCandidate;e.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?i.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),t.resolve())};var o={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},a=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(e,t,r){return a.apply(this,[e||null]).then((function(e){if(n.version<48&&(e=function(e){var t=new Map;return Object.keys(e).forEach((function(n){t.set(n,e[n]),t[n]=e[n]})),t}(e)),n.version<53&&!t)try{e.forEach((function(e){e.type=o[e.type]||e.type}))}catch(t){if("TypeError"!==t.name)throw t;e.forEach((function(t,n){e.set(n,Object.assign({},t,{type:o[t.type]||t.type}))}))}return e})).then(t,r)}}},shimSenderGetStats:function(e){if("object"==typeof e&&e.RTCPeerConnection&&e.RTCRtpSender&&(!e.RTCRtpSender||!("getStats"in e.RTCRtpSender.prototype))){var n=e.RTCPeerConnection.prototype.getSenders;n&&(e.RTCPeerConnection.prototype.getSenders=function(){var e=this,t=n.apply(e,[]);return t.forEach((function(t){t._pc=e})),t});var r=e.RTCPeerConnection.prototype.addTrack;r&&(e.RTCPeerConnection.prototype.addTrack=function(){var e=r.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):t.resolve(new Map)}}},shimReceiverGetStats:function(e){if("object"==typeof e&&e.RTCPeerConnection&&e.RTCRtpSender&&(!e.RTCRtpSender||!("getStats"in e.RTCRtpReceiver.prototype))){var t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){var e=this,n=t.apply(e,[]);return n.forEach((function(t){t._pc=e})),n}),r.wrapPeerConnectionEvent(e,"track",(function(e){return e.receiver._pc=e.srcElement,e})),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}},shimRemoveStream:function(e){e.RTCPeerConnection&&!("removeStream"in e.RTCPeerConnection.prototype)&&(e.RTCPeerConnection.prototype.removeStream=function(e){var t=this;r.deprecated("removeStream","removeTrack"),this.getSenders().forEach((function(n){n.track&&-1!==e.getTracks().indexOf(n.track)&&t.removeTrack(n)}))})},shimRTCDataChannel:function(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)},shimGetDisplayMedia:function(e,n){e.navigator&&e.navigator.mediaDevices&&!("getDisplayMedia"in e.navigator.mediaDevices)&&(e.navigator.mediaDevices.getDisplayMedia=function(r){if(!r||!r.video){var i=new DOMException("getDisplayMedia without video constraints is undefined");return i.name="NotFoundError",i.code=8,t.reject(i)}return!0===r.video?r.video={mediaSource:n}:r.video.mediaSource=n,e.navigator.mediaDevices.getUserMedia(r)},e.navigator.getDisplayMedia=function(t){return r.deprecated("navigator.getDisplayMedia","navigator.mediaDevices.getDisplayMedia"),e.navigator.mediaDevices.getDisplayMedia(t)})}}}).call(this,n(2))},function(e,t,n){"use strict";(function(t){var r=n(32),i=r.log;e.exports=function(e){var n=r.detectBrowser(e),o=e&&e.navigator,a=e&&e.MediaStreamTrack,l=function(e){return{name:{InternalError:"NotReadableError",NotSupportedError:"TypeError",PermissionDeniedError:"NotAllowedError",SecurityError:"NotAllowedError"}[e.name]||e.name,message:{"The operation is insecure.":"The request is not allowed by the user agent or the platform in the current context."}[e.message]||e.message,constraint:e.constraint,toString:function(){return this.name+(this.message&&": ")+this.message}}},c=function(e,t,r){var a=function(e){if("object"!=typeof e||e.require)return e;var t=[];return Object.keys(e).forEach((function(n){if("require"!==n&&"advanced"!==n&&"mediaSource"!==n){var r=e[n]="object"==typeof e[n]?e[n]:{ideal:e[n]};if(void 0===r.min&&void 0===r.max&&void 0===r.exact||t.push(n),void 0!==r.exact&&("number"==typeof r.exact?r.min=r.max=r.exact:e[n]=r.exact,delete r.exact),void 0!==r.ideal){e.advanced=e.advanced||[];var i={};"number"==typeof r.ideal?i[n]={min:r.ideal,max:r.ideal}:i[n]=r.ideal,e.advanced.push(i),delete r.ideal,Object.keys(r).length||delete e[n]}}})),t.length&&(e.require=t),e};return e=JSON.parse(JSON.stringify(e)),n.version<38&&(i("spec: "+JSON.stringify(e)),e.audio&&(e.audio=a(e.audio)),e.video&&(e.video=a(e.video)),i("ff37: "+JSON.stringify(e))),o.mozGetUserMedia(e,t,(function(e){r(l(e))}))};if(o.mediaDevices||(o.mediaDevices={getUserMedia:function(e){return new t((function(t,n){c(e,t,n)}))},addEventListener:function(){},removeEventListener:function(){}}),o.mediaDevices.enumerateDevices=o.mediaDevices.enumerateDevices||function(){return new t((function(e){e([{kind:"audioinput",deviceId:"default",label:"",groupId:""},{kind:"videoinput",deviceId:"default",label:"",groupId:""}])}))},n.version<41){var s=o.mediaDevices.enumerateDevices.bind(o.mediaDevices);o.mediaDevices.enumerateDevices=function(){return s().then(void 0,(function(e){if("NotFoundError"===e.name)return[];throw e}))}}if(n.version<49){var d=o.mediaDevices.getUserMedia.bind(o.mediaDevices);o.mediaDevices.getUserMedia=function(e){return d(e).then((function(t){if(e.audio&&!t.getAudioTracks().length||e.video&&!t.getVideoTracks().length)throw t.getTracks().forEach((function(e){e.stop()})),new DOMException("The object can not be found here.","NotFoundError");return t}),(function(e){return t.reject(l(e))}))}}if(!(n.version>55&&"autoGainControl"in o.mediaDevices.getSupportedConstraints())){var u=function(e,t,n){t in e&&!(n in e)&&(e[n]=e[t],delete e[t])},A=o.mediaDevices.getUserMedia.bind(o.mediaDevices);if(o.mediaDevices.getUserMedia=function(e){return"object"==typeof e&&"object"==typeof e.audio&&(e=JSON.parse(JSON.stringify(e)),u(e.audio,"autoGainControl","mozAutoGainControl"),u(e.audio,"noiseSuppression","mozNoiseSuppression")),A(e)},a&&a.prototype.getSettings){var h=a.prototype.getSettings;a.prototype.getSettings=function(){var e=h.apply(this,arguments);return u(e,"mozAutoGainControl","autoGainControl"),u(e,"mozNoiseSuppression","noiseSuppression"),e}}if(a&&a.prototype.applyConstraints){var g=a.prototype.applyConstraints;a.prototype.applyConstraints=function(e){return"audio"===this.kind&&"object"==typeof e&&(e=JSON.parse(JSON.stringify(e)),u(e,"autoGainControl","mozAutoGainControl"),u(e,"noiseSuppression","mozNoiseSuppression")),g.apply(this,[e])}}}o.getUserMedia=function(e,t,i){if(n.version<44)return c(e,t,i);r.deprecated("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),o.mediaDevices.getUserMedia(e).then(t,i)}}}).call(this,n(2))},function(e,t,n){"use strict";(function(t){var r=n(32);e.exports={shimLocalStreamsAPI:function(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}),"getStreamById"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getStreamById=function(e){var t=null;return this._localStreams&&this._localStreams.forEach((function(n){n.id===e&&(t=n)})),this._remoteStreams&&this._remoteStreams.forEach((function(n){n.id===e&&(t=n)})),t}),!("addStream"in e.RTCPeerConnection.prototype)){var t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addStream=function(e){this._localStreams||(this._localStreams=[]),-1===this._localStreams.indexOf(e)&&this._localStreams.push(e);var n=this;e.getTracks().forEach((function(r){t.call(n,r,e)}))},e.RTCPeerConnection.prototype.addTrack=function(e,n){return n&&(this._localStreams?-1===this._localStreams.indexOf(n)&&this._localStreams.push(n):this._localStreams=[n]),t.call(this,e,n)}}"removeStream"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.removeStream=function(e){this._localStreams||(this._localStreams=[]);var t=this._localStreams.indexOf(e);if(-1!==t){this._localStreams.splice(t,1);var n=this,r=e.getTracks();this.getSenders().forEach((function(e){-1!==r.indexOf(e.track)&&n.removeTrack(e)}))}})}},shimRemoteStreamsAPI:function(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:function(){return this._onaddstream},set:function(e){this._onaddstream&&this.removeEventListener("addstream",this._onaddstream),this.addEventListener("addstream",this._onaddstream=e)}});var t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){var e=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(t){t.streams.forEach((function(t){if(e._remoteStreams||(e._remoteStreams=[]),!(e._remoteStreams.indexOf(t)>=0)){e._remoteStreams.push(t);var n=new Event("addstream");n.stream=t,e.dispatchEvent(n)}}))}),t.apply(e,arguments)}}},shimCallbacksAPI:function(e){if("object"==typeof e&&e.RTCPeerConnection){var n=e.RTCPeerConnection.prototype,r=n.createOffer,i=n.createAnswer,o=n.setLocalDescription,a=n.setRemoteDescription,l=n.addIceCandidate;n.createOffer=function(e,n){var i=arguments.length>=2?arguments[2]:arguments[0],o=r.apply(this,[i]);return n?(o.then(e,n),t.resolve()):o},n.createAnswer=function(e,n){var r=arguments.length>=2?arguments[2]:arguments[0],o=i.apply(this,[r]);return n?(o.then(e,n),t.resolve()):o};var c=function(e,n,r){var i=o.apply(this,[e]);return r?(i.then(n,r),t.resolve()):i};n.setLocalDescription=c,c=function(e,n,r){var i=a.apply(this,[e]);return r?(i.then(n,r),t.resolve()):i},n.setRemoteDescription=c,c=function(e,n,r){var i=l.apply(this,[e]);return r?(i.then(n,r),t.resolve()):i},n.addIceCandidate=c}},shimGetUserMedia:function(e){var t=e&&e.navigator;t.getUserMedia||(t.webkitGetUserMedia?t.getUserMedia=t.webkitGetUserMedia.bind(t):t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=function(e,n,r){t.mediaDevices.getUserMedia(e).then(n,r)}.bind(t)))},shimRTCIceServerUrls:function(e){var t=e.RTCPeerConnection;e.RTCPeerConnection=function(e,n){if(e&&e.iceServers){for(var i=[],o=0;o<e.iceServers.length;o++){var a=e.iceServers[o];!a.hasOwnProperty("urls")&&a.hasOwnProperty("url")?(r.deprecated("RTCIceServer.url","RTCIceServer.urls"),(a=JSON.parse(JSON.stringify(a))).urls=a.url,delete a.url,i.push(a)):i.push(e.iceServers[o])}e.iceServers=i}return new t(e,n)},e.RTCPeerConnection.prototype=t.prototype,"generateCertificate"in e.RTCPeerConnection&&Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:function(){return t.generateCertificate}})},shimTrackEventTransceiver:function(e){"object"==typeof e&&e.RTCPeerConnection&&"receiver"in e.RTCTrackEvent.prototype&&!e.RTCTransceiver&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get:function(){return{receiver:this.receiver}}})},shimCreateOfferLegacy:function(e){var t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(e){var n=this;if(e){void 0!==e.offerToReceiveAudio&&(e.offerToReceiveAudio=!!e.offerToReceiveAudio);var r=n.getTransceivers().find((function(e){return e.sender.track&&"audio"===e.sender.track.kind}));!1===e.offerToReceiveAudio&&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.offerToReceiveAudio||r||n.addTransceiver("audio"),void 0!==e.offerToReceiveVideo&&(e.offerToReceiveVideo=!!e.offerToReceiveVideo);var i=n.getTransceivers().find((function(e){return e.sender.track&&"video"===e.sender.track.kind}));!1===e.offerToReceiveVideo&&i?"sendrecv"===i.direction?i.setDirection("sendonly"):"recvonly"===i.direction&&i.setDirection("inactive"):!0!==e.offerToReceiveVideo||i||n.addTransceiver("video")}return t.apply(n,arguments)}}}}).call(this,n(2))},function(e,t,n){"use strict";var r=n(275),i=n(32);e.exports={shimRTCIceCandidate:function(e){if(!(!e.RTCIceCandidate||e.RTCIceCandidate&&"foundation"in e.RTCIceCandidate.prototype)){var t=e.RTCIceCandidate;e.RTCIceCandidate=function(e){if("object"==typeof e&&e.candidate&&0===e.candidate.indexOf("a=")&&((e=JSON.parse(JSON.stringify(e))).candidate=e.candidate.substr(2)),e.candidate&&e.candidate.length){var n=new t(e),i=r.parseCandidate(e.candidate),o=Object.assign(n,i);return o.toJSON=function(){return{candidate:o.candidate,sdpMid:o.sdpMid,sdpMLineIndex:o.sdpMLineIndex,usernameFragment:o.usernameFragment}},o}return new t(e)},e.RTCIceCandidate.prototype=t.prototype,i.wrapPeerConnectionEvent(e,"icecandidate",(function(t){return t.candidate&&Object.defineProperty(t,"candidate",{value:new e.RTCIceCandidate(t.candidate),writable:"false"}),t}))}},shimCreateObjectURL:function(e){var t=e&&e.URL;if("object"==typeof e&&e.HTMLMediaElement&&"srcObject"in e.HTMLMediaElement.prototype&&t.createObjectURL&&t.revokeObjectURL){var n=t.createObjectURL.bind(t),r=t.revokeObjectURL.bind(t),o=new Map,a=0;t.createObjectURL=function(e){if("getTracks"in e){var t="polyblob:"+ ++a;return o.set(t,e),i.deprecated("URL.createObjectURL(stream)","elem.srcObject = stream"),t}return n(e)},t.revokeObjectURL=function(e){r(e),o.delete(e)};var l=Object.getOwnPropertyDescriptor(e.HTMLMediaElement.prototype,"src");Object.defineProperty(e.HTMLMediaElement.prototype,"src",{get:function(){return l.get.apply(this)},set:function(e){return this.srcObject=o.get(e)||null,l.set.apply(this,[e])}});var c=e.HTMLMediaElement.prototype.setAttribute;e.HTMLMediaElement.prototype.setAttribute=function(){return 2===arguments.length&&"src"===(""+arguments[0]).toLowerCase()&&(this.srcObject=o.get(arguments[1])||null),c.apply(this,arguments)}}},shimMaxMessageSize:function(e){if(!e.RTCSctpTransport&&e.RTCPeerConnection){var t=i.detectBrowser(e);"sctp"in e.RTCPeerConnection.prototype||Object.defineProperty(e.RTCPeerConnection.prototype,"sctp",{get:function(){return void 0===this._sctp?null:this._sctp}});var n=function(e){var t=r.splitSections(e.sdp);return t.shift(),t.some((function(e){var t=r.parseMLine(e);return t&&"application"===t.kind&&-1!==t.protocol.indexOf("SCTP")}))},o=function(e){var t=e.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(null===t||t.length<2)return-1;var n=parseInt(t[1],10);return n!=n?-1:n},a=function(e){var n=65536;return"firefox"===t.browser&&(n=t.version<57?-1===e?16384:2147483637:t.version<60?57===t.version?65535:65536:2147483637),n},l=function(e,n){var i=65536;"firefox"===t.browser&&57===t.version&&(i=65535);var o=r.matchPrefix(e.sdp,"a=max-message-size:");return o.length>0?i=parseInt(o[0].substr(19),10):"firefox"===t.browser&&-1!==n&&(i=2147483637),i},c=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){var e=this;if(e._sctp=null,n(arguments[0])){var t,r=o(arguments[0]),i=a(r),s=l(arguments[0],r);t=0===i&&0===s?Number.POSITIVE_INFINITY:0===i||0===s?Math.max(i,s):Math.min(i,s);var d={};Object.defineProperty(d,"maxMessageSize",{get:function(){return t}}),e._sctp=d}return c.apply(e,arguments)}}},shimSendThrowTypeError:function(e){if(e.RTCPeerConnection&&"createDataChannel"in e.RTCPeerConnection.prototype){var t=e.RTCPeerConnection.prototype.createDataChannel;e.RTCPeerConnection.prototype.createDataChannel=function(){var e=this,r=t.apply(e,arguments);return n(r,e),r},i.wrapPeerConnectionEvent(e,"datachannel",(function(e){return n(e.channel,e.target),e}))}function n(e,t){var n=e.send;e.send=function(){var r=arguments[0],i=r.length||r.size||r.byteLength;if("open"===e.readyState&&t.sctp&&i>t.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+t.sctp.maxMessageSize+" bytes)");return n.apply(e,arguments)}}}}},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){function t(){for(var n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];const o=new e(...r);return Object.setPrototypeOf(o,t.prototype),o}return t.prototype=Object.create(e.prototype),Object.defineProperties(t.prototype,(e=>{const t={};return Object.getOwnPropertyNames(e).forEach(n=>{t[n]=Object.getOwnPropertyDescriptor(e,n)}),t})(e.prototype)),Object.keys(e).forEach(n=>{t[n]=e[n]}),t}},function(e,t,n){"use strict";(function(e){var r=n(0);t.__esModule=!0,t.default=void 0;var i=r(n(6)),o=r(n(606));function a(){return"undefined"==typeof document||"complete"===document.readyState||"interactive"===document.readyState&&document.body}let l=!1;var c=function(t){void 0===t&&(t={});const n=t.window||window,r=t.isPageHideSupported||o.default,c={isDomLoaded:a,isDomUnloaded:()=>l,whenUnloaded:new e(e=>{if(void 0!==n){const t=()=>{l=!0,e()},i=r()?"pagehide":"unload";n.addEventListener(i,t)}}),whenLoaded:new e(e=>{if(a())return void e();const t=()=>{document.removeEventListener("DOMContentLoaded",t),document.removeEventListener("load",t),c.emit("load"),e()};document.addEventListener("DOMContentLoaded",t),document.addEventListener("load",t)})};return(0,i.default)(c),c};t.default=c}).call(this,n(2))},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;t.default=function(e){void 0===e&&(e={});return"onpagehide"in(e.window||window)}},function(e,t,n){var r=n(81),i=n(279),o=n(256),a=n(608),l=n(11),c=n(55),s=n(280);e.exports=function e(t,n,d,u,A){t!==n&&o(n,(function(o,c){if(A||(A=new r),l(o))a(t,n,c,d,e,u,A);else{var h=u?u(s(t,c),o,c+"",t,n,A):void 0;void 0===h&&(h=o),i(t,c,h)}}),c)}},function(e,t,n){var r=n(279),i=n(194),o=n(203),a=n(56),l=n(204),c=n(65),s=n(14),d=n(151),u=n(66),A=n(20),h=n(11),g=n(141),F=n(88),Q=n(280),p=n(609);e.exports=function(e,t,n,m,U,b,Z){var B=Q(e,n),f=Q(t,n),R=Z.get(f);if(R)r(e,n,R);else{var I=b?b(B,f,n+"",e,t,Z):void 0,y=void 0===I;if(y){var V=s(f),C=!V&&u(f),W=!V&&!C&&F(f);I=f,V||C||W?s(B)?I=B:d(B)?I=a(B):C?(y=!1,I=i(f,!0)):W?(y=!1,I=o(f,!0)):I=[]:g(f)||c(f)?(I=B,c(B)?I=p(B):h(B)&&!A(B)||(I=l(f))):y=!1}y&&(Z.set(f,I),U(I,f,m,b,Z),Z.delete(f)),r(e,n,I)}}},function(e,t,n){var r=n(45),i=n(55);e.exports=function(e){return r(e,i(e))}},function(e,t,n){"use strict";var r=n(0);t.__esModule=!0,t.default=function(e){const t=A(e),n=e.env||{},r=e.isScreenSharing,o=e.isCustomAudioTrack,a=e.isCustomVideoTrack;r&&!l.default&&(0,i.default)(e.usingOptionalMandatoryStyle,"Screensharing only uses optional-mandatory constraints right now");return["echoCancellation","autoGainControl","noiseSuppression"].forEach(t=>{!1!==e[t]&&Object.assign(e,{[t]:!0})}),{isScreenSharing:r,isCustomAudioTrack:o,isCustomVideoTrack:a,audio:g("audio",e),video:g("video",e),usingOptionalMandatoryStyle:e.usingOptionalMandatoryStyle,enableRenegotiation:e.enableRenegotiation,enableStereo:e.enableStereo,noiseSuppression:e.noiseSuppression,autoGainControl:e.autoGainControl,echoCancellation:e.echoCancellation,disableAudioProcessing:e.disableAudioProcessing,videoDimensions:h("resolution",e.resolution,e=>d[e],`"${Object.keys(d).join('", "')}"`,t),frameRate:F(n,h("frameRate",e.frameRate,e=>-1!==u.indexOf(e)?e:void 0,u.join(","),t)),maxResolution:function(){if(void 0===e.maxResolution)return r?{width:1920,height:1920}:void 0;const n={width:e.maxResolution.width,height:e.maxResolution.height};return Object.keys(n).forEach(e=>{const r=n[e];("number"!=typeof r||r>1920)&&(t.warn(`Invalid maxResolution passed to the Publisher. maxResolution.${e} must be less than or equal to 1920`),n[e]=1920)}),n}(),facingMode:p(e.facingMode,e)}};var i=r(n(159)),o=r(n(281)),a=r(n(1)),l=r(n(286)),c=r(n(287));const s=(0,a.default)("normalizeConstraintInput"),d={"320x240":{width:320,height:240},"320x180":{width:320,height:180},"640x480":{width:640,height:480},"640x360":{width:640,height:360},"1280x720":{width:1280,height:720},"1280x960":{width:1280,height:960},"1920x1080":{width:1920,height:1080}},u=[1,7,15,30];function A(e){return e._inject&&e._inject.logging||s}function h(e,t,n,r,i){if(void 0===t)return;const o=n(t);return o||i.warn(`Invalid ${e} passed to the Publisher. Got: ${t}, expecting one of ${r}`),o}function g(e,t){const n=A(t),r=(()=>{const n=t["publish"+(0,o.default)(e)];return void 0===n||Boolean(n)})();let i=(()=>{const r=t[e+"Source"];return void 0===r||null!==r&&!1!==r&&("object"==typeof r?!t[`isCustom${(0,o.default)(e)}Track`]&&("string"!=typeof r.deviceId?(n.warn(`Invalid ${e}Source passed to Publisher. Expected either a device ID or device.`),!0):r.deviceId):"string"!=typeof r?(n.warn(`Ignoring invalid ${e}Source parameter`),!0):r)})();return"audio"===e&&t.isScreenSharing&&!c.default&&!1!==i&&(t.audioSource&&A(t).warn("Invalid audioSource passed to Publisher - when using screen sharing no audioSource may be used"),i=!1),{source:i,publish:r}}function F(e,t){return"Chrome"===e.name&&-1!==e.userAgent.indexOf("Mac OS X")&&1===t?2:t}const Q=["user","environment","left","right"],p=(e,t)=>{if(void 0===e||Q.indexOf(e)>=0)return e;A(t).warn("Invalid facingMode passed to Publisher. Expected one of: "+Q.join(", "))}},function(e,t,n){"use strict";
36
36
  /*
37
37
  object-assign
38
38
  (c) Sindre Sorhus