@webex/web-client-media-engine 3.6.0 → 3.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/esm/index.js CHANGED
@@ -10406,321 +10406,6 @@ class TypedEvent {
10406
10406
  }
10407
10407
  }
10408
10408
 
10409
- var OfferAnswerType;
10410
- (function (OfferAnswerType) {
10411
- OfferAnswerType[OfferAnswerType["LocalOnly"] = 0] = "LocalOnly";
10412
- OfferAnswerType[OfferAnswerType["Remote"] = 1] = "Remote";
10413
- })(OfferAnswerType || (OfferAnswerType = {}));
10414
- class SendOnlyTransceiver extends Transceiver {
10415
- constructor(rtcRtpTransceiver, mid, csi, munger, mediaType) {
10416
- super(rtcRtpTransceiver, mid);
10417
- this.rtxEnabled = false;
10418
- this.streamMuteStateChange = new TypedEvent();
10419
- this.streamPublishStateChange = new TypedEvent();
10420
- this.negotiationNeeded = new TypedEvent();
10421
- this.namedMediaGroupsChange = new TypedEvent();
10422
- this.requested = false;
10423
- this.requestedIdEncodingParamsMap = new Map();
10424
- this.csi = csi;
10425
- this.direction = 'sendrecv';
10426
- this.handleTrackChange = this.handleTrackChange.bind(this);
10427
- this.handleStreamConstraintsChange = this.handleStreamConstraintsChange.bind(this);
10428
- this.handleStreamMuteStateChange = this.handleStreamMuteStateChange.bind(this);
10429
- this.munger = munger;
10430
- this.mediaType = mediaType;
10431
- }
10432
- handleTrackChange() {
10433
- var _a;
10434
- return __awaiter(this, void 0, void 0, function* () {
10435
- if (this.requested) {
10436
- yield this.sender.replaceTrack(((_a = this.publishedStream) === null || _a === void 0 ? void 0 : _a.outputStream.getTracks()[0]) || null);
10437
- }
10438
- });
10439
- }
10440
- handleStreamConstraintsChange() {
10441
- return __awaiter(this, void 0, void 0, function* () {
10442
- yield this.updateSendParameters(this.requestedIdEncodingParamsMap);
10443
- });
10444
- }
10445
- handleStreamMuteStateChange() {
10446
- this.streamMuteStateChange.emit();
10447
- }
10448
- replaceTransceiver(newRtcRtpTransceiver) {
10449
- const _super = Object.create(null, {
10450
- replaceTransceiver: { get: () => super.replaceTransceiver }
10451
- });
10452
- var _a;
10453
- return __awaiter(this, void 0, void 0, function* () {
10454
- _super.replaceTransceiver.call(this, newRtcRtpTransceiver);
10455
- newRtcRtpTransceiver.direction = this.direction;
10456
- if (this.requested) {
10457
- yield this.sender.replaceTrack(((_a = this.publishedStream) === null || _a === void 0 ? void 0 : _a.outputStream.getTracks()[0]) || null);
10458
- }
10459
- });
10460
- }
10461
- replacePublishedStream(newStream) {
10462
- return __awaiter(this, void 0, void 0, function* () {
10463
- const oldStream = this.publishedStream;
10464
- oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(LocalStreamEventNames.OutputTrackChange, this.handleTrackChange);
10465
- oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(LocalStreamEventNames.ConstraintsChange, this.handleStreamConstraintsChange);
10466
- oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(StreamEventNames.MuteStateChange, this.handleStreamMuteStateChange);
10467
- if (this.requested) {
10468
- yield this.sender.replaceTrack((newStream === null || newStream === void 0 ? void 0 : newStream.outputStream.getTracks()[0]) || null);
10469
- }
10470
- this.publishedStream = newStream;
10471
- newStream === null || newStream === void 0 ? void 0 : newStream.on(LocalStreamEventNames.OutputTrackChange, this.handleTrackChange);
10472
- newStream === null || newStream === void 0 ? void 0 : newStream.on(LocalStreamEventNames.ConstraintsChange, this.handleStreamConstraintsChange);
10473
- newStream === null || newStream === void 0 ? void 0 : newStream.on(StreamEventNames.MuteStateChange, this.handleStreamMuteStateChange);
10474
- if ((!oldStream && newStream && !newStream.muted) ||
10475
- (oldStream && !newStream && !oldStream.muted)) {
10476
- this.streamPublishStateChange.emit();
10477
- }
10478
- else if ((oldStream === null || oldStream === void 0 ? void 0 : oldStream.muted) !== (newStream === null || newStream === void 0 ? void 0 : newStream.muted)) {
10479
- this.streamMuteStateChange.emit();
10480
- }
10481
- if (newStream) {
10482
- this.updateSendParameters(this.requestedIdEncodingParamsMap);
10483
- }
10484
- });
10485
- }
10486
- setStreamRequested(requested) {
10487
- var _a;
10488
- return __awaiter(this, void 0, void 0, function* () {
10489
- if (this.requested !== requested) {
10490
- this.requested = requested;
10491
- const newTrack = requested ? ((_a = this.publishedStream) === null || _a === void 0 ? void 0 : _a.outputStream.getTracks()[0]) || null : null;
10492
- yield this.sender.replaceTrack(newTrack);
10493
- }
10494
- });
10495
- }
10496
- setNamedMediaGroups(namedMediaGroups) {
10497
- if (this.mediaType !== MediaType.AudioMain) {
10498
- throw new Error(`This interface does not allow media types other than AudioMain: ${this.mediaType}`);
10499
- }
10500
- this.namedMediaGroups = namedMediaGroups;
10501
- this.namedMediaGroupsChange.emit();
10502
- }
10503
- publishStream(stream) {
10504
- return this.replacePublishedStream(stream);
10505
- }
10506
- unpublishStream() {
10507
- return this.replacePublishedStream();
10508
- }
10509
- get active() {
10510
- return this._rtcRtpTransceiver.direction === 'sendrecv';
10511
- }
10512
- set active(enabled) {
10513
- this.direction = enabled ? 'sendrecv' : 'inactive';
10514
- this._rtcRtpTransceiver.direction = this.direction;
10515
- if (this._rtcRtpTransceiver.direction !== this._rtcRtpTransceiver.currentDirection) {
10516
- this.negotiationNeeded.emit(OfferAnswerType.Remote);
10517
- }
10518
- }
10519
- getStats() {
10520
- return this.sender.getStats();
10521
- }
10522
- updateSendParameters(requestedIdEncodingParamsMap) {
10523
- return __awaiter(this, void 0, void 0, function* () {
10524
- if (this.publishedStream) {
10525
- this.setStreamRequested(requestedIdEncodingParamsMap.size > 0);
10526
- const sendParameters = this.sender.getParameters();
10527
- sendParameters.encodings.forEach((encoding, index) => {
10528
- var _a, _b;
10529
- const encodingParams = requestedIdEncodingParamsMap.get(index);
10530
- encoding.active = !!encodingParams;
10531
- if (encodingParams) {
10532
- const { maxPayloadBitsPerSecond, maxFs, maxWidth, maxHeight } = encodingParams;
10533
- const scaleDownRatio = getScaleDownRatio((_a = this.publishedStream) === null || _a === void 0 ? void 0 : _a.getSettings().width, (_b = this.publishedStream) === null || _b === void 0 ? void 0 : _b.getSettings().height, maxFs, maxWidth, maxHeight);
10534
- if (maxPayloadBitsPerSecond !== undefined && maxPayloadBitsPerSecond >= 0) {
10535
- encoding.maxBitrate = maxPayloadBitsPerSecond;
10536
- }
10537
- if (scaleDownRatio !== undefined && scaleDownRatio >= 1.0) {
10538
- encoding.scaleResolutionDownBy = scaleDownRatio;
10539
- }
10540
- }
10541
- });
10542
- yield this.sender.setParameters(sendParameters);
10543
- }
10544
- this.requestedIdEncodingParamsMap = requestedIdEncodingParamsMap;
10545
- });
10546
- }
10547
- isSimulcastEnabled() {
10548
- const params = this.sender.getParameters();
10549
- return params.encodings.length > 1;
10550
- }
10551
- mungeLocalDescription(mediaDescription) {
10552
- this.munger.mungeLocalDescription(mediaDescription, this.isSimulcastEnabled(), this.rtxEnabled);
10553
- }
10554
- mungeLocalDescriptionForRemoteServer(mediaDescription) {
10555
- this.munger.mungeLocalDescriptionForRemoteServer(mediaDescription, getMediaContent(this.mediaType), this.csi);
10556
- }
10557
- mungeRemoteDescription(mediaDescription) {
10558
- this.munger.mungeRemoteDescription(mediaDescription);
10559
- }
10560
- get senderIds() {
10561
- return this.munger.getSenderIds();
10562
- }
10563
- get numActiveSimulcastLayers() {
10564
- var _a;
10565
- if (getMediaFamily(this.mediaType) === MediaFamily.Video) {
10566
- return (_a = this.publishedStream) === null || _a === void 0 ? void 0 : _a.getNumActiveSimulcastLayers();
10567
- }
10568
- return this.publishedStream ? 0 : undefined;
10569
- }
10570
- getEncodingIndexForStreamId(id) {
10571
- return this.munger.getEncodingIndexForStreamId(id);
10572
- }
10573
- resetSdpMunger() {
10574
- this.munger.reset();
10575
- }
10576
- setCodecParameters(parameters) {
10577
- this.munger.setCodecParameters(parameters);
10578
- this.negotiationNeeded.emit(OfferAnswerType.LocalOnly);
10579
- }
10580
- deleteCodecParameters(parameters) {
10581
- this.munger.deleteCodecParameters(parameters);
10582
- this.negotiationNeeded.emit(OfferAnswerType.LocalOnly);
10583
- }
10584
- }
10585
-
10586
- class SendSlot {
10587
- constructor(sendTransceiver) {
10588
- this.sendTransceiver = sendTransceiver;
10589
- }
10590
- publishStream(stream) {
10591
- return __awaiter(this, void 0, void 0, function* () {
10592
- if (stream === this.sendTransceiver.publishedStream) {
10593
- return Promise.resolve();
10594
- }
10595
- return this.sendTransceiver.publishStream(stream);
10596
- });
10597
- }
10598
- unpublishStream() {
10599
- return __awaiter(this, void 0, void 0, function* () {
10600
- if (!this.sendTransceiver.publishedStream) {
10601
- return Promise.resolve();
10602
- }
10603
- return this.sendTransceiver.unpublishStream();
10604
- });
10605
- }
10606
- setNamedMediaGroups(namedMediaGroups) {
10607
- this.sendTransceiver.setNamedMediaGroups(namedMediaGroups);
10608
- }
10609
- get active() {
10610
- return this.sendTransceiver.active;
10611
- }
10612
- set active(active) {
10613
- this.sendTransceiver.active = active;
10614
- }
10615
- setCodecParameters(parameters) {
10616
- return __awaiter(this, void 0, void 0, function* () {
10617
- this.sendTransceiver.setCodecParameters(parameters);
10618
- });
10619
- }
10620
- deleteCodecParameters(parameters) {
10621
- return __awaiter(this, void 0, void 0, function* () {
10622
- this.sendTransceiver.deleteCodecParameters(parameters);
10623
- });
10624
- }
10625
- }
10626
-
10627
- class StatsManager {
10628
- constructor(statsGetter, statsPreprocessor = () => __awaiter(this, void 0, void 0, function* () { })) {
10629
- this.statsGetter = statsGetter;
10630
- this.statsPreProcessor = statsPreprocessor;
10631
- }
10632
- getStats() {
10633
- return __awaiter(this, void 0, void 0, function* () {
10634
- const statsReport = yield this.statsGetter();
10635
- const statsMap = new Map();
10636
- statsReport.forEach((stats, key) => statsMap.set(key, stats));
10637
- yield this.statsPreProcessor(statsMap);
10638
- return statsMap;
10639
- });
10640
- }
10641
- }
10642
-
10643
- const organizeTransceiverStats = (sendTransceivers, recvTransceivers) => __awaiter(void 0, void 0, void 0, function* () {
10644
- const result = {
10645
- audio: {
10646
- senders: [],
10647
- receivers: [],
10648
- },
10649
- video: {
10650
- senders: [],
10651
- receivers: [],
10652
- },
10653
- screenShareAudio: {
10654
- senders: [],
10655
- receivers: [],
10656
- },
10657
- screenShareVideo: {
10658
- senders: [],
10659
- receivers: [],
10660
- },
10661
- };
10662
- yield Promise.all([...sendTransceivers.entries()].map(([mediaType, transceiver]) => __awaiter(void 0, void 0, void 0, function* () {
10663
- var _a;
10664
- const item = {
10665
- report: yield transceiver.getStats(),
10666
- mid: transceiver.mid,
10667
- csi: transceiver.csi,
10668
- currentDirection: 'sendonly',
10669
- localTrackLabel: (_a = transceiver.publishedStream) === null || _a === void 0 ? void 0 : _a.label,
10670
- };
10671
- if (mediaType === MediaType.AudioMain) {
10672
- result.audio.senders.push(item);
10673
- }
10674
- if (mediaType === MediaType.VideoMain) {
10675
- result.video.senders.push(item);
10676
- }
10677
- if (mediaType === MediaType.AudioSlides) {
10678
- result.screenShareAudio.senders.push(item);
10679
- }
10680
- if (mediaType === MediaType.VideoSlides) {
10681
- result.screenShareVideo.senders.push(item);
10682
- }
10683
- })));
10684
- yield Promise.all([...recvTransceivers.entries()].map(([mediaType, transceivers]) => __awaiter(void 0, void 0, void 0, function* () {
10685
- return Promise.all(transceivers.map((t) => __awaiter(void 0, void 0, void 0, function* () {
10686
- var _b, _c;
10687
- const item = {
10688
- report: yield t.getStats(),
10689
- mid: (_b = t.receiveSlot.id) === null || _b === void 0 ? void 0 : _b.mid,
10690
- csi: t.receiveSlot.currentRxCsi,
10691
- currentDirection: 'recvonly',
10692
- localTrackLabel: (_c = t.receiveSlot.stream.getTracks()[0]) === null || _c === void 0 ? void 0 : _c.label,
10693
- };
10694
- if (mediaType === MediaType.AudioMain) {
10695
- result.audio.receivers.push(item);
10696
- }
10697
- if (mediaType === MediaType.VideoMain) {
10698
- result.video.receivers.push(item);
10699
- }
10700
- if (mediaType === MediaType.AudioSlides) {
10701
- result.screenShareAudio.receivers.push(item);
10702
- }
10703
- if (mediaType === MediaType.VideoSlides) {
10704
- result.screenShareVideo.receivers.push(item);
10705
- }
10706
- })));
10707
- })));
10708
- return result;
10709
- });
10710
-
10711
- var es5 = {exports: {}};
10712
-
10713
- (function (module, exports) {
10714
- !function(e,t){module.exports=t();}(commonjsGlobal,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n});},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0});},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=90)}({17:function(e,t,r){t.__esModule=!0,t.default=void 0;var n=r(18),i=function(){function e(){}return e.getFirstMatch=function(e,t){var r=t.match(e);return r&&r.length>0&&r[1]||""},e.getSecondMatch=function(e,t){var r=t.match(e);return r&&r.length>1&&r[2]||""},e.matchAndReturnConst=function(e,t,r){if(e.test(t))return r},e.getWindowsVersionName=function(e){switch(e){case"NT":return "NT";case"XP":return "XP";case"NT 5.0":return "2000";case"NT 5.1":return "XP";case"NT 5.2":return "2003";case"NT 6.0":return "Vista";case"NT 6.1":return "7";case"NT 6.2":return "8";case"NT 6.3":return "8.1";case"NT 10.0":return "10";default:return}},e.getMacOSVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),10===t[0])switch(t[1]){case 5:return "Leopard";case 6:return "Snow Leopard";case 7:return "Lion";case 8:return "Mountain Lion";case 9:return "Mavericks";case 10:return "Yosemite";case 11:return "El Capitan";case 12:return "Sierra";case 13:return "High Sierra";case 14:return "Mojave";case 15:return "Catalina";default:return}},e.getAndroidVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?"Cupcake":1===t[0]&&t[1]>=6?"Donut":2===t[0]&&t[1]<2?"Eclair":2===t[0]&&2===t[1]?"Froyo":2===t[0]&&t[1]>2?"Gingerbread":3===t[0]?"Honeycomb":4===t[0]&&t[1]<1?"Ice Cream Sandwich":4===t[0]&&t[1]<4?"Jelly Bean":4===t[0]&&t[1]>=4?"KitKat":5===t[0]?"Lollipop":6===t[0]?"Marshmallow":7===t[0]?"Nougat":8===t[0]?"Oreo":9===t[0]?"Pie":void 0},e.getVersionPrecision=function(e){return e.split(".").length},e.compareVersions=function(t,r,n){void 0===n&&(n=!1);var i=e.getVersionPrecision(t),s=e.getVersionPrecision(r),a=Math.max(i,s),o=0,u=e.map([t,r],(function(t){var r=a-e.getVersionPrecision(t),n=t+new Array(r+1).join(".0");return e.map(n.split("."),(function(e){return new Array(20-e.length).join("0")+e})).reverse()}));for(n&&(o=a-Math.min(i,s)),a-=1;a>=o;){if(u[0][a]>u[1][a])return 1;if(u[0][a]===u[1][a]){if(a===o)return 0;a-=1;}else if(u[0][a]<u[1][a])return -1}},e.map=function(e,t){var r,n=[];if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r<e.length;r+=1)n.push(t(e[r]));return n},e.find=function(e,t){var r,n;if(Array.prototype.find)return Array.prototype.find.call(e,t);for(r=0,n=e.length;r<n;r+=1){var i=e[r];if(t(i,r))return i}},e.assign=function(e){for(var t,r,n=e,i=arguments.length,s=new Array(i>1?i-1:0),a=1;a<i;a++)s[a-1]=arguments[a];if(Object.assign)return Object.assign.apply(Object,[e].concat(s));var o=function(){var e=s[t];"object"==typeof e&&null!==e&&Object.keys(e).forEach((function(t){n[t]=e[t];}));};for(t=0,r=s.length;t<r;t+=1)o();return e},e.getBrowserAlias=function(e){return n.BROWSER_ALIASES_MAP[e]},e.getBrowserTypeByAlias=function(e){return n.BROWSER_MAP[e]||""},e}();t.default=i,e.exports=t.default;},18:function(e,t,r){t.__esModule=!0,t.ENGINE_MAP=t.OS_MAP=t.PLATFORMS_MAP=t.BROWSER_MAP=t.BROWSER_ALIASES_MAP=void 0;t.BROWSER_ALIASES_MAP={"Amazon Silk":"amazon_silk","Android Browser":"android",Bada:"bada",BlackBerry:"blackberry",Chrome:"chrome",Chromium:"chromium",Electron:"electron",Epiphany:"epiphany",Firefox:"firefox",Focus:"focus",Generic:"generic","Google Search":"google_search",Googlebot:"googlebot","Internet Explorer":"ie","K-Meleon":"k_meleon",Maxthon:"maxthon","Microsoft Edge":"edge","MZ Browser":"mz","NAVER Whale Browser":"naver",Opera:"opera","Opera Coast":"opera_coast",PhantomJS:"phantomjs",Puffin:"puffin",QupZilla:"qupzilla",QQ:"qq",QQLite:"qqlite",Safari:"safari",Sailfish:"sailfish","Samsung Internet for Android":"samsung_internet",SeaMonkey:"seamonkey",Sleipnir:"sleipnir",Swing:"swing",Tizen:"tizen","UC Browser":"uc",Vivaldi:"vivaldi","WebOS Browser":"webos",WeChat:"wechat","Yandex Browser":"yandex",Roku:"roku"};t.BROWSER_MAP={amazon_silk:"Amazon Silk",android:"Android Browser",bada:"Bada",blackberry:"BlackBerry",chrome:"Chrome",chromium:"Chromium",electron:"Electron",epiphany:"Epiphany",firefox:"Firefox",focus:"Focus",generic:"Generic",googlebot:"Googlebot",google_search:"Google Search",ie:"Internet Explorer",k_meleon:"K-Meleon",maxthon:"Maxthon",edge:"Microsoft Edge",mz:"MZ Browser",naver:"NAVER Whale Browser",opera:"Opera",opera_coast:"Opera Coast",phantomjs:"PhantomJS",puffin:"Puffin",qupzilla:"QupZilla",qq:"QQ Browser",qqlite:"QQ Browser Lite",safari:"Safari",sailfish:"Sailfish",samsung_internet:"Samsung Internet for Android",seamonkey:"SeaMonkey",sleipnir:"Sleipnir",swing:"Swing",tizen:"Tizen",uc:"UC Browser",vivaldi:"Vivaldi",webos:"WebOS Browser",wechat:"WeChat",yandex:"Yandex Browser"};t.PLATFORMS_MAP={tablet:"tablet",mobile:"mobile",desktop:"desktop",tv:"tv"};t.OS_MAP={WindowsPhone:"Windows Phone",Windows:"Windows",MacOS:"macOS",iOS:"iOS",Android:"Android",WebOS:"WebOS",BlackBerry:"BlackBerry",Bada:"Bada",Tizen:"Tizen",Linux:"Linux",ChromeOS:"Chrome OS",PlayStation4:"PlayStation 4",Roku:"Roku"};t.ENGINE_MAP={EdgeHTML:"EdgeHTML",Blink:"Blink",Trident:"Trident",Presto:"Presto",Gecko:"Gecko",WebKit:"WebKit"};},90:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(91))&&n.__esModule?n:{default:n},s=r(18);function a(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n);}}var o=function(){function e(){}var t,r,n;return e.getParser=function(e,t){if(void 0===t&&(t=!1),"string"!=typeof e)throw new Error("UserAgent should be a string");return new i.default(e,t)},e.parse=function(e){return new i.default(e).getResult()},t=e,n=[{key:"BROWSER_MAP",get:function(){return s.BROWSER_MAP}},{key:"ENGINE_MAP",get:function(){return s.ENGINE_MAP}},{key:"OS_MAP",get:function(){return s.OS_MAP}},{key:"PLATFORMS_MAP",get:function(){return s.PLATFORMS_MAP}}],(r=null)&&a(t.prototype,r),n&&a(t,n),e}();t.default=o,e.exports=t.default;},91:function(e,t,r){t.__esModule=!0,t.default=void 0;var n=u(r(92)),i=u(r(93)),s=u(r(94)),a=u(r(95)),o=u(r(17));function u(e){return e&&e.__esModule?e:{default:e}}var d=function(){function e(e,t){if(void 0===t&&(t=!1),null==e||""===e)throw new Error("UserAgent parameter can't be empty");this._ua=e,this.parsedResult={},!0!==t&&this.parse();}var t=e.prototype;return t.getUA=function(){return this._ua},t.test=function(e){return e.test(this._ua)},t.parseBrowser=function(){var e=this;this.parsedResult.browser={};var t=o.default.find(n.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.browser=t.describe(this.getUA())),this.parsedResult.browser},t.getBrowser=function(){return this.parsedResult.browser?this.parsedResult.browser:this.parseBrowser()},t.getBrowserName=function(e){return e?String(this.getBrowser().name).toLowerCase()||"":this.getBrowser().name||""},t.getBrowserVersion=function(){return this.getBrowser().version},t.getOS=function(){return this.parsedResult.os?this.parsedResult.os:this.parseOS()},t.parseOS=function(){var e=this;this.parsedResult.os={};var t=o.default.find(i.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.os=t.describe(this.getUA())),this.parsedResult.os},t.getOSName=function(e){var t=this.getOS().name;return e?String(t).toLowerCase()||"":t||""},t.getOSVersion=function(){return this.getOS().version},t.getPlatform=function(){return this.parsedResult.platform?this.parsedResult.platform:this.parsePlatform()},t.getPlatformType=function(e){void 0===e&&(e=!1);var t=this.getPlatform().type;return e?String(t).toLowerCase()||"":t||""},t.parsePlatform=function(){var e=this;this.parsedResult.platform={};var t=o.default.find(s.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.platform=t.describe(this.getUA())),this.parsedResult.platform},t.getEngine=function(){return this.parsedResult.engine?this.parsedResult.engine:this.parseEngine()},t.getEngineName=function(e){return e?String(this.getEngine().name).toLowerCase()||"":this.getEngine().name||""},t.parseEngine=function(){var e=this;this.parsedResult.engine={};var t=o.default.find(a.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.engine=t.describe(this.getUA())),this.parsedResult.engine},t.parse=function(){return this.parseBrowser(),this.parseOS(),this.parsePlatform(),this.parseEngine(),this},t.getResult=function(){return o.default.assign({},this.parsedResult)},t.satisfies=function(e){var t=this,r={},n=0,i={},s=0;if(Object.keys(e).forEach((function(t){var a=e[t];"string"==typeof a?(i[t]=a,s+=1):"object"==typeof a&&(r[t]=a,n+=1);})),n>0){var a=Object.keys(r),u=o.default.find(a,(function(e){return t.isOS(e)}));if(u){var d=this.satisfies(r[u]);if(void 0!==d)return d}var c=o.default.find(a,(function(e){return t.isPlatform(e)}));if(c){var f=this.satisfies(r[c]);if(void 0!==f)return f}}if(s>0){var l=Object.keys(i),h=o.default.find(l,(function(e){return t.isBrowser(e,!0)}));if(void 0!==h)return this.compareVersion(i[h])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var r=this.getBrowserName().toLowerCase(),n=e.toLowerCase(),i=o.default.getBrowserTypeByAlias(n);return t&&i&&(n=i.toLowerCase()),n===r},t.compareVersion=function(e){var t=[0],r=e,n=!1,i=this.getBrowserVersion();if("string"==typeof i)return ">"===e[0]||"<"===e[0]?(r=e.substr(1),"="===e[1]?(n=!0,r=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?r=e.substr(1):"~"===e[0]&&(n=!0,r=e.substr(1)),t.indexOf(o.default.compareVersions(i,r,n))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some((function(e){return t.is(e)}))},e}();t.default=d,e.exports=t.default;},92:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n};var s=/version\/(\d+(\.?_?\d+)+)/i,a=[{test:[/googlebot/i],describe:function(e){var t={name:"Googlebot"},r=i.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/opera/i],describe:function(e){var t={name:"Opera"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opr\/|opios/i],describe:function(e){var t={name:"Opera"},r=i.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:"Samsung Internet for Android"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Whale/i],describe:function(e){var t={name:"NAVER Whale Browser"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:"MZ Browser"},r=i.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/focus/i],describe:function(e){var t={name:"Focus"},r=i.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/swing/i],describe:function(e){var t={name:"Swing"},r=i.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/coast/i],describe:function(e){var t={name:"Opera Coast"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(e){var t={name:"Opera Touch"},r=i.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/yabrowser/i],describe:function(e){var t={name:"Yandex Browser"},r=i.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:"UC Browser"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:"Maxthon"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/epiphany/i],describe:function(e){var t={name:"Epiphany"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/puffin/i],describe:function(e){var t={name:"Puffin"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sleipnir/i],describe:function(e){var t={name:"Sleipnir"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/k-meleon/i],describe:function(e){var t={name:"K-Meleon"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/micromessenger/i],describe:function(e){var t={name:"WeChat"},r=i.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?"QQ Browser Lite":"QQ Browser"},r=i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/msie|trident/i],describe:function(e){var t={name:"Internet Explorer"},r=i.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/\sedg\//i],describe:function(e){var t={name:"Microsoft Edge"},r=i.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:"Microsoft Edge"},r=i.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/vivaldi/i],describe:function(e){var t={name:"Vivaldi"},r=i.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/seamonkey/i],describe:function(e){var t={name:"SeaMonkey"},r=i.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sailfish/i],describe:function(e){var t={name:"Sailfish"},r=i.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return r&&(t.version=r),t}},{test:[/silk/i],describe:function(e){var t={name:"Amazon Silk"},r=i.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/phantom/i],describe:function(e){var t={name:"PhantomJS"},r=i.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/slimerjs/i],describe:function(e){var t={name:"SlimerJS"},r=i.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t={name:"BlackBerry"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:"WebOS Browser"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/bada/i],describe:function(e){var t={name:"Bada"},r=i.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/tizen/i],describe:function(e){var t={name:"Tizen"},r=i.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/qupzilla/i],describe:function(e){var t={name:"QupZilla"},r=i.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:"Firefox"},r=i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/electron/i],describe:function(e){var t={name:"Electron"},r=i.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:"Miui"},r=i.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/chromium/i],describe:function(e){var t={name:"Chromium"},r=i.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:"Chrome"},r=i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/GSA/i],describe:function(e){var t={name:"Google Search"},r=i.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t={name:"Android Browser"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/playstation 4/i],describe:function(e){var t={name:"PlayStation 4"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:"Safari"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return {name:i.default.getFirstMatch(t,e),version:i.default.getSecondMatch(t,e)}}}];t.default=a,e.exports=t.default;},93:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:[/Roku\/DVP/],describe:function(e){var t=i.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return {name:s.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=i.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return {name:s.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=i.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),r=i.default.getWindowsVersionName(t);return {name:s.OS_MAP.Windows,version:t,versionName:r}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(e){var t={name:s.OS_MAP.iOS},r=i.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return r&&(t.version=r),t}},{test:[/macintosh/i],describe:function(e){var t=i.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),r=i.default.getMacOSVersionName(t),n={name:s.OS_MAP.MacOS,version:t};return r&&(n.versionName=r),n}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=i.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return {name:s.OS_MAP.iOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t=i.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),r=i.default.getAndroidVersionName(t),n={name:s.OS_MAP.Android,version:t};return r&&(n.versionName=r),n}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=i.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),r={name:s.OS_MAP.WebOS};return t&&t.length&&(r.version=t),r}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t=i.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||i.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||i.default.getFirstMatch(/\bbb(\d+)/i,e);return {name:s.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=i.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return {name:s.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=i.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return {name:s.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return {name:s.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return {name:s.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=i.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return {name:s.OS_MAP.PlayStation4,version:t}}}];t.default=a,e.exports=t.default;},94:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:[/googlebot/i],describe:function(){return {type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(e){var t=i.default.getFirstMatch(/(can-l01)/i,e)&&"Nova",r={type:s.PLATFORMS_MAP.mobile,vendor:"Huawei"};return t&&(r.model=t),r}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return {type:s.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return {type:s.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return {type:s.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return {type:s.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return {type:s.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return {type:s.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),r=e.test(/like (ipod|iphone)/i);return t&&!r},describe:function(e){var t=i.default.getFirstMatch(/(ipod|iphone)/i,e);return {type:s.PLATFORMS_MAP.mobile,vendor:"Apple",model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return {type:s.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/[^-]mobi/i],describe:function(){return {type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return "blackberry"===e.getBrowserName(!0)},describe:function(){return {type:s.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(e){return "bada"===e.getBrowserName(!0)},describe:function(){return {type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return "windows phone"===e.getBrowserName()},describe:function(){return {type:s.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(".")[0]);return "android"===e.getOSName(!0)&&t>=3},describe:function(){return {type:s.PLATFORMS_MAP.tablet}}},{test:function(e){return "android"===e.getOSName(!0)},describe:function(){return {type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return "macos"===e.getOSName(!0)},describe:function(){return {type:s.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(e){return "windows"===e.getOSName(!0)},describe:function(){return {type:s.PLATFORMS_MAP.desktop}}},{test:function(e){return "linux"===e.getOSName(!0)},describe:function(){return {type:s.PLATFORMS_MAP.desktop}}},{test:function(e){return "playstation 4"===e.getOSName(!0)},describe:function(){return {type:s.PLATFORMS_MAP.tv}}},{test:function(e){return "roku"===e.getOSName(!0)},describe:function(){return {type:s.PLATFORMS_MAP.tv}}}];t.default=a,e.exports=t.default;},95:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:function(e){return "microsoft edge"===e.getBrowserName(!0)},describe:function(e){if(/\sedg\//i.test(e))return {name:s.ENGINE_MAP.Blink};var t=i.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return {name:s.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:s.ENGINE_MAP.Trident},r=i.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:s.ENGINE_MAP.Presto},r=i.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=e.test(/gecko/i),r=e.test(/like gecko/i);return t&&!r},describe:function(e){var t={name:s.ENGINE_MAP.Gecko},r=i.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return {name:s.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:s.ENGINE_MAP.WebKit},r=i.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}}];t.default=a,e.exports=t.default;}})}));
10715
- }(es5));
10716
-
10717
- var Bowser = /*@__PURE__*/getDefaultExportFromCjs(es5.exports);
10718
-
10719
- function getBrowserDetails() {
10720
- const browser = Bowser.getParser(window.navigator.userAgent);
10721
- return browser.getBrowser();
10722
- }
10723
-
10724
10409
  /**
10725
10410
  * Creates a continuation function with some arguments already applied.
10726
10411
  *
@@ -13817,112 +13502,422 @@ function whilst(test, iteratee, callback) {
13817
13502
  _fn(next);
13818
13503
  }
13819
13504
 
13820
- return _test(check);
13505
+ return _test(check);
13506
+ }
13507
+ awaitify(whilst, 3);
13508
+
13509
+ /**
13510
+ * Runs the `tasks` array of functions in series, each passing their results to
13511
+ * the next in the array. However, if any of the `tasks` pass an error to their
13512
+ * own callback, the next function is not executed, and the main `callback` is
13513
+ * immediately called with the error.
13514
+ *
13515
+ * @name waterfall
13516
+ * @static
13517
+ * @memberOf module:ControlFlow
13518
+ * @method
13519
+ * @category Control Flow
13520
+ * @param {Array} tasks - An array of [async functions]{@link AsyncFunction}
13521
+ * to run.
13522
+ * Each function should complete with any number of `result` values.
13523
+ * The `result` values will be passed as arguments, in order, to the next task.
13524
+ * @param {Function} [callback] - An optional callback to run once all the
13525
+ * functions have completed. This will be passed the results of the last task's
13526
+ * callback. Invoked with (err, [results]).
13527
+ * @returns {Promise} a promise, if a callback is omitted
13528
+ * @example
13529
+ *
13530
+ * async.waterfall([
13531
+ * function(callback) {
13532
+ * callback(null, 'one', 'two');
13533
+ * },
13534
+ * function(arg1, arg2, callback) {
13535
+ * // arg1 now equals 'one' and arg2 now equals 'two'
13536
+ * callback(null, 'three');
13537
+ * },
13538
+ * function(arg1, callback) {
13539
+ * // arg1 now equals 'three'
13540
+ * callback(null, 'done');
13541
+ * }
13542
+ * ], function (err, result) {
13543
+ * // result now equals 'done'
13544
+ * });
13545
+ *
13546
+ * // Or, with named functions:
13547
+ * async.waterfall([
13548
+ * myFirstFunction,
13549
+ * mySecondFunction,
13550
+ * myLastFunction,
13551
+ * ], function (err, result) {
13552
+ * // result now equals 'done'
13553
+ * });
13554
+ * function myFirstFunction(callback) {
13555
+ * callback(null, 'one', 'two');
13556
+ * }
13557
+ * function mySecondFunction(arg1, arg2, callback) {
13558
+ * // arg1 now equals 'one' and arg2 now equals 'two'
13559
+ * callback(null, 'three');
13560
+ * }
13561
+ * function myLastFunction(arg1, callback) {
13562
+ * // arg1 now equals 'three'
13563
+ * callback(null, 'done');
13564
+ * }
13565
+ */
13566
+ function waterfall (tasks, callback) {
13567
+ callback = once(callback);
13568
+ if (!Array.isArray(tasks)) return callback(new Error('First argument to waterfall must be an array of functions'));
13569
+ if (!tasks.length) return callback();
13570
+ var taskIndex = 0;
13571
+
13572
+ function nextTask(args) {
13573
+ var task = wrapAsync(tasks[taskIndex++]);
13574
+ task(...args, onlyOnce(next));
13575
+ }
13576
+
13577
+ function next(err, ...args) {
13578
+ if (err === false) return
13579
+ if (err || taskIndex === tasks.length) {
13580
+ return callback(err, ...args);
13581
+ }
13582
+ nextTask(args);
13583
+ }
13584
+
13585
+ nextTask([]);
13586
+ }
13587
+
13588
+ awaitify(waterfall);
13589
+
13590
+ function processTasks(task, finishedCallback) {
13591
+ return __awaiter(this, void 0, void 0, function* () {
13592
+ try {
13593
+ yield task();
13594
+ finishedCallback();
13595
+ }
13596
+ catch (e) {
13597
+ finishedCallback(e);
13598
+ }
13599
+ });
13600
+ }
13601
+ class AsyncQueue {
13602
+ constructor() {
13603
+ this.queue = queue$1(processTasks, 1);
13604
+ }
13605
+ push(task) {
13606
+ return this.queue.pushAsync(task);
13607
+ }
13608
+ empty() {
13609
+ return this.queue.empty();
13610
+ }
13611
+ }
13612
+
13613
+ var OfferAnswerType;
13614
+ (function (OfferAnswerType) {
13615
+ OfferAnswerType[OfferAnswerType["LocalOnly"] = 0] = "LocalOnly";
13616
+ OfferAnswerType[OfferAnswerType["Remote"] = 1] = "Remote";
13617
+ })(OfferAnswerType || (OfferAnswerType = {}));
13618
+ class SendOnlyTransceiver extends Transceiver {
13619
+ constructor(rtcRtpTransceiver, mid, csi, munger, mediaType) {
13620
+ super(rtcRtpTransceiver, mid);
13621
+ this.rtxEnabled = false;
13622
+ this.streamMuteStateChange = new TypedEvent();
13623
+ this.streamPublishStateChange = new TypedEvent();
13624
+ this.negotiationNeeded = new TypedEvent();
13625
+ this.namedMediaGroupsChange = new TypedEvent();
13626
+ this.requestedIdEncodingParamsMap = new Map();
13627
+ this.updateSendParametersQueue = new AsyncQueue();
13628
+ this.csi = csi;
13629
+ this.direction = 'sendrecv';
13630
+ this.handleTrackChange = this.handleTrackChange.bind(this);
13631
+ this.handleStreamConstraintsChange = this.handleStreamConstraintsChange.bind(this);
13632
+ this.handleStreamMuteStateChange = this.handleStreamMuteStateChange.bind(this);
13633
+ this.munger = munger;
13634
+ this.mediaType = mediaType;
13635
+ }
13636
+ handleTrackChange() {
13637
+ var _a;
13638
+ return __awaiter(this, void 0, void 0, function* () {
13639
+ if (this.requested) {
13640
+ yield this.sender.replaceTrack(((_a = this.publishedStream) === null || _a === void 0 ? void 0 : _a.outputStream.getTracks()[0]) || null);
13641
+ }
13642
+ });
13643
+ }
13644
+ handleStreamConstraintsChange() {
13645
+ return __awaiter(this, void 0, void 0, function* () {
13646
+ yield this.updateSendParameters(this.requestedIdEncodingParamsMap);
13647
+ });
13648
+ }
13649
+ handleStreamMuteStateChange() {
13650
+ this.streamMuteStateChange.emit();
13651
+ }
13652
+ get requested() {
13653
+ return this.requestedIdEncodingParamsMap.size > 0;
13654
+ }
13655
+ replaceTransceiver(newRtcRtpTransceiver) {
13656
+ const _super = Object.create(null, {
13657
+ replaceTransceiver: { get: () => super.replaceTransceiver }
13658
+ });
13659
+ var _a;
13660
+ return __awaiter(this, void 0, void 0, function* () {
13661
+ _super.replaceTransceiver.call(this, newRtcRtpTransceiver);
13662
+ newRtcRtpTransceiver.direction = this.direction;
13663
+ if (this.requested) {
13664
+ yield this.sender.replaceTrack(((_a = this.publishedStream) === null || _a === void 0 ? void 0 : _a.outputStream.getTracks()[0]) || null);
13665
+ }
13666
+ });
13667
+ }
13668
+ replacePublishedStream(newStream) {
13669
+ return __awaiter(this, void 0, void 0, function* () {
13670
+ const oldStream = this.publishedStream;
13671
+ oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(LocalStreamEventNames.OutputTrackChange, this.handleTrackChange);
13672
+ oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(LocalStreamEventNames.ConstraintsChange, this.handleStreamConstraintsChange);
13673
+ oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(StreamEventNames.MuteStateChange, this.handleStreamMuteStateChange);
13674
+ if (this.requested) {
13675
+ yield this.sender.replaceTrack((newStream === null || newStream === void 0 ? void 0 : newStream.outputStream.getTracks()[0]) || null);
13676
+ }
13677
+ this.publishedStream = newStream;
13678
+ newStream === null || newStream === void 0 ? void 0 : newStream.on(LocalStreamEventNames.OutputTrackChange, this.handleTrackChange);
13679
+ newStream === null || newStream === void 0 ? void 0 : newStream.on(LocalStreamEventNames.ConstraintsChange, this.handleStreamConstraintsChange);
13680
+ newStream === null || newStream === void 0 ? void 0 : newStream.on(StreamEventNames.MuteStateChange, this.handleStreamMuteStateChange);
13681
+ if ((!oldStream && newStream && !newStream.muted) ||
13682
+ (oldStream && !newStream && !oldStream.muted)) {
13683
+ this.streamPublishStateChange.emit();
13684
+ }
13685
+ else if ((oldStream === null || oldStream === void 0 ? void 0 : oldStream.muted) !== (newStream === null || newStream === void 0 ? void 0 : newStream.muted)) {
13686
+ this.streamMuteStateChange.emit();
13687
+ }
13688
+ });
13689
+ }
13690
+ setNamedMediaGroups(namedMediaGroups) {
13691
+ if (this.mediaType !== MediaType.AudioMain) {
13692
+ throw new Error(`This interface does not allow media types other than AudioMain: ${this.mediaType}`);
13693
+ }
13694
+ this.namedMediaGroups = namedMediaGroups;
13695
+ this.namedMediaGroupsChange.emit();
13696
+ }
13697
+ publishStream(stream) {
13698
+ return this.replacePublishedStream(stream);
13699
+ }
13700
+ unpublishStream() {
13701
+ return this.replacePublishedStream();
13702
+ }
13703
+ get active() {
13704
+ return this._rtcRtpTransceiver.direction === 'sendrecv';
13705
+ }
13706
+ set active(enabled) {
13707
+ this.direction = enabled ? 'sendrecv' : 'inactive';
13708
+ this._rtcRtpTransceiver.direction = this.direction;
13709
+ if (this._rtcRtpTransceiver.direction !== this._rtcRtpTransceiver.currentDirection) {
13710
+ this.negotiationNeeded.emit(OfferAnswerType.Remote);
13711
+ }
13712
+ }
13713
+ getStats() {
13714
+ return this.sender.getStats();
13715
+ }
13716
+ updateSendParameters(requestedIdEncodingParamsMap) {
13717
+ return __awaiter(this, void 0, void 0, function* () {
13718
+ return this.updateSendParametersQueue.push(() => __awaiter(this, void 0, void 0, function* () {
13719
+ if (this.publishedStream) {
13720
+ const requested = requestedIdEncodingParamsMap.size > 0;
13721
+ if (this.requested !== requested) {
13722
+ this.sender.replaceTrack(requested ? this.publishedStream.outputStream.getTracks()[0] || null : null);
13723
+ }
13724
+ const sendParameters = this.sender.getParameters();
13725
+ sendParameters.encodings.forEach((encoding, index) => {
13726
+ var _a, _b;
13727
+ const encodingParams = requestedIdEncodingParamsMap.get(index);
13728
+ encoding.active = !!encodingParams;
13729
+ if (encodingParams) {
13730
+ const { maxPayloadBitsPerSecond, maxFs, maxWidth, maxHeight } = encodingParams;
13731
+ const scaleDownRatio = getScaleDownRatio((_a = this.publishedStream) === null || _a === void 0 ? void 0 : _a.getSettings().width, (_b = this.publishedStream) === null || _b === void 0 ? void 0 : _b.getSettings().height, maxFs, maxWidth, maxHeight);
13732
+ if (maxPayloadBitsPerSecond !== undefined && maxPayloadBitsPerSecond >= 0) {
13733
+ encoding.maxBitrate = maxPayloadBitsPerSecond;
13734
+ }
13735
+ if (scaleDownRatio !== undefined && scaleDownRatio >= 1.0) {
13736
+ encoding.scaleResolutionDownBy = scaleDownRatio;
13737
+ }
13738
+ }
13739
+ });
13740
+ yield this.sender.setParameters(sendParameters);
13741
+ }
13742
+ this.requestedIdEncodingParamsMap = requestedIdEncodingParamsMap;
13743
+ }));
13744
+ });
13745
+ }
13746
+ isSimulcastEnabled() {
13747
+ const params = this.sender.getParameters();
13748
+ return params.encodings.length > 1;
13749
+ }
13750
+ mungeLocalDescription(mediaDescription) {
13751
+ this.munger.mungeLocalDescription(mediaDescription, this.isSimulcastEnabled(), this.rtxEnabled);
13752
+ }
13753
+ mungeLocalDescriptionForRemoteServer(mediaDescription) {
13754
+ this.munger.mungeLocalDescriptionForRemoteServer(mediaDescription, getMediaContent(this.mediaType), this.csi);
13755
+ }
13756
+ mungeRemoteDescription(mediaDescription) {
13757
+ this.munger.mungeRemoteDescription(mediaDescription);
13758
+ }
13759
+ get senderIds() {
13760
+ return this.munger.getSenderIds();
13761
+ }
13762
+ get numActiveSimulcastLayers() {
13763
+ var _a;
13764
+ if (getMediaFamily(this.mediaType) === MediaFamily.Video) {
13765
+ return (_a = this.publishedStream) === null || _a === void 0 ? void 0 : _a.getNumActiveSimulcastLayers();
13766
+ }
13767
+ return this.publishedStream ? 0 : undefined;
13768
+ }
13769
+ getEncodingIndexForStreamId(id) {
13770
+ return this.munger.getEncodingIndexForStreamId(id);
13771
+ }
13772
+ resetSdpMunger() {
13773
+ this.munger.reset();
13774
+ }
13775
+ setCodecParameters(parameters) {
13776
+ this.munger.setCodecParameters(parameters);
13777
+ this.negotiationNeeded.emit(OfferAnswerType.LocalOnly);
13778
+ }
13779
+ deleteCodecParameters(parameters) {
13780
+ this.munger.deleteCodecParameters(parameters);
13781
+ this.negotiationNeeded.emit(OfferAnswerType.LocalOnly);
13782
+ }
13783
+ }
13784
+
13785
+ class SendSlot {
13786
+ constructor(sendTransceiver) {
13787
+ this.sendTransceiver = sendTransceiver;
13788
+ }
13789
+ publishStream(stream) {
13790
+ return __awaiter(this, void 0, void 0, function* () {
13791
+ if (stream === this.sendTransceiver.publishedStream) {
13792
+ return Promise.resolve();
13793
+ }
13794
+ return this.sendTransceiver.publishStream(stream);
13795
+ });
13796
+ }
13797
+ unpublishStream() {
13798
+ return __awaiter(this, void 0, void 0, function* () {
13799
+ if (!this.sendTransceiver.publishedStream) {
13800
+ return Promise.resolve();
13801
+ }
13802
+ return this.sendTransceiver.unpublishStream();
13803
+ });
13804
+ }
13805
+ setNamedMediaGroups(namedMediaGroups) {
13806
+ this.sendTransceiver.setNamedMediaGroups(namedMediaGroups);
13807
+ }
13808
+ get active() {
13809
+ return this.sendTransceiver.active;
13810
+ }
13811
+ set active(active) {
13812
+ this.sendTransceiver.active = active;
13813
+ }
13814
+ setCodecParameters(parameters) {
13815
+ return __awaiter(this, void 0, void 0, function* () {
13816
+ this.sendTransceiver.setCodecParameters(parameters);
13817
+ });
13818
+ }
13819
+ deleteCodecParameters(parameters) {
13820
+ return __awaiter(this, void 0, void 0, function* () {
13821
+ this.sendTransceiver.deleteCodecParameters(parameters);
13822
+ });
13823
+ }
13821
13824
  }
13822
- awaitify(whilst, 3);
13823
13825
 
13824
- /**
13825
- * Runs the `tasks` array of functions in series, each passing their results to
13826
- * the next in the array. However, if any of the `tasks` pass an error to their
13827
- * own callback, the next function is not executed, and the main `callback` is
13828
- * immediately called with the error.
13829
- *
13830
- * @name waterfall
13831
- * @static
13832
- * @memberOf module:ControlFlow
13833
- * @method
13834
- * @category Control Flow
13835
- * @param {Array} tasks - An array of [async functions]{@link AsyncFunction}
13836
- * to run.
13837
- * Each function should complete with any number of `result` values.
13838
- * The `result` values will be passed as arguments, in order, to the next task.
13839
- * @param {Function} [callback] - An optional callback to run once all the
13840
- * functions have completed. This will be passed the results of the last task's
13841
- * callback. Invoked with (err, [results]).
13842
- * @returns {Promise} a promise, if a callback is omitted
13843
- * @example
13844
- *
13845
- * async.waterfall([
13846
- * function(callback) {
13847
- * callback(null, 'one', 'two');
13848
- * },
13849
- * function(arg1, arg2, callback) {
13850
- * // arg1 now equals 'one' and arg2 now equals 'two'
13851
- * callback(null, 'three');
13852
- * },
13853
- * function(arg1, callback) {
13854
- * // arg1 now equals 'three'
13855
- * callback(null, 'done');
13856
- * }
13857
- * ], function (err, result) {
13858
- * // result now equals 'done'
13859
- * });
13860
- *
13861
- * // Or, with named functions:
13862
- * async.waterfall([
13863
- * myFirstFunction,
13864
- * mySecondFunction,
13865
- * myLastFunction,
13866
- * ], function (err, result) {
13867
- * // result now equals 'done'
13868
- * });
13869
- * function myFirstFunction(callback) {
13870
- * callback(null, 'one', 'two');
13871
- * }
13872
- * function mySecondFunction(arg1, arg2, callback) {
13873
- * // arg1 now equals 'one' and arg2 now equals 'two'
13874
- * callback(null, 'three');
13875
- * }
13876
- * function myLastFunction(arg1, callback) {
13877
- * // arg1 now equals 'three'
13878
- * callback(null, 'done');
13879
- * }
13880
- */
13881
- function waterfall (tasks, callback) {
13882
- callback = once(callback);
13883
- if (!Array.isArray(tasks)) return callback(new Error('First argument to waterfall must be an array of functions'));
13884
- if (!tasks.length) return callback();
13885
- var taskIndex = 0;
13826
+ class StatsManager {
13827
+ constructor(statsGetter, statsPreprocessor = () => __awaiter(this, void 0, void 0, function* () { })) {
13828
+ this.statsGetter = statsGetter;
13829
+ this.statsPreProcessor = statsPreprocessor;
13830
+ }
13831
+ getStats() {
13832
+ return __awaiter(this, void 0, void 0, function* () {
13833
+ const statsReport = yield this.statsGetter();
13834
+ const statsMap = new Map();
13835
+ statsReport.forEach((stats, key) => statsMap.set(key, stats));
13836
+ yield this.statsPreProcessor(statsMap);
13837
+ return statsMap;
13838
+ });
13839
+ }
13840
+ }
13886
13841
 
13887
- function nextTask(args) {
13888
- var task = wrapAsync(tasks[taskIndex++]);
13889
- task(...args, onlyOnce(next));
13890
- }
13842
+ const organizeTransceiverStats = (sendTransceivers, recvTransceivers) => __awaiter(void 0, void 0, void 0, function* () {
13843
+ const result = {
13844
+ audio: {
13845
+ senders: [],
13846
+ receivers: [],
13847
+ },
13848
+ video: {
13849
+ senders: [],
13850
+ receivers: [],
13851
+ },
13852
+ screenShareAudio: {
13853
+ senders: [],
13854
+ receivers: [],
13855
+ },
13856
+ screenShareVideo: {
13857
+ senders: [],
13858
+ receivers: [],
13859
+ },
13860
+ };
13861
+ yield Promise.all([...sendTransceivers.entries()].map(([mediaType, transceiver]) => __awaiter(void 0, void 0, void 0, function* () {
13862
+ var _a;
13863
+ const item = {
13864
+ report: yield transceiver.getStats(),
13865
+ mid: transceiver.mid,
13866
+ csi: transceiver.csi,
13867
+ currentDirection: 'sendonly',
13868
+ localTrackLabel: (_a = transceiver.publishedStream) === null || _a === void 0 ? void 0 : _a.label,
13869
+ };
13870
+ if (mediaType === MediaType.AudioMain) {
13871
+ result.audio.senders.push(item);
13872
+ }
13873
+ if (mediaType === MediaType.VideoMain) {
13874
+ result.video.senders.push(item);
13875
+ }
13876
+ if (mediaType === MediaType.AudioSlides) {
13877
+ result.screenShareAudio.senders.push(item);
13878
+ }
13879
+ if (mediaType === MediaType.VideoSlides) {
13880
+ result.screenShareVideo.senders.push(item);
13881
+ }
13882
+ })));
13883
+ yield Promise.all([...recvTransceivers.entries()].map(([mediaType, transceivers]) => __awaiter(void 0, void 0, void 0, function* () {
13884
+ return Promise.all(transceivers.map((t) => __awaiter(void 0, void 0, void 0, function* () {
13885
+ var _b, _c;
13886
+ const item = {
13887
+ report: yield t.getStats(),
13888
+ mid: (_b = t.receiveSlot.id) === null || _b === void 0 ? void 0 : _b.mid,
13889
+ csi: t.receiveSlot.currentRxCsi,
13890
+ currentDirection: 'recvonly',
13891
+ localTrackLabel: (_c = t.receiveSlot.stream.getTracks()[0]) === null || _c === void 0 ? void 0 : _c.label,
13892
+ };
13893
+ if (mediaType === MediaType.AudioMain) {
13894
+ result.audio.receivers.push(item);
13895
+ }
13896
+ if (mediaType === MediaType.VideoMain) {
13897
+ result.video.receivers.push(item);
13898
+ }
13899
+ if (mediaType === MediaType.AudioSlides) {
13900
+ result.screenShareAudio.receivers.push(item);
13901
+ }
13902
+ if (mediaType === MediaType.VideoSlides) {
13903
+ result.screenShareVideo.receivers.push(item);
13904
+ }
13905
+ })));
13906
+ })));
13907
+ return result;
13908
+ });
13891
13909
 
13892
- function next(err, ...args) {
13893
- if (err === false) return
13894
- if (err || taskIndex === tasks.length) {
13895
- return callback(err, ...args);
13896
- }
13897
- nextTask(args);
13898
- }
13910
+ var es5 = {exports: {}};
13899
13911
 
13900
- nextTask([]);
13901
- }
13912
+ (function (module, exports) {
13913
+ !function(e,t){module.exports=t();}(commonjsGlobal,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n});},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0});},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=90)}({17:function(e,t,r){t.__esModule=!0,t.default=void 0;var n=r(18),i=function(){function e(){}return e.getFirstMatch=function(e,t){var r=t.match(e);return r&&r.length>0&&r[1]||""},e.getSecondMatch=function(e,t){var r=t.match(e);return r&&r.length>1&&r[2]||""},e.matchAndReturnConst=function(e,t,r){if(e.test(t))return r},e.getWindowsVersionName=function(e){switch(e){case"NT":return "NT";case"XP":return "XP";case"NT 5.0":return "2000";case"NT 5.1":return "XP";case"NT 5.2":return "2003";case"NT 6.0":return "Vista";case"NT 6.1":return "7";case"NT 6.2":return "8";case"NT 6.3":return "8.1";case"NT 10.0":return "10";default:return}},e.getMacOSVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),10===t[0])switch(t[1]){case 5:return "Leopard";case 6:return "Snow Leopard";case 7:return "Lion";case 8:return "Mountain Lion";case 9:return "Mavericks";case 10:return "Yosemite";case 11:return "El Capitan";case 12:return "Sierra";case 13:return "High Sierra";case 14:return "Mojave";case 15:return "Catalina";default:return}},e.getAndroidVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?"Cupcake":1===t[0]&&t[1]>=6?"Donut":2===t[0]&&t[1]<2?"Eclair":2===t[0]&&2===t[1]?"Froyo":2===t[0]&&t[1]>2?"Gingerbread":3===t[0]?"Honeycomb":4===t[0]&&t[1]<1?"Ice Cream Sandwich":4===t[0]&&t[1]<4?"Jelly Bean":4===t[0]&&t[1]>=4?"KitKat":5===t[0]?"Lollipop":6===t[0]?"Marshmallow":7===t[0]?"Nougat":8===t[0]?"Oreo":9===t[0]?"Pie":void 0},e.getVersionPrecision=function(e){return e.split(".").length},e.compareVersions=function(t,r,n){void 0===n&&(n=!1);var i=e.getVersionPrecision(t),s=e.getVersionPrecision(r),a=Math.max(i,s),o=0,u=e.map([t,r],(function(t){var r=a-e.getVersionPrecision(t),n=t+new Array(r+1).join(".0");return e.map(n.split("."),(function(e){return new Array(20-e.length).join("0")+e})).reverse()}));for(n&&(o=a-Math.min(i,s)),a-=1;a>=o;){if(u[0][a]>u[1][a])return 1;if(u[0][a]===u[1][a]){if(a===o)return 0;a-=1;}else if(u[0][a]<u[1][a])return -1}},e.map=function(e,t){var r,n=[];if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r<e.length;r+=1)n.push(t(e[r]));return n},e.find=function(e,t){var r,n;if(Array.prototype.find)return Array.prototype.find.call(e,t);for(r=0,n=e.length;r<n;r+=1){var i=e[r];if(t(i,r))return i}},e.assign=function(e){for(var t,r,n=e,i=arguments.length,s=new Array(i>1?i-1:0),a=1;a<i;a++)s[a-1]=arguments[a];if(Object.assign)return Object.assign.apply(Object,[e].concat(s));var o=function(){var e=s[t];"object"==typeof e&&null!==e&&Object.keys(e).forEach((function(t){n[t]=e[t];}));};for(t=0,r=s.length;t<r;t+=1)o();return e},e.getBrowserAlias=function(e){return n.BROWSER_ALIASES_MAP[e]},e.getBrowserTypeByAlias=function(e){return n.BROWSER_MAP[e]||""},e}();t.default=i,e.exports=t.default;},18:function(e,t,r){t.__esModule=!0,t.ENGINE_MAP=t.OS_MAP=t.PLATFORMS_MAP=t.BROWSER_MAP=t.BROWSER_ALIASES_MAP=void 0;t.BROWSER_ALIASES_MAP={"Amazon Silk":"amazon_silk","Android Browser":"android",Bada:"bada",BlackBerry:"blackberry",Chrome:"chrome",Chromium:"chromium",Electron:"electron",Epiphany:"epiphany",Firefox:"firefox",Focus:"focus",Generic:"generic","Google Search":"google_search",Googlebot:"googlebot","Internet Explorer":"ie","K-Meleon":"k_meleon",Maxthon:"maxthon","Microsoft Edge":"edge","MZ Browser":"mz","NAVER Whale Browser":"naver",Opera:"opera","Opera Coast":"opera_coast",PhantomJS:"phantomjs",Puffin:"puffin",QupZilla:"qupzilla",QQ:"qq",QQLite:"qqlite",Safari:"safari",Sailfish:"sailfish","Samsung Internet for Android":"samsung_internet",SeaMonkey:"seamonkey",Sleipnir:"sleipnir",Swing:"swing",Tizen:"tizen","UC Browser":"uc",Vivaldi:"vivaldi","WebOS Browser":"webos",WeChat:"wechat","Yandex Browser":"yandex",Roku:"roku"};t.BROWSER_MAP={amazon_silk:"Amazon Silk",android:"Android Browser",bada:"Bada",blackberry:"BlackBerry",chrome:"Chrome",chromium:"Chromium",electron:"Electron",epiphany:"Epiphany",firefox:"Firefox",focus:"Focus",generic:"Generic",googlebot:"Googlebot",google_search:"Google Search",ie:"Internet Explorer",k_meleon:"K-Meleon",maxthon:"Maxthon",edge:"Microsoft Edge",mz:"MZ Browser",naver:"NAVER Whale Browser",opera:"Opera",opera_coast:"Opera Coast",phantomjs:"PhantomJS",puffin:"Puffin",qupzilla:"QupZilla",qq:"QQ Browser",qqlite:"QQ Browser Lite",safari:"Safari",sailfish:"Sailfish",samsung_internet:"Samsung Internet for Android",seamonkey:"SeaMonkey",sleipnir:"Sleipnir",swing:"Swing",tizen:"Tizen",uc:"UC Browser",vivaldi:"Vivaldi",webos:"WebOS Browser",wechat:"WeChat",yandex:"Yandex Browser"};t.PLATFORMS_MAP={tablet:"tablet",mobile:"mobile",desktop:"desktop",tv:"tv"};t.OS_MAP={WindowsPhone:"Windows Phone",Windows:"Windows",MacOS:"macOS",iOS:"iOS",Android:"Android",WebOS:"WebOS",BlackBerry:"BlackBerry",Bada:"Bada",Tizen:"Tizen",Linux:"Linux",ChromeOS:"Chrome OS",PlayStation4:"PlayStation 4",Roku:"Roku"};t.ENGINE_MAP={EdgeHTML:"EdgeHTML",Blink:"Blink",Trident:"Trident",Presto:"Presto",Gecko:"Gecko",WebKit:"WebKit"};},90:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(91))&&n.__esModule?n:{default:n},s=r(18);function a(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n);}}var o=function(){function e(){}var t,r,n;return e.getParser=function(e,t){if(void 0===t&&(t=!1),"string"!=typeof e)throw new Error("UserAgent should be a string");return new i.default(e,t)},e.parse=function(e){return new i.default(e).getResult()},t=e,n=[{key:"BROWSER_MAP",get:function(){return s.BROWSER_MAP}},{key:"ENGINE_MAP",get:function(){return s.ENGINE_MAP}},{key:"OS_MAP",get:function(){return s.OS_MAP}},{key:"PLATFORMS_MAP",get:function(){return s.PLATFORMS_MAP}}],(r=null)&&a(t.prototype,r),n&&a(t,n),e}();t.default=o,e.exports=t.default;},91:function(e,t,r){t.__esModule=!0,t.default=void 0;var n=u(r(92)),i=u(r(93)),s=u(r(94)),a=u(r(95)),o=u(r(17));function u(e){return e&&e.__esModule?e:{default:e}}var d=function(){function e(e,t){if(void 0===t&&(t=!1),null==e||""===e)throw new Error("UserAgent parameter can't be empty");this._ua=e,this.parsedResult={},!0!==t&&this.parse();}var t=e.prototype;return t.getUA=function(){return this._ua},t.test=function(e){return e.test(this._ua)},t.parseBrowser=function(){var e=this;this.parsedResult.browser={};var t=o.default.find(n.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.browser=t.describe(this.getUA())),this.parsedResult.browser},t.getBrowser=function(){return this.parsedResult.browser?this.parsedResult.browser:this.parseBrowser()},t.getBrowserName=function(e){return e?String(this.getBrowser().name).toLowerCase()||"":this.getBrowser().name||""},t.getBrowserVersion=function(){return this.getBrowser().version},t.getOS=function(){return this.parsedResult.os?this.parsedResult.os:this.parseOS()},t.parseOS=function(){var e=this;this.parsedResult.os={};var t=o.default.find(i.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.os=t.describe(this.getUA())),this.parsedResult.os},t.getOSName=function(e){var t=this.getOS().name;return e?String(t).toLowerCase()||"":t||""},t.getOSVersion=function(){return this.getOS().version},t.getPlatform=function(){return this.parsedResult.platform?this.parsedResult.platform:this.parsePlatform()},t.getPlatformType=function(e){void 0===e&&(e=!1);var t=this.getPlatform().type;return e?String(t).toLowerCase()||"":t||""},t.parsePlatform=function(){var e=this;this.parsedResult.platform={};var t=o.default.find(s.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.platform=t.describe(this.getUA())),this.parsedResult.platform},t.getEngine=function(){return this.parsedResult.engine?this.parsedResult.engine:this.parseEngine()},t.getEngineName=function(e){return e?String(this.getEngine().name).toLowerCase()||"":this.getEngine().name||""},t.parseEngine=function(){var e=this;this.parsedResult.engine={};var t=o.default.find(a.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.engine=t.describe(this.getUA())),this.parsedResult.engine},t.parse=function(){return this.parseBrowser(),this.parseOS(),this.parsePlatform(),this.parseEngine(),this},t.getResult=function(){return o.default.assign({},this.parsedResult)},t.satisfies=function(e){var t=this,r={},n=0,i={},s=0;if(Object.keys(e).forEach((function(t){var a=e[t];"string"==typeof a?(i[t]=a,s+=1):"object"==typeof a&&(r[t]=a,n+=1);})),n>0){var a=Object.keys(r),u=o.default.find(a,(function(e){return t.isOS(e)}));if(u){var d=this.satisfies(r[u]);if(void 0!==d)return d}var c=o.default.find(a,(function(e){return t.isPlatform(e)}));if(c){var f=this.satisfies(r[c]);if(void 0!==f)return f}}if(s>0){var l=Object.keys(i),h=o.default.find(l,(function(e){return t.isBrowser(e,!0)}));if(void 0!==h)return this.compareVersion(i[h])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var r=this.getBrowserName().toLowerCase(),n=e.toLowerCase(),i=o.default.getBrowserTypeByAlias(n);return t&&i&&(n=i.toLowerCase()),n===r},t.compareVersion=function(e){var t=[0],r=e,n=!1,i=this.getBrowserVersion();if("string"==typeof i)return ">"===e[0]||"<"===e[0]?(r=e.substr(1),"="===e[1]?(n=!0,r=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?r=e.substr(1):"~"===e[0]&&(n=!0,r=e.substr(1)),t.indexOf(o.default.compareVersions(i,r,n))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some((function(e){return t.is(e)}))},e}();t.default=d,e.exports=t.default;},92:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n};var s=/version\/(\d+(\.?_?\d+)+)/i,a=[{test:[/googlebot/i],describe:function(e){var t={name:"Googlebot"},r=i.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/opera/i],describe:function(e){var t={name:"Opera"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opr\/|opios/i],describe:function(e){var t={name:"Opera"},r=i.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:"Samsung Internet for Android"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Whale/i],describe:function(e){var t={name:"NAVER Whale Browser"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:"MZ Browser"},r=i.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/focus/i],describe:function(e){var t={name:"Focus"},r=i.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/swing/i],describe:function(e){var t={name:"Swing"},r=i.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/coast/i],describe:function(e){var t={name:"Opera Coast"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(e){var t={name:"Opera Touch"},r=i.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/yabrowser/i],describe:function(e){var t={name:"Yandex Browser"},r=i.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:"UC Browser"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:"Maxthon"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/epiphany/i],describe:function(e){var t={name:"Epiphany"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/puffin/i],describe:function(e){var t={name:"Puffin"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sleipnir/i],describe:function(e){var t={name:"Sleipnir"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/k-meleon/i],describe:function(e){var t={name:"K-Meleon"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/micromessenger/i],describe:function(e){var t={name:"WeChat"},r=i.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?"QQ Browser Lite":"QQ Browser"},r=i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/msie|trident/i],describe:function(e){var t={name:"Internet Explorer"},r=i.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/\sedg\//i],describe:function(e){var t={name:"Microsoft Edge"},r=i.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:"Microsoft Edge"},r=i.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/vivaldi/i],describe:function(e){var t={name:"Vivaldi"},r=i.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/seamonkey/i],describe:function(e){var t={name:"SeaMonkey"},r=i.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sailfish/i],describe:function(e){var t={name:"Sailfish"},r=i.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return r&&(t.version=r),t}},{test:[/silk/i],describe:function(e){var t={name:"Amazon Silk"},r=i.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/phantom/i],describe:function(e){var t={name:"PhantomJS"},r=i.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/slimerjs/i],describe:function(e){var t={name:"SlimerJS"},r=i.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t={name:"BlackBerry"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:"WebOS Browser"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/bada/i],describe:function(e){var t={name:"Bada"},r=i.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/tizen/i],describe:function(e){var t={name:"Tizen"},r=i.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/qupzilla/i],describe:function(e){var t={name:"QupZilla"},r=i.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:"Firefox"},r=i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/electron/i],describe:function(e){var t={name:"Electron"},r=i.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:"Miui"},r=i.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/chromium/i],describe:function(e){var t={name:"Chromium"},r=i.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:"Chrome"},r=i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/GSA/i],describe:function(e){var t={name:"Google Search"},r=i.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t={name:"Android Browser"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/playstation 4/i],describe:function(e){var t={name:"PlayStation 4"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:"Safari"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return {name:i.default.getFirstMatch(t,e),version:i.default.getSecondMatch(t,e)}}}];t.default=a,e.exports=t.default;},93:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:[/Roku\/DVP/],describe:function(e){var t=i.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return {name:s.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=i.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return {name:s.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=i.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),r=i.default.getWindowsVersionName(t);return {name:s.OS_MAP.Windows,version:t,versionName:r}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(e){var t={name:s.OS_MAP.iOS},r=i.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return r&&(t.version=r),t}},{test:[/macintosh/i],describe:function(e){var t=i.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),r=i.default.getMacOSVersionName(t),n={name:s.OS_MAP.MacOS,version:t};return r&&(n.versionName=r),n}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=i.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return {name:s.OS_MAP.iOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t=i.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),r=i.default.getAndroidVersionName(t),n={name:s.OS_MAP.Android,version:t};return r&&(n.versionName=r),n}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=i.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),r={name:s.OS_MAP.WebOS};return t&&t.length&&(r.version=t),r}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t=i.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||i.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||i.default.getFirstMatch(/\bbb(\d+)/i,e);return {name:s.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=i.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return {name:s.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=i.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return {name:s.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return {name:s.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return {name:s.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=i.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return {name:s.OS_MAP.PlayStation4,version:t}}}];t.default=a,e.exports=t.default;},94:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:[/googlebot/i],describe:function(){return {type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(e){var t=i.default.getFirstMatch(/(can-l01)/i,e)&&"Nova",r={type:s.PLATFORMS_MAP.mobile,vendor:"Huawei"};return t&&(r.model=t),r}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return {type:s.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return {type:s.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return {type:s.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return {type:s.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return {type:s.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return {type:s.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),r=e.test(/like (ipod|iphone)/i);return t&&!r},describe:function(e){var t=i.default.getFirstMatch(/(ipod|iphone)/i,e);return {type:s.PLATFORMS_MAP.mobile,vendor:"Apple",model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return {type:s.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/[^-]mobi/i],describe:function(){return {type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return "blackberry"===e.getBrowserName(!0)},describe:function(){return {type:s.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(e){return "bada"===e.getBrowserName(!0)},describe:function(){return {type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return "windows phone"===e.getBrowserName()},describe:function(){return {type:s.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(".")[0]);return "android"===e.getOSName(!0)&&t>=3},describe:function(){return {type:s.PLATFORMS_MAP.tablet}}},{test:function(e){return "android"===e.getOSName(!0)},describe:function(){return {type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return "macos"===e.getOSName(!0)},describe:function(){return {type:s.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(e){return "windows"===e.getOSName(!0)},describe:function(){return {type:s.PLATFORMS_MAP.desktop}}},{test:function(e){return "linux"===e.getOSName(!0)},describe:function(){return {type:s.PLATFORMS_MAP.desktop}}},{test:function(e){return "playstation 4"===e.getOSName(!0)},describe:function(){return {type:s.PLATFORMS_MAP.tv}}},{test:function(e){return "roku"===e.getOSName(!0)},describe:function(){return {type:s.PLATFORMS_MAP.tv}}}];t.default=a,e.exports=t.default;},95:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:function(e){return "microsoft edge"===e.getBrowserName(!0)},describe:function(e){if(/\sedg\//i.test(e))return {name:s.ENGINE_MAP.Blink};var t=i.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return {name:s.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:s.ENGINE_MAP.Trident},r=i.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:s.ENGINE_MAP.Presto},r=i.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=e.test(/gecko/i),r=e.test(/like gecko/i);return t&&!r},describe:function(e){var t={name:s.ENGINE_MAP.Gecko},r=i.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return {name:s.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:s.ENGINE_MAP.WebKit},r=i.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}}];t.default=a,e.exports=t.default;}})}));
13914
+ }(es5));
13902
13915
 
13903
- awaitify(waterfall);
13916
+ var Bowser = /*@__PURE__*/getDefaultExportFromCjs(es5.exports);
13904
13917
 
13905
- function processTasks(task, finishedCallback) {
13906
- return __awaiter(this, void 0, void 0, function* () {
13907
- try {
13908
- yield task();
13909
- finishedCallback();
13910
- }
13911
- catch (e) {
13912
- finishedCallback(e);
13913
- }
13914
- });
13915
- }
13916
- class AsyncQueue {
13917
- constructor() {
13918
- this.queue = queue$1(processTasks, 1);
13919
- }
13920
- push(task) {
13921
- return this.queue.pushAsync(task);
13922
- }
13923
- empty() {
13924
- return this.queue.empty();
13925
- }
13918
+ function getBrowserDetails() {
13919
+ const browser = Bowser.getParser(window.navigator.userAgent);
13920
+ return browser.getBrowser();
13926
13921
  }
13927
13922
 
13928
13923
  function toMediaStreamTrackKind(mediaType) {