mistplayers.videojs={name:"VideoJS player",mimes:["html5/application/vnd.apple.mpegurl","html5/application/vnd.apple.mpegurl;version=7"],priority:MistUtil.object.keys(mistplayers).length+1,isMimeSupported:function(e){return MistUtil.array.indexOf(this.mimes,e)==-1?false:true},isBrowserSupported:function(e,t,i){if(location.protocol!=MistUtil.http.url.split(t.url).protocol){i.log("HTTP/HTTPS mismatch for this source");return false}if(location.protocol=="file:"&&e=="html5/application/vnd.apple"){i.log("This source ("+e+") won't load if the page is run via file://");return false}var r={};for(var o in i.info.meta.tracks){if(i.info.meta.tracks[o].type!="meta"){r[i.info.meta.tracks[o].codec]=1}}r=MistUtil.object.keys(r);for(var o=r.length-1;o>=0;o--){if(r[o].substr(0,4)=="HEVC"){r.splice(o,1)}}if(r.length=0){e.timers.start(function(){e.log("Reloading player because of NS_ERROR_DOM_MEDIA_OVERFLOW_ERR");e.reload()},1e3)}});i.api.unload=function(){if(i.videojs){i.videojs.autoplay(false);i.videojs.pause();i.videojs.dispose();i.videojs=false;e.log("Videojs instance disposed")}}});e.log("Built html");if("Proxy"in window&&"Reflect"in window){var u={get:{},set:{}};e.player.api=new Proxy(r,{get:function(e,t,i){if(t in u.get){return u.get[t].apply(e,arguments)}var r=e[t];if(typeof r==="function"){return function(){return r.apply(e,arguments)}}return r},set:function(e,t,i){if(t in u.set){return u.set[t].call(e,i)}return e[t]=i}});e.player.api.load=function(){};u.set.currentTime=function(t){e.player.videojs.currentTime(t)};var f=0;var c=Infinity;for(var v in e.info.meta.tracks){f=Math.max(f,e.info.meta.tracks[v].lastms);c=Math.min(c,e.info.meta.tracks[v].firstms)}var y=c*.001;u.get.duration=function(){if(e.info){var t=r.duration;return t+y}return 0};MistUtil.event.addListener(r,"progress",function(){e.player.api.lastProgress=new Date});u.set.currentTime=function(t){var i=e.player.api.currentTime-t;var r=t-e.player.api.duration;e.log("Seeking to "+MistUtil.format.time(t)+" ("+Math.round(r*-10)/10+"s from live)");e.player.videojs.currentTime(e.video.currentTime-i)};u.get.currentTime=function(){var t=e.player.videojs?e.player.videojs.currentTime():r.currentTime;if(isNaN(t)){return 0}return t+y};u.get.buffered=function(){var t=e.player.videojs?e.player.videojs.buffered():r.buffered;return{length:t.length,start:function(e){return t.start(e)+y},end:function(e){return t.end(e)+y}}};if(e.info.type=="live"){e.player.api.lastProgress=new Date;e.player.api.liveOffset=0}}else{i.api=r}e.player.setSize=function(t){if("videojs"in e.player){e.player.videojs.dimensions(t.width,t.height);r.parentNode.style.width=t.width+"px";r.parentNode.style.height=t.height+"px"}this.api.style.width=t.width+"px";this.api.style.height=t.height+"px"};e.player.api.setSource=function(t){if(!e.player.videojs){return}if(e.player.videojs.src()!=t){e.player.videojs.src({type:e.player.videojs.currentSource().type,src:t})}};e.player.api.setSubtitle=function(e){var t=r.getElementsByTagName("track");for(var i=t.length-1;i>=0;i--){r.removeChild(t[i])}if(e){var o=document.createElement("track");r.appendChild(o);o.kind="subtitles";o.label=e.label;o.srclang=e.lang;o.src=e.src;o.setAttribute("default","")}};if(e.info.type=="live"){var m=MistUtil.event.addListener(r,"loadstart",function(e){MistUtil.event.removeListener(m);MistUtil.event.send("canplay",false,this)});var g=MistUtil.event.addListener(r,"canplay",function(e){if(m){MistUtil.event.removeListener(m)}MistUtil.event.removeListener(g)})}t(r)}if("videojs"in window){o()}else{var s=false;function n(){try{e.video.pause()}catch(e){}e.showError("Error in videojs player");if(!window.mistplayer_videojs_failures){window.mistplayer_videojs_failures=1;e.reload()}else{if(!s){var t=.05*Math.pow(2,window.mistplayer_videojs_failures);e.log("Rate limiter activated: MistPlayer reload delayed by "+Math.round(t*10)/10+" seconds.","error");s=e.timers.start(function(){s=false;delete window.videojs;e.reload()},t*1e3);window.mistplayer_videojs_failures++}}}var a=e.urlappend(mistplayers.videojs.scriptsrc(e.options.host));var l;var d=function(e,t,i,r,o){if(!l){return}if(t==l.src){window.removeEventListener("error",d);n()}return false};window.addEventListener("error",d);l=MistUtil.scripts.insert(a,{onerror:function(t){var i="Failed to load videojs.js";if(t.message){i+=": "+t.message}e.showError(i)},onload:o},e)}};