@vkontakte/videoplayer-core 2.0.129-dev.17be96f1.0 → 2.0.129-dev.3cb78ab3.0
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/es2015.cjs.js +13 -13
- package/es2015.esm.js +10 -10
- package/es2018.cjs.js +13 -13
- package/es2018.esm.js +11 -11
- package/esnext.cjs.js +3 -3
- package/esnext.esm.js +3 -3
- package/evergreen.esm.js +3 -3
- package/package.json +2 -2
package/esnext.esm.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @vkontakte/videoplayer-core v2.0.129-dev.
|
|
3
|
-
*
|
|
2
|
+
* @vkontakte/videoplayer-core v2.0.129-dev.3cb78ab3.0
|
|
3
|
+
* Mon, 24 Mar 2025 07:29:58 GMT
|
|
4
4
|
* https://st.mycdn.me/static/vkontakte-videoplayer/2-0-129/doc/
|
|
5
5
|
*/
|
|
6
6
|
var Vy=Object.create;var tc=Object.defineProperty;var By=Object.getOwnPropertyDescriptor;var Oy=Object.getOwnPropertyNames;var _y=Object.getPrototypeOf,Ny=Object.prototype.hasOwnProperty;var m=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports);var Fy=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of Oy(e))!Ny.call(r,a)&&a!==t&&tc(r,a,{get:()=>e[a],enumerable:!(i=By(e,a))||i.enumerable});return r};var C=(r,e,t)=>(t=r!=null?Vy(_y(r)):{},Fy(e||!r||!r.__esModule?tc(t,"default",{value:r,enumerable:!0}):t,r));var Z=m(($n,rc)=>{"use strict";var Ji=function(r){return r&&r.Math===Math&&r};rc.exports=Ji(typeof globalThis=="object"&&globalThis)||Ji(typeof window=="object"&&window)||Ji(typeof self=="object"&&self)||Ji(typeof global=="object"&&global)||Ji(typeof $n=="object"&&$n)||function(){return this}()||Function("return this")()});var ue=m((fD,ac)=>{"use strict";ac.exports=function(r){try{return!!r()}catch{return!0}}});var Zi=m((bD,sc)=>{"use strict";var qy=ue();sc.exports=!qy(function(){var r=function(){}.bind();return typeof r!="function"||r.hasOwnProperty("prototype")})});var Mn=m((gD,lc)=>{"use strict";var Uy=Zi(),uc=Function.prototype,nc=uc.apply,oc=uc.call;lc.exports=typeof Reflect=="object"&&Reflect.apply||(Uy?oc.bind(nc):function(){return oc.apply(nc,arguments)})});var ae=m((vD,pc)=>{"use strict";var cc=Zi(),dc=Function.prototype,Cn=dc.call,Hy=cc&&dc.bind.bind(Cn,Cn);pc.exports=cc?Hy:function(r){return function(){return Cn.apply(r,arguments)}}});var Ut=m((SD,mc)=>{"use strict";var hc=ae(),jy=hc({}.toString),Qy=hc("".slice);mc.exports=function(r){return Qy(jy(r),8,-1)}});var Dn=m((yD,fc)=>{"use strict";var Gy=Ut(),Wy=ae();fc.exports=function(r){if(Gy(r)==="Function")return Wy(r)}});var X=m((TD,bc)=>{"use strict";var Vn=typeof document=="object"&&document.all;bc.exports=typeof Vn>"u"&&Vn!==void 0?function(r){return typeof r=="function"||r===Vn}:function(r){return typeof r=="function"}});var Re=m((ID,gc)=>{"use strict";var Yy=ue();gc.exports=!Yy(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!==7})});var $e=m((ED,vc)=>{"use strict";var zy=Zi(),Qa=Function.prototype.call;vc.exports=zy?Qa.bind(Qa):function(){return Qa.apply(Qa,arguments)}});var Bn=m(Tc=>{"use strict";var Sc={}.propertyIsEnumerable,yc=Object.getOwnPropertyDescriptor,Ky=yc&&!Sc.call({1:2},1);Tc.f=Ky?function(e){var t=yc(this,e);return!!t&&t.enumerable}:Sc});var er=m((PD,Ic)=>{"use strict";Ic.exports=function(r,e){return{enumerable:!(r&1),configurable:!(r&2),writable:!(r&4),value:e}}});var xc=m((kD,Ec)=>{"use strict";var Xy=ae(),Jy=ue(),Zy=Ut(),On=Object,eT=Xy("".split);Ec.exports=Jy(function(){return!On("z").propertyIsEnumerable(0)})?function(r){return Zy(r)==="String"?eT(r,""):On(r)}:On});var hi=m((wD,Pc)=>{"use strict";Pc.exports=function(r){return r==null}});var It=m((AD,kc)=>{"use strict";var tT=hi(),iT=TypeError;kc.exports=function(r){if(tT(r))throw new iT("Can't call method on "+r);return r}});var Ht=m((LD,wc)=>{"use strict";var rT=xc(),aT=It();wc.exports=function(r){return rT(aT(r))}});var Me=m((RD,Ac)=>{"use strict";var sT=X();Ac.exports=function(r){return typeof r=="object"?r!==null:sT(r)}});var mi=m(($D,Lc)=>{"use strict";Lc.exports={}});var lt=m((MD,$c)=>{"use strict";var _n=mi(),Nn=Z(),nT=X(),Rc=function(r){return nT(r)?r:void 0};$c.exports=function(r,e){return arguments.length<2?Rc(_n[r])||Rc(Nn[r]):_n[r]&&_n[r][e]||Nn[r]&&Nn[r][e]}});var tr=m((CD,Mc)=>{"use strict";var oT=ae();Mc.exports=oT({}.isPrototypeOf)});var jt=m((DD,Vc)=>{"use strict";var uT=Z(),Cc=uT.navigator,Dc=Cc&&Cc.userAgent;Vc.exports=Dc?String(Dc):""});var qn=m((VD,qc)=>{"use strict";var Fc=Z(),Fn=jt(),Bc=Fc.process,Oc=Fc.Deno,_c=Bc&&Bc.versions||Oc&&Oc.version,Nc=_c&&_c.v8,je,Ga;Nc&&(je=Nc.split("."),Ga=je[0]>0&&je[0]<4?1:+(je[0]+je[1]));!Ga&&Fn&&(je=Fn.match(/Edge\/(\d+)/),(!je||je[1]>=74)&&(je=Fn.match(/Chrome\/(\d+)/),je&&(Ga=+je[1])));qc.exports=Ga});var Un=m((BD,Hc)=>{"use strict";var Uc=qn(),lT=ue(),cT=Z(),dT=cT.String;Hc.exports=!!Object.getOwnPropertySymbols&&!lT(function(){var r=Symbol("symbol detection");return!dT(r)||!(Object(r)instanceof Symbol)||!Symbol.sham&&Uc&&Uc<41})});var Hn=m((OD,jc)=>{"use strict";var pT=Un();jc.exports=pT&&!Symbol.sham&&typeof Symbol.iterator=="symbol"});var jn=m((_D,Qc)=>{"use strict";var hT=lt(),mT=X(),fT=tr(),bT=Hn(),gT=Object;Qc.exports=bT?function(r){return typeof r=="symbol"}:function(r){var e=hT("Symbol");return mT(e)&&fT(e.prototype,gT(r))}});var ir=m((ND,Gc)=>{"use strict";var vT=String;Gc.exports=function(r){try{return vT(r)}catch{return"Object"}}});var tt=m((FD,Wc)=>{"use strict";var ST=X(),yT=ir(),TT=TypeError;Wc.exports=function(r){if(ST(r))return r;throw new TT(yT(r)+" is not a function")}});var rr=m((qD,Yc)=>{"use strict";var IT=tt(),ET=hi();Yc.exports=function(r,e){var t=r[e];return ET(t)?void 0:IT(t)}});var Kc=m((UD,zc)=>{"use strict";var Qn=$e(),Gn=X(),Wn=Me(),xT=TypeError;zc.exports=function(r,e){var t,i;if(e==="string"&&Gn(t=r.toString)&&!Wn(i=Qn(t,r))||Gn(t=r.valueOf)&&!Wn(i=Qn(t,r))||e!=="string"&&Gn(t=r.toString)&&!Wn(i=Qn(t,r)))return i;throw new xT("Can't convert object to primitive value")}});var Qe=m((HD,Xc)=>{"use strict";Xc.exports=!0});var ed=m((jD,Zc)=>{"use strict";var Jc=Z(),PT=Object.defineProperty;Zc.exports=function(r,e){try{PT(Jc,r,{value:e,configurable:!0,writable:!0})}catch{Jc[r]=e}return e}});var ar=m((QD,rd)=>{"use strict";var kT=Qe(),wT=Z(),AT=ed(),td="__core-js_shared__",id=rd.exports=wT[td]||AT(td,{});(id.versions||(id.versions=[])).push({version:"3.38.0",mode:kT?"pure":"global",copyright:"\xA9 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.38.0/LICENSE",source:"https://github.com/zloirock/core-js"})});var Yn=m((GD,sd)=>{"use strict";var ad=ar();sd.exports=function(r,e){return ad[r]||(ad[r]=e||{})}});var fi=m((WD,nd)=>{"use strict";var LT=It(),RT=Object;nd.exports=function(r){return RT(LT(r))}});var Ge=m((YD,od)=>{"use strict";var $T=ae(),MT=fi(),CT=$T({}.hasOwnProperty);od.exports=Object.hasOwn||function(e,t){return CT(MT(e),t)}});var zn=m((zD,ud)=>{"use strict";var DT=ae(),VT=0,BT=Math.random(),OT=DT(1 .toString);ud.exports=function(r){return"Symbol("+(r===void 0?"":r)+")_"+OT(++VT+BT,36)}});var le=m((KD,cd)=>{"use strict";var _T=Z(),NT=Yn(),ld=Ge(),FT=zn(),qT=Un(),UT=Hn(),bi=_T.Symbol,Kn=NT("wks"),HT=UT?bi.for||bi:bi&&bi.withoutSetter||FT;cd.exports=function(r){return ld(Kn,r)||(Kn[r]=qT&&ld(bi,r)?bi[r]:HT("Symbol."+r)),Kn[r]}});var md=m((XD,hd)=>{"use strict";var jT=$e(),dd=Me(),pd=jn(),QT=rr(),GT=Kc(),WT=le(),YT=TypeError,zT=WT("toPrimitive");hd.exports=function(r,e){if(!dd(r)||pd(r))return r;var t=QT(r,zT),i;if(t){if(e===void 0&&(e="default"),i=jT(t,r,e),!dd(i)||pd(i))return i;throw new YT("Can't convert object to primitive value")}return e===void 0&&(e="number"),GT(r,e)}});var Xn=m((JD,fd)=>{"use strict";var KT=md(),XT=jn();fd.exports=function(r){var e=KT(r,"string");return XT(e)?e:e+""}});var Wa=m((ZD,gd)=>{"use strict";var JT=Z(),bd=Me(),Jn=JT.document,ZT=bd(Jn)&&bd(Jn.createElement);gd.exports=function(r){return ZT?Jn.createElement(r):{}}});var Zn=m((e0,vd)=>{"use strict";var eI=Re(),tI=ue(),iI=Wa();vd.exports=!eI&&!tI(function(){return Object.defineProperty(iI("div"),"a",{get:function(){return 7}}).a!==7})});var Td=m(yd=>{"use strict";var rI=Re(),aI=$e(),sI=Bn(),nI=er(),oI=Ht(),uI=Xn(),lI=Ge(),cI=Zn(),Sd=Object.getOwnPropertyDescriptor;yd.f=rI?Sd:function(e,t){if(e=oI(e),t=uI(t),cI)try{return Sd(e,t)}catch{}if(lI(e,t))return nI(!aI(sI.f,e,t),e[t])}});var eo=m((i0,Id)=>{"use strict";var dI=ue(),pI=X(),hI=/#|\.prototype\./,sr=function(r,e){var t=fI[mI(r)];return t===gI?!0:t===bI?!1:pI(e)?dI(e):!!e},mI=sr.normalize=function(r){return String(r).replace(hI,".").toLowerCase()},fI=sr.data={},bI=sr.NATIVE="N",gI=sr.POLYFILL="P";Id.exports=sr});var gi=m((r0,xd)=>{"use strict";var Ed=Dn(),vI=tt(),SI=Zi(),yI=Ed(Ed.bind);xd.exports=function(r,e){return vI(r),e===void 0?r:SI?yI(r,e):function(){return r.apply(e,arguments)}}});var to=m((a0,Pd)=>{"use strict";var TI=Re(),II=ue();Pd.exports=TI&&II(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!==42})});var it=m((s0,kd)=>{"use strict";var EI=Me(),xI=String,PI=TypeError;kd.exports=function(r){if(EI(r))return r;throw new PI(xI(r)+" is not an object")}});var Qt=m(Ad=>{"use strict";var kI=Re(),wI=Zn(),AI=to(),Ya=it(),wd=Xn(),LI=TypeError,io=Object.defineProperty,RI=Object.getOwnPropertyDescriptor,ro="enumerable",ao="configurable",so="writable";Ad.f=kI?AI?function(e,t,i){if(Ya(e),t=wd(t),Ya(i),typeof e=="function"&&t==="prototype"&&"value"in i&&so in i&&!i[so]){var a=RI(e,t);a&&a[so]&&(e[t]=i.value,i={configurable:ao in i?i[ao]:a[ao],enumerable:ro in i?i[ro]:a[ro],writable:!1})}return io(e,t,i)}:io:function(e,t,i){if(Ya(e),t=wd(t),Ya(i),wI)try{return io(e,t,i)}catch{}if("get"in i||"set"in i)throw new LI("Accessors not supported");return"value"in i&&(e[t]=i.value),e}});var vi=m((o0,Ld)=>{"use strict";var $I=Re(),MI=Qt(),CI=er();Ld.exports=$I?function(r,e,t){return MI.f(r,e,CI(1,t))}:function(r,e,t){return r[e]=t,r}});var te=m((u0,$d)=>{"use strict";var nr=Z(),DI=Mn(),VI=Dn(),BI=X(),OI=Td().f,_I=eo(),Si=mi(),NI=gi(),yi=vi(),Rd=Ge();ar();var FI=function(r){var e=function(t,i,a){if(this instanceof e){switch(arguments.length){case 0:return new r;case 1:return new r(t);case 2:return new r(t,i)}return new r(t,i,a)}return DI(r,this,arguments)};return e.prototype=r.prototype,e};$d.exports=function(r,e){var t=r.target,i=r.global,a=r.stat,s=r.proto,n=i?nr:a?nr[t]:nr[t]&&nr[t].prototype,o=i?Si:Si[t]||yi(Si,t,{})[t],u=o.prototype,l,c,d,p,h,f,b,g,v;for(p in e)l=_I(i?p:t+(a?".":"#")+p,r.forced),c=!l&&n&&Rd(n,p),f=o[p],c&&(r.dontCallGetSet?(v=OI(n,p),b=v&&v.value):b=n[p]),h=c&&b?b:e[p],!(!l&&!s&&typeof f==typeof h)&&(r.bind&&c?g=NI(h,nr):r.wrap&&c?g=FI(h):s&&BI(h)?g=VI(h):g=h,(r.sham||h&&h.sham||f&&f.sham)&&yi(g,"sham",!0),yi(o,p,g),s&&(d=t+"Prototype",Rd(Si,d)||yi(Si,d,{}),yi(Si[d],p,h),r.real&&u&&(l||!u[p])&&yi(u,p,h)))}});var Cd=m((l0,Md)=>{"use strict";var qI=Math.ceil,UI=Math.floor;Md.exports=Math.trunc||function(e){var t=+e;return(t>0?UI:qI)(t)}});var or=m((c0,Dd)=>{"use strict";var HI=Cd();Dd.exports=function(r){var e=+r;return e!==e||e===0?0:HI(e)}});var Bd=m((d0,Vd)=>{"use strict";var jI=or(),QI=Math.max,GI=Math.min;Vd.exports=function(r,e){var t=jI(r);return t<0?QI(t+e,0):GI(t,e)}});var no=m((p0,Od)=>{"use strict";var WI=or(),YI=Math.min;Od.exports=function(r){var e=WI(r);return e>0?YI(e,9007199254740991):0}});var Ti=m((h0,_d)=>{"use strict";var zI=no();_d.exports=function(r){return zI(r.length)}});var oo=m((m0,Fd)=>{"use strict";var KI=Ht(),XI=Bd(),JI=Ti(),Nd=function(r){return function(e,t,i){var a=KI(e),s=JI(a);if(s===0)return!r&&-1;var n=XI(i,s),o;if(r&&t!==t){for(;s>n;)if(o=a[n++],o!==o)return!0}else for(;s>n;n++)if((r||n in a)&&a[n]===t)return r||n||0;return!r&&-1}};Fd.exports={includes:Nd(!0),indexOf:Nd(!1)}});var ur=m((f0,qd)=>{"use strict";qd.exports=function(){}});var Ud=m(()=>{"use strict";var ZI=te(),eE=oo().includes,tE=ue(),iE=ur(),rE=tE(function(){return!Array(1).includes()});ZI({target:"Array",proto:!0,forced:rE},{includes:function(e){return eE(this,e,arguments.length>1?arguments[1]:void 0)}});iE("includes")});var Et=m((v0,Hd)=>{"use strict";var aE=lt();Hd.exports=aE});var Qd=m((S0,jd)=>{"use strict";Ud();var sE=Et();jd.exports=sE("Array","includes")});var Wd=m((y0,Gd)=>{"use strict";var nE=Qd();Gd.exports=nE});var _e=m((T0,Yd)=>{"use strict";var oE=Wd();Yd.exports=oE});var Xa=m((C0,ip)=>{"use strict";var fE=Yn(),bE=zn(),tp=fE("keys");ip.exports=function(r){return tp[r]||(tp[r]=bE(r))}});var ap=m((D0,rp)=>{"use strict";var gE=ue();rp.exports=!gE(function(){function r(){}return r.prototype.constructor=null,Object.getPrototypeOf(new r)!==r.prototype})});var Ja=m((V0,np)=>{"use strict";var vE=Ge(),SE=X(),yE=fi(),TE=Xa(),IE=ap(),sp=TE("IE_PROTO"),co=Object,EE=co.prototype;np.exports=IE?co.getPrototypeOf:function(r){var e=yE(r);if(vE(e,sp))return e[sp];var t=e.constructor;return SE(t)&&e instanceof t?t.prototype:e instanceof co?EE:null}});var Za=m((B0,op)=>{"use strict";op.exports={}});var cp=m((O0,lp)=>{"use strict";var xE=ae(),po=Ge(),PE=Ht(),kE=oo().indexOf,wE=Za(),up=xE([].push);lp.exports=function(r,e){var t=PE(r),i=0,a=[],s;for(s in t)!po(wE,s)&&po(t,s)&&up(a,s);for(;e.length>i;)po(t,s=e[i++])&&(~kE(a,s)||up(a,s));return a}});var ho=m((_0,dp)=>{"use strict";dp.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]});var mo=m((N0,pp)=>{"use strict";var AE=cp(),LE=ho();pp.exports=Object.keys||function(e){return AE(e,LE)}});var fo=m((F0,gp)=>{"use strict";var mp=Re(),RE=ue(),fp=ae(),$E=Ja(),ME=mo(),CE=Ht(),DE=Bn().f,bp=fp(DE),VE=fp([].push),BE=mp&&RE(function(){var r=Object.create(null);return r[2]=2,!bp(r,2)}),hp=function(r){return function(e){for(var t=CE(e),i=ME(t),a=BE&&$E(t)===null,s=i.length,n=0,o=[],u;s>n;)u=i[n++],(!mp||(a?u in t:bp(t,u)))&&VE(o,r?[u,t[u]]:t[u]);return o}};gp.exports={entries:hp(!0),values:hp(!1)}});var vp=m(()=>{"use strict";var OE=te(),_E=fo().entries;OE({target:"Object",stat:!0},{entries:function(e){return _E(e)}})});var yp=m((H0,Sp)=>{"use strict";vp();var NE=mi();Sp.exports=NE.Object.entries});var Ip=m((j0,Tp)=>{"use strict";var FE=yp();Tp.exports=FE});var Ii=m((Q0,Ep)=>{"use strict";var qE=Ip();Ep.exports=qE});var Gt=m((G0,xp)=>{"use strict";xp.exports={}});var wp=m((W0,kp)=>{"use strict";var UE=Z(),HE=X(),Pp=UE.WeakMap;kp.exports=HE(Pp)&&/native code/.test(String(Pp))});var So=m((Y0,Rp)=>{"use strict";var jE=wp(),Lp=Z(),QE=Me(),GE=vi(),bo=Ge(),go=ar(),WE=Xa(),YE=Za(),Ap="Object already initialized",vo=Lp.TypeError,zE=Lp.WeakMap,es,lr,ts,KE=function(r){return ts(r)?lr(r):es(r,{})},XE=function(r){return function(e){var t;if(!QE(e)||(t=lr(e)).type!==r)throw new vo("Incompatible receiver, "+r+" required");return t}};jE||go.state?(We=go.state||(go.state=new zE),We.get=We.get,We.has=We.has,We.set=We.set,es=function(r,e){if(We.has(r))throw new vo(Ap);return e.facade=r,We.set(r,e),e},lr=function(r){return We.get(r)||{}},ts=function(r){return We.has(r)}):(Wt=WE("state"),YE[Wt]=!0,es=function(r,e){if(bo(r,Wt))throw new vo(Ap);return e.facade=r,GE(r,Wt,e),e},lr=function(r){return bo(r,Wt)?r[Wt]:{}},ts=function(r){return bo(r,Wt)});var We,Wt;Rp.exports={set:es,get:lr,has:ts,enforce:KE,getterFor:XE}});var Io=m((z0,Mp)=>{"use strict";var yo=Re(),JE=Ge(),$p=Function.prototype,ZE=yo&&Object.getOwnPropertyDescriptor,To=JE($p,"name"),ex=To&&function(){}.name==="something",tx=To&&(!yo||yo&&ZE($p,"name").configurable);Mp.exports={EXISTS:To,PROPER:ex,CONFIGURABLE:tx}});var Dp=m(Cp=>{"use strict";var ix=Re(),rx=to(),ax=Qt(),sx=it(),nx=Ht(),ox=mo();Cp.f=ix&&!rx?Object.defineProperties:function(e,t){sx(e);for(var i=nx(t),a=ox(t),s=a.length,n=0,o;s>n;)ax.f(e,o=a[n++],i[o]);return e}});var Eo=m((X0,Vp)=>{"use strict";var ux=lt();Vp.exports=ux("document","documentElement")});var wo=m((J0,Up)=>{"use strict";var lx=it(),cx=Dp(),Bp=ho(),dx=Za(),px=Eo(),hx=Wa(),mx=Xa(),Op=">",_p="<",Po="prototype",ko="script",Fp=mx("IE_PROTO"),xo=function(){},qp=function(r){return _p+ko+Op+r+_p+"/"+ko+Op},Np=function(r){r.write(qp("")),r.close();var e=r.parentWindow.Object;return r=null,e},fx=function(){var r=hx("iframe"),e="java"+ko+":",t;return r.style.display="none",px.appendChild(r),r.src=String(e),t=r.contentWindow.document,t.open(),t.write(qp("document.F=Object")),t.close(),t.F},is,rs=function(){try{is=new ActiveXObject("htmlfile")}catch{}rs=typeof document<"u"?document.domain&&is?Np(is):fx():Np(is);for(var r=Bp.length;r--;)delete rs[Po][Bp[r]];return rs()};dx[Fp]=!0;Up.exports=Object.create||function(e,t){var i;return e!==null?(xo[Po]=lx(e),i=new xo,xo[Po]=null,i[Fp]=e):i=rs(),t===void 0?i:cx.f(i,t)}});var Ei=m((Z0,Hp)=>{"use strict";var bx=vi();Hp.exports=function(r,e,t,i){return i&&i.enumerable?r[e]=t:bx(r,e,t),r}});var $o=m((eV,Gp)=>{"use strict";var gx=ue(),vx=X(),Sx=Me(),yx=wo(),jp=Ja(),Tx=Ei(),Ix=le(),Ex=Qe(),Ro=Ix("iterator"),Qp=!1,ct,Ao,Lo;[].keys&&(Lo=[].keys(),"next"in Lo?(Ao=jp(jp(Lo)),Ao!==Object.prototype&&(ct=Ao)):Qp=!0);var xx=!Sx(ct)||gx(function(){var r={};return ct[Ro].call(r)!==r});xx?ct={}:Ex&&(ct=yx(ct));vx(ct[Ro])||Tx(ct,Ro,function(){return this});Gp.exports={IteratorPrototype:ct,BUGGY_SAFARI_ITERATORS:Qp}});var as=m((tV,Yp)=>{"use strict";var Px=le(),kx=Px("toStringTag"),Wp={};Wp[kx]="z";Yp.exports=String(Wp)==="[object z]"});var cr=m((iV,zp)=>{"use strict";var wx=as(),Ax=X(),ss=Ut(),Lx=le(),Rx=Lx("toStringTag"),$x=Object,Mx=ss(function(){return arguments}())==="Arguments",Cx=function(r,e){try{return r[e]}catch{}};zp.exports=wx?ss:function(r){var e,t,i;return r===void 0?"Undefined":r===null?"Null":typeof(t=Cx(e=$x(r),Rx))=="string"?t:Mx?ss(e):(i=ss(e))==="Object"&&Ax(e.callee)?"Arguments":i}});var Xp=m((rV,Kp)=>{"use strict";var Dx=as(),Vx=cr();Kp.exports=Dx?{}.toString:function(){return"[object "+Vx(this)+"]"}});var dr=m((aV,Zp)=>{"use strict";var Bx=as(),Ox=Qt().f,_x=vi(),Nx=Ge(),Fx=Xp(),qx=le(),Jp=qx("toStringTag");Zp.exports=function(r,e,t,i){var a=t?r:r&&r.prototype;a&&(Nx(a,Jp)||Ox(a,Jp,{configurable:!0,value:e}),i&&!Bx&&_x(a,"toString",Fx))}});var th=m((sV,eh)=>{"use strict";var Ux=$o().IteratorPrototype,Hx=wo(),jx=er(),Qx=dr(),Gx=Gt(),Wx=function(){return this};eh.exports=function(r,e,t,i){var a=e+" Iterator";return r.prototype=Hx(Ux,{next:jx(+!i,t)}),Qx(r,a,!1,!0),Gx[a]=Wx,r}});var rh=m((nV,ih)=>{"use strict";var Yx=ae(),zx=tt();ih.exports=function(r,e,t){try{return Yx(zx(Object.getOwnPropertyDescriptor(r,e)[t]))}catch{}}});var sh=m((oV,ah)=>{"use strict";var Kx=Me();ah.exports=function(r){return Kx(r)||r===null}});var oh=m((uV,nh)=>{"use strict";var Xx=sh(),Jx=String,Zx=TypeError;nh.exports=function(r){if(Xx(r))return r;throw new Zx("Can't set "+Jx(r)+" as a prototype")}});var Mo=m((lV,uh)=>{"use strict";var eP=rh(),tP=Me(),iP=It(),rP=oh();uh.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var r=!1,e={},t;try{t=eP(Object.prototype,"__proto__","set"),t(e,[]),r=e instanceof Array}catch{}return function(a,s){return iP(a),rP(s),tP(a)&&(r?t(a,s):a.__proto__=s),a}}():void 0)});var Sh=m((cV,vh)=>{"use strict";var aP=te(),sP=$e(),ns=Qe(),bh=Io(),nP=X(),oP=th(),lh=Ja(),ch=Mo(),uP=dr(),lP=vi(),Co=Ei(),cP=le(),dh=Gt(),gh=$o(),dP=bh.PROPER,pP=bh.CONFIGURABLE,ph=gh.IteratorPrototype,os=gh.BUGGY_SAFARI_ITERATORS,pr=cP("iterator"),hh="keys",hr="values",mh="entries",fh=function(){return this};vh.exports=function(r,e,t,i,a,s,n){oP(t,e,i);var o=function(v){if(v===a&&p)return p;if(!os&&v&&v in c)return c[v];switch(v){case hh:return function(){return new t(this,v)};case hr:return function(){return new t(this,v)};case mh:return function(){return new t(this,v)}}return function(){return new t(this)}},u=e+" Iterator",l=!1,c=r.prototype,d=c[pr]||c["@@iterator"]||a&&c[a],p=!os&&d||o(a),h=e==="Array"&&c.entries||d,f,b,g;if(h&&(f=lh(h.call(new r)),f!==Object.prototype&&f.next&&(!ns&&lh(f)!==ph&&(ch?ch(f,ph):nP(f[pr])||Co(f,pr,fh)),uP(f,u,!0,!0),ns&&(dh[u]=fh))),dP&&a===hr&&d&&d.name!==hr&&(!ns&&pP?lP(c,"name",hr):(l=!0,p=function(){return sP(d,this)})),a)if(b={values:o(hr),keys:s?p:o(hh),entries:o(mh)},n)for(g in b)(os||l||!(g in c))&&Co(c,g,b[g]);else aP({target:e,proto:!0,forced:os||l},b);return(!ns||n)&&c[pr]!==p&&Co(c,pr,p,{name:a}),dh[e]=p,b}});var Th=m((dV,yh)=>{"use strict";yh.exports=function(r,e){return{value:r,done:e}}});var Vo=m((pV,kh)=>{"use strict";var hP=Ht(),Do=ur(),Ih=Gt(),xh=So(),mP=Qt().f,fP=Sh(),us=Th(),bP=Qe(),gP=Re(),Ph="Array Iterator",vP=xh.set,SP=xh.getterFor(Ph);kh.exports=fP(Array,"Array",function(r,e){vP(this,{type:Ph,target:hP(r),index:0,kind:e})},function(){var r=SP(this),e=r.target,t=r.index++;if(!e||t>=e.length)return r.target=void 0,us(void 0,!0);switch(r.kind){case"keys":return us(t,!1);case"values":return us(e[t],!1)}return us([t,e[t]],!1)},"values");var Eh=Ih.Arguments=Ih.Array;Do("keys");Do("values");Do("entries");if(!bP&&gP&&Eh.name!=="values")try{mP(Eh,"name",{value:"values"})}catch{}});var Ah=m((hV,wh)=>{"use strict";var yP=le(),TP=Gt(),IP=yP("iterator"),EP=Array.prototype;wh.exports=function(r){return r!==void 0&&(TP.Array===r||EP[IP]===r)}});var Bo=m((mV,Rh)=>{"use strict";var xP=cr(),Lh=rr(),PP=hi(),kP=Gt(),wP=le(),AP=wP("iterator");Rh.exports=function(r){if(!PP(r))return Lh(r,AP)||Lh(r,"@@iterator")||kP[xP(r)]}});var Mh=m((fV,$h)=>{"use strict";var LP=$e(),RP=tt(),$P=it(),MP=ir(),CP=Bo(),DP=TypeError;$h.exports=function(r,e){var t=arguments.length<2?CP(r):e;if(RP(t))return $P(LP(t,r));throw new DP(MP(r)+" is not iterable")}});var Vh=m((bV,Dh)=>{"use strict";var VP=$e(),Ch=it(),BP=rr();Dh.exports=function(r,e,t){var i,a;Ch(r);try{if(i=BP(r,"return"),!i){if(e==="throw")throw t;return t}i=VP(i,r)}catch(s){a=!0,i=s}if(e==="throw")throw t;if(a)throw i;return Ch(i),t}});var cs=m((gV,Nh)=>{"use strict";var OP=gi(),_P=$e(),NP=it(),FP=ir(),qP=Ah(),UP=Ti(),Bh=tr(),HP=Mh(),jP=Bo(),Oh=Vh(),QP=TypeError,ls=function(r,e){this.stopped=r,this.result=e},_h=ls.prototype;Nh.exports=function(r,e,t){var i=t&&t.that,a=!!(t&&t.AS_ENTRIES),s=!!(t&&t.IS_RECORD),n=!!(t&&t.IS_ITERATOR),o=!!(t&&t.INTERRUPTED),u=OP(e,i),l,c,d,p,h,f,b,g=function(E){return l&&Oh(l,"normal",E),new ls(!0,E)},v=function(E){return a?(NP(E),o?u(E[0],E[1],g):u(E[0],E[1])):o?u(E,g):u(E)};if(s)l=r.iterator;else if(n)l=r;else{if(c=jP(r),!c)throw new QP(FP(r)+" is not iterable");if(qP(c)){for(d=0,p=UP(r);p>d;d++)if(h=v(r[d]),h&&Bh(_h,h))return h;return new ls(!1)}l=HP(r,c)}for(f=s?r.next:l.next;!(b=_P(f,l)).done;){try{h=v(b.value)}catch(E){Oh(l,"throw",E)}if(typeof h=="object"&&h&&Bh(_h,h))return h}return new ls(!1)}});var qh=m((vV,Fh)=>{"use strict";var GP=Re(),WP=Qt(),YP=er();Fh.exports=function(r,e,t){GP?WP.f(r,e,YP(0,t)):r[e]=t}});var Uh=m(()=>{"use strict";var zP=te(),KP=cs(),XP=qh();zP({target:"Object",stat:!0},{fromEntries:function(e){var t={};return KP(e,function(i,a){XP(t,i,a)},{AS_ENTRIES:!0}),t}})});var jh=m((TV,Hh)=>{"use strict";Vo();Uh();var JP=mi();Hh.exports=JP.Object.fromEntries});var Gh=m((IV,Qh)=>{"use strict";Qh.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}});var Yh=m(()=>{"use strict";Vo();var ZP=Gh(),ek=Z(),tk=dr(),Wh=Gt();for(ds in ZP)tk(ek[ds],ds),Wh[ds]=Wh.Array;var ds});var Kh=m((PV,zh)=>{"use strict";var ik=jh();Yh();zh.exports=ik});var Oo=m((kV,Xh)=>{"use strict";var rk=Kh();Xh.exports=rk});var Jh=m(()=>{"use strict"});var _o=m((LV,Zh)=>{"use strict";var mr=Z(),ak=jt(),sk=Ut(),ps=function(r){return ak.slice(0,r.length)===r};Zh.exports=function(){return ps("Bun/")?"BUN":ps("Cloudflare-Workers")?"CLOUDFLARE":ps("Deno/")?"DENO":ps("Node.js/")?"NODE":mr.Bun&&typeof Bun.version=="string"?"BUN":mr.Deno&&typeof Deno.version=="object"?"DENO":sk(mr.process)==="process"?"NODE":mr.window&&mr.document?"BROWSER":"REST"}()});var hs=m((RV,em)=>{"use strict";var nk=_o();em.exports=nk==="NODE"});var im=m(($V,tm)=>{"use strict";var ok=Qt();tm.exports=function(r,e,t){return ok.f(r,e,t)}});var sm=m((MV,am)=>{"use strict";var uk=lt(),lk=im(),ck=le(),dk=Re(),rm=ck("species");am.exports=function(r){var e=uk(r);dk&&e&&!e[rm]&&lk(e,rm,{configurable:!0,get:function(){return this}})}});var om=m((CV,nm)=>{"use strict";var pk=tr(),hk=TypeError;nm.exports=function(r,e){if(pk(e,r))return r;throw new hk("Incorrect invocation")}});var Fo=m((DV,um)=>{"use strict";var mk=ae(),fk=X(),No=ar(),bk=mk(Function.toString);fk(No.inspectSource)||(No.inspectSource=function(r){return bk(r)});um.exports=No.inspectSource});var Uo=m((VV,hm)=>{"use strict";var gk=ae(),vk=ue(),lm=X(),Sk=cr(),yk=lt(),Tk=Fo(),cm=function(){},dm=yk("Reflect","construct"),qo=/^\s*(?:class|function)\b/,Ik=gk(qo.exec),Ek=!qo.test(cm),fr=function(e){if(!lm(e))return!1;try{return dm(cm,[],e),!0}catch{return!1}},pm=function(e){if(!lm(e))return!1;switch(Sk(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return Ek||!!Ik(qo,Tk(e))}catch{return!0}};pm.sham=!0;hm.exports=!dm||vk(function(){var r;return fr(fr.call)||!fr(Object)||!fr(function(){r=!0})||r})?pm:fr});var fm=m((BV,mm)=>{"use strict";var xk=Uo(),Pk=ir(),kk=TypeError;mm.exports=function(r){if(xk(r))return r;throw new kk(Pk(r)+" is not a constructor")}});var Ho=m((OV,gm)=>{"use strict";var bm=it(),wk=fm(),Ak=hi(),Lk=le(),Rk=Lk("species");gm.exports=function(r,e){var t=bm(r).constructor,i;return t===void 0||Ak(i=bm(t)[Rk])?e:wk(i)}});var Sm=m((_V,vm)=>{"use strict";var $k=ae();vm.exports=$k([].slice)});var Tm=m((NV,ym)=>{"use strict";var Mk=TypeError;ym.exports=function(r,e){if(r<e)throw new Mk("Not enough arguments");return r}});var jo=m((FV,Im)=>{"use strict";var Ck=jt();Im.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(Ck)});var Zo=m((qV,$m)=>{"use strict";var Ce=Z(),Dk=Mn(),Vk=gi(),Em=X(),Bk=Ge(),Rm=ue(),xm=Eo(),Ok=Sm(),Pm=Wa(),_k=Tm(),Nk=jo(),Fk=hs(),Ko=Ce.setImmediate,Xo=Ce.clearImmediate,qk=Ce.process,Qo=Ce.Dispatch,Uk=Ce.Function,km=Ce.MessageChannel,Hk=Ce.String,Go=0,br={},wm="onreadystatechange",gr,Yt,Wo,Yo;Rm(function(){gr=Ce.location});var Jo=function(r){if(Bk(br,r)){var e=br[r];delete br[r],e()}},zo=function(r){return function(){Jo(r)}},Am=function(r){Jo(r.data)},Lm=function(r){Ce.postMessage(Hk(r),gr.protocol+"//"+gr.host)};(!Ko||!Xo)&&(Ko=function(e){_k(arguments.length,1);var t=Em(e)?e:Uk(e),i=Ok(arguments,1);return br[++Go]=function(){Dk(t,void 0,i)},Yt(Go),Go},Xo=function(e){delete br[e]},Fk?Yt=function(r){qk.nextTick(zo(r))}:Qo&&Qo.now?Yt=function(r){Qo.now(zo(r))}:km&&!Nk?(Wo=new km,Yo=Wo.port2,Wo.port1.onmessage=Am,Yt=Vk(Yo.postMessage,Yo)):Ce.addEventListener&&Em(Ce.postMessage)&&!Ce.importScripts&&gr&&gr.protocol!=="file:"&&!Rm(Lm)?(Yt=Lm,Ce.addEventListener("message",Am,!1)):wm in Pm("script")?Yt=function(r){xm.appendChild(Pm("script"))[wm]=function(){xm.removeChild(this),Jo(r)}}:Yt=function(r){setTimeout(zo(r),0)});$m.exports={set:Ko,clear:Xo}});var Dm=m((UV,Cm)=>{"use strict";var Mm=Z(),jk=Re(),Qk=Object.getOwnPropertyDescriptor;Cm.exports=function(r){if(!jk)return Mm[r];var e=Qk(Mm,r);return e&&e.value}});var eu=m((HV,Bm)=>{"use strict";var Vm=function(){this.head=null,this.tail=null};Vm.prototype={add:function(r){var e={item:r,next:null},t=this.tail;t?t.next=e:this.head=e,this.tail=e},get:function(){var r=this.head;if(r){var e=this.head=r.next;return e===null&&(this.tail=null),r.item}}};Bm.exports=Vm});var _m=m((jV,Om)=>{"use strict";var Gk=jt();Om.exports=/ipad|iphone|ipod/i.test(Gk)&&typeof Pebble<"u"});var Fm=m((QV,Nm)=>{"use strict";var Wk=jt();Nm.exports=/web0s(?!.*chrome)/i.test(Wk)});var Wm=m((GV,Gm)=>{"use strict";var Pi=Z(),Yk=Dm(),qm=gi(),tu=Zo().set,zk=eu(),Kk=jo(),Xk=_m(),Jk=Fm(),iu=hs(),Um=Pi.MutationObserver||Pi.WebKitMutationObserver,Hm=Pi.document,jm=Pi.process,ms=Pi.Promise,su=Yk("queueMicrotask"),xi,ru,au,fs,Qm;su||(vr=new zk,Sr=function(){var r,e;for(iu&&(r=jm.domain)&&r.exit();e=vr.get();)try{e()}catch(t){throw vr.head&&xi(),t}r&&r.enter()},!Kk&&!iu&&!Jk&&Um&&Hm?(ru=!0,au=Hm.createTextNode(""),new Um(Sr).observe(au,{characterData:!0}),xi=function(){au.data=ru=!ru}):!Xk&&ms&&ms.resolve?(fs=ms.resolve(void 0),fs.constructor=ms,Qm=qm(fs.then,fs),xi=function(){Qm(Sr)}):iu?xi=function(){jm.nextTick(Sr)}:(tu=qm(tu,Pi),xi=function(){tu(Sr)}),su=function(r){vr.head||xi(),vr.add(r)});var vr,Sr;Gm.exports=su});var zm=m((WV,Ym)=>{"use strict";Ym.exports=function(r,e){try{arguments.length===1?console.error(r):console.error(r,e)}catch{}}});var bs=m((YV,Km)=>{"use strict";Km.exports=function(r){try{return{error:!1,value:r()}}catch(e){return{error:!0,value:e}}}});var zt=m((zV,Xm)=>{"use strict";var Zk=Z();Xm.exports=Zk.Promise});var ki=m((KV,tf)=>{"use strict";var ew=Z(),yr=zt(),tw=X(),iw=eo(),rw=Fo(),aw=le(),Jm=_o(),sw=Qe(),nu=qn(),Zm=yr&&yr.prototype,nw=aw("species"),ou=!1,ef=tw(ew.PromiseRejectionEvent),ow=iw("Promise",function(){var r=rw(yr),e=r!==String(yr);if(!e&&nu===66||sw&&!(Zm.catch&&Zm.finally))return!0;if(!nu||nu<51||!/native code/.test(r)){var t=new yr(function(s){s(1)}),i=function(s){s(function(){},function(){})},a=t.constructor={};if(a[nw]=i,ou=t.then(function(){})instanceof i,!ou)return!0}return!e&&(Jm==="BROWSER"||Jm==="DENO")&&!ef});tf.exports={CONSTRUCTOR:ow,REJECTION_EVENT:ef,SUBCLASSING:ou}});var wi=m((XV,af)=>{"use strict";var rf=tt(),uw=TypeError,lw=function(r){var e,t;this.promise=new r(function(i,a){if(e!==void 0||t!==void 0)throw new uw("Bad Promise constructor");e=i,t=a}),this.resolve=rf(e),this.reject=rf(t)};af.exports.f=function(r){return new lw(r)}});var Ef=m(()=>{"use strict";var cw=te(),dw=Qe(),ys=hs(),xt=Z(),$i=$e(),sf=Ei(),nf=Mo(),pw=dr(),hw=sm(),mw=tt(),Ss=X(),fw=Me(),bw=om(),gw=Ho(),df=Zo().set,pu=Wm(),vw=zm(),Sw=bs(),yw=eu(),pf=So(),Ts=zt(),hu=ki(),hf=wi(),Is="Promise",mf=hu.CONSTRUCTOR,Tw=hu.REJECTION_EVENT,Iw=hu.SUBCLASSING,uu=pf.getterFor(Is),Ew=pf.set,Ai=Ts&&Ts.prototype,Kt=Ts,gs=Ai,ff=xt.TypeError,lu=xt.document,mu=xt.process,cu=hf.f,xw=cu,Pw=!!(lu&&lu.createEvent&&xt.dispatchEvent),bf="unhandledrejection",kw="rejectionhandled",of=0,gf=1,ww=2,fu=1,vf=2,vs,uf,Aw,lf,Sf=function(r){var e;return fw(r)&&Ss(e=r.then)?e:!1},yf=function(r,e){var t=e.value,i=e.state===gf,a=i?r.ok:r.fail,s=r.resolve,n=r.reject,o=r.domain,u,l,c;try{a?(i||(e.rejection===vf&&Rw(e),e.rejection=fu),a===!0?u=t:(o&&o.enter(),u=a(t),o&&(o.exit(),c=!0)),u===r.promise?n(new ff("Promise-chain cycle")):(l=Sf(u))?$i(l,u,s,n):s(u)):n(t)}catch(d){o&&!c&&o.exit(),n(d)}},Tf=function(r,e){r.notified||(r.notified=!0,pu(function(){for(var t=r.reactions,i;i=t.get();)yf(i,r);r.notified=!1,e&&!r.rejection&&Lw(r)}))},If=function(r,e,t){var i,a;Pw?(i=lu.createEvent("Event"),i.promise=e,i.reason=t,i.initEvent(r,!1,!0),xt.dispatchEvent(i)):i={promise:e,reason:t},!Tw&&(a=xt["on"+r])?a(i):r===bf&&vw("Unhandled promise rejection",t)},Lw=function(r){$i(df,xt,function(){var e=r.facade,t=r.value,i=cf(r),a;if(i&&(a=Sw(function(){ys?mu.emit("unhandledRejection",t,e):If(bf,e,t)}),r.rejection=ys||cf(r)?vf:fu,a.error))throw a.value})},cf=function(r){return r.rejection!==fu&&!r.parent},Rw=function(r){$i(df,xt,function(){var e=r.facade;ys?mu.emit("rejectionHandled",e):If(kw,e,r.value)})},Li=function(r,e,t){return function(i){r(e,i,t)}},Ri=function(r,e,t){r.done||(r.done=!0,t&&(r=t),r.value=e,r.state=ww,Tf(r,!0))},du=function(r,e,t){if(!r.done){r.done=!0,t&&(r=t);try{if(r.facade===e)throw new ff("Promise can't be resolved itself");var i=Sf(e);i?pu(function(){var a={done:!1};try{$i(i,e,Li(du,a,r),Li(Ri,a,r))}catch(s){Ri(a,s,r)}}):(r.value=e,r.state=gf,Tf(r,!1))}catch(a){Ri({done:!1},a,r)}}};if(mf&&(Kt=function(e){bw(this,gs),mw(e),$i(vs,this);var t=uu(this);try{e(Li(du,t),Li(Ri,t))}catch(i){Ri(t,i)}},gs=Kt.prototype,vs=function(e){Ew(this,{type:Is,done:!1,notified:!1,parent:!1,reactions:new yw,rejection:!1,state:of,value:void 0})},vs.prototype=sf(gs,"then",function(e,t){var i=uu(this),a=cu(gw(this,Kt));return i.parent=!0,a.ok=Ss(e)?e:!0,a.fail=Ss(t)&&t,a.domain=ys?mu.domain:void 0,i.state===of?i.reactions.add(a):pu(function(){yf(a,i)}),a.promise}),uf=function(){var r=new vs,e=uu(r);this.promise=r,this.resolve=Li(du,e),this.reject=Li(Ri,e)},hf.f=cu=function(r){return r===Kt||r===Aw?new uf(r):xw(r)},!dw&&Ss(Ts)&&Ai!==Object.prototype)){lf=Ai.then,Iw||sf(Ai,"then",function(e,t){var i=this;return new Kt(function(a,s){$i(lf,i,a,s)}).then(e,t)},{unsafe:!0});try{delete Ai.constructor}catch{}nf&&nf(Ai,gs)}cw({global:!0,constructor:!0,wrap:!0,forced:mf},{Promise:Kt});pw(Kt,Is,!1,!0);hw(Is)});var Af=m((eB,wf)=>{"use strict";var $w=le(),Pf=$w("iterator"),kf=!1;try{xf=0,bu={next:function(){return{done:!!xf++}},return:function(){kf=!0}},bu[Pf]=function(){return this},Array.from(bu,function(){throw 2})}catch{}var xf,bu;wf.exports=function(r,e){try{if(!e&&!kf)return!1}catch{return!1}var t=!1;try{var i={};i[Pf]=function(){return{next:function(){return{done:t=!0}}}},r(i)}catch{}return t}});var gu=m((tB,Lf)=>{"use strict";var Mw=zt(),Cw=Af(),Dw=ki().CONSTRUCTOR;Lf.exports=Dw||!Cw(function(r){Mw.all(r).then(void 0,function(){})})});var Rf=m(()=>{"use strict";var Vw=te(),Bw=$e(),Ow=tt(),_w=wi(),Nw=bs(),Fw=cs(),qw=gu();Vw({target:"Promise",stat:!0,forced:qw},{all:function(e){var t=this,i=_w.f(t),a=i.resolve,s=i.reject,n=Nw(function(){var o=Ow(t.resolve),u=[],l=0,c=1;Fw(e,function(d){var p=l++,h=!1;c++,Bw(o,t,d).then(function(f){h||(h=!0,u[p]=f,--c||a(u))},s)}),--c||a(u)});return n.error&&s(n.value),i.promise}})});var Mf=m(()=>{"use strict";var Uw=te(),Hw=Qe(),jw=ki().CONSTRUCTOR,Su=zt(),Qw=lt(),Gw=X(),Ww=Ei(),$f=Su&&Su.prototype;Uw({target:"Promise",proto:!0,forced:jw,real:!0},{catch:function(r){return this.then(void 0,r)}});!Hw&&Gw(Su)&&(vu=Qw("Promise").prototype.catch,$f.catch!==vu&&Ww($f,"catch",vu,{unsafe:!0}));var vu});var Cf=m(()=>{"use strict";var Yw=te(),zw=$e(),Kw=tt(),Xw=wi(),Jw=bs(),Zw=cs(),eA=gu();Yw({target:"Promise",stat:!0,forced:eA},{race:function(e){var t=this,i=Xw.f(t),a=i.reject,s=Jw(function(){var n=Kw(t.resolve);Zw(e,function(o){zw(n,t,o).then(i.resolve,a)})});return s.error&&a(s.value),i.promise}})});var Df=m(()=>{"use strict";var tA=te(),iA=wi(),rA=ki().CONSTRUCTOR;tA({target:"Promise",stat:!0,forced:rA},{reject:function(e){var t=iA.f(this),i=t.reject;return i(e),t.promise}})});var yu=m((cB,Vf)=>{"use strict";var aA=it(),sA=Me(),nA=wi();Vf.exports=function(r,e){if(aA(r),sA(e)&&e.constructor===r)return e;var t=nA.f(r),i=t.resolve;return i(e),t.promise}});var _f=m(()=>{"use strict";var oA=te(),uA=lt(),Bf=Qe(),lA=zt(),Of=ki().CONSTRUCTOR,cA=yu(),dA=uA("Promise"),pA=Bf&&!Of;oA({target:"Promise",stat:!0,forced:Bf||Of},{resolve:function(e){return cA(pA&&this===dA?lA:this,e)}})});var Nf=m(()=>{"use strict";Ef();Rf();Mf();Cf();Df();_f()});var Hf=m(()=>{"use strict";var hA=te(),mA=Qe(),Es=zt(),fA=ue(),qf=lt(),Uf=X(),bA=Ho(),Ff=yu(),gA=Ei(),Iu=Es&&Es.prototype,vA=!!Es&&fA(function(){Iu.finally.call({then:function(){}},function(){})});hA({target:"Promise",proto:!0,real:!0,forced:vA},{finally:function(r){var e=bA(this,qf("Promise")),t=Uf(r);return this.then(t?function(i){return Ff(e,r()).then(function(){return i})}:r,t?function(i){return Ff(e,r()).then(function(){throw i})}:r)}});!mA&&Uf(Es)&&(Tu=qf("Promise").prototype.finally,Iu.finally!==Tu&&gA(Iu,"finally",Tu,{unsafe:!0}));var Tu});var Qf=m((gB,jf)=>{"use strict";Jh();Nf();Hf();var SA=Et();jf.exports=SA("Promise","finally")});var Wf=m((vB,Gf)=>{"use strict";var yA=Qf();Gf.exports=yA});var xs=m((SB,Yf)=>{"use strict";var TA=Wf();Yf.exports=TA});var ob=m(()=>{"use strict";var VA=te(),BA=fo().values;VA({target:"Object",stat:!0},{values:function(e){return BA(e)}})});var lb=m((rO,ub)=>{"use strict";ob();var OA=mi();ub.exports=OA.Object.values});var db=m((aO,cb)=>{"use strict";var _A=lb();cb.exports=_A});var Ci=m((sO,pb)=>{"use strict";var NA=db();pb.exports=NA});var Lb=m(()=>{"use strict";var uL=te(),lL=fi(),cL=Ti(),dL=or(),pL=ur();uL({target:"Array",proto:!0},{at:function(e){var t=lL(this),i=cL(t),a=dL(e),s=a>=0?a:i+a;return s<0||s>=i?void 0:t[s]}});pL("at")});var $b=m((m_,Rb)=>{"use strict";Lb();var hL=Et();Rb.exports=hL("Array","at")});var Cb=m((f_,Mb)=>{"use strict";var mL=$b();Mb.exports=mL});var Lt=m((b_,Db)=>{"use strict";var fL=Cb();Db.exports=fL});var Yu=m((tF,fg)=>{"use strict";var JL=Ut();fg.exports=Array.isArray||function(e){return JL(e)==="Array"}});var gg=m((iF,bg)=>{"use strict";var ZL=TypeError,eR=9007199254740991;bg.exports=function(r){if(r>eR)throw ZL("Maximum allowed index exceeded");return r}});var yg=m((rF,Sg)=>{"use strict";var tR=Yu(),iR=Ti(),rR=gg(),aR=gi(),vg=function(r,e,t,i,a,s,n,o){for(var u=a,l=0,c=n?aR(n,o):!1,d,p;l<i;)l in t&&(d=c?c(t[l],l,e):t[l],s>0&&tR(d)?(p=iR(d),u=vg(r,e,d,p,u,s-1)-1):(rR(u+1),r[u]=d),u++),l++;return u};Sg.exports=vg});var xg=m((aF,Eg)=>{"use strict";var Tg=Yu(),sR=Uo(),nR=Me(),oR=le(),uR=oR("species"),Ig=Array;Eg.exports=function(r){var e;return Tg(r)&&(e=r.constructor,sR(e)&&(e===Ig||Tg(e.prototype))?e=void 0:nR(e)&&(e=e[uR],e===null&&(e=void 0))),e===void 0?Ig:e}});var kg=m((sF,Pg)=>{"use strict";var lR=xg();Pg.exports=function(r,e){return new(lR(r))(e===0?0:e)}});var wg=m(()=>{"use strict";var cR=te(),dR=yg(),pR=tt(),hR=fi(),mR=Ti(),fR=kg();cR({target:"Array",proto:!0},{flatMap:function(e){var t=hR(this),i=mR(t),a;return pR(e),a=fR(t,0),a.length=dR(a,t,t,i,0,1,e,arguments.length>1?arguments[1]:void 0),a}})});var Ag=m(()=>{"use strict";var bR=ur();bR("flatMap")});var Rg=m((cF,Lg)=>{"use strict";wg();Ag();var gR=Et();Lg.exports=gR("Array","flatMap")});var Mg=m((dF,$g)=>{"use strict";var vR=Rg();$g.exports=vR});var zu=m((pF,Cg)=>{"use strict";var SR=Mg();Cg.exports=SR});var Or=m((hF,Dg)=>{"use strict";var yR=cr(),TR=String;Dg.exports=function(r){if(yR(r)==="Symbol")throw new TypeError("Cannot convert a Symbol value to a string");return TR(r)}});var Ku=m((mF,Vg)=>{"use strict";Vg.exports=`
|
|
7
|
-
\v\f\r \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF`});var _g=m((fF,Og)=>{"use strict";var IR=ae(),ER=It(),xR=Or(),Ju=Ku(),Bg=IR("".replace),PR=RegExp("^["+Ju+"]+"),kR=RegExp("(^|[^"+Ju+"])["+Ju+"]+$"),Xu=function(r){return function(e){var t=xR(ER(e));return r&1&&(t=Bg(t,PR,"")),r&2&&(t=Bg(t,kR,"$1")),t}};Og.exports={start:Xu(1),end:Xu(2),trim:Xu(3)}});var Ug=m((bF,qg)=>{"use strict";var wR=Io().PROPER,AR=ue(),Ng=Ku(),Fg="\u200B\x85\u180E";qg.exports=function(r){return AR(function(){return!!Ng[r]()||Fg[r]()!==Fg||wR&&Ng[r].name!==r})}});var Zu=m((gF,Hg)=>{"use strict";var LR=_g().start,RR=Ug();Hg.exports=RR("trimStart")?function(){return LR(this)}:"".trimStart});var Qg=m(()=>{"use strict";var $R=te(),jg=Zu();$R({target:"String",proto:!0,name:"trimStart",forced:"".trimLeft!==jg},{trimLeft:jg})});var Wg=m(()=>{"use strict";Qg();var MR=te(),Gg=Zu();MR({target:"String",proto:!0,name:"trimStart",forced:"".trimStart!==Gg},{trimStart:Gg})});var zg=m((IF,Yg)=>{"use strict";Wg();var CR=Et();Yg.exports=CR("String","trimLeft")});var Xg=m((EF,Kg)=>{"use strict";var DR=zg();Kg.exports=DR});var Zg=m((xF,Jg)=>{"use strict";var VR=Xg();Jg.exports=VR});var fv=m(()=>{"use strict"});var bv=m(()=>{"use strict"});var vv=m((a1,gv)=>{"use strict";var a$=Me(),s$=Ut(),n$=le(),o$=n$("match");gv.exports=function(r){var e;return a$(r)&&((e=r[o$])!==void 0?!!e:s$(r)==="RegExp")}});var yv=m((s1,Sv)=>{"use strict";var u$=it();Sv.exports=function(){var r=u$(this),e="";return r.hasIndices&&(e+="d"),r.global&&(e+="g"),r.ignoreCase&&(e+="i"),r.multiline&&(e+="m"),r.dotAll&&(e+="s"),r.unicode&&(e+="u"),r.unicodeSets&&(e+="v"),r.sticky&&(e+="y"),e}});var Ev=m((n1,Iv)=>{"use strict";var l$=$e(),c$=Ge(),d$=tr(),p$=yv(),Tv=RegExp.prototype;Iv.exports=function(r){var e=r.flags;return e===void 0&&!("flags"in Tv)&&!c$(r,"flags")&&d$(Tv,r)?l$(p$,r):e}});var Pv=m((o1,xv)=>{"use strict";var ol=ae(),h$=fi(),m$=Math.floor,sl=ol("".charAt),f$=ol("".replace),nl=ol("".slice),b$=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,g$=/\$([$&'`]|\d{1,2})/g;xv.exports=function(r,e,t,i,a,s){var n=t+r.length,o=i.length,u=g$;return a!==void 0&&(a=h$(a),u=b$),f$(s,u,function(l,c){var d;switch(sl(c,0)){case"$":return"$";case"&":return r;case"`":return nl(e,0,t);case"'":return nl(e,n);case"<":d=a[nl(c,1,-1)];break;default:var p=+c;if(p===0)return l;if(p>o){var h=m$(p/10);return h===0?l:h<=o?i[h-1]===void 0?sl(c,1):i[h-1]+sl(c,1):l}d=i[p-1]}return d===void 0?"":d})}});var Av=m(()=>{"use strict";var v$=te(),S$=$e(),ll=ae(),kv=It(),y$=X(),T$=hi(),I$=vv(),Ni=Or(),E$=rr(),x$=Ev(),P$=Pv(),k$=le(),w$=Qe(),A$=k$("replace"),L$=TypeError,ul=ll("".indexOf),R$=ll("".replace),wv=ll("".slice),$$=Math.max;v$({target:"String",proto:!0},{replaceAll:function(e,t){var i=kv(this),a,s,n,o,u,l,c,d,p,h,f=0,b="";if(!T$(e)){if(a=I$(e),a&&(s=Ni(kv(x$(e))),!~ul(s,"g")))throw new L$("`.replaceAll` does not allow non-global regexes");if(n=E$(e,A$),n)return S$(n,e,i,t);if(w$&&a)return R$(Ni(i),e,t)}for(o=Ni(i),u=Ni(e),l=y$(t),l||(t=Ni(t)),c=u.length,d=$$(1,c),p=ul(o,u);p!==-1;)h=l?Ni(t(u,p,o)):P$(u,o,p,[],void 0,t),b+=wv(o,f,p)+h,f=p+c,p=p+d>o.length?-1:ul(o,u,p+d);return f<o.length&&(b+=wv(o,f)),b}})});var Rv=m((c1,Lv)=>{"use strict";fv();bv();Av();var M$=Et();Lv.exports=M$("String","replaceAll")});var Mv=m((d1,$v)=>{"use strict";var C$=Rv();$v.exports=C$});var Dv=m((p1,Cv)=>{"use strict";var D$=Mv();Cv.exports=D$});var Bv=m((h1,Vv)=>{"use strict";var V$=or(),B$=Or(),O$=It(),_$=RangeError;Vv.exports=function(e){var t=B$(O$(this)),i="",a=V$(e);if(a<0||a===1/0)throw new _$("Wrong number of repetitions");for(;a>0;(a>>>=1)&&(t+=t))a&1&&(i+=t);return i}});var qv=m((m1,Fv)=>{"use strict";var Nv=ae(),N$=no(),Ov=Or(),F$=Bv(),q$=It(),U$=Nv(F$),H$=Nv("".slice),j$=Math.ceil,_v=function(r){return function(e,t,i){var a=Ov(q$(e)),s=N$(t),n=a.length,o=i===void 0?" ":Ov(i),u,l;return s<=n||o===""?a:(u=s-n,l=U$(o,j$(u/o.length)),l.length>u&&(l=H$(l,0,u)),r?a+l:l+a)}};Fv.exports={start:_v(!1),end:_v(!0)}});var Hv=m((f1,Uv)=>{"use strict";var Q$=jt();Uv.exports=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(Q$)});var jv=m(()=>{"use strict";var G$=te(),W$=qv().start,Y$=Hv();G$({target:"String",proto:!0,forced:Y$},{padStart:function(e){return W$(this,e,arguments.length>1?arguments[1]:void 0)}})});var Gv=m((v1,Qv)=>{"use strict";jv();var z$=Et();Qv.exports=z$("String","padStart")});var Yv=m((S1,Wv)=>{"use strict";var K$=Gv();Wv.exports=K$});var Kv=m((y1,zv)=>{"use strict";var X$=Yv();zv.exports=X$});var ic="2.0.129-dev.17be96f1.0";var Le=(a=>(a.STOPPED="stopped",a.READY="ready",a.PLAYING="playing",a.PAUSED="paused",a))(Le||{}),ut=(x=>(x.MPEG="MPEG",x.DASH="DASH",x.DASH_SEP="DASH_SEP",x.DASH_SEP_VK="DASH_SEP",x.DASH_WEBM="DASH_WEBM",x.DASH_WEBM_AV1="DASH_WEBM_AV1",x.DASH_STREAMS="DASH_STREAMS",x.DASH_WEBM_VK="DASH_WEBM",x.DASH_ONDEMAND="DASH_ONDEMAND",x.DASH_ONDEMAND_VK="DASH_ONDEMAND",x.DASH_LIVE="DASH_LIVE",x.DASH_LIVE_CMAF="DASH_LIVE_CMAF",x.DASH_LIVE_WEBM="DASH_LIVE_WEBM",x.HLS="HLS",x.HLS_ONDEMAND="HLS_ONDEMAND",x.HLS_JS="HLS",x.HLS_LIVE="HLS_LIVE",x.HLS_LIVE_CMAF="HLS_LIVE_CMAF",x.WEB_RTC_LIVE="WEB_RTC_LIVE",x))(ut||{});var Ha=(a=>(a.NOT_AVAILABLE="NOT_AVAILABLE",a.AVAILABLE="AVAILABLE",a.CONNECTING="CONNECTING",a.CONNECTED="CONNECTED",a))(Ha||{}),Ln=(i=>(i.HTTP1="http1",i.HTTP2="http2",i.QUIC="quic",i))(Ln||{});var Rn=(n=>(n.NONE="none",n.INLINE="inline",n.FULLSCREEN="fullscreen",n.SECOND_SCREEN="second_screen",n.PIP="pip",n.INVISIBLE="invisible",n))(Rn||{}),ja=(i=>(i.TRAFFIC_SAVING="traffic_saving",i.HIGH_QUALITY="high_quality",i.UNKNOWN="unknown",i))(ja||{});var Ry=C(_e(),1);import{assertNever as ep,assertNonNullable as uE,isNonNullable as za,ValueSubject as uo,Subject as lE,Subscription as cE,merge as dE,observableFrom as pE,fromEvent as Kd,map as Xd,tap as Jd,filterChanged as hE,isNullable as lo,ErrorCategory as Zd}from"@vkontakte/videoplayer-shared";var zd=r=>new Promise((e,t)=>{let i=document.createElement("script");i.setAttribute("src",r),i.onload=()=>e(),i.onerror=a=>t(a),document.body.appendChild(i)});var Ka=class{constructor(e){this.connection$=new uo(void 0);this.castState$=new uo("NOT_AVAILABLE");this.errorEvent$=new lE;this.realCastState$=new uo("NOT_AVAILABLE");this.subscription=new cE;this.isDestroyed=!1;this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastInitializer");let t="chrome"in window;if(this.log({message:`[constructor] receiverApplicationId: ${this.params.receiverApplicationId}, isDisabled: ${this.params.isDisabled}, isSupported: ${t}`}),e.isDisabled||!t)return;let i=za(window.chrome?.cast),a=!!window.__onGCastApiAvailable;i?this.initializeCastApi():(window.__onGCastApiAvailable=s=>{delete window.__onGCastApiAvailable,s&&!this.isDestroyed&&this.initializeCastApi()},a||zd("https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1").catch(()=>this.errorEvent$.next({id:"ChromecastLoading",category:Zd.NETWORK,message:"Script loading failed!"})))}connect(){cast.framework.CastContext.getInstance()?.requestSession()}disconnect(){cast.framework.CastContext.getInstance()?.getCurrentSession()?.endSession(!0)}stopMedia(){return new Promise((e,t)=>{cast.framework.CastContext.getInstance()?.getCurrentSession()?.getMediaSession()?.stop(new chrome.cast.media.StopRequest,e,t)})}toggleConnection(){za(this.connection$.getValue())?this.disconnect():this.connect()}setVolume(e){let t=this.connection$.getValue();lo(t)||(t.remotePlayer.volumeLevel=e,t.remotePlayerController.setVolumeLevel())}setMuted(e){let t=this.connection$.getValue();lo(t)||e!==t.remotePlayer.isMuted&&t.remotePlayerController.muteOrUnmute()}destroy(){this.isDestroyed=!0,this.subscription.unsubscribe()}initListeners(){let e=new cast.framework.RemotePlayer,t=new cast.framework.RemotePlayerController(e),i=cast.framework.CastContext.getInstance();this.subscription.add(Kd(i,cast.framework.CastContextEventType.SESSION_STATE_CHANGED).subscribe(a=>{switch(a.sessionState){case cast.framework.SessionState.SESSION_STARTED:case cast.framework.SessionState.SESSION_STARTING:case cast.framework.SessionState.SESSION_RESUMED:this.contentId=i.getCurrentSession()?.getMediaSession()?.media?.contentId;break;case cast.framework.SessionState.NO_SESSION:case cast.framework.SessionState.SESSION_ENDING:case cast.framework.SessionState.SESSION_ENDED:case cast.framework.SessionState.SESSION_START_FAILED:this.contentId=void 0;break;default:return ep(a.sessionState)}})).add(dE(Kd(i,cast.framework.CastContextEventType.CAST_STATE_CHANGED).pipe(Jd(a=>{this.log({message:`[cast.framework.RemotePlayerEventType.CAST_STATE_CHANGED]: ${JSON.stringify(a)}`})}),Xd(a=>a.castState)),pE([i.getCastState()])).pipe(hE(),Xd(mE),Jd(a=>{this.log({message:`realCastState$: ${a}`})})).subscribe(this.realCastState$)).add(this.realCastState$.subscribe(a=>{let s=a==="CONNECTED",n=za(this.connection$.getValue());if(s&&!n){let o=i.getCurrentSession();uE(o);let u=o.getCastDevice(),l=o.getMediaSession()?.media?.contentId;(lo(l)||l===this.contentId)&&(this.log({message:"connection created"}),this.connection$.next({remotePlayer:e,remotePlayerController:t,session:o,castDevice:u}))}else!s&&n&&(this.log({message:"connection destroyed"}),this.connection$.next(void 0));this.castState$.next(a==="CONNECTED"?za(this.connection$.getValue())?"CONNECTED":"AVAILABLE":a)}))}initializeCastApi(){let e,t,i;try{e=cast.framework.CastContext.getInstance(),t=chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,i=chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED}catch{return}try{e.setOptions({receiverApplicationId:this.params.receiverApplicationId??t,autoJoinPolicy:i}),this.initListeners()}catch(a){this.errorEvent$.next({id:"ChromecastInitializer",category:Zd.EXTERNAL_API,message:"[initializeCastApi] failed",thrown:a})}}},mE=r=>{switch(r){case cast.framework.CastState.NO_DEVICES_AVAILABLE:return"NOT_AVAILABLE";case cast.framework.CastState.NOT_CONNECTED:return"AVAILABLE";case cast.framework.CastState.CONNECTING:return"CONNECTING";case cast.framework.CastState.CONNECTED:return"CONNECTED";default:return ep(r)}};var Gl=C(_e(),1),py=C(Ii(),1),hy=C(Oo(),1);var ab=C(xs(),1);import{assertNever as zf}from"@vkontakte/videoplayer-shared";var ce=(r,e=0,t=0)=>{switch(t){case 0:return r.replace("_offset_p",e===0?"":"_"+e.toFixed(0));case 1:{if(e===0)return r;let i=new URL(r);return i.searchParams.append("playback_shift",e.toFixed(0)),i.toString()}case 2:{let i=new URL(r);return!i.searchParams.get("offset_p")&&e===0?r:(i.searchParams.set("offset_p",e.toFixed(0)),i.toString())}default:zf(t)}return r},Ps=(r,e)=>{switch(e){case 0:return NaN;case 1:{let t=new URL(r);return Number(t.searchParams.get("playback_shift"))}case 2:{let t=new URL(r);return Number(t.searchParams.get("offset_p")??0)}default:zf(e)}};var I=(r,e,t=!1)=>{let i=r.getTransition();(t||!i||i.to===e)&&r.setState(e)};import{isNonNullable as IA,Subject as ks,merge as Kf}from"@vkontakte/videoplayer-shared";var D=class{constructor(e){this.transitionStarted$=new ks;this.transitionEnded$=new ks;this.transitionUpdated$=new ks;this.forceChanged$=new ks;this.stateChangeStarted$=Kf(this.transitionStarted$,this.transitionUpdated$);this.stateChangeEnded$=Kf(this.transitionEnded$,this.forceChanged$);this.state=e,this.prevState=void 0}setState(e){let t=this.transition,i=this.state;this.transition=void 0,this.prevState=i,this.state=e,t?t.to===e?this.transitionEnded$.next(t):this.forceChanged$.next({from:t.from,to:e,canceledTransition:t}):this.forceChanged$.next({from:i,to:e,canceledTransition:t})}startTransitionTo(e){let t=this.transition,i=this.state;i===e||IA(t)&&t.to===e||(this.prevState=i,this.state=e,t?(this.transition={from:t.from,to:e,canceledTransition:t},this.transitionUpdated$.next(this.transition)):(this.transition={from:i,to:e},this.transitionStarted$.next(this.transition)))}getTransition(){return this.transition}getState(){return this.state}getPrevState(){return this.prevState}};import{assertNever as EA}from"@vkontakte/videoplayer-shared";var Xf=r=>{switch(r){case"MPEG":case"DASH":case"DASH_SEP":case"DASH_ONDEMAND":case"DASH_WEBM":case"DASH_WEBM_AV1":case"DASH_STREAMS":case"HLS":case"HLS_ONDEMAND":return!1;case"DASH_LIVE":case"DASH_LIVE_CMAF":case"HLS_LIVE":case"HLS_LIVE_CMAF":case"DASH_LIVE_WEBM":case"WEB_RTC_LIVE":return!0;default:return EA(r)}};import{assertNever as Mi,assertNonNullable as Xt,debounce as Jf,ErrorCategory as Zf,fromEvent as Jt,isNonNullable as eb,map as tb,merge as ib,observableFrom as xA,Subject as PA,Subscription as Eu,timeout as kA,getHighestQuality as wA}from"@vkontakte/videoplayer-shared";var AA=5,LA=5,RA=500,rb=7e3,Tr=class{constructor(e){this.subscription=new Eu;this.loadMediaTimeoutSubscription=new Eu;this.videoState=new D("stopped");this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.videoState.getTransition(),i=this.params.desiredState.playbackState.getState(),a=this.params.desiredState.playbackState.getTransition(),s=this.params.desiredState.seekState.getState();if(this.log({message:`[syncPlayback] videoState: ${e}; videoTransition: ${JSON.stringify(t)}; desiredPlaybackState: ${i}; desiredPlaybackStateTransition: ${this.params.desiredState.playbackState.getTransition()}; seekState: ${JSON.stringify(s)};`}),i==="stopped"){e!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.stop());return}if(!t){if(a?.to!=="paused"&&s.state==="requested"&&e!=="stopped"){this.seek(s.position/1e3);return}switch(i){case"ready":{switch(e){case"playing":case"paused":case"ready":break;case"stopped":this.videoState.startTransitionTo("ready"),this.prepare();break;default:Mi(e)}break}case"playing":{switch(e){case"playing":break;case"paused":this.videoState.startTransitionTo("playing"),this.params.connection.remotePlayerController.playOrPause();break;case"ready":this.videoState.startTransitionTo("playing"),this.params.connection.remotePlayerController.playOrPause();break;case"stopped":this.videoState.startTransitionTo("ready"),this.prepare();break;default:Mi(e)}break}case"paused":{switch(e){case"playing":this.videoState.startTransitionTo("paused"),this.params.connection.remotePlayerController.playOrPause();break;case"paused":break;case"ready":this.videoState.startTransitionTo("paused"),this.videoState.setState("paused");break;case"stopped":this.videoState.startTransitionTo("ready"),this.prepare();break;default:Mi(e)}break}default:Mi(i)}}};this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastProvider"),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next(Xf(e.format)),this.params.output.isAudioAvailable$.next(!0),this.handleRemoteVolumeChange({volume:this.params.connection.remotePlayer.volumeLevel,muted:this.params.connection.remotePlayer.isMuted});let t=this.params.connection.session.getMediaSession();t&&this.restoreSession(t),this.subscribe()}destroy(){this.log({message:"[destroy]"}),this.subscription.unsubscribe()}subscribe(){this.subscription.add(this.loadMediaTimeoutSubscription);let e=new Eu;this.subscription.add(e),this.subscription.add(ib(this.videoState.stateChangeStarted$.pipe(tb(a=>`stateChangeStarted$ ${JSON.stringify(a)}`)),this.videoState.stateChangeEnded$.pipe(tb(a=>`stateChangeEnded$ ${JSON.stringify(a)}`))).subscribe(a=>this.log({message:`[videoState] ${a}`})));let t=(a,s)=>this.subscription.add(a.subscribe(s));if(this.params.output.isLive$.getValue())this.params.output.position$.next(0),this.params.output.duration$.next(0);else{let a=new PA;e.add(a.pipe(Jf(RA)).subscribe(()=>{this.params.output.seekedEvent$.next()}));let s=NaN;e.add(Jt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.CURRENT_TIME_CHANGED).subscribe(n=>{this.logRemoteEvent(n);let o=n.value;this.params.output.position$.next(o),(this.params.desiredState.seekState.getState().state==="applying"||Math.abs(o-s)>AA)&&a.next(o),s=o})),e.add(Jt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.DURATION_CHANGED).subscribe(n=>{this.logRemoteEvent(n),this.params.output.duration$.next(n.value)}))}t(Jt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED),a=>{this.logRemoteEvent(a),a.value?this.handleRemoteReady():(this.handleRemoteStop(),e.unsubscribe())}),t(Jt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED),a=>{this.logRemoteEvent(a),a.value?this.handleRemotePause():this.handleRemotePlay()}),t(Jt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.PLAYER_STATE_CHANGED),a=>{this.logRemoteEvent(a);let{remotePlayer:s}=this.params.connection,n=a.value,o=this.params.output.isBuffering$.getValue(),u=n===chrome.cast.media.PlayerState.BUFFERING;switch(o!==u&&this.params.output.isBuffering$.next(u),n){case chrome.cast.media.PlayerState.IDLE:!this.params.output.isLive$.getValue()&&s.duration-s.currentTime<LA&&this.params.output.endedEvent$.next(),this.handleRemoteStop(),I(this.params.desiredState.playbackState,"stopped");break;case chrome.cast.media.PlayerState.PAUSED:{this.handleRemotePause();break}case chrome.cast.media.PlayerState.PLAYING:this.handleRemotePlay();break;case chrome.cast.media.PlayerState.BUFFERING:break;default:Mi(n)}}),t(Jt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED),a=>{this.logRemoteEvent(a),this.handleRemoteVolumeChange({volume:a.value})}),t(Jt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED),a=>{this.logRemoteEvent(a),this.handleRemoteVolumeChange({muted:a.value})});let i=ib(this.params.desiredState.playbackState.stateChangeStarted$,this.params.desiredState.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,xA(["init"])).pipe(Jf(0));t(i,this.syncPlayback)}restoreSession(e){this.log({message:"restoreSession"});let{remotePlayer:t}=this.params.connection;if(e.playerState!==chrome.cast.media.PlayerState.IDLE){t.isPaused?(this.videoState.setState("paused"),I(this.params.desiredState.playbackState,"paused")):(this.videoState.setState("playing"),I(this.params.desiredState.playbackState,"playing"));let i=this.params.output.isLive$.getValue();this.params.output.duration$.next(i?0:t.duration),this.params.output.position$.next(i?0:t.currentTime),this.params.desiredState.seekState.setState({state:"none"})}}prepare(){let e=this.params.format;this.log({message:`[prepare] format: ${e}`});let t=this.createMediaInfo(e),i=this.createLoadRequest(t);this.loadMedia(i)}handleRemotePause(){let e=this.videoState.getState();(this.videoState.getTransition()?.to==="paused"||e==="playing")&&(this.videoState.setState("paused"),I(this.params.desiredState.playbackState,"paused"))}handleRemotePlay(){let e=this.videoState.getState();(this.videoState.getTransition()?.to==="playing"||e==="paused")&&(this.videoState.setState("playing"),I(this.params.desiredState.playbackState,"playing"))}handleRemoteReady(){this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready"),this.params.desiredState.playbackState.getTransition()?.to==="ready"&&I(this.params.desiredState.playbackState,"ready")}handleRemoteStop(){this.videoState.getState()!=="stopped"&&this.videoState.setState("stopped")}handleRemoteVolumeChange(e){let t=this.params.output.volume$.getValue(),i={volume:e.volume??t.volume,muted:e.muted??t.muted};(i.volume!==t.volume||i.muted!==i.muted)&&this.params.output.volume$.next(i)}seek(e){this.params.output.willSeekEvent$.next();let{remotePlayer:t,remotePlayerController:i}=this.params.connection;t.currentTime=e,i.seek()}stop(){let{remotePlayerController:e}=this.params.connection;e.stop()}createMediaInfo(e){let t=this.params.source,i,a,s;switch(e){case"MPEG":{let l=t[e];Xt(l);let c=wA(Object.keys(l));Xt(c);let d=l[c];Xt(d),i=d,a="video/mp4",s=chrome.cast.media.StreamType.BUFFERED;break}case"HLS":case"HLS_ONDEMAND":{let l=t[e];Xt(l),i=l.url,a="application/x-mpegurl",s=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_SEP":case"DASH_ONDEMAND":case"DASH_WEBM":case"DASH_WEBM_AV1":case"DASH_STREAMS":{let l=t[e];Xt(l),i=l.url,a="application/dash+xml",s=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_LIVE_CMAF":{let l=t[e];Xt(l),i=l.url,a="application/dash+xml",s=chrome.cast.media.StreamType.LIVE;break}case"HLS_LIVE":case"HLS_LIVE_CMAF":{let l=t[e];Xt(l),i=ce(l.url),a="application/x-mpegurl",s=chrome.cast.media.StreamType.LIVE;break}case"DASH_LIVE":case"WEB_RTC_LIVE":{let l="Unsupported format for Chromecast",c=new Error(l);throw this.params.output.error$.next({id:"ChromecastProvider.createMediaInfo()",category:Zf.VIDEO_PIPELINE,message:l,thrown:c}),c}case"DASH":case"DASH_LIVE_WEBM":throw new Error(`${e} is no longer supported`);default:return Mi(e)}let n=new chrome.cast.media.MediaInfo(this.params.meta.videoId??i,a);n.contentUrl=i,n.streamType=s,n.metadata=new chrome.cast.media.GenericMediaMetadata;let{title:o,subtitle:u}=this.params.meta;return eb(o)&&(n.metadata.title=o),eb(u)&&(n.metadata.subtitle=u),n}createLoadRequest(e){let t=new chrome.cast.media.LoadRequest(e);t.autoplay=!1;let i=this.params.desiredState.seekState.getState();return i.state==="applying"||i.state==="requested"?t.currentTime=this.params.output.isLive$.getValue()?0:i.position/1e3:t.currentTime=0,t}loadMedia(e){let t=this.params.connection.session.loadMedia(e),i=new Promise((a,s)=>{this.loadMediaTimeoutSubscription.add(kA(rb).subscribe(()=>s(`timeout(${rb})`)))});(0,ab.default)(Promise.race([t,i]).then(()=>{this.log({message:`[loadMedia] completed, format: ${this.params.format}`}),this.params.desiredState.seekState.getState().state==="applying"&&this.params.output.seekedEvent$.next(),this.handleRemoteReady()},a=>{let s=`[prepare] loadMedia failed, format: ${this.params.format}, reason: ${a}`;this.log({message:s}),this.params.output.error$.next({id:"ChromecastProvider.loadMedia",category:Zf.VIDEO_PIPELINE,message:s,thrown:a})}),()=>{this.loadMediaTimeoutSubscription.unsubscribe()})}logRemoteEvent(e){this.log({message:`[remoteEvent] ${JSON.stringify(e)}`})}};var Gu=C(_e(),1);import{clearVideoElement as nb}from"@vkontakte/videoplayer-shared";import{clearVideoElement as $A}from"@vkontakte/videoplayer-shared";var sb=r=>{try{r.pause(),r.playbackRate=0,$A(r),r.remove()}catch(e){console.error(e)}};import{fromEvent as MA,Subscription as CA}from"@vkontakte/videoplayer-shared";var xu=class{constructor(){this.attribute="data-pool-reused"}get(e){return e.hasAttribute(this.attribute)}set(e,t){e.toggleAttribute(this.attribute,t)}delete(e){e.removeAttribute(this.attribute)}},Pu=window.WeakMap?new WeakMap:new xu,ku=window.WeakMap?new WeakMap:new Map,DA=(r,e=20)=>{let t=0;return MA(r,"ratechange").subscribe(i=>{t++,t>=e&&(r.currentTime=r.currentTime,t=0)})},Te=(r,{audioVideoSyncRate:e,disableYandexPiP:t})=>{let i=r.querySelector("video"),a=!!i;i?nb(i):(i=document.createElement("video"),r.appendChild(i)),Pu.set(i,a);let s=new CA;return s.add(DA(i,e)),ku.set(i,s),i.setAttribute("crossorigin","anonymous"),i.setAttribute("playsinline","playsinline"),t&&i.setAttribute("x-yandex-pip","false"),i.controls=!1,i.setAttribute("poster","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),i},Ie=r=>{ku.get(r)?.unsubscribe(),ku.delete(r);let t=Pu.get(r);Pu.delete(r),t?nb(r):sb(r)};var Au=C(Ci(),1);import{assertNonNullable as Ir,isNonNullable as at,isNullable as UA,fromEvent as Di,merge as hb,observableFrom as mb,filterChanged as fb,map as Er,Subject as bb,Subscription as HA,ValueSubject as jA,ErrorCategory as QA}from"@vkontakte/videoplayer-shared";import{isNonNullable as wu,isNullable as FA,Subscription as qA}from"@vkontakte/videoplayer-shared";var ws=(r,e,t,{equal:i=(n,o)=>n===o,changed$:a,onError:s}={})=>{let n=r.getState(),o=e(),u=FA(a),l=new qA;return a&&l.add(a.subscribe(c=>{let d=r.getState();i(c,d)&&r.setState(c)},s)),i(o,n)||(t(n),u&&r.setState(n)),l.add(r.stateChangeStarted$.subscribe(c=>{t(c.to),u&&r.setState(c.to)},s)),l},rt=(r,e,t)=>ws(e,()=>r.loop,i=>{wu(i)&&(r.loop=i)},{onError:t}),Ee=(r,e,t,i)=>ws(e,()=>({muted:r.muted,volume:r.volume}),a=>{wu(a)&&(r.muted=a.muted,r.volume=a.volume)},{equal:(a,s)=>a===s||a?.muted===s?.muted&&a?.volume===s?.volume,changed$:t,onError:i}),Ne=(r,e,t,i)=>ws(e,()=>r.playbackRate,a=>{wu(a)&&(r.playbackRate=a)},{changed$:t,onError:i}),Pt=ws;var GA=r=>["__",r.language,r.label].join("|"),WA=(r,e)=>{if(r.id===e)return!0;let[t,i,a]=e.split("|");return r.language===i&&r.label===a},Lu=class r{constructor(e){this.available$=new bb;this.current$=new jA(void 0);this.error$=new bb;this.subscription=new HA;this.externalTracks=new Map;this.internalTracks=new Map;this.baseURL=e}connect(e,t,i){this.video=e,this.cueSettings=t.textTrackCuesSettings,this.subscribe();let a=s=>{this.error$.next({id:"TextTracksManager",category:QA.WTF,message:"Generic HtmlVideoTextTrackManager error",thrown:s})};this.subscription.add(this.available$.subscribe(i.availableTextTracks$)),this.subscription.add(this.current$.subscribe(i.currentTextTrack$)),this.subscription.add(this.error$.subscribe(i.error$)),this.subscription.add(Pt(t.internalTextTracks,()=>(0,Au.default)(this.internalTracks),s=>{at(s)&&this.setInternal(s)},{equal:(s,n)=>at(s)&&at(n)&&s.length===n.length&&s.every(({id:o},u)=>o===n[u].id),changed$:this.available$.pipe(Er(s=>s.filter(({type:n})=>n==="internal"))),onError:a})),this.subscription.add(Pt(t.externalTextTracks,()=>(0,Au.default)(this.externalTracks),s=>{at(s)&&this.setExternal(s)},{equal:(s,n)=>at(s)&&at(n)&&s.length===n.length&&s.every(({id:o},u)=>o===n[u].id),changed$:this.available$.pipe(Er(s=>s.filter(({type:n})=>n==="external"))),onError:a})),this.subscription.add(Pt(t.currentTextTrack,()=>{if(this.video)return;let s=this.htmlTextTracksAsArray().find(({mode:n})=>n==="showing");return s&&this.htmlTextTrackToITextTrack(s).id},s=>this.select(s),{changed$:this.current$,onError:a})),this.subscription.add(Pt(t.textTrackCuesSettings,()=>({}),()=>{if(this.video)for(let s of this.htmlTextTracksAsArray())this.applyCueSettings(s.cues),this.applyCueSettings(s.activeCues)}))}subscribe(){Ir(this.video);let{textTracks:e}=this.video;this.subscription.add(Di(e,"addtrack").subscribe(()=>{let i=this.current$.getValue();i&&this.select(i)})),this.subscription.add(hb(Di(e,"addtrack"),Di(e,"removetrack"),mb(["init"])).pipe(Er(()=>this.htmlTextTracksAsArray().map(i=>this.htmlTextTrackToITextTrack(i))),fb((i,a)=>i.length===a.length&&i.every(({id:s},n)=>s===a[n].id))).subscribe(this.available$)),this.subscription.add(hb(Di(e,"change"),mb(["init"])).pipe(Er(()=>this.htmlTextTracksAsArray().find(({mode:i})=>i==="showing")),Er(i=>i&&this.htmlTextTrackToITextTrack(i).id),fb()).subscribe(this.current$));let t=i=>this.applyCueSettings(i.target?.activeCues??null);this.subscription.add(Di(e,"addtrack").subscribe(i=>{i.track?.addEventListener("cuechange",t);let a=s=>{let n=s.target?.cues??null;n&&n.length&&(this.applyCueSettings(s.target?.cues??null),s.target?.removeEventListener("cuechange",a))};i.track?.addEventListener("cuechange",a)})),this.subscription.add(Di(e,"removetrack").subscribe(i=>{i.track?.removeEventListener("cuechange",t)}))}applyCueSettings(e){if(!e||!e.length)return;let t=this.cueSettings.getState();for(let i of Array.from(e)){let a=i;at(t.align)&&(a.align=t.align),at(t.position)&&(a.position=t.position),at(t.size)&&(a.size=t.size),at(t.line)&&(a.line=t.line)}}htmlTextTracksAsArray(e=!1){Ir(this.video);let t=[...this.video.textTracks];return e?t:t.filter(r.isHealthyTrack)}htmlTextTrackToITextTrack(e){let{language:t,label:i}=e,a=e.id?e.id:GA(e),s=this.externalTracks.has(a),n=(s?this.externalTracks.get(a)?.isAuto:this.internalTracks.get(a)?.isAuto)??a.includes("auto");return s?{id:a,type:"external",isAuto:n,language:t,label:i,url:this.externalTracks.get(a)?.url}:{id:a,type:"internal",isAuto:n,language:t,label:i,url:this.internalTracks.get(a)?.url}}static isHealthyTrack(e){return!(e.kind==="metadata"||e.groupId||e.id===""&&e.label===""&&e.language==="")}setExternal(e){this.internalTracks.size>0&&Array.from(this.internalTracks).forEach(([,t])=>this.detach(t)),e.filter(({id:t})=>!this.externalTracks.has(t)).forEach(t=>this.attach(t)),Array.from(this.externalTracks).filter(([t])=>!e.find(i=>i.id===t)).forEach(([,t])=>this.detach(t))}setInternal(e){let t=[...this.externalTracks];e.filter(({id:i,language:a,isAuto:s})=>!this.internalTracks.has(i)&&!t.some(([,n])=>n.language===a&&n.isAuto===s)).forEach(i=>this.attach(i)),Array.from(this.internalTracks).filter(([i])=>!e.find(a=>a.id===i)).forEach(([,i])=>this.detach(i))}select(e){Ir(this.video);for(let t of this.htmlTextTracksAsArray(!0))t.mode="showing";for(let t of this.htmlTextTracksAsArray(!0))(UA(e)||!WA(t,e))&&(t.mode="disabled")}destroy(){if(this.subscription.unsubscribe(),this.video)for(let e of Array.from(this.video.getElementsByTagName("track"))){let t=e.getAttribute("id");t&&this.externalTracks.has(t)&&this.video.removeChild(e)}this.externalTracks.clear()}attach(e){Ir(this.video);let t=document.createElement("track");this.baseURL?t.setAttribute("src",new URL(e.url,this.baseURL).toString()):t.setAttribute("src",e.url),t.setAttribute("id",e.id),e.label&&t.setAttribute("label",e.label),e.language&&t.setAttribute("srclang",e.language),e.type==="external"?this.externalTracks.set(e.id,e):e.type==="internal"&&this.internalTracks.set(e.id,e),this.video.appendChild(t)}detach(e){Ir(this.video);let t=Array.prototype.find.call(this.video.getElementsByTagName("track"),i=>i.getAttribute("id")===e.id);t&&this.video.removeChild(t),e.type==="external"?this.externalTracks.delete(e.id):e.type==="internal"&&this.internalTracks.delete(e.id)}},Fe=Lu;var Zt=class{constructor(){this.pausedTime=0;this.streamOffset=0;this.pauseTimestamp=0}getTotalPausedTime(){return this.pausedTime+this.getCurrentPausedTime()}getCurrentPausedTime(){return this.pauseTimestamp>0?Date.now()-this.pauseTimestamp:0}getStreamOffset(){return this.streamOffset}getTotalOffset(){return this.getTotalPausedTime()+this.streamOffset}pause(){this.pauseTimestamp===0&&(this.pauseTimestamp=Date.now())}resume(){this.pauseTimestamp>0&&(this.pausedTime+=this.getCurrentPausedTime(),this.pauseTimestamp=0)}resetTo(e,t=!1){this.streamOffset=e,this.pauseTimestamp=0,this.pausedTime=0,t&&this.pause()}};var gb=r=>{let e=r;for(;!(e instanceof Document)&&!(e instanceof ShadowRoot)&&e!==null;)e=e?.parentNode;return e??void 0},Ru=r=>{let e=gb(r);return!!(e&&e.fullscreenElement&&e.fullscreenElement===r)},vb=r=>{let e=gb(r);return!!(e&&e.pictureInPictureElement&&e.pictureInPictureElement===r)};import{fromEvent as xe,map as kt,merge as Mu,filterChanged as iL,isNonNullable as wb,Subject as rL,filter as Pr,mapTo as Cu,combine as aL,once as sL,throttle as nL,ErrorCategory as oL,ValueSubject as Ab}from"@vkontakte/videoplayer-shared";var YA=3,Sb=(r,e,t=YA)=>{let i=0,a=0;for(let s=0;s<r.length;s++){let n=r.start(s),o=r.end(s);if(n<=e&&e<=o){if(i=n,a=o,!t)return{from:i,to:a};for(let u=s-1;u>=0;u--)r.end(u)+t>=i&&(i=r.start(u));for(let u=s+1;u<r.length;u++)r.start(u)-t<=a&&(a=r.end(u))}}return{from:i,to:a}};var As=class{get current(){return this._current}get isYandex(){return this.current==="Yandex"}get isSafari(){return this.current==="Safari"}get isSamsungBrowser(){return this.current==="SamsungBrowser"}get safariVersion(){return this._safariVersion}detect(){let{userAgent:e}=navigator;try{let t=/yabrowser/i.test(e)?"Yandex":void 0,i=/samsungbrowser/i.test(e)?"SamsungBrowser":void 0,a=/chrome|crios/i.test(e)?"Chrome":void 0,s=/chromium/i.test(e)?"Chromium":void 0,n=/firefox|fxios/i.test(e)?"Firefox":void 0,o=/webkit|safari|khtml/i.test(e)?"Safari":void 0,u=/opr\//i.test(e)?"Opera":void 0,l=/edg/i.test(e)?"Edge":void 0;this._current=t||i||n||u||l||a||s||o||"Rest"}catch(t){console.error(t)}this.isSafari&&this.detectSafariVersion()}detectSafariVersion(){try{let{userAgent:e}=window.navigator,t=e.match(/Version\/(\d+)/);if(!t)return;let i=t[1],a=parseInt(i,10);if(isNaN(a))return;this._safariVersion=a}catch(e){console.error(e)}}};var yb=C(_e(),1);var xr=()=>/Mobile|mini|Fennec|Android|iP(ad|od|hone)/.test(navigator.appVersion??navigator.userAgent)||navigator?.userAgentData?.mobile;var Ls=class{constructor(e){this._highEntropyValues={};this._displayChecker=e}get current(){return this._current}get isIOS(){let e=["iPhone","iPad","iPod"];return this._highEntropyValues.platform==="iOS"||(0,yb.default)(e,this.current)}get isMac(){return this._highEntropyValues.platform==="macOS"||this.current==="Mac"}get isApple(){return this.isIOS||this.isMac}get isIphoneOrOldIpad(){if(!this.isApple||!this._displayChecker.isTouch)return!1;let e=this.current==="iPad"||this._displayChecker.width>700,t=this._iosVersion;return!e||e&&!!t&&t<16}get isAndroid(){return this._highEntropyValues.platform==="Android"||this.current==="Android"}get isMobile(){return this._highEntropyValues.mobile||this._isMobile}get iOSVersion(){return this._iosVersion}detect(){let{userAgent:e}=navigator;try{this._isMobile=xr()}catch(t){console.error(t)}this.detectDevice(e),this.detectHighEntropyValues(),this.isIOS&&this.detectIOSVersion()}async detectHighEntropyValues(){let{userAgentData:e}=navigator;if(e){let t=await e.getHighEntropyValues(["architecture","bitness","brands","mobile","platform","formFactor","model","platformVersion","wow64"]);this._highEntropyValues=t}}detectDevice(e){try{let t=/android/i.test(e)?"Android":void 0,i=/iphone/i.test(e)?"iPhone":void 0,a=/ipad/i.test(e)?"iPad":void 0,s=/ipod/i.test(e)?"iPod":void 0,n=/mac/i.test(e)?"Mac":void 0,o=/webOS|BlackBerry|IEMobile|Opera Mini/i.test(e)?"RestMobile":void 0;this._current=t||i||a||s||o||n||"Desktop"}catch(t){console.error(t)}}detectIOSVersion(){try{if(this._highEntropyValues.platformVersion){let s=this._highEntropyValues.platformVersion.split(".").slice(0,2).join("."),n=parseFloat(s);this._iosVersion=n;return}let{userAgent:e}=window.navigator,t=e.match(/OS (\d+(_\d+)?)/i);if(!t)return;let i=t[1].replace(/_/g,".");if(!i)return;let a=parseFloat(i);if(isNaN(a))return;this._iosVersion=a}catch(e){console.error(e)}}};var Rs=class{get isTouch(){return typeof this._maxTouchPoints=="number"?this._maxTouchPoints>1:"ontouchstart"in window}get maxTouchPoints(){return this._maxTouchPoints}get height(){return this._height}get width(){return this._width}get screenHeight(){return this._screenHeight}get screenWidth(){return this._screenWidth}get pixelRatio(){return this._pixelRatio}get isHDR(){return this._isHdr}get colorDepth(){return this._colorDepth}detect(){let{maxTouchPoints:e}=navigator;try{this._maxTouchPoints=e??0,this._isHdr=!!matchMedia("(dynamic-range: high)")?.matches,this._colorDepth=screen.colorDepth}catch(t){console.error(t)}try{this._pixelRatio=window.devicePixelRatio||1,this._height=screen.height,this._width=screen.width,this._height=screen.height,this._screenHeight=this._height*this._pixelRatio,this._screenWidth=this._width*this._pixelRatio}catch(t){console.error(t)}}};var Ye=()=>window.ManagedMediaSource||window.MediaSource,$s=()=>!!(window.ManagedMediaSource&&window.ManagedSourceBuffer?.prototype?.appendBuffer),Tb=()=>!!(window.MediaSource&&window.SourceBuffer?.prototype?.appendBuffer),Ib=()=>window.ManagedMediaSource?new ManagedMediaSource:new MediaSource;var zA=document.createElement("video"),KA='video/mp4; codecs="avc1.42000a,mp4a.40.2"',XA='video/mp4; codecs="hev1.1.6.L93.B0"',Eb='video/webm; codecs="vp09.00.10.08"',xb='video/webm; codecs="av01.0.00M.08"',JA='audio/mp4; codecs="mp4a.40.2"',ZA='audio/webm; codecs="opus"',Pb,eL=async()=>{if(!window.navigator.mediaCapabilities)return;let r={type:"media-source",video:{contentType:"video/webm",width:1280,height:720,bitrate:1e6,framerate:30}},[e,t]=await Promise.all([window.navigator.mediaCapabilities.decodingInfo({...r,video:{...r.video,contentType:xb}}),window.navigator.mediaCapabilities.decodingInfo({...r,video:{...r.video,contentType:Eb}})]);Pb={DASH_WEBM_AV1:e,DASH_WEBM:t}};eL().catch(r=>{console.log(zA),console.error(r)});var Ms=class{constructor(e,t){this._deviceChecker=e,this._browserChecker=t}get protocols(){return this._protocols}get containers(){return this._containers}get codecs(){return this._codecs}get webmDecodingInfo(){return Pb}get supportedCodecs(){return Object.keys(this._codecs).filter(e=>this._codecs[e])}get nativeHlsSupported(){return this._nativeHlsSupported}detect(){this._video=document.createElement("video");try{this._protocols={mms:$s(),mse:Tb(),hls:!!(this._video.canPlayType?.("application/x-mpegurl")||this._video.canPlayType?.("vnd.apple.mpegURL")),webrtc:!!window.RTCPeerConnection,ws:!!window.WebSocket},this._containers={mp4:!!this._video.canPlayType?.("video/mp4"),webm:!!this._video.canPlayType?.("video/webm"),cmaf:!0};let e=!!Ye()?.isTypeSupported?.(KA),t=!!Ye()?.isTypeSupported?.(XA),i=!!Ye()?.isTypeSupported?.(JA);this._codecs={h264:e,h265:t,vp9:!!Ye()?.isTypeSupported?.(Eb),av1:!!Ye()?.isTypeSupported?.(xb),aac:i,opus:!!Ye()?.isTypeSupported?.(ZA),mpeg:(e||t)&&i},this._nativeHlsSupported=this._protocols.hls&&this._containers.mp4}catch(e){console.error(e)}this.destroyVideoElement()}destroyVideoElement(){if(!this._video)return;if(this._video.pause(),this._video.currentTime=0,this._video.removeAttribute("src"),this._video.src="",this._video.load(),this._video.remove){this._video.remove(),this._video=null;return}this._video.parentNode&&this._video.parentNode.removeChild(this._video);let e=this._video.cloneNode(!1);this._video.parentNode?.replaceChild(e,this._video),this._video=null}};var kb="audio/mpeg",Cs=class{supportMp3(){return this._codecs.mp3&&this._containers.mpeg}detect(){this._audio=document.createElement("audio");try{this._containers={mpeg:!!this._audio.canPlayType?.(kb)},this._codecs={mp3:!!Ye()?.isTypeSupported?.(kb)}}catch(e){console.error(e)}this.destroyAudioElement()}destroyAudioElement(){if(!this._audio)return;if(this._audio.pause(),this._audio.currentTime=0,this._audio.removeAttribute("src"),this._audio.src="",this._audio.load(),this._audio.remove){this._audio.remove(),this._audio=null;return}this._audio.parentNode&&this._audio.parentNode.removeChild(this._audio);let e=this._audio.cloneNode(!1);this._audio.parentNode?.replaceChild(e,this._audio),this._audio=null}};import{ValueSubject as tL}from"@vkontakte/videoplayer-shared";var $u=class{constructor(){this.isInited$=new tL(!1);this._displayChecker=new Rs,this._deviceChecker=new Ls(this._displayChecker),this._browserChecker=new As,this._videoChecker=new Ms(this._deviceChecker,this._browserChecker),this._audioChecker=new Cs,this.detect()}get display(){return this._displayChecker}get device(){return this._deviceChecker}get browser(){return this._browserChecker}get video(){return this._videoChecker}get audio(){return this._audioChecker}async detect(){this._displayChecker.detect(),this._deviceChecker.detect(),this._browserChecker.detect(),this._videoChecker.detect(),this._audioChecker.detect(),this.isInited$.next(!0)}},N=new $u;var Pe=r=>{let e=L=>xe(r,L).pipe(Cu(void 0)),i=Mu(...["waiting","pause","canplay","play","canplaythrough","playing","seeking","seeked","ended"].map(L=>xe(r,L))).pipe(kt(L=>L.type==="ended"?r.readyState<2:r.readyState<3),iL()),a=Mu(xe(r,"progress"),xe(r,"timeupdate")).pipe(kt(()=>Sb(r.buffered,r.currentTime))),s=N.browser.isSafari?aL({play:e("play").pipe(sL()),playing:e("playing")}).pipe(Cu(void 0)):e("playing"),n=xe(r,"volumechange").pipe(kt(()=>({muted:r.muted,volume:r.volume}))),o=xe(r,"ratechange").pipe(kt(()=>r.playbackRate)),u=xe(r,"error").pipe(Pr(()=>!!(r.error||r.played.length)),kt(()=>{let L=r.error;return{id:L?`MediaError#${L.code}`:"HtmlVideoError",category:oL.VIDEO_PIPELINE,message:L?L.message:"Error event from HTML video element",thrown:r.error??void 0}})),l=xe(r,"timeupdate").pipe(kt(()=>r.currentTime)),c=new rL,d=.3,p;l.subscribe(L=>{r.loop&&wb(p)&&wb(L)&&p>=r.duration-d&&L<=d&&c.next(p),p=L});let h=e("pause").pipe(Pr(()=>!r.error&&p!==r.duration)),f=xe(r,"enterpictureinpicture"),b=xe(r,"leavepictureinpicture"),g=new Ab(vb(r));f.subscribe(()=>g.next(!0)),b.subscribe(()=>g.next(!1));let v=new Ab(Ru(r));xe(r,"fullscreenchange").pipe(kt(()=>Ru(r))).subscribe(v);let x=.1,k=1e3,S=xe(r,"timeupdate").pipe(Pr(L=>r.duration-r.currentTime<x)),O=Mu(S.pipe(Pr(L=>!r.loop)),xe(r,"ended")).pipe(nL(k),Cu(void 0)),R=S.pipe(Pr(L=>r.loop));return{playing$:s,pause$:h,canplay$:e("canplay"),ended$:O,looped$:c,loopExpected$:R,error$:u,seeked$:e("seeked"),seeking$:e("seeking"),progress$:e("progress"),loadStart$:e("loadstart"),loadedMetadata$:e("loadedmetadata"),loadedData$:e("loadeddata"),timeUpdate$:l,durationChange$:xe(r,"durationchange").pipe(kt(()=>r.duration)),isBuffering$:i,currentBuffer$:a,volumeState$:n,playbackRateState$:o,inPiP$:g,inFullscreen$:v,enterPip$:f,leavePip$:b}};import{VideoQuality as wt}from"@vkontakte/videoplayer-shared";var At=r=>{switch(r){case"mobile":return wt.Q_144P;case"lowest":return wt.Q_240P;case"low":return wt.Q_360P;case"sd":case"medium":return wt.Q_480P;case"hd":case"high":return wt.Q_720P;case"fullhd":case"full":return wt.Q_1080P;case"quadhd":case"quad":return wt.Q_1440P;case"ultrahd":case"ultra":return wt.Q_2160P}};var Rt=C(Lt(),1),jb=C(_e(),1),Bs=C(Ii(),1);import{isNonNullable as ge,isNullable as Fb,now as Qb,isHigher as qb,isHigherOrEqual as Ou,isInvariantQuality as Ub,isLowerOrEqual as _u,videoSizeToQuality as vL,assertNotEmptyArray as Gb,assertNonNullable as SL}from"@vkontakte/videoplayer-shared";var Du=!1,pt={},Vb=r=>{Du=r},Bb=()=>{pt={}},Ob=r=>{r(pt)},kr=(r,e)=>{Du&&(pt.meta=pt.meta??{},pt.meta[r]=e)},be=class{constructor(e){this.name=e}next(e){if(!Du)return;pt.series=pt.series??{};let t=pt.series[this.name]??[];t.push([Date.now(),e]),pt.series[this.name]=t}};import{isHigher as bL,isHigherOrEqual as I_,isLower as _b,isLowerOrEqual as E_,isNonNullable as Ds,isNullable as gL,videoHeightToQuality as Vs}from"@vkontakte/videoplayer-shared";function Vu({limits:r,highQualityLimit:e,trafficSavingLimit:t}){return!r.max&&r.min===e?"high_quality":!r.min&&r.max===t?"traffic_saving":"unknown"}function Bu({limits:r,highQualityLimit:e,trafficSavingLimit:t}){return!!r&&Vu({limits:r,highQualityLimit:e,trafficSavingLimit:t})==="high_quality"}function wr({limits:r,highestAvailableQuality:e,lowestAvailableQuality:t}){return gL(r)||Ds(r.min)&&Ds(r.max)&&_b(r.max,r.min)||Ds(r.min)&&e&&bL(r.min,e)||Ds(r.max)&&t&&_b(r.max,t)}function Nb({limits:r,highestAvailableHeight:e,lowestAvailableHeight:t}){return wr({limits:{max:r?.max?Vs(r.max):void 0,min:r?.min?Vs(r.min):void 0},highestAvailableQuality:e?Vs(e):void 0,lowestAvailableQuality:t?Vs(t):void 0})}var yL=new be("best_bitrate"),Wb=(r,e,t)=>(e-t)*Math.pow(2,-10*r)+t;var Nu=r=>(e,t)=>r*(Number(e.bitrate)-Number(t.bitrate)),Ar=class{constructor(){this.history={}}recordSelection(e){this.history[e.id]=Qb()}recordSwitch(e){this.last=e}clear(){this.last=void 0,this.history={}}},Yb='Assertion "ABR Tracks is empty array" failed',Os=(r,e,t,i)=>{let a=[...e].sort(Nu(1)),s=[...t].sort(Nu(1)),n=s.filter(u=>ge(u.bitrate)&&ge(r.bitrate)?r.bitrate/u.bitrate>i:!0),o=(0,Rt.default)(s,Math.round(s.length*a.indexOf(r)/(a.length+1)))??(0,Rt.default)(s,-1);return o&&(0,jb.default)(n,o)?o:n.length?(0,Rt.default)(n,-1):(0,Rt.default)(s,0)},Hb=r=>"quality"in r,zb=(r,e,t,i)=>{let a=ge(i?.last?.bitrate)&&ge(t?.bitrate)&&i.last.bitrate<t.bitrate?r.trackCooldownIncreaseQuality:r.trackCooldownDecreaseQuality,s=t&&i&&i.history[t.id]&&Qb()-i.history[t.id]<=a&&(!i.last||t.id!==i.last.id);if(t?.id&&i&&!s&&i.recordSelection(t),s&&i?.last){let n=i.last;i?.recordSwitch(n);let o=Hb(n)?"video":"audio",u=Hb(n)?n.quality:n.bitrate;return e({message:`
|
|
7
|
+
\v\f\r \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF`});var _g=m((fF,Og)=>{"use strict";var IR=ae(),ER=It(),xR=Or(),Ju=Ku(),Bg=IR("".replace),PR=RegExp("^["+Ju+"]+"),kR=RegExp("(^|[^"+Ju+"])["+Ju+"]+$"),Xu=function(r){return function(e){var t=xR(ER(e));return r&1&&(t=Bg(t,PR,"")),r&2&&(t=Bg(t,kR,"$1")),t}};Og.exports={start:Xu(1),end:Xu(2),trim:Xu(3)}});var Ug=m((bF,qg)=>{"use strict";var wR=Io().PROPER,AR=ue(),Ng=Ku(),Fg="\u200B\x85\u180E";qg.exports=function(r){return AR(function(){return!!Ng[r]()||Fg[r]()!==Fg||wR&&Ng[r].name!==r})}});var Zu=m((gF,Hg)=>{"use strict";var LR=_g().start,RR=Ug();Hg.exports=RR("trimStart")?function(){return LR(this)}:"".trimStart});var Qg=m(()=>{"use strict";var $R=te(),jg=Zu();$R({target:"String",proto:!0,name:"trimStart",forced:"".trimLeft!==jg},{trimLeft:jg})});var Wg=m(()=>{"use strict";Qg();var MR=te(),Gg=Zu();MR({target:"String",proto:!0,name:"trimStart",forced:"".trimStart!==Gg},{trimStart:Gg})});var zg=m((IF,Yg)=>{"use strict";Wg();var CR=Et();Yg.exports=CR("String","trimLeft")});var Xg=m((EF,Kg)=>{"use strict";var DR=zg();Kg.exports=DR});var Zg=m((xF,Jg)=>{"use strict";var VR=Xg();Jg.exports=VR});var fv=m(()=>{"use strict"});var bv=m(()=>{"use strict"});var vv=m((a1,gv)=>{"use strict";var a$=Me(),s$=Ut(),n$=le(),o$=n$("match");gv.exports=function(r){var e;return a$(r)&&((e=r[o$])!==void 0?!!e:s$(r)==="RegExp")}});var yv=m((s1,Sv)=>{"use strict";var u$=it();Sv.exports=function(){var r=u$(this),e="";return r.hasIndices&&(e+="d"),r.global&&(e+="g"),r.ignoreCase&&(e+="i"),r.multiline&&(e+="m"),r.dotAll&&(e+="s"),r.unicode&&(e+="u"),r.unicodeSets&&(e+="v"),r.sticky&&(e+="y"),e}});var Ev=m((n1,Iv)=>{"use strict";var l$=$e(),c$=Ge(),d$=tr(),p$=yv(),Tv=RegExp.prototype;Iv.exports=function(r){var e=r.flags;return e===void 0&&!("flags"in Tv)&&!c$(r,"flags")&&d$(Tv,r)?l$(p$,r):e}});var Pv=m((o1,xv)=>{"use strict";var ol=ae(),h$=fi(),m$=Math.floor,sl=ol("".charAt),f$=ol("".replace),nl=ol("".slice),b$=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,g$=/\$([$&'`]|\d{1,2})/g;xv.exports=function(r,e,t,i,a,s){var n=t+r.length,o=i.length,u=g$;return a!==void 0&&(a=h$(a),u=b$),f$(s,u,function(l,c){var d;switch(sl(c,0)){case"$":return"$";case"&":return r;case"`":return nl(e,0,t);case"'":return nl(e,n);case"<":d=a[nl(c,1,-1)];break;default:var p=+c;if(p===0)return l;if(p>o){var h=m$(p/10);return h===0?l:h<=o?i[h-1]===void 0?sl(c,1):i[h-1]+sl(c,1):l}d=i[p-1]}return d===void 0?"":d})}});var Av=m(()=>{"use strict";var v$=te(),S$=$e(),ll=ae(),kv=It(),y$=X(),T$=hi(),I$=vv(),Ni=Or(),E$=rr(),x$=Ev(),P$=Pv(),k$=le(),w$=Qe(),A$=k$("replace"),L$=TypeError,ul=ll("".indexOf),R$=ll("".replace),wv=ll("".slice),$$=Math.max;v$({target:"String",proto:!0},{replaceAll:function(e,t){var i=kv(this),a,s,n,o,u,l,c,d,p,h,f=0,b="";if(!T$(e)){if(a=I$(e),a&&(s=Ni(kv(x$(e))),!~ul(s,"g")))throw new L$("`.replaceAll` does not allow non-global regexes");if(n=E$(e,A$),n)return S$(n,e,i,t);if(w$&&a)return R$(Ni(i),e,t)}for(o=Ni(i),u=Ni(e),l=y$(t),l||(t=Ni(t)),c=u.length,d=$$(1,c),p=ul(o,u);p!==-1;)h=l?Ni(t(u,p,o)):P$(u,o,p,[],void 0,t),b+=wv(o,f,p)+h,f=p+c,p=p+d>o.length?-1:ul(o,u,p+d);return f<o.length&&(b+=wv(o,f)),b}})});var Rv=m((c1,Lv)=>{"use strict";fv();bv();Av();var M$=Et();Lv.exports=M$("String","replaceAll")});var Mv=m((d1,$v)=>{"use strict";var C$=Rv();$v.exports=C$});var Dv=m((p1,Cv)=>{"use strict";var D$=Mv();Cv.exports=D$});var Bv=m((h1,Vv)=>{"use strict";var V$=or(),B$=Or(),O$=It(),_$=RangeError;Vv.exports=function(e){var t=B$(O$(this)),i="",a=V$(e);if(a<0||a===1/0)throw new _$("Wrong number of repetitions");for(;a>0;(a>>>=1)&&(t+=t))a&1&&(i+=t);return i}});var qv=m((m1,Fv)=>{"use strict";var Nv=ae(),N$=no(),Ov=Or(),F$=Bv(),q$=It(),U$=Nv(F$),H$=Nv("".slice),j$=Math.ceil,_v=function(r){return function(e,t,i){var a=Ov(q$(e)),s=N$(t),n=a.length,o=i===void 0?" ":Ov(i),u,l;return s<=n||o===""?a:(u=s-n,l=U$(o,j$(u/o.length)),l.length>u&&(l=H$(l,0,u)),r?a+l:l+a)}};Fv.exports={start:_v(!1),end:_v(!0)}});var Hv=m((f1,Uv)=>{"use strict";var Q$=jt();Uv.exports=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(Q$)});var jv=m(()=>{"use strict";var G$=te(),W$=qv().start,Y$=Hv();G$({target:"String",proto:!0,forced:Y$},{padStart:function(e){return W$(this,e,arguments.length>1?arguments[1]:void 0)}})});var Gv=m((v1,Qv)=>{"use strict";jv();var z$=Et();Qv.exports=z$("String","padStart")});var Yv=m((S1,Wv)=>{"use strict";var K$=Gv();Wv.exports=K$});var Kv=m((y1,zv)=>{"use strict";var X$=Yv();zv.exports=X$});var ic="2.0.129-dev.3cb78ab3.0";var Le=(a=>(a.STOPPED="stopped",a.READY="ready",a.PLAYING="playing",a.PAUSED="paused",a))(Le||{}),ut=(x=>(x.MPEG="MPEG",x.DASH="DASH",x.DASH_SEP="DASH_SEP",x.DASH_SEP_VK="DASH_SEP",x.DASH_WEBM="DASH_WEBM",x.DASH_WEBM_AV1="DASH_WEBM_AV1",x.DASH_STREAMS="DASH_STREAMS",x.DASH_WEBM_VK="DASH_WEBM",x.DASH_ONDEMAND="DASH_ONDEMAND",x.DASH_ONDEMAND_VK="DASH_ONDEMAND",x.DASH_LIVE="DASH_LIVE",x.DASH_LIVE_CMAF="DASH_LIVE_CMAF",x.DASH_LIVE_WEBM="DASH_LIVE_WEBM",x.HLS="HLS",x.HLS_ONDEMAND="HLS_ONDEMAND",x.HLS_JS="HLS",x.HLS_LIVE="HLS_LIVE",x.HLS_LIVE_CMAF="HLS_LIVE_CMAF",x.WEB_RTC_LIVE="WEB_RTC_LIVE",x))(ut||{});var Ha=(a=>(a.NOT_AVAILABLE="NOT_AVAILABLE",a.AVAILABLE="AVAILABLE",a.CONNECTING="CONNECTING",a.CONNECTED="CONNECTED",a))(Ha||{}),Ln=(i=>(i.HTTP1="http1",i.HTTP2="http2",i.QUIC="quic",i))(Ln||{});var Rn=(n=>(n.NONE="none",n.INLINE="inline",n.FULLSCREEN="fullscreen",n.SECOND_SCREEN="second_screen",n.PIP="pip",n.INVISIBLE="invisible",n))(Rn||{}),ja=(i=>(i.TRAFFIC_SAVING="traffic_saving",i.HIGH_QUALITY="high_quality",i.UNKNOWN="unknown",i))(ja||{});var Ry=C(_e(),1);import{assertNever as ep,assertNonNullable as uE,isNonNullable as za,ValueSubject as uo,Subject as lE,Subscription as cE,merge as dE,observableFrom as pE,fromEvent as Kd,map as Xd,tap as Jd,filterChanged as hE,isNullable as lo,ErrorCategory as Zd}from"@vkontakte/videoplayer-shared";var zd=r=>new Promise((e,t)=>{let i=document.createElement("script");i.setAttribute("src",r),i.onload=()=>e(),i.onerror=a=>t(a),document.body.appendChild(i)});var Ka=class{constructor(e){this.connection$=new uo(void 0);this.castState$=new uo("NOT_AVAILABLE");this.errorEvent$=new lE;this.realCastState$=new uo("NOT_AVAILABLE");this.subscription=new cE;this.isDestroyed=!1;this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastInitializer");let t="chrome"in window;if(this.log({message:`[constructor] receiverApplicationId: ${this.params.receiverApplicationId}, isDisabled: ${this.params.isDisabled}, isSupported: ${t}`}),e.isDisabled||!t)return;let i=za(window.chrome?.cast),a=!!window.__onGCastApiAvailable;i?this.initializeCastApi():(window.__onGCastApiAvailable=s=>{delete window.__onGCastApiAvailable,s&&!this.isDestroyed&&this.initializeCastApi()},a||zd("https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1").catch(()=>this.errorEvent$.next({id:"ChromecastLoading",category:Zd.NETWORK,message:"Script loading failed!"})))}connect(){cast.framework.CastContext.getInstance()?.requestSession()}disconnect(){cast.framework.CastContext.getInstance()?.getCurrentSession()?.endSession(!0)}stopMedia(){return new Promise((e,t)=>{cast.framework.CastContext.getInstance()?.getCurrentSession()?.getMediaSession()?.stop(new chrome.cast.media.StopRequest,e,t)})}toggleConnection(){za(this.connection$.getValue())?this.disconnect():this.connect()}setVolume(e){let t=this.connection$.getValue();lo(t)||(t.remotePlayer.volumeLevel=e,t.remotePlayerController.setVolumeLevel())}setMuted(e){let t=this.connection$.getValue();lo(t)||e!==t.remotePlayer.isMuted&&t.remotePlayerController.muteOrUnmute()}destroy(){this.isDestroyed=!0,this.subscription.unsubscribe()}initListeners(){let e=new cast.framework.RemotePlayer,t=new cast.framework.RemotePlayerController(e),i=cast.framework.CastContext.getInstance();this.subscription.add(Kd(i,cast.framework.CastContextEventType.SESSION_STATE_CHANGED).subscribe(a=>{switch(a.sessionState){case cast.framework.SessionState.SESSION_STARTED:case cast.framework.SessionState.SESSION_STARTING:case cast.framework.SessionState.SESSION_RESUMED:this.contentId=i.getCurrentSession()?.getMediaSession()?.media?.contentId;break;case cast.framework.SessionState.NO_SESSION:case cast.framework.SessionState.SESSION_ENDING:case cast.framework.SessionState.SESSION_ENDED:case cast.framework.SessionState.SESSION_START_FAILED:this.contentId=void 0;break;default:return ep(a.sessionState)}})).add(dE(Kd(i,cast.framework.CastContextEventType.CAST_STATE_CHANGED).pipe(Jd(a=>{this.log({message:`[cast.framework.RemotePlayerEventType.CAST_STATE_CHANGED]: ${JSON.stringify(a)}`})}),Xd(a=>a.castState)),pE([i.getCastState()])).pipe(hE(),Xd(mE),Jd(a=>{this.log({message:`realCastState$: ${a}`})})).subscribe(this.realCastState$)).add(this.realCastState$.subscribe(a=>{let s=a==="CONNECTED",n=za(this.connection$.getValue());if(s&&!n){let o=i.getCurrentSession();uE(o);let u=o.getCastDevice(),l=o.getMediaSession()?.media?.contentId;(lo(l)||l===this.contentId)&&(this.log({message:"connection created"}),this.connection$.next({remotePlayer:e,remotePlayerController:t,session:o,castDevice:u}))}else!s&&n&&(this.log({message:"connection destroyed"}),this.connection$.next(void 0));this.castState$.next(a==="CONNECTED"?za(this.connection$.getValue())?"CONNECTED":"AVAILABLE":a)}))}initializeCastApi(){let e,t,i;try{e=cast.framework.CastContext.getInstance(),t=chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,i=chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED}catch{return}try{e.setOptions({receiverApplicationId:this.params.receiverApplicationId??t,autoJoinPolicy:i}),this.initListeners()}catch(a){this.errorEvent$.next({id:"ChromecastInitializer",category:Zd.EXTERNAL_API,message:"[initializeCastApi] failed",thrown:a})}}},mE=r=>{switch(r){case cast.framework.CastState.NO_DEVICES_AVAILABLE:return"NOT_AVAILABLE";case cast.framework.CastState.NOT_CONNECTED:return"AVAILABLE";case cast.framework.CastState.CONNECTING:return"CONNECTING";case cast.framework.CastState.CONNECTED:return"CONNECTED";default:return ep(r)}};var Gl=C(_e(),1),py=C(Ii(),1),hy=C(Oo(),1);var ab=C(xs(),1);import{assertNever as zf}from"@vkontakte/videoplayer-shared";var ce=(r,e=0,t=0)=>{switch(t){case 0:return r.replace("_offset_p",e===0?"":"_"+e.toFixed(0));case 1:{if(e===0)return r;let i=new URL(r);return i.searchParams.append("playback_shift",e.toFixed(0)),i.toString()}case 2:{let i=new URL(r);return!i.searchParams.get("offset_p")&&e===0?r:(i.searchParams.set("offset_p",e.toFixed(0)),i.toString())}default:zf(t)}return r},Ps=(r,e)=>{switch(e){case 0:return NaN;case 1:{let t=new URL(r);return Number(t.searchParams.get("playback_shift"))}case 2:{let t=new URL(r);return Number(t.searchParams.get("offset_p")??0)}default:zf(e)}};var I=(r,e,t=!1)=>{let i=r.getTransition();(t||!i||i.to===e)&&r.setState(e)};import{isNonNullable as IA,Subject as ks,merge as Kf}from"@vkontakte/videoplayer-shared";var D=class{constructor(e){this.transitionStarted$=new ks;this.transitionEnded$=new ks;this.transitionUpdated$=new ks;this.forceChanged$=new ks;this.stateChangeStarted$=Kf(this.transitionStarted$,this.transitionUpdated$);this.stateChangeEnded$=Kf(this.transitionEnded$,this.forceChanged$);this.state=e,this.prevState=void 0}setState(e){let t=this.transition,i=this.state;this.transition=void 0,this.prevState=i,this.state=e,t?t.to===e?this.transitionEnded$.next(t):this.forceChanged$.next({from:t.from,to:e,canceledTransition:t}):this.forceChanged$.next({from:i,to:e,canceledTransition:t})}startTransitionTo(e){let t=this.transition,i=this.state;i===e||IA(t)&&t.to===e||(this.prevState=i,this.state=e,t?(this.transition={from:t.from,to:e,canceledTransition:t},this.transitionUpdated$.next(this.transition)):(this.transition={from:i,to:e},this.transitionStarted$.next(this.transition)))}getTransition(){return this.transition}getState(){return this.state}getPrevState(){return this.prevState}};import{assertNever as EA}from"@vkontakte/videoplayer-shared";var Xf=r=>{switch(r){case"MPEG":case"DASH":case"DASH_SEP":case"DASH_ONDEMAND":case"DASH_WEBM":case"DASH_WEBM_AV1":case"DASH_STREAMS":case"HLS":case"HLS_ONDEMAND":return!1;case"DASH_LIVE":case"DASH_LIVE_CMAF":case"HLS_LIVE":case"HLS_LIVE_CMAF":case"DASH_LIVE_WEBM":case"WEB_RTC_LIVE":return!0;default:return EA(r)}};import{assertNever as Mi,assertNonNullable as Xt,debounce as Jf,ErrorCategory as Zf,fromEvent as Jt,isNonNullable as eb,map as tb,merge as ib,observableFrom as xA,Subject as PA,Subscription as Eu,timeout as kA,getHighestQuality as wA}from"@vkontakte/videoplayer-shared";var AA=5,LA=5,RA=500,rb=7e3,Tr=class{constructor(e){this.subscription=new Eu;this.loadMediaTimeoutSubscription=new Eu;this.videoState=new D("stopped");this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.videoState.getTransition(),i=this.params.desiredState.playbackState.getState(),a=this.params.desiredState.playbackState.getTransition(),s=this.params.desiredState.seekState.getState();if(this.log({message:`[syncPlayback] videoState: ${e}; videoTransition: ${JSON.stringify(t)}; desiredPlaybackState: ${i}; desiredPlaybackStateTransition: ${this.params.desiredState.playbackState.getTransition()}; seekState: ${JSON.stringify(s)};`}),i==="stopped"){e!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.stop());return}if(!t){if(a?.to!=="paused"&&s.state==="requested"&&e!=="stopped"){this.seek(s.position/1e3);return}switch(i){case"ready":{switch(e){case"playing":case"paused":case"ready":break;case"stopped":this.videoState.startTransitionTo("ready"),this.prepare();break;default:Mi(e)}break}case"playing":{switch(e){case"playing":break;case"paused":this.videoState.startTransitionTo("playing"),this.params.connection.remotePlayerController.playOrPause();break;case"ready":this.videoState.startTransitionTo("playing"),this.params.connection.remotePlayerController.playOrPause();break;case"stopped":this.videoState.startTransitionTo("ready"),this.prepare();break;default:Mi(e)}break}case"paused":{switch(e){case"playing":this.videoState.startTransitionTo("paused"),this.params.connection.remotePlayerController.playOrPause();break;case"paused":break;case"ready":this.videoState.startTransitionTo("paused"),this.videoState.setState("paused");break;case"stopped":this.videoState.startTransitionTo("ready"),this.prepare();break;default:Mi(e)}break}default:Mi(i)}}};this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastProvider"),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next(Xf(e.format)),this.params.output.isAudioAvailable$.next(!0),this.handleRemoteVolumeChange({volume:this.params.connection.remotePlayer.volumeLevel,muted:this.params.connection.remotePlayer.isMuted});let t=this.params.connection.session.getMediaSession();t&&this.restoreSession(t),this.subscribe()}destroy(){this.log({message:"[destroy]"}),this.subscription.unsubscribe()}subscribe(){this.subscription.add(this.loadMediaTimeoutSubscription);let e=new Eu;this.subscription.add(e),this.subscription.add(ib(this.videoState.stateChangeStarted$.pipe(tb(a=>`stateChangeStarted$ ${JSON.stringify(a)}`)),this.videoState.stateChangeEnded$.pipe(tb(a=>`stateChangeEnded$ ${JSON.stringify(a)}`))).subscribe(a=>this.log({message:`[videoState] ${a}`})));let t=(a,s)=>this.subscription.add(a.subscribe(s));if(this.params.output.isLive$.getValue())this.params.output.position$.next(0),this.params.output.duration$.next(0);else{let a=new PA;e.add(a.pipe(Jf(RA)).subscribe(()=>{this.params.output.seekedEvent$.next()}));let s=NaN;e.add(Jt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.CURRENT_TIME_CHANGED).subscribe(n=>{this.logRemoteEvent(n);let o=n.value;this.params.output.position$.next(o),(this.params.desiredState.seekState.getState().state==="applying"||Math.abs(o-s)>AA)&&a.next(o),s=o})),e.add(Jt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.DURATION_CHANGED).subscribe(n=>{this.logRemoteEvent(n),this.params.output.duration$.next(n.value)}))}t(Jt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED),a=>{this.logRemoteEvent(a),a.value?this.handleRemoteReady():(this.handleRemoteStop(),e.unsubscribe())}),t(Jt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED),a=>{this.logRemoteEvent(a),a.value?this.handleRemotePause():this.handleRemotePlay()}),t(Jt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.PLAYER_STATE_CHANGED),a=>{this.logRemoteEvent(a);let{remotePlayer:s}=this.params.connection,n=a.value,o=this.params.output.isBuffering$.getValue(),u=n===chrome.cast.media.PlayerState.BUFFERING;switch(o!==u&&this.params.output.isBuffering$.next(u),n){case chrome.cast.media.PlayerState.IDLE:!this.params.output.isLive$.getValue()&&s.duration-s.currentTime<LA&&this.params.output.endedEvent$.next(),this.handleRemoteStop(),I(this.params.desiredState.playbackState,"stopped");break;case chrome.cast.media.PlayerState.PAUSED:{this.handleRemotePause();break}case chrome.cast.media.PlayerState.PLAYING:this.handleRemotePlay();break;case chrome.cast.media.PlayerState.BUFFERING:break;default:Mi(n)}}),t(Jt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED),a=>{this.logRemoteEvent(a),this.handleRemoteVolumeChange({volume:a.value})}),t(Jt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED),a=>{this.logRemoteEvent(a),this.handleRemoteVolumeChange({muted:a.value})});let i=ib(this.params.desiredState.playbackState.stateChangeStarted$,this.params.desiredState.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,xA(["init"])).pipe(Jf(0));t(i,this.syncPlayback)}restoreSession(e){this.log({message:"restoreSession"});let{remotePlayer:t}=this.params.connection;if(e.playerState!==chrome.cast.media.PlayerState.IDLE){t.isPaused?(this.videoState.setState("paused"),I(this.params.desiredState.playbackState,"paused")):(this.videoState.setState("playing"),I(this.params.desiredState.playbackState,"playing"));let i=this.params.output.isLive$.getValue();this.params.output.duration$.next(i?0:t.duration),this.params.output.position$.next(i?0:t.currentTime),this.params.desiredState.seekState.setState({state:"none"})}}prepare(){let e=this.params.format;this.log({message:`[prepare] format: ${e}`});let t=this.createMediaInfo(e),i=this.createLoadRequest(t);this.loadMedia(i)}handleRemotePause(){let e=this.videoState.getState();(this.videoState.getTransition()?.to==="paused"||e==="playing")&&(this.videoState.setState("paused"),I(this.params.desiredState.playbackState,"paused"))}handleRemotePlay(){let e=this.videoState.getState();(this.videoState.getTransition()?.to==="playing"||e==="paused")&&(this.videoState.setState("playing"),I(this.params.desiredState.playbackState,"playing"))}handleRemoteReady(){this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready"),this.params.desiredState.playbackState.getTransition()?.to==="ready"&&I(this.params.desiredState.playbackState,"ready")}handleRemoteStop(){this.videoState.getState()!=="stopped"&&this.videoState.setState("stopped")}handleRemoteVolumeChange(e){let t=this.params.output.volume$.getValue(),i={volume:e.volume??t.volume,muted:e.muted??t.muted};(i.volume!==t.volume||i.muted!==i.muted)&&this.params.output.volume$.next(i)}seek(e){this.params.output.willSeekEvent$.next();let{remotePlayer:t,remotePlayerController:i}=this.params.connection;t.currentTime=e,i.seek()}stop(){let{remotePlayerController:e}=this.params.connection;e.stop()}createMediaInfo(e){let t=this.params.source,i,a,s;switch(e){case"MPEG":{let l=t[e];Xt(l);let c=wA(Object.keys(l));Xt(c);let d=l[c];Xt(d),i=d,a="video/mp4",s=chrome.cast.media.StreamType.BUFFERED;break}case"HLS":case"HLS_ONDEMAND":{let l=t[e];Xt(l),i=l.url,a="application/x-mpegurl",s=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_SEP":case"DASH_ONDEMAND":case"DASH_WEBM":case"DASH_WEBM_AV1":case"DASH_STREAMS":{let l=t[e];Xt(l),i=l.url,a="application/dash+xml",s=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_LIVE_CMAF":{let l=t[e];Xt(l),i=l.url,a="application/dash+xml",s=chrome.cast.media.StreamType.LIVE;break}case"HLS_LIVE":case"HLS_LIVE_CMAF":{let l=t[e];Xt(l),i=ce(l.url),a="application/x-mpegurl",s=chrome.cast.media.StreamType.LIVE;break}case"DASH_LIVE":case"WEB_RTC_LIVE":{let l="Unsupported format for Chromecast",c=new Error(l);throw this.params.output.error$.next({id:"ChromecastProvider.createMediaInfo()",category:Zf.VIDEO_PIPELINE,message:l,thrown:c}),c}case"DASH":case"DASH_LIVE_WEBM":throw new Error(`${e} is no longer supported`);default:return Mi(e)}let n=new chrome.cast.media.MediaInfo(this.params.meta.videoId??i,a);n.contentUrl=i,n.streamType=s,n.metadata=new chrome.cast.media.GenericMediaMetadata;let{title:o,subtitle:u}=this.params.meta;return eb(o)&&(n.metadata.title=o),eb(u)&&(n.metadata.subtitle=u),n}createLoadRequest(e){let t=new chrome.cast.media.LoadRequest(e);t.autoplay=!1;let i=this.params.desiredState.seekState.getState();return i.state==="applying"||i.state==="requested"?t.currentTime=this.params.output.isLive$.getValue()?0:i.position/1e3:t.currentTime=0,t}loadMedia(e){let t=this.params.connection.session.loadMedia(e),i=new Promise((a,s)=>{this.loadMediaTimeoutSubscription.add(kA(rb).subscribe(()=>s(`timeout(${rb})`)))});(0,ab.default)(Promise.race([t,i]).then(()=>{this.log({message:`[loadMedia] completed, format: ${this.params.format}`}),this.params.desiredState.seekState.getState().state==="applying"&&this.params.output.seekedEvent$.next(),this.handleRemoteReady()},a=>{let s=`[prepare] loadMedia failed, format: ${this.params.format}, reason: ${a}`;this.log({message:s}),this.params.output.error$.next({id:"ChromecastProvider.loadMedia",category:Zf.VIDEO_PIPELINE,message:s,thrown:a})}),()=>{this.loadMediaTimeoutSubscription.unsubscribe()})}logRemoteEvent(e){this.log({message:`[remoteEvent] ${JSON.stringify(e)}`})}};var Gu=C(_e(),1);import{clearVideoElement as nb}from"@vkontakte/videoplayer-shared";import{clearVideoElement as $A}from"@vkontakte/videoplayer-shared";var sb=r=>{try{r.pause(),r.playbackRate=0,$A(r),r.remove()}catch(e){console.error(e)}};import{fromEvent as MA,Subscription as CA}from"@vkontakte/videoplayer-shared";var xu=class{constructor(){this.attribute="data-pool-reused"}get(e){return e.hasAttribute(this.attribute)}set(e,t){e.toggleAttribute(this.attribute,t)}delete(e){e.removeAttribute(this.attribute)}},Pu=window.WeakMap?new WeakMap:new xu,ku=window.WeakMap?new WeakMap:new Map,DA=(r,e=20)=>{let t=0;return MA(r,"ratechange").subscribe(i=>{t++,t>=e&&(r.currentTime=r.currentTime,t=0)})},Te=(r,{audioVideoSyncRate:e,disableYandexPiP:t})=>{let i=r.querySelector("video"),a=!!i;i?nb(i):(i=document.createElement("video"),r.appendChild(i)),Pu.set(i,a);let s=new CA;return s.add(DA(i,e)),ku.set(i,s),i.setAttribute("crossorigin","anonymous"),i.setAttribute("playsinline","playsinline"),t&&i.setAttribute("x-yandex-pip","false"),i.controls=!1,i.setAttribute("poster","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),i},Ie=r=>{ku.get(r)?.unsubscribe(),ku.delete(r);let t=Pu.get(r);Pu.delete(r),t?nb(r):sb(r)};var Au=C(Ci(),1);import{assertNonNullable as Ir,isNonNullable as at,isNullable as UA,fromEvent as Di,merge as hb,observableFrom as mb,filterChanged as fb,map as Er,Subject as bb,Subscription as HA,ValueSubject as jA,ErrorCategory as QA}from"@vkontakte/videoplayer-shared";import{isNonNullable as wu,isNullable as FA,Subscription as qA}from"@vkontakte/videoplayer-shared";var ws=(r,e,t,{equal:i=(n,o)=>n===o,changed$:a,onError:s}={})=>{let n=r.getState(),o=e(),u=FA(a),l=new qA;return a&&l.add(a.subscribe(c=>{let d=r.getState();i(c,d)&&r.setState(c)},s)),i(o,n)||(t(n),u&&r.setState(n)),l.add(r.stateChangeStarted$.subscribe(c=>{t(c.to),u&&r.setState(c.to)},s)),l},rt=(r,e,t)=>ws(e,()=>r.loop,i=>{wu(i)&&(r.loop=i)},{onError:t}),Ee=(r,e,t,i)=>ws(e,()=>({muted:r.muted,volume:r.volume}),a=>{wu(a)&&(r.muted=a.muted,r.volume=a.volume)},{equal:(a,s)=>a===s||a?.muted===s?.muted&&a?.volume===s?.volume,changed$:t,onError:i}),Ne=(r,e,t,i)=>ws(e,()=>r.playbackRate,a=>{wu(a)&&(r.playbackRate=a)},{changed$:t,onError:i}),Pt=ws;var GA=r=>["__",r.language,r.label].join("|"),WA=(r,e)=>{if(r.id===e)return!0;let[t,i,a]=e.split("|");return r.language===i&&r.label===a},Lu=class r{constructor(e){this.available$=new bb;this.current$=new jA(void 0);this.error$=new bb;this.subscription=new HA;this.externalTracks=new Map;this.internalTracks=new Map;this.baseURL=e}connect(e,t,i){this.video=e,this.cueSettings=t.textTrackCuesSettings,this.subscribe();let a=s=>{this.error$.next({id:"TextTracksManager",category:QA.WTF,message:"Generic HtmlVideoTextTrackManager error",thrown:s})};this.subscription.add(this.available$.subscribe(i.availableTextTracks$)),this.subscription.add(this.current$.subscribe(i.currentTextTrack$)),this.subscription.add(this.error$.subscribe(i.error$)),this.subscription.add(Pt(t.internalTextTracks,()=>(0,Au.default)(this.internalTracks),s=>{at(s)&&this.setInternal(s)},{equal:(s,n)=>at(s)&&at(n)&&s.length===n.length&&s.every(({id:o},u)=>o===n[u].id),changed$:this.available$.pipe(Er(s=>s.filter(({type:n})=>n==="internal"))),onError:a})),this.subscription.add(Pt(t.externalTextTracks,()=>(0,Au.default)(this.externalTracks),s=>{at(s)&&this.setExternal(s)},{equal:(s,n)=>at(s)&&at(n)&&s.length===n.length&&s.every(({id:o},u)=>o===n[u].id),changed$:this.available$.pipe(Er(s=>s.filter(({type:n})=>n==="external"))),onError:a})),this.subscription.add(Pt(t.currentTextTrack,()=>{if(this.video)return;let s=this.htmlTextTracksAsArray().find(({mode:n})=>n==="showing");return s&&this.htmlTextTrackToITextTrack(s).id},s=>this.select(s),{changed$:this.current$,onError:a})),this.subscription.add(Pt(t.textTrackCuesSettings,()=>({}),()=>{if(this.video)for(let s of this.htmlTextTracksAsArray())this.applyCueSettings(s.cues),this.applyCueSettings(s.activeCues)}))}subscribe(){Ir(this.video);let{textTracks:e}=this.video;this.subscription.add(Di(e,"addtrack").subscribe(()=>{let i=this.current$.getValue();i&&this.select(i)})),this.subscription.add(hb(Di(e,"addtrack"),Di(e,"removetrack"),mb(["init"])).pipe(Er(()=>this.htmlTextTracksAsArray().map(i=>this.htmlTextTrackToITextTrack(i))),fb((i,a)=>i.length===a.length&&i.every(({id:s},n)=>s===a[n].id))).subscribe(this.available$)),this.subscription.add(hb(Di(e,"change"),mb(["init"])).pipe(Er(()=>this.htmlTextTracksAsArray().find(({mode:i})=>i==="showing")),Er(i=>i&&this.htmlTextTrackToITextTrack(i).id),fb()).subscribe(this.current$));let t=i=>this.applyCueSettings(i.target?.activeCues??null);this.subscription.add(Di(e,"addtrack").subscribe(i=>{i.track?.addEventListener("cuechange",t);let a=s=>{let n=s.target?.cues??null;n&&n.length&&(this.applyCueSettings(s.target?.cues??null),s.target?.removeEventListener("cuechange",a))};i.track?.addEventListener("cuechange",a)})),this.subscription.add(Di(e,"removetrack").subscribe(i=>{i.track?.removeEventListener("cuechange",t)}))}applyCueSettings(e){if(!e||!e.length)return;let t=this.cueSettings.getState();for(let i of Array.from(e)){let a=i;at(t.align)&&(a.align=t.align),at(t.position)&&(a.position=t.position),at(t.size)&&(a.size=t.size),at(t.line)&&(a.line=t.line)}}htmlTextTracksAsArray(e=!1){Ir(this.video);let t=[...this.video.textTracks];return e?t:t.filter(r.isHealthyTrack)}htmlTextTrackToITextTrack(e){let{language:t,label:i}=e,a=e.id?e.id:GA(e),s=this.externalTracks.has(a),n=(s?this.externalTracks.get(a)?.isAuto:this.internalTracks.get(a)?.isAuto)??a.includes("auto");return s?{id:a,type:"external",isAuto:n,language:t,label:i,url:this.externalTracks.get(a)?.url}:{id:a,type:"internal",isAuto:n,language:t,label:i,url:this.internalTracks.get(a)?.url}}static isHealthyTrack(e){return!(e.kind==="metadata"||e.groupId||e.id===""&&e.label===""&&e.language==="")}setExternal(e){this.internalTracks.size>0&&Array.from(this.internalTracks).forEach(([,t])=>this.detach(t)),e.filter(({id:t})=>!this.externalTracks.has(t)).forEach(t=>this.attach(t)),Array.from(this.externalTracks).filter(([t])=>!e.find(i=>i.id===t)).forEach(([,t])=>this.detach(t))}setInternal(e){let t=[...this.externalTracks];e.filter(({id:i,language:a,isAuto:s})=>!this.internalTracks.has(i)&&!t.some(([,n])=>n.language===a&&n.isAuto===s)).forEach(i=>this.attach(i)),Array.from(this.internalTracks).filter(([i])=>!e.find(a=>a.id===i)).forEach(([,i])=>this.detach(i))}select(e){Ir(this.video);for(let t of this.htmlTextTracksAsArray(!0))t.mode="showing";for(let t of this.htmlTextTracksAsArray(!0))(UA(e)||!WA(t,e))&&(t.mode="disabled")}destroy(){if(this.subscription.unsubscribe(),this.video)for(let e of Array.from(this.video.getElementsByTagName("track"))){let t=e.getAttribute("id");t&&this.externalTracks.has(t)&&this.video.removeChild(e)}this.externalTracks.clear()}attach(e){Ir(this.video);let t=document.createElement("track");this.baseURL?t.setAttribute("src",new URL(e.url,this.baseURL).toString()):t.setAttribute("src",e.url),t.setAttribute("id",e.id),e.label&&t.setAttribute("label",e.label),e.language&&t.setAttribute("srclang",e.language),e.type==="external"?this.externalTracks.set(e.id,e):e.type==="internal"&&this.internalTracks.set(e.id,e),this.video.appendChild(t)}detach(e){Ir(this.video);let t=Array.prototype.find.call(this.video.getElementsByTagName("track"),i=>i.getAttribute("id")===e.id);t&&this.video.removeChild(t),e.type==="external"?this.externalTracks.delete(e.id):e.type==="internal"&&this.internalTracks.delete(e.id)}},Fe=Lu;var Zt=class{constructor(){this.pausedTime=0;this.streamOffset=0;this.pauseTimestamp=0}getTotalPausedTime(){return this.pausedTime+this.getCurrentPausedTime()}getCurrentPausedTime(){return this.pauseTimestamp>0?Date.now()-this.pauseTimestamp:0}getStreamOffset(){return this.streamOffset}getTotalOffset(){return this.getTotalPausedTime()+this.streamOffset}pause(){this.pauseTimestamp===0&&(this.pauseTimestamp=Date.now())}resume(){this.pauseTimestamp>0&&(this.pausedTime+=this.getCurrentPausedTime(),this.pauseTimestamp=0)}resetTo(e,t=!1){this.streamOffset=e,this.pauseTimestamp=0,this.pausedTime=0,t&&this.pause()}};var gb=r=>{let e=r;for(;!(e instanceof Document)&&!(e instanceof ShadowRoot)&&e!==null;)e=e?.parentNode;return e??void 0},Ru=r=>{let e=gb(r);return!!(e&&e.fullscreenElement&&e.fullscreenElement===r)},vb=r=>{let e=gb(r);return!!(e&&e.pictureInPictureElement&&e.pictureInPictureElement===r)};import{fromEvent as xe,map as kt,merge as Mu,filterChanged as iL,isNonNullable as wb,Subject as rL,filter as Pr,mapTo as Cu,combine as aL,once as sL,throttle as nL,ErrorCategory as oL,ValueSubject as Ab}from"@vkontakte/videoplayer-shared";var YA=3,Sb=(r,e,t=YA)=>{let i=0,a=0;for(let s=0;s<r.length;s++){let n=r.start(s),o=r.end(s);if(n<=e&&e<=o){if(i=n,a=o,!t)return{from:i,to:a};for(let u=s-1;u>=0;u--)r.end(u)+t>=i&&(i=r.start(u));for(let u=s+1;u<r.length;u++)r.start(u)-t<=a&&(a=r.end(u))}}return{from:i,to:a}};var As=class{get current(){return this._current}get isYandex(){return this.current==="Yandex"}get isSafari(){return this.current==="Safari"}get isSamsungBrowser(){return this.current==="SamsungBrowser"}get safariVersion(){return this._safariVersion}detect(){let{userAgent:e}=navigator;try{let t=/yabrowser/i.test(e)?"Yandex":void 0,i=/samsungbrowser/i.test(e)?"SamsungBrowser":void 0,a=/chrome|crios/i.test(e)?"Chrome":void 0,s=/chromium/i.test(e)?"Chromium":void 0,n=/firefox|fxios/i.test(e)?"Firefox":void 0,o=/webkit|safari|khtml/i.test(e)?"Safari":void 0,u=/opr\//i.test(e)?"Opera":void 0,l=/edg/i.test(e)?"Edge":void 0;this._current=t||i||n||u||l||a||s||o||"Rest"}catch(t){console.error(t)}this.isSafari&&this.detectSafariVersion()}detectSafariVersion(){try{let{userAgent:e}=window.navigator,t=e.match(/Version\/(\d+)/);if(!t)return;let i=t[1],a=parseInt(i,10);if(isNaN(a))return;this._safariVersion=a}catch(e){console.error(e)}}};var yb=C(_e(),1);var xr=()=>/Mobile|mini|Fennec|Android|iP(ad|od|hone)/.test(navigator.appVersion??navigator.userAgent)||navigator?.userAgentData?.mobile;var Ls=class{constructor(e){this._highEntropyValues={};this._displayChecker=e}get current(){return this._current}get isIOS(){let e=["iPhone","iPad","iPod"];return this._highEntropyValues.platform==="iOS"||(0,yb.default)(e,this.current)}get isMac(){return this._highEntropyValues.platform==="macOS"||this.current==="Mac"}get isApple(){return this.isIOS||this.isMac}get isIphoneOrOldIpad(){if(!this.isApple||!this._displayChecker.isTouch)return!1;let e=this.current==="iPad"||this._displayChecker.width>700,t=this._iosVersion;return!e||e&&!!t&&t<16}get isAndroid(){return this._highEntropyValues.platform==="Android"||this.current==="Android"}get isMobile(){return this._highEntropyValues.mobile||this._isMobile}get iOSVersion(){return this._iosVersion}detect(){let{userAgent:e}=navigator;try{this._isMobile=xr()}catch(t){console.error(t)}this.detectDevice(e),this.detectHighEntropyValues(),this.isIOS&&this.detectIOSVersion()}async detectHighEntropyValues(){let{userAgentData:e}=navigator;if(e){let t=await e.getHighEntropyValues(["architecture","bitness","brands","mobile","platform","formFactor","model","platformVersion","wow64"]);this._highEntropyValues=t}}detectDevice(e){try{let t=/android/i.test(e)?"Android":void 0,i=/iphone/i.test(e)?"iPhone":void 0,a=/ipad/i.test(e)?"iPad":void 0,s=/ipod/i.test(e)?"iPod":void 0,n=/mac/i.test(e)?"Mac":void 0,o=/webOS|BlackBerry|IEMobile|Opera Mini/i.test(e)?"RestMobile":void 0;this._current=t||i||a||s||o||n||"Desktop"}catch(t){console.error(t)}}detectIOSVersion(){try{if(this._highEntropyValues.platformVersion){let s=this._highEntropyValues.platformVersion.split(".").slice(0,2).join("."),n=parseFloat(s);this._iosVersion=n;return}let{userAgent:e}=window.navigator,t=e.match(/OS (\d+(_\d+)?)/i);if(!t)return;let i=t[1].replace(/_/g,".");if(!i)return;let a=parseFloat(i);if(isNaN(a))return;this._iosVersion=a}catch(e){console.error(e)}}};var Rs=class{get isTouch(){return typeof this._maxTouchPoints=="number"?this._maxTouchPoints>1:"ontouchstart"in window}get maxTouchPoints(){return this._maxTouchPoints}get height(){return this._height}get width(){return this._width}get screenHeight(){return this._screenHeight}get screenWidth(){return this._screenWidth}get pixelRatio(){return this._pixelRatio}get isHDR(){return this._isHdr}get colorDepth(){return this._colorDepth}detect(){let{maxTouchPoints:e}=navigator;try{this._maxTouchPoints=e??0,this._isHdr=!!matchMedia("(dynamic-range: high)")?.matches,this._colorDepth=screen.colorDepth}catch(t){console.error(t)}try{this._pixelRatio=window.devicePixelRatio||1,this._height=screen.height,this._width=screen.width,this._height=screen.height,this._screenHeight=this._height*this._pixelRatio,this._screenWidth=this._width*this._pixelRatio}catch(t){console.error(t)}}};var Ye=()=>window.ManagedMediaSource||window.MediaSource,$s=()=>!!(window.ManagedMediaSource&&window.ManagedSourceBuffer?.prototype?.appendBuffer),Tb=()=>!!(window.MediaSource&&window.SourceBuffer?.prototype?.appendBuffer),Ib=()=>window.ManagedMediaSource?new ManagedMediaSource:new MediaSource;var zA=document.createElement("video"),KA='video/mp4; codecs="avc1.42000a,mp4a.40.2"',XA='video/mp4; codecs="hev1.1.6.L93.B0"',Eb='video/webm; codecs="vp09.00.10.08"',xb='video/webm; codecs="av01.0.00M.08"',JA='audio/mp4; codecs="mp4a.40.2"',ZA='audio/webm; codecs="opus"',Pb,eL=async()=>{if(!window.navigator.mediaCapabilities)return;let r={type:"media-source",video:{contentType:"video/webm",width:1280,height:720,bitrate:1e6,framerate:30}},[e,t]=await Promise.all([window.navigator.mediaCapabilities.decodingInfo({...r,video:{...r.video,contentType:xb}}),window.navigator.mediaCapabilities.decodingInfo({...r,video:{...r.video,contentType:Eb}})]);Pb={DASH_WEBM_AV1:e,DASH_WEBM:t}};eL().catch(r=>{console.log(zA),console.error(r)});var Ms=class{constructor(e,t){this._deviceChecker=e,this._browserChecker=t}get protocols(){return this._protocols}get containers(){return this._containers}get codecs(){return this._codecs}get webmDecodingInfo(){return Pb}get supportedCodecs(){return Object.keys(this._codecs).filter(e=>this._codecs[e])}get nativeHlsSupported(){return this._nativeHlsSupported}detect(){this._video=document.createElement("video");try{this._protocols={mms:$s(),mse:Tb(),hls:!!(this._video.canPlayType?.("application/x-mpegurl")||this._video.canPlayType?.("vnd.apple.mpegURL")),webrtc:!!window.RTCPeerConnection,ws:!!window.WebSocket},this._containers={mp4:!!this._video.canPlayType?.("video/mp4"),webm:!!this._video.canPlayType?.("video/webm"),cmaf:!0};let e=!!Ye()?.isTypeSupported?.(KA),t=!!Ye()?.isTypeSupported?.(XA),i=!!Ye()?.isTypeSupported?.(JA);this._codecs={h264:e,h265:t,vp9:!!Ye()?.isTypeSupported?.(Eb),av1:!!Ye()?.isTypeSupported?.(xb),aac:i,opus:!!Ye()?.isTypeSupported?.(ZA),mpeg:(e||t)&&i},this._nativeHlsSupported=this._protocols.hls&&this._containers.mp4}catch(e){console.error(e)}this.destroyVideoElement()}destroyVideoElement(){if(!this._video)return;if(this._video.pause(),this._video.currentTime=0,this._video.removeAttribute("src"),this._video.src="",this._video.load(),this._video.remove){this._video.remove(),this._video=null;return}this._video.parentNode&&this._video.parentNode.removeChild(this._video);let e=this._video.cloneNode(!1);this._video.parentNode?.replaceChild(e,this._video),this._video=null}};var kb="audio/mpeg",Cs=class{supportMp3(){return this._codecs.mp3&&this._containers.mpeg}detect(){this._audio=document.createElement("audio");try{this._containers={mpeg:!!this._audio.canPlayType?.(kb)},this._codecs={mp3:!!Ye()?.isTypeSupported?.(kb)}}catch(e){console.error(e)}this.destroyAudioElement()}destroyAudioElement(){if(!this._audio)return;if(this._audio.pause(),this._audio.currentTime=0,this._audio.removeAttribute("src"),this._audio.src="",this._audio.load(),this._audio.remove){this._audio.remove(),this._audio=null;return}this._audio.parentNode&&this._audio.parentNode.removeChild(this._audio);let e=this._audio.cloneNode(!1);this._audio.parentNode?.replaceChild(e,this._audio),this._audio=null}};import{ValueSubject as tL}from"@vkontakte/videoplayer-shared";var $u=class{constructor(){this.isInited$=new tL(!1);this._displayChecker=new Rs,this._deviceChecker=new Ls(this._displayChecker),this._browserChecker=new As,this._videoChecker=new Ms(this._deviceChecker,this._browserChecker),this._audioChecker=new Cs,this.detect()}get display(){return this._displayChecker}get device(){return this._deviceChecker}get browser(){return this._browserChecker}get video(){return this._videoChecker}get audio(){return this._audioChecker}async detect(){this._displayChecker.detect(),this._deviceChecker.detect(),this._browserChecker.detect(),this._videoChecker.detect(),this._audioChecker.detect(),this.isInited$.next(!0)}},N=new $u;var Pe=r=>{let e=L=>xe(r,L).pipe(Cu(void 0)),i=Mu(...["waiting","pause","canplay","play","canplaythrough","playing","seeking","seeked","ended"].map(L=>xe(r,L))).pipe(kt(L=>L.type==="ended"?r.readyState<2:r.readyState<3),iL()),a=Mu(xe(r,"progress"),xe(r,"timeupdate")).pipe(kt(()=>Sb(r.buffered,r.currentTime))),s=N.browser.isSafari?aL({play:e("play").pipe(sL()),playing:e("playing")}).pipe(Cu(void 0)):e("playing"),n=xe(r,"volumechange").pipe(kt(()=>({muted:r.muted,volume:r.volume}))),o=xe(r,"ratechange").pipe(kt(()=>r.playbackRate)),u=xe(r,"error").pipe(Pr(()=>!!(r.error||r.played.length)),kt(()=>{let L=r.error;return{id:L?`MediaError#${L.code}`:"HtmlVideoError",category:oL.VIDEO_PIPELINE,message:L?L.message:"Error event from HTML video element",thrown:r.error??void 0}})),l=xe(r,"timeupdate").pipe(kt(()=>r.currentTime)),c=new rL,d=.3,p;l.subscribe(L=>{r.loop&&wb(p)&&wb(L)&&p>=r.duration-d&&L<=d&&c.next(p),p=L});let h=e("pause").pipe(Pr(()=>!r.error&&p!==r.duration)),f=xe(r,"enterpictureinpicture"),b=xe(r,"leavepictureinpicture"),g=new Ab(vb(r));f.subscribe(()=>g.next(!0)),b.subscribe(()=>g.next(!1));let v=new Ab(Ru(r));xe(r,"fullscreenchange").pipe(kt(()=>Ru(r))).subscribe(v);let x=.1,k=1e3,S=xe(r,"timeupdate").pipe(Pr(L=>r.duration-r.currentTime<x)),O=Mu(S.pipe(Pr(L=>!r.loop)),xe(r,"ended")).pipe(nL(k),Cu(void 0)),R=S.pipe(Pr(L=>r.loop));return{playing$:s,pause$:h,canplay$:e("canplay"),ended$:O,looped$:c,loopExpected$:R,error$:u,seeked$:e("seeked"),seeking$:e("seeking"),progress$:e("progress"),loadStart$:e("loadstart"),loadedMetadata$:e("loadedmetadata"),loadedData$:e("loadeddata"),timeUpdate$:l,durationChange$:xe(r,"durationchange").pipe(kt(()=>r.duration)),isBuffering$:i,currentBuffer$:a,volumeState$:n,playbackRateState$:o,inPiP$:g,inFullscreen$:v,enterPip$:f,leavePip$:b}};import{VideoQuality as wt}from"@vkontakte/videoplayer-shared";var At=r=>{switch(r){case"mobile":return wt.Q_144P;case"lowest":return wt.Q_240P;case"low":return wt.Q_360P;case"sd":case"medium":return wt.Q_480P;case"hd":case"high":return wt.Q_720P;case"fullhd":case"full":return wt.Q_1080P;case"quadhd":case"quad":return wt.Q_1440P;case"ultrahd":case"ultra":return wt.Q_2160P}};var Rt=C(Lt(),1),jb=C(_e(),1),Bs=C(Ii(),1);import{isNonNullable as ge,isNullable as Fb,now as Qb,isHigher as qb,isHigherOrEqual as Ou,isInvariantQuality as Ub,isLowerOrEqual as _u,videoSizeToQuality as vL,assertNotEmptyArray as Gb,assertNonNullable as SL}from"@vkontakte/videoplayer-shared";var Du=!1,pt={},Vb=r=>{Du=r},Bb=()=>{pt={}},Ob=r=>{r(pt)},kr=(r,e)=>{Du&&(pt.meta=pt.meta??{},pt.meta[r]=e)},be=class{constructor(e){this.name=e}next(e){if(!Du)return;pt.series=pt.series??{};let t=pt.series[this.name]??[];t.push([Date.now(),e]),pt.series[this.name]=t}};import{isHigher as bL,isHigherOrEqual as I_,isLower as _b,isLowerOrEqual as E_,isNonNullable as Ds,isNullable as gL,videoHeightToQuality as Vs}from"@vkontakte/videoplayer-shared";function Vu({limits:r,highQualityLimit:e,trafficSavingLimit:t}){return!r.max&&r.min===e?"high_quality":!r.min&&r.max===t?"traffic_saving":"unknown"}function Bu({limits:r,highQualityLimit:e,trafficSavingLimit:t}){return!!r&&Vu({limits:r,highQualityLimit:e,trafficSavingLimit:t})==="high_quality"}function wr({limits:r,highestAvailableQuality:e,lowestAvailableQuality:t}){return gL(r)||Ds(r.min)&&Ds(r.max)&&_b(r.max,r.min)||Ds(r.min)&&e&&bL(r.min,e)||Ds(r.max)&&t&&_b(r.max,t)}function Nb({limits:r,highestAvailableHeight:e,lowestAvailableHeight:t}){return wr({limits:{max:r?.max?Vs(r.max):void 0,min:r?.min?Vs(r.min):void 0},highestAvailableQuality:e?Vs(e):void 0,lowestAvailableQuality:t?Vs(t):void 0})}var yL=new be("best_bitrate"),Wb=(r,e,t)=>(e-t)*Math.pow(2,-10*r)+t;var Nu=r=>(e,t)=>r*(Number(e.bitrate)-Number(t.bitrate)),Ar=class{constructor(){this.history={}}recordSelection(e){this.history[e.id]=Qb()}recordSwitch(e){this.last=e}clear(){this.last=void 0,this.history={}}},Yb='Assertion "ABR Tracks is empty array" failed',Os=(r,e,t,i)=>{let a=[...e].sort(Nu(1)),s=[...t].sort(Nu(1)),n=s.filter(u=>ge(u.bitrate)&&ge(r.bitrate)?r.bitrate/u.bitrate>i:!0),o=(0,Rt.default)(s,Math.round(s.length*a.indexOf(r)/(a.length+1)))??(0,Rt.default)(s,-1);return o&&(0,jb.default)(n,o)?o:n.length?(0,Rt.default)(n,-1):(0,Rt.default)(s,0)},Hb=r=>"quality"in r,zb=(r,e,t,i)=>{let a=ge(i?.last?.bitrate)&&ge(t?.bitrate)&&i.last.bitrate<t.bitrate?r.trackCooldownIncreaseQuality:r.trackCooldownDecreaseQuality,s=t&&i&&i.history[t.id]&&Qb()-i.history[t.id]<=a&&(!i.last||t.id!==i.last.id);if(t?.id&&i&&!s&&i.recordSelection(t),s&&i?.last){let n=i.last;i?.recordSwitch(n);let o=Hb(n)?"video":"audio",u=Hb(n)?n.quality:n.bitrate;return e({message:`
|
|
8
8
|
[last ${o} selected] ${u}
|
|
9
9
|
`}),n}return i?.recordSwitch(t),t},TL=(r,e)=>Math.log(e)/Math.log(r),IL=({tuning:r,container:e,limits:t})=>{let i=r.containerSizeFactor;if(r.usePixelRatio&&N.display.pixelRatio){let a=N.display.pixelRatio;if(r.pixelRatioMultiplier)i*=r.pixelRatioMultiplier*(a-1)+1;else{let s=r.pixelRatioLogBase,[n=0,o=0,u=0]=r.pixelRatioLogCoefficients,l=TL(s,n*a+o)+u;Number.isFinite(l)&&(i*=l)}}return Bu({highQualityLimit:r.highQualityLimit,trafficSavingLimit:r.trafficSavingLimit,limits:t})&&(i*=2),{containerSizeLimit:r.limitByContainer&&e&&e.width>0&&e.height>0?{width:e.width*i,height:e.height*i}:void 0,containerSizeFactor:i}},$t=(r,{container:e,estimatedThroughput:t,tuning:i,limits:a,reserve:s=0,forwardBufferHealth:n,playbackRate:o,current:u,history:l,visible:c,droppedVideoMaxQualityLimit:d,stallsVideoMaxQualityLimit:p,stallsPredictedThroughput:h,abrLogger:f})=>{Gb(r,Yb);let{containerSizeFactor:b,containerSizeLimit:g}=IL({container:e,tuning:i,limits:a}),v=i.considerPlaybackRate&&ge(o)?o:1,E=r.filter(y=>!Ub(y.quality)).sort((y,Y)=>qb(y.quality,Y.quality)?-1:1),x=(0,Rt.default)(E,-1)?.quality,k=(0,Rt.default)(E,0)?.quality,S=wr({limits:a,lowestAvailableQuality:x,highestAvailableQuality:k}),O=v*Wb(n??.5,i.bitrateFactorAtEmptyBuffer,i.bitrateFactorAtFullBuffer),R={},B=E.filter(y=>{let Y=!0;if(g)if(y.size)Y=y.size.width<=g.width&&y.size.height<=g.height;else{let H=g&&vL(g);Y=H?_u(y.quality,H):!0}if(!Y)return R[y.quality]="FitsContainer",!1;let Ve=h||t,w=ge(Ve)&&isFinite(Ve)&&ge(y.bitrate)?Ve-s>=y.bitrate*O:!0,q=Bu({highQualityLimit:i.highQualityLimit,trafficSavingLimit:i.trafficSavingLimit,limits:a})&&a?.min===y.quality;if(!w&&!q)return R[y.quality]="FitsThroughput",!1;if(i.lazyQualitySwitch&&ge(i.minBufferToSwitchUp)&&u&&!Ub(u.quality)&&(n??0)<i.minBufferToSwitchUp&&qb(y.quality,u.quality))return R[y.quality]="Buffer",!1;if(!!d&&Ou(y.quality,d)&&!q)return R[y.quality]="DroppedFramesLimit",!1;if(!!p&&Ou(y.quality,p)&&!q)return R[y.quality]="StallsLimit",!1;let he=S||(Fb(a?.max)||_u(y.quality,a.max))&&(Fb(a?.min)||Ou(y.quality,a.min)),Se=ge(c)&&!c?_u(y.quality,i.backgroundVideoQualityLimit):!0;return!he||!Se?(R[y.quality]="FitsQualityLimits",!1):!0})[0];B&&B.bitrate&&yL.next(B.bitrate);let A=B??(0,Rt.default)(E,-1)??r[0],M=l?.last,P=zb(i,f,A,l);return ge(l)&&P.quality!==M?.quality&&f({message:`
|
|
10
10
|
[VIDEO TRACKS ABR]
|
package/evergreen.esm.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @vkontakte/videoplayer-core v2.0.129-dev.
|
|
3
|
-
*
|
|
2
|
+
* @vkontakte/videoplayer-core v2.0.129-dev.3cb78ab3.0
|
|
3
|
+
* Mon, 24 Mar 2025 07:29:58 GMT
|
|
4
4
|
* https://st.mycdn.me/static/vkontakte-videoplayer/2-0-129/doc/
|
|
5
5
|
*/
|
|
6
|
-
var xs="2.0.129-dev.17be96f1.0";var ye=(r=>(r.STOPPED="stopped",r.READY="ready",r.PLAYING="playing",r.PAUSED="paused",r))(ye||{}),Ue=(I=>(I.MPEG="MPEG",I.DASH="DASH",I.DASH_SEP="DASH_SEP",I.DASH_SEP_VK="DASH_SEP",I.DASH_WEBM="DASH_WEBM",I.DASH_WEBM_AV1="DASH_WEBM_AV1",I.DASH_STREAMS="DASH_STREAMS",I.DASH_WEBM_VK="DASH_WEBM",I.DASH_ONDEMAND="DASH_ONDEMAND",I.DASH_ONDEMAND_VK="DASH_ONDEMAND",I.DASH_LIVE="DASH_LIVE",I.DASH_LIVE_CMAF="DASH_LIVE_CMAF",I.DASH_LIVE_WEBM="DASH_LIVE_WEBM",I.HLS="HLS",I.HLS_ONDEMAND="HLS_ONDEMAND",I.HLS_JS="HLS",I.HLS_LIVE="HLS_LIVE",I.HLS_LIVE_CMAF="HLS_LIVE_CMAF",I.WEB_RTC_LIVE="WEB_RTC_LIVE",I))(Ue||{});var lr=(r=>(r.NOT_AVAILABLE="NOT_AVAILABLE",r.AVAILABLE="AVAILABLE",r.CONNECTING="CONNECTING",r.CONNECTED="CONNECTED",r))(lr||{}),da=(i=>(i.HTTP1="http1",i.HTTP2="http2",i.QUIC="quic",i))(da||{});var ca=(s=>(s.NONE="none",s.INLINE="inline",s.FULLSCREEN="fullscreen",s.SECOND_SCREEN="second_screen",s.PIP="pip",s.INVISIBLE="invisible",s))(ca||{}),dr=(i=>(i.TRAFFIC_SAVING="traffic_saving",i.HIGH_QUALITY="high_quality",i.UNKNOWN="unknown",i))(dr||{});import{assertNever as Ls,assertNonNullable as fu,isNonNullable as cr,ValueSubject as pa,Subject as bu,Subscription as gu,merge as Su,observableFrom as vu,fromEvent as Ps,map as ws,tap as As,filterChanged as yu,isNullable as ha,ErrorCategory as $s}from"@vkontakte/videoplayer-shared/evergreen";var ks=n=>new Promise((e,t)=>{let i=document.createElement("script");i.setAttribute("src",n),i.onload=()=>e(),i.onerror=r=>t(r),document.body.appendChild(i)});var pr=class{constructor(e){this.connection$=new pa(void 0);this.castState$=new pa("NOT_AVAILABLE");this.errorEvent$=new bu;this.realCastState$=new pa("NOT_AVAILABLE");this.subscription=new gu;this.isDestroyed=!1;this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastInitializer");let t="chrome"in window;if(this.log({message:`[constructor] receiverApplicationId: ${this.params.receiverApplicationId}, isDisabled: ${this.params.isDisabled}, isSupported: ${t}`}),e.isDisabled||!t)return;let i=cr(window.chrome?.cast),r=!!window.__onGCastApiAvailable;i?this.initializeCastApi():(window.__onGCastApiAvailable=a=>{delete window.__onGCastApiAvailable,a&&!this.isDestroyed&&this.initializeCastApi()},r||ks("https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1").catch(()=>this.errorEvent$.next({id:"ChromecastLoading",category:$s.NETWORK,message:"Script loading failed!"})))}connect(){cast.framework.CastContext.getInstance()?.requestSession()}disconnect(){cast.framework.CastContext.getInstance()?.getCurrentSession()?.endSession(!0)}stopMedia(){return new Promise((e,t)=>{cast.framework.CastContext.getInstance()?.getCurrentSession()?.getMediaSession()?.stop(new chrome.cast.media.StopRequest,e,t)})}toggleConnection(){cr(this.connection$.getValue())?this.disconnect():this.connect()}setVolume(e){let t=this.connection$.getValue();ha(t)||(t.remotePlayer.volumeLevel=e,t.remotePlayerController.setVolumeLevel())}setMuted(e){let t=this.connection$.getValue();ha(t)||e!==t.remotePlayer.isMuted&&t.remotePlayerController.muteOrUnmute()}destroy(){this.isDestroyed=!0,this.subscription.unsubscribe()}initListeners(){let e=new cast.framework.RemotePlayer,t=new cast.framework.RemotePlayerController(e),i=cast.framework.CastContext.getInstance();this.subscription.add(Ps(i,cast.framework.CastContextEventType.SESSION_STATE_CHANGED).subscribe(r=>{switch(r.sessionState){case cast.framework.SessionState.SESSION_STARTED:case cast.framework.SessionState.SESSION_STARTING:case cast.framework.SessionState.SESSION_RESUMED:this.contentId=i.getCurrentSession()?.getMediaSession()?.media?.contentId;break;case cast.framework.SessionState.NO_SESSION:case cast.framework.SessionState.SESSION_ENDING:case cast.framework.SessionState.SESSION_ENDED:case cast.framework.SessionState.SESSION_START_FAILED:this.contentId=void 0;break;default:return Ls(r.sessionState)}})).add(Su(Ps(i,cast.framework.CastContextEventType.CAST_STATE_CHANGED).pipe(As(r=>{this.log({message:`[cast.framework.RemotePlayerEventType.CAST_STATE_CHANGED]: ${JSON.stringify(r)}`})}),ws(r=>r.castState)),vu([i.getCastState()])).pipe(yu(),ws(Tu),As(r=>{this.log({message:`realCastState$: ${r}`})})).subscribe(this.realCastState$)).add(this.realCastState$.subscribe(r=>{let a=r==="CONNECTED",s=cr(this.connection$.getValue());if(a&&!s){let o=i.getCurrentSession();fu(o);let u=o.getCastDevice(),l=o.getMediaSession()?.media?.contentId;(ha(l)||l===this.contentId)&&(this.log({message:"connection created"}),this.connection$.next({remotePlayer:e,remotePlayerController:t,session:o,castDevice:u}))}else!a&&s&&(this.log({message:"connection destroyed"}),this.connection$.next(void 0));this.castState$.next(r==="CONNECTED"?cr(this.connection$.getValue())?"CONNECTED":"AVAILABLE":r)}))}initializeCastApi(){let e,t,i;try{e=cast.framework.CastContext.getInstance(),t=chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,i=chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED}catch{return}try{e.setOptions({receiverApplicationId:this.params.receiverApplicationId??t,autoJoinPolicy:i}),this.initListeners()}catch(r){this.errorEvent$.next({id:"ChromecastInitializer",category:$s.EXTERNAL_API,message:"[initializeCastApi] failed",thrown:r})}}},Tu=n=>{switch(n){case cast.framework.CastState.NO_DEVICES_AVAILABLE:return"NOT_AVAILABLE";case cast.framework.CastState.NOT_CONNECTED:return"AVAILABLE";case cast.framework.CastState.CONNECTING:return"CONNECTING";case cast.framework.CastState.CONNECTED:return"CONNECTED";default:return Ls(n)}};import{assertNever as Ms}from"@vkontakte/videoplayer-shared/evergreen";var ie=(n,e=0,t=0)=>{switch(t){case 0:return n.replace("_offset_p",e===0?"":"_"+e.toFixed(0));case 1:{if(e===0)return n;let i=new URL(n);return i.searchParams.append("playback_shift",e.toFixed(0)),i.toString()}case 2:{let i=new URL(n);return!i.searchParams.get("offset_p")&&e===0?n:(i.searchParams.set("offset_p",e.toFixed(0)),i.toString())}default:Ms(t)}return n},hr=(n,e)=>{switch(e){case 0:return NaN;case 1:{let t=new URL(n);return Number(t.searchParams.get("playback_shift"))}case 2:{let t=new URL(n);return Number(t.searchParams.get("offset_p")??0)}default:Ms(e)}};var y=(n,e,t=!1)=>{let i=n.getTransition();(t||!i||i.to===e)&&n.setState(e)};import{isNonNullable as Iu,Subject as mr,merge as Ds}from"@vkontakte/videoplayer-shared/evergreen";var M=class{constructor(e){this.transitionStarted$=new mr;this.transitionEnded$=new mr;this.transitionUpdated$=new mr;this.forceChanged$=new mr;this.stateChangeStarted$=Ds(this.transitionStarted$,this.transitionUpdated$);this.stateChangeEnded$=Ds(this.transitionEnded$,this.forceChanged$);this.state=e,this.prevState=void 0}setState(e){let t=this.transition,i=this.state;this.transition=void 0,this.prevState=i,this.state=e,t?t.to===e?this.transitionEnded$.next(t):this.forceChanged$.next({from:t.from,to:e,canceledTransition:t}):this.forceChanged$.next({from:i,to:e,canceledTransition:t})}startTransitionTo(e){let t=this.transition,i=this.state;i===e||Iu(t)&&t.to===e||(this.prevState=i,this.state=e,t?(this.transition={from:t.from,to:e,canceledTransition:t},this.transitionUpdated$.next(this.transition)):(this.transition={from:i,to:e},this.transitionStarted$.next(this.transition)))}getTransition(){return this.transition}getState(){return this.state}getPrevState(){return this.prevState}};import{assertNever as Eu}from"@vkontakte/videoplayer-shared/evergreen";var Rs=n=>{switch(n){case"MPEG":case"DASH":case"DASH_SEP":case"DASH_ONDEMAND":case"DASH_WEBM":case"DASH_WEBM_AV1":case"DASH_STREAMS":case"HLS":case"HLS_ONDEMAND":return!1;case"DASH_LIVE":case"DASH_LIVE_CMAF":case"HLS_LIVE":case"HLS_LIVE_CMAF":case"DASH_LIVE_WEBM":case"WEB_RTC_LIVE":return!0;default:return Eu(n)}};import{assertNever as Lt,assertNonNullable as mt,debounce as Cs,ErrorCategory as Vs,fromEvent as ft,isNonNullable as Bs,map as Os,merge as _s,observableFrom as xu,Subject as ku,Subscription as ma,timeout as Pu,getHighestQuality as wu}from"@vkontakte/videoplayer-shared/evergreen";var Au=5,$u=5,Lu=500,Ns=7e3,qt=class{constructor(e){this.subscription=new ma;this.loadMediaTimeoutSubscription=new ma;this.videoState=new M("stopped");this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.videoState.getTransition(),i=this.params.desiredState.playbackState.getState(),r=this.params.desiredState.playbackState.getTransition(),a=this.params.desiredState.seekState.getState();if(this.log({message:`[syncPlayback] videoState: ${e}; videoTransition: ${JSON.stringify(t)}; desiredPlaybackState: ${i}; desiredPlaybackStateTransition: ${this.params.desiredState.playbackState.getTransition()}; seekState: ${JSON.stringify(a)};`}),i==="stopped"){e!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.stop());return}if(!t){if(r?.to!=="paused"&&a.state==="requested"&&e!=="stopped"){this.seek(a.position/1e3);return}switch(i){case"ready":{switch(e){case"playing":case"paused":case"ready":break;case"stopped":this.videoState.startTransitionTo("ready"),this.prepare();break;default:Lt(e)}break}case"playing":{switch(e){case"playing":break;case"paused":this.videoState.startTransitionTo("playing"),this.params.connection.remotePlayerController.playOrPause();break;case"ready":this.videoState.startTransitionTo("playing"),this.params.connection.remotePlayerController.playOrPause();break;case"stopped":this.videoState.startTransitionTo("ready"),this.prepare();break;default:Lt(e)}break}case"paused":{switch(e){case"playing":this.videoState.startTransitionTo("paused"),this.params.connection.remotePlayerController.playOrPause();break;case"paused":break;case"ready":this.videoState.startTransitionTo("paused"),this.videoState.setState("paused");break;case"stopped":this.videoState.startTransitionTo("ready"),this.prepare();break;default:Lt(e)}break}default:Lt(i)}}};this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastProvider"),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next(Rs(e.format)),this.params.output.isAudioAvailable$.next(!0),this.handleRemoteVolumeChange({volume:this.params.connection.remotePlayer.volumeLevel,muted:this.params.connection.remotePlayer.isMuted});let t=this.params.connection.session.getMediaSession();t&&this.restoreSession(t),this.subscribe()}destroy(){this.log({message:"[destroy]"}),this.subscription.unsubscribe()}subscribe(){this.subscription.add(this.loadMediaTimeoutSubscription);let e=new ma;this.subscription.add(e),this.subscription.add(_s(this.videoState.stateChangeStarted$.pipe(Os(r=>`stateChangeStarted$ ${JSON.stringify(r)}`)),this.videoState.stateChangeEnded$.pipe(Os(r=>`stateChangeEnded$ ${JSON.stringify(r)}`))).subscribe(r=>this.log({message:`[videoState] ${r}`})));let t=(r,a)=>this.subscription.add(r.subscribe(a));if(this.params.output.isLive$.getValue())this.params.output.position$.next(0),this.params.output.duration$.next(0);else{let r=new ku;e.add(r.pipe(Cs(Lu)).subscribe(()=>{this.params.output.seekedEvent$.next()}));let a=NaN;e.add(ft(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.CURRENT_TIME_CHANGED).subscribe(s=>{this.logRemoteEvent(s);let o=s.value;this.params.output.position$.next(o),(this.params.desiredState.seekState.getState().state==="applying"||Math.abs(o-a)>Au)&&r.next(o),a=o})),e.add(ft(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.DURATION_CHANGED).subscribe(s=>{this.logRemoteEvent(s),this.params.output.duration$.next(s.value)}))}t(ft(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED),r=>{this.logRemoteEvent(r),r.value?this.handleRemoteReady():(this.handleRemoteStop(),e.unsubscribe())}),t(ft(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED),r=>{this.logRemoteEvent(r),r.value?this.handleRemotePause():this.handleRemotePlay()}),t(ft(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.PLAYER_STATE_CHANGED),r=>{this.logRemoteEvent(r);let{remotePlayer:a}=this.params.connection,s=r.value,o=this.params.output.isBuffering$.getValue(),u=s===chrome.cast.media.PlayerState.BUFFERING;switch(o!==u&&this.params.output.isBuffering$.next(u),s){case chrome.cast.media.PlayerState.IDLE:!this.params.output.isLive$.getValue()&&a.duration-a.currentTime<$u&&this.params.output.endedEvent$.next(),this.handleRemoteStop(),y(this.params.desiredState.playbackState,"stopped");break;case chrome.cast.media.PlayerState.PAUSED:{this.handleRemotePause();break}case chrome.cast.media.PlayerState.PLAYING:this.handleRemotePlay();break;case chrome.cast.media.PlayerState.BUFFERING:break;default:Lt(s)}}),t(ft(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED),r=>{this.logRemoteEvent(r),this.handleRemoteVolumeChange({volume:r.value})}),t(ft(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED),r=>{this.logRemoteEvent(r),this.handleRemoteVolumeChange({muted:r.value})});let i=_s(this.params.desiredState.playbackState.stateChangeStarted$,this.params.desiredState.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,xu(["init"])).pipe(Cs(0));t(i,this.syncPlayback)}restoreSession(e){this.log({message:"restoreSession"});let{remotePlayer:t}=this.params.connection;if(e.playerState!==chrome.cast.media.PlayerState.IDLE){t.isPaused?(this.videoState.setState("paused"),y(this.params.desiredState.playbackState,"paused")):(this.videoState.setState("playing"),y(this.params.desiredState.playbackState,"playing"));let i=this.params.output.isLive$.getValue();this.params.output.duration$.next(i?0:t.duration),this.params.output.position$.next(i?0:t.currentTime),this.params.desiredState.seekState.setState({state:"none"})}}prepare(){let e=this.params.format;this.log({message:`[prepare] format: ${e}`});let t=this.createMediaInfo(e),i=this.createLoadRequest(t);this.loadMedia(i)}handleRemotePause(){let e=this.videoState.getState();(this.videoState.getTransition()?.to==="paused"||e==="playing")&&(this.videoState.setState("paused"),y(this.params.desiredState.playbackState,"paused"))}handleRemotePlay(){let e=this.videoState.getState();(this.videoState.getTransition()?.to==="playing"||e==="paused")&&(this.videoState.setState("playing"),y(this.params.desiredState.playbackState,"playing"))}handleRemoteReady(){this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready"),this.params.desiredState.playbackState.getTransition()?.to==="ready"&&y(this.params.desiredState.playbackState,"ready")}handleRemoteStop(){this.videoState.getState()!=="stopped"&&this.videoState.setState("stopped")}handleRemoteVolumeChange(e){let t=this.params.output.volume$.getValue(),i={volume:e.volume??t.volume,muted:e.muted??t.muted};(i.volume!==t.volume||i.muted!==i.muted)&&this.params.output.volume$.next(i)}seek(e){this.params.output.willSeekEvent$.next();let{remotePlayer:t,remotePlayerController:i}=this.params.connection;t.currentTime=e,i.seek()}stop(){let{remotePlayerController:e}=this.params.connection;e.stop()}createMediaInfo(e){let t=this.params.source,i,r,a;switch(e){case"MPEG":{let l=t[e];mt(l);let d=wu(Object.keys(l));mt(d);let c=l[d];mt(c),i=c,r="video/mp4",a=chrome.cast.media.StreamType.BUFFERED;break}case"HLS":case"HLS_ONDEMAND":{let l=t[e];mt(l),i=l.url,r="application/x-mpegurl",a=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_SEP":case"DASH_ONDEMAND":case"DASH_WEBM":case"DASH_WEBM_AV1":case"DASH_STREAMS":{let l=t[e];mt(l),i=l.url,r="application/dash+xml",a=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_LIVE_CMAF":{let l=t[e];mt(l),i=l.url,r="application/dash+xml",a=chrome.cast.media.StreamType.LIVE;break}case"HLS_LIVE":case"HLS_LIVE_CMAF":{let l=t[e];mt(l),i=ie(l.url),r="application/x-mpegurl",a=chrome.cast.media.StreamType.LIVE;break}case"DASH_LIVE":case"WEB_RTC_LIVE":{let l="Unsupported format for Chromecast",d=new Error(l);throw this.params.output.error$.next({id:"ChromecastProvider.createMediaInfo()",category:Vs.VIDEO_PIPELINE,message:l,thrown:d}),d}case"DASH":case"DASH_LIVE_WEBM":throw new Error(`${e} is no longer supported`);default:return Lt(e)}let s=new chrome.cast.media.MediaInfo(this.params.meta.videoId??i,r);s.contentUrl=i,s.streamType=a,s.metadata=new chrome.cast.media.GenericMediaMetadata;let{title:o,subtitle:u}=this.params.meta;return Bs(o)&&(s.metadata.title=o),Bs(u)&&(s.metadata.subtitle=u),s}createLoadRequest(e){let t=new chrome.cast.media.LoadRequest(e);t.autoplay=!1;let i=this.params.desiredState.seekState.getState();return i.state==="applying"||i.state==="requested"?t.currentTime=this.params.output.isLive$.getValue()?0:i.position/1e3:t.currentTime=0,t}loadMedia(e){let t=this.params.connection.session.loadMedia(e),i=new Promise((r,a)=>{this.loadMediaTimeoutSubscription.add(Pu(Ns).subscribe(()=>a(`timeout(${Ns})`)))});Promise.race([t,i]).then(()=>{this.log({message:`[loadMedia] completed, format: ${this.params.format}`}),this.params.desiredState.seekState.getState().state==="applying"&&this.params.output.seekedEvent$.next(),this.handleRemoteReady()},r=>{let a=`[prepare] loadMedia failed, format: ${this.params.format}, reason: ${r}`;this.log({message:a}),this.params.output.error$.next({id:"ChromecastProvider.loadMedia",category:Vs.VIDEO_PIPELINE,message:a,thrown:r})}).finally(()=>{this.loadMediaTimeoutSubscription.unsubscribe()})}logRemoteEvent(e){this.log({message:`[remoteEvent] ${JSON.stringify(e)}`})}};import{clearVideoElement as Us}from"@vkontakte/videoplayer-shared/evergreen";import{clearVideoElement as Mu}from"@vkontakte/videoplayer-shared/evergreen";var Fs=n=>{try{n.pause(),n.playbackRate=0,Mu(n),n.remove()}catch(e){console.error(e)}};import{fromEvent as Du,Subscription as Ru}from"@vkontakte/videoplayer-shared/evergreen";var fa=class{constructor(){this.attribute="data-pool-reused"}get(e){return e.hasAttribute(this.attribute)}set(e,t){e.toggleAttribute(this.attribute,t)}delete(e){e.removeAttribute(this.attribute)}},ba=window.WeakMap?new WeakMap:new fa,ga=window.WeakMap?new WeakMap:new Map,Cu=(n,e=20)=>{let t=0;return Du(n,"ratechange").subscribe(i=>{t++,t>=e&&(n.currentTime=n.currentTime,t=0)})},pe=(n,{audioVideoSyncRate:e,disableYandexPiP:t})=>{let i=n.querySelector("video"),r=!!i;i?Us(i):(i=document.createElement("video"),n.appendChild(i)),ba.set(i,r);let a=new Ru;return a.add(Cu(i,e)),ga.set(i,a),i.setAttribute("crossorigin","anonymous"),i.setAttribute("playsinline","playsinline"),t&&i.setAttribute("x-yandex-pip","false"),i.controls=!1,i.setAttribute("poster","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),i},he=n=>{ga.get(n)?.unsubscribe(),ga.delete(n);let t=ba.get(n);ba.delete(n),t?Us(n):Fs(n)};import{assertNonNullable as Gt,isNonNullable as _e,isNullable as Ou,fromEvent as Mt,merge as Hs,observableFrom as Qs,filterChanged as js,map as Yt,Subject as Ws,Subscription as _u,ValueSubject as Nu,ErrorCategory as Fu}from"@vkontakte/videoplayer-shared/evergreen";import{isNonNullable as Sa,isNullable as Vu,Subscription as Bu}from"@vkontakte/videoplayer-shared/evergreen";var fr=(n,e,t,{equal:i=(s,o)=>s===o,changed$:r,onError:a}={})=>{let s=n.getState(),o=e(),u=Vu(r),l=new Bu;return r&&l.add(r.subscribe(d=>{let c=n.getState();i(d,c)&&n.setState(d)},a)),i(o,s)||(t(s),u&&n.setState(s)),l.add(n.stateChangeStarted$.subscribe(d=>{t(d.to),u&&n.setState(d.to)},a)),l},Oe=(n,e,t)=>fr(e,()=>n.loop,i=>{Sa(i)&&(n.loop=i)},{onError:t}),me=(n,e,t,i)=>fr(e,()=>({muted:n.muted,volume:n.volume}),r=>{Sa(r)&&(n.muted=r.muted,n.volume=r.volume)},{equal:(r,a)=>r===a||r?.muted===a?.muted&&r?.volume===a?.volume,changed$:t,onError:i}),ke=(n,e,t,i)=>fr(e,()=>n.playbackRate,r=>{Sa(r)&&(n.playbackRate=r)},{changed$:t,onError:i}),Ze=fr;var Uu=n=>["__",n.language,n.label].join("|"),Hu=(n,e)=>{if(n.id===e)return!0;let[t,i,r]=e.split("|");return n.language===i&&n.label===r},va=class n{constructor(e){this.available$=new Ws;this.current$=new Nu(void 0);this.error$=new Ws;this.subscription=new _u;this.externalTracks=new Map;this.internalTracks=new Map;this.baseURL=e}connect(e,t,i){this.video=e,this.cueSettings=t.textTrackCuesSettings,this.subscribe();let r=a=>{this.error$.next({id:"TextTracksManager",category:Fu.WTF,message:"Generic HtmlVideoTextTrackManager error",thrown:a})};this.subscription.add(this.available$.subscribe(i.availableTextTracks$)),this.subscription.add(this.current$.subscribe(i.currentTextTrack$)),this.subscription.add(this.error$.subscribe(i.error$)),this.subscription.add(Ze(t.internalTextTracks,()=>Object.values(this.internalTracks),a=>{_e(a)&&this.setInternal(a)},{equal:(a,s)=>_e(a)&&_e(s)&&a.length===s.length&&a.every(({id:o},u)=>o===s[u].id),changed$:this.available$.pipe(Yt(a=>a.filter(({type:s})=>s==="internal"))),onError:r})),this.subscription.add(Ze(t.externalTextTracks,()=>Object.values(this.externalTracks),a=>{_e(a)&&this.setExternal(a)},{equal:(a,s)=>_e(a)&&_e(s)&&a.length===s.length&&a.every(({id:o},u)=>o===s[u].id),changed$:this.available$.pipe(Yt(a=>a.filter(({type:s})=>s==="external"))),onError:r})),this.subscription.add(Ze(t.currentTextTrack,()=>{if(this.video)return;let a=this.htmlTextTracksAsArray().find(({mode:s})=>s==="showing");return a&&this.htmlTextTrackToITextTrack(a).id},a=>this.select(a),{changed$:this.current$,onError:r})),this.subscription.add(Ze(t.textTrackCuesSettings,()=>({}),()=>{if(this.video)for(let a of this.htmlTextTracksAsArray())this.applyCueSettings(a.cues),this.applyCueSettings(a.activeCues)}))}subscribe(){Gt(this.video);let{textTracks:e}=this.video;this.subscription.add(Mt(e,"addtrack").subscribe(()=>{let i=this.current$.getValue();i&&this.select(i)})),this.subscription.add(Hs(Mt(e,"addtrack"),Mt(e,"removetrack"),Qs(["init"])).pipe(Yt(()=>this.htmlTextTracksAsArray().map(i=>this.htmlTextTrackToITextTrack(i))),js((i,r)=>i.length===r.length&&i.every(({id:a},s)=>a===r[s].id))).subscribe(this.available$)),this.subscription.add(Hs(Mt(e,"change"),Qs(["init"])).pipe(Yt(()=>this.htmlTextTracksAsArray().find(({mode:i})=>i==="showing")),Yt(i=>i&&this.htmlTextTrackToITextTrack(i).id),js()).subscribe(this.current$));let t=i=>this.applyCueSettings(i.target?.activeCues??null);this.subscription.add(Mt(e,"addtrack").subscribe(i=>{i.track?.addEventListener("cuechange",t);let r=a=>{let s=a.target?.cues??null;s&&s.length&&(this.applyCueSettings(a.target?.cues??null),a.target?.removeEventListener("cuechange",r))};i.track?.addEventListener("cuechange",r)})),this.subscription.add(Mt(e,"removetrack").subscribe(i=>{i.track?.removeEventListener("cuechange",t)}))}applyCueSettings(e){if(!e||!e.length)return;let t=this.cueSettings.getState();for(let i of Array.from(e)){let r=i;_e(t.align)&&(r.align=t.align),_e(t.position)&&(r.position=t.position),_e(t.size)&&(r.size=t.size),_e(t.line)&&(r.line=t.line)}}htmlTextTracksAsArray(e=!1){Gt(this.video);let t=[...this.video.textTracks];return e?t:t.filter(n.isHealthyTrack)}htmlTextTrackToITextTrack(e){let{language:t,label:i}=e,r=e.id?e.id:Uu(e),a=this.externalTracks.has(r),s=(a?this.externalTracks.get(r)?.isAuto:this.internalTracks.get(r)?.isAuto)??r.includes("auto");return a?{id:r,type:"external",isAuto:s,language:t,label:i,url:this.externalTracks.get(r)?.url}:{id:r,type:"internal",isAuto:s,language:t,label:i,url:this.internalTracks.get(r)?.url}}static isHealthyTrack(e){return!(e.kind==="metadata"||e.groupId||e.id===""&&e.label===""&&e.language==="")}setExternal(e){this.internalTracks.size>0&&Array.from(this.internalTracks).forEach(([,t])=>this.detach(t)),e.filter(({id:t})=>!this.externalTracks.has(t)).forEach(t=>this.attach(t)),Array.from(this.externalTracks).filter(([t])=>!e.find(i=>i.id===t)).forEach(([,t])=>this.detach(t))}setInternal(e){let t=[...this.externalTracks];e.filter(({id:i,language:r,isAuto:a})=>!this.internalTracks.has(i)&&!t.some(([,s])=>s.language===r&&s.isAuto===a)).forEach(i=>this.attach(i)),Array.from(this.internalTracks).filter(([i])=>!e.find(r=>r.id===i)).forEach(([,i])=>this.detach(i))}select(e){Gt(this.video);for(let t of this.htmlTextTracksAsArray(!0))t.mode="showing";for(let t of this.htmlTextTracksAsArray(!0))(Ou(e)||!Hu(t,e))&&(t.mode="disabled")}destroy(){if(this.subscription.unsubscribe(),this.video)for(let e of Array.from(this.video.getElementsByTagName("track"))){let t=e.getAttribute("id");t&&this.externalTracks.has(t)&&this.video.removeChild(e)}this.externalTracks.clear()}attach(e){Gt(this.video);let t=document.createElement("track");this.baseURL?t.setAttribute("src",new URL(e.url,this.baseURL).toString()):t.setAttribute("src",e.url),t.setAttribute("id",e.id),e.label&&t.setAttribute("label",e.label),e.language&&t.setAttribute("srclang",e.language),e.type==="external"?this.externalTracks.set(e.id,e):e.type==="internal"&&this.internalTracks.set(e.id,e),this.video.appendChild(t)}detach(e){Gt(this.video);let t=Array.prototype.find.call(this.video.getElementsByTagName("track"),i=>i.getAttribute("id")===e.id);t&&this.video.removeChild(t),e.type==="external"?this.externalTracks.delete(e.id):e.type==="internal"&&this.internalTracks.delete(e.id)}},Pe=va;var bt=class{constructor(){this.pausedTime=0;this.streamOffset=0;this.pauseTimestamp=0}getTotalPausedTime(){return this.pausedTime+this.getCurrentPausedTime()}getCurrentPausedTime(){return this.pauseTimestamp>0?Date.now()-this.pauseTimestamp:0}getStreamOffset(){return this.streamOffset}getTotalOffset(){return this.getTotalPausedTime()+this.streamOffset}pause(){this.pauseTimestamp===0&&(this.pauseTimestamp=Date.now())}resume(){this.pauseTimestamp>0&&(this.pausedTime+=this.getCurrentPausedTime(),this.pauseTimestamp=0)}resetTo(e,t=!1){this.streamOffset=e,this.pauseTimestamp=0,this.pausedTime=0,t&&this.pause()}};var qs=n=>{let e=n;for(;!(e instanceof Document)&&!(e instanceof ShadowRoot)&&e!==null;)e=e?.parentNode;return e??void 0},ya=n=>{let e=qs(n);return!!(e&&e.fullscreenElement&&e.fullscreenElement===n)},Gs=n=>{let e=qs(n);return!!(e&&e.pictureInPictureElement&&e.pictureInPictureElement===n)};import{fromEvent as fe,map as et,merge as Ia,filterChanged as Xu,isNonNullable as tn,Subject as Ju,filter as Kt,mapTo as Ea,combine as Zu,once as el,throttle as tl,ErrorCategory as il,ValueSubject as rn}from"@vkontakte/videoplayer-shared/evergreen";var Qu=3,Ys=(n,e,t=Qu)=>{let i=0,r=0;for(let a=0;a<n.length;a++){let s=n.start(a),o=n.end(a);if(s<=e&&e<=o){if(i=s,r=o,!t)return{from:i,to:r};for(let u=a-1;u>=0;u--)n.end(u)+t>=i&&(i=n.start(u));for(let u=a+1;u<n.length;u++)n.start(u)-t<=r&&(r=n.end(u))}}return{from:i,to:r}};var br=class{get current(){return this._current}get isYandex(){return this.current==="Yandex"}get isSafari(){return this.current==="Safari"}get isSamsungBrowser(){return this.current==="SamsungBrowser"}get safariVersion(){return this._safariVersion}detect(){let{userAgent:e}=navigator;try{let t=/yabrowser/i.test(e)?"Yandex":void 0,i=/samsungbrowser/i.test(e)?"SamsungBrowser":void 0,r=/chrome|crios/i.test(e)?"Chrome":void 0,a=/chromium/i.test(e)?"Chromium":void 0,s=/firefox|fxios/i.test(e)?"Firefox":void 0,o=/webkit|safari|khtml/i.test(e)?"Safari":void 0,u=/opr\//i.test(e)?"Opera":void 0,l=/edg/i.test(e)?"Edge":void 0;this._current=t||i||s||u||l||r||a||o||"Rest"}catch(t){console.error(t)}this.isSafari&&this.detectSafariVersion()}detectSafariVersion(){try{let{userAgent:e}=window.navigator,t=e.match(/Version\/(\d+)/);if(!t)return;let i=t[1],r=parseInt(i,10);if(isNaN(r))return;this._safariVersion=r}catch(e){console.error(e)}}};var zt=()=>/Mobile|mini|Fennec|Android|iP(ad|od|hone)/.test(navigator.appVersion??navigator.userAgent)||navigator?.userAgentData?.mobile;var gr=class{constructor(e){this._highEntropyValues={};this._displayChecker=e}get current(){return this._current}get isIOS(){let e=["iPhone","iPad","iPod"];return this._highEntropyValues.platform==="iOS"||e.includes(this.current)}get isMac(){return this._highEntropyValues.platform==="macOS"||this.current==="Mac"}get isApple(){return this.isIOS||this.isMac}get isIphoneOrOldIpad(){if(!this.isApple||!this._displayChecker.isTouch)return!1;let e=this.current==="iPad"||this._displayChecker.width>700,t=this._iosVersion;return!e||e&&!!t&&t<16}get isAndroid(){return this._highEntropyValues.platform==="Android"||this.current==="Android"}get isMobile(){return this._highEntropyValues.mobile||this._isMobile}get iOSVersion(){return this._iosVersion}detect(){let{userAgent:e}=navigator;try{this._isMobile=zt()}catch(t){console.error(t)}this.detectDevice(e),this.detectHighEntropyValues(),this.isIOS&&this.detectIOSVersion()}async detectHighEntropyValues(){let{userAgentData:e}=navigator;if(e){let t=await e.getHighEntropyValues(["architecture","bitness","brands","mobile","platform","formFactor","model","platformVersion","wow64"]);this._highEntropyValues=t}}detectDevice(e){try{let t=/android/i.test(e)?"Android":void 0,i=/iphone/i.test(e)?"iPhone":void 0,r=/ipad/i.test(e)?"iPad":void 0,a=/ipod/i.test(e)?"iPod":void 0,s=/mac/i.test(e)?"Mac":void 0,o=/webOS|BlackBerry|IEMobile|Opera Mini/i.test(e)?"RestMobile":void 0;this._current=t||i||r||a||o||s||"Desktop"}catch(t){console.error(t)}}detectIOSVersion(){try{if(this._highEntropyValues.platformVersion){let a=this._highEntropyValues.platformVersion.split(".").slice(0,2).join("."),s=parseFloat(a);this._iosVersion=s;return}let{userAgent:e}=window.navigator,t=e.match(/OS (\d+(_\d+)?)/i);if(!t)return;let i=t[1].replace(/_/g,".");if(!i)return;let r=parseFloat(i);if(isNaN(r))return;this._iosVersion=r}catch(e){console.error(e)}}};var Sr=class{get isTouch(){return typeof this._maxTouchPoints=="number"?this._maxTouchPoints>1:"ontouchstart"in window}get maxTouchPoints(){return this._maxTouchPoints}get height(){return this._height}get width(){return this._width}get screenHeight(){return this._screenHeight}get screenWidth(){return this._screenWidth}get pixelRatio(){return this._pixelRatio}get isHDR(){return this._isHdr}get colorDepth(){return this._colorDepth}detect(){let{maxTouchPoints:e}=navigator;try{this._maxTouchPoints=e??0,this._isHdr=!!matchMedia("(dynamic-range: high)")?.matches,this._colorDepth=screen.colorDepth}catch(t){console.error(t)}try{this._pixelRatio=window.devicePixelRatio||1,this._height=screen.height,this._width=screen.width,this._height=screen.height,this._screenHeight=this._height*this._pixelRatio,this._screenWidth=this._width*this._pixelRatio}catch(t){console.error(t)}}};var Le=()=>window.ManagedMediaSource||window.MediaSource,vr=()=>!!(window.ManagedMediaSource&&window.ManagedSourceBuffer?.prototype?.appendBuffer),zs=()=>!!(window.MediaSource&&window.SourceBuffer?.prototype?.appendBuffer),Ks=()=>window.ManagedMediaSource?new ManagedMediaSource:new MediaSource;var ju=document.createElement("video"),Wu='video/mp4; codecs="avc1.42000a,mp4a.40.2"',qu='video/mp4; codecs="hev1.1.6.L93.B0"',Xs='video/webm; codecs="vp09.00.10.08"',Js='video/webm; codecs="av01.0.00M.08"',Gu='audio/mp4; codecs="mp4a.40.2"',Yu='audio/webm; codecs="opus"',Zs,zu=async()=>{if(!window.navigator.mediaCapabilities)return;let n={type:"media-source",video:{contentType:"video/webm",width:1280,height:720,bitrate:1e6,framerate:30}},[e,t]=await Promise.all([window.navigator.mediaCapabilities.decodingInfo({...n,video:{...n.video,contentType:Js}}),window.navigator.mediaCapabilities.decodingInfo({...n,video:{...n.video,contentType:Xs}})]);Zs={DASH_WEBM_AV1:e,DASH_WEBM:t}};zu().catch(n=>{console.log(ju),console.error(n)});var yr=class{constructor(e,t){this._deviceChecker=e,this._browserChecker=t}get protocols(){return this._protocols}get containers(){return this._containers}get codecs(){return this._codecs}get webmDecodingInfo(){return Zs}get supportedCodecs(){return Object.keys(this._codecs).filter(e=>this._codecs[e])}get nativeHlsSupported(){return this._nativeHlsSupported}detect(){this._video=document.createElement("video");try{this._protocols={mms:vr(),mse:zs(),hls:!!(this._video.canPlayType?.("application/x-mpegurl")||this._video.canPlayType?.("vnd.apple.mpegURL")),webrtc:!!window.RTCPeerConnection,ws:!!window.WebSocket},this._containers={mp4:!!this._video.canPlayType?.("video/mp4"),webm:!!this._video.canPlayType?.("video/webm"),cmaf:!0};let e=!!Le()?.isTypeSupported?.(Wu),t=!!Le()?.isTypeSupported?.(qu),i=!!Le()?.isTypeSupported?.(Gu);this._codecs={h264:e,h265:t,vp9:!!Le()?.isTypeSupported?.(Xs),av1:!!Le()?.isTypeSupported?.(Js),aac:i,opus:!!Le()?.isTypeSupported?.(Yu),mpeg:(e||t)&&i},this._nativeHlsSupported=this._protocols.hls&&this._containers.mp4}catch(e){console.error(e)}this.destroyVideoElement()}destroyVideoElement(){if(!this._video)return;if(this._video.pause(),this._video.currentTime=0,this._video.removeAttribute("src"),this._video.src="",this._video.load(),this._video.remove){this._video.remove(),this._video=null;return}this._video.parentNode&&this._video.parentNode.removeChild(this._video);let e=this._video.cloneNode(!1);this._video.parentNode?.replaceChild(e,this._video),this._video=null}};var en="audio/mpeg",Tr=class{supportMp3(){return this._codecs.mp3&&this._containers.mpeg}detect(){this._audio=document.createElement("audio");try{this._containers={mpeg:!!this._audio.canPlayType?.(en)},this._codecs={mp3:!!Le()?.isTypeSupported?.(en)}}catch(e){console.error(e)}this.destroyAudioElement()}destroyAudioElement(){if(!this._audio)return;if(this._audio.pause(),this._audio.currentTime=0,this._audio.removeAttribute("src"),this._audio.src="",this._audio.load(),this._audio.remove){this._audio.remove(),this._audio=null;return}this._audio.parentNode&&this._audio.parentNode.removeChild(this._audio);let e=this._audio.cloneNode(!1);this._audio.parentNode?.replaceChild(e,this._audio),this._audio=null}};import{ValueSubject as Ku}from"@vkontakte/videoplayer-shared/evergreen";var Ta=class{constructor(){this.isInited$=new Ku(!1);this._displayChecker=new Sr,this._deviceChecker=new gr(this._displayChecker),this._browserChecker=new br,this._videoChecker=new yr(this._deviceChecker,this._browserChecker),this._audioChecker=new Tr,this.detect()}get display(){return this._displayChecker}get device(){return this._deviceChecker}get browser(){return this._browserChecker}get video(){return this._videoChecker}get audio(){return this._audioChecker}async detect(){this._displayChecker.detect(),this._deviceChecker.detect(),this._browserChecker.detect(),this._videoChecker.detect(),this._audioChecker.detect(),this.isInited$.next(!0)}},O=new Ta;var be=n=>{let e=w=>fe(n,w).pipe(Ea(void 0)),i=Ia(...["waiting","pause","canplay","play","canplaythrough","playing","seeking","seeked","ended"].map(w=>fe(n,w))).pipe(et(w=>w.type==="ended"?n.readyState<2:n.readyState<3),Xu()),r=Ia(fe(n,"progress"),fe(n,"timeupdate")).pipe(et(()=>Ys(n.buffered,n.currentTime))),a=O.browser.isSafari?Zu({play:e("play").pipe(el()),playing:e("playing")}).pipe(Ea(void 0)):e("playing"),s=fe(n,"volumechange").pipe(et(()=>({muted:n.muted,volume:n.volume}))),o=fe(n,"ratechange").pipe(et(()=>n.playbackRate)),u=fe(n,"error").pipe(Kt(()=>!!(n.error||n.played.length)),et(()=>{let w=n.error;return{id:w?`MediaError#${w.code}`:"HtmlVideoError",category:il.VIDEO_PIPELINE,message:w?w.message:"Error event from HTML video element",thrown:n.error??void 0}})),l=fe(n,"timeupdate").pipe(et(()=>n.currentTime)),d=new Ju,c=.3,p;l.subscribe(w=>{n.loop&&tn(p)&&tn(w)&&p>=n.duration-c&&w<=c&&d.next(p),p=w});let h=e("pause").pipe(Kt(()=>!n.error&&p!==n.duration)),m=fe(n,"enterpictureinpicture"),f=fe(n,"leavepictureinpicture"),b=new rn(Gs(n));m.subscribe(()=>b.next(!0)),f.subscribe(()=>b.next(!1));let T=new rn(ya(n));fe(n,"fullscreenchange").pipe(et(()=>ya(n))).subscribe(T);let I=.1,x=1e3,g=fe(n,"timeupdate").pipe(Kt(w=>n.duration-n.currentTime<I)),V=Ia(g.pipe(Kt(w=>!n.loop)),fe(n,"ended")).pipe(tl(x),Ea(void 0)),A=g.pipe(Kt(w=>n.loop));return{playing$:a,pause$:h,canplay$:e("canplay"),ended$:V,looped$:d,loopExpected$:A,error$:u,seeked$:e("seeked"),seeking$:e("seeking"),progress$:e("progress"),loadStart$:e("loadstart"),loadedMetadata$:e("loadedmetadata"),loadedData$:e("loadeddata"),timeUpdate$:l,durationChange$:fe(n,"durationchange").pipe(et(()=>n.duration)),isBuffering$:i,currentBuffer$:r,volumeState$:s,playbackRateState$:o,inPiP$:b,inFullscreen$:T,enterPip$:m,leavePip$:f}};import{VideoQuality as tt}from"@vkontakte/videoplayer-shared/evergreen";var it=n=>{switch(n){case"mobile":return tt.Q_144P;case"lowest":return tt.Q_240P;case"low":return tt.Q_360P;case"sd":case"medium":return tt.Q_480P;case"hd":case"high":return tt.Q_720P;case"fullhd":case"full":return tt.Q_1080P;case"quadhd":case"quad":return tt.Q_1440P;case"ultrahd":case"ultra":return tt.Q_2160P}};import{isNonNullable as ue,isNullable as ln,now as hn,isHigher as dn,isHigherOrEqual as wa,isInvariantQuality as cn,isLowerOrEqual as Aa,videoSizeToQuality as sl,assertNotEmptyArray as mn,assertNonNullable as nl}from"@vkontakte/videoplayer-shared/evergreen";var xa=!1,Qe={},an=n=>{xa=n},sn=()=>{Qe={}},nn=n=>{n(Qe)},Xt=(n,e)=>{xa&&(Qe.meta=Qe.meta??{},Qe.meta[n]=e)},oe=class{constructor(e){this.name=e}next(e){if(!xa)return;Qe.series=Qe.series??{};let t=Qe.series[this.name]??[];t.push([Date.now(),e]),Qe.series[this.name]=t}};import{isHigher as rl,isHigherOrEqual as xm,isLower as on,isLowerOrEqual as km,isNonNullable as Ir,isNullable as al,videoHeightToQuality as Er}from"@vkontakte/videoplayer-shared/evergreen";function ka({limits:n,highQualityLimit:e,trafficSavingLimit:t}){return!n.max&&n.min===e?"high_quality":!n.min&&n.max===t?"traffic_saving":"unknown"}function Pa({limits:n,highQualityLimit:e,trafficSavingLimit:t}){return!!n&&ka({limits:n,highQualityLimit:e,trafficSavingLimit:t})==="high_quality"}function Jt({limits:n,highestAvailableQuality:e,lowestAvailableQuality:t}){return al(n)||Ir(n.min)&&Ir(n.max)&&on(n.max,n.min)||Ir(n.min)&&e&&rl(n.min,e)||Ir(n.max)&&t&&on(n.max,t)}function un({limits:n,highestAvailableHeight:e,lowestAvailableHeight:t}){return Jt({limits:{max:n?.max?Er(n.max):void 0,min:n?.min?Er(n.min):void 0},highestAvailableQuality:e?Er(e):void 0,lowestAvailableQuality:t?Er(t):void 0})}var ol=new oe("best_bitrate"),fn=(n,e,t)=>(e-t)*Math.pow(2,-10*n)+t;var $a=n=>(e,t)=>n*(Number(e.bitrate)-Number(t.bitrate)),Zt=class{constructor(){this.history={}}recordSelection(e){this.history[e.id]=hn()}recordSwitch(e){this.last=e}clear(){this.last=void 0,this.history={}}},bn='Assertion "ABR Tracks is empty array" failed',xr=(n,e,t,i)=>{let r=[...e].sort($a(1)),a=[...t].sort($a(1)),s=a.filter(u=>ue(u.bitrate)&&ue(n.bitrate)?n.bitrate/u.bitrate>i:!0),o=a.at(Math.round(a.length*r.indexOf(n)/(r.length+1)))??a.at(-1);return o&&s.includes(o)?o:s.length?s.at(-1):a.at(0)},pn=n=>"quality"in n,gn=(n,e,t,i)=>{let r=ue(i?.last?.bitrate)&&ue(t?.bitrate)&&i.last.bitrate<t.bitrate?n.trackCooldownIncreaseQuality:n.trackCooldownDecreaseQuality,a=t&&i&&i.history[t.id]&&hn()-i.history[t.id]<=r&&(!i.last||t.id!==i.last.id);if(t?.id&&i&&!a&&i.recordSelection(t),a&&i?.last){let s=i.last;i?.recordSwitch(s);let o=pn(s)?"video":"audio",u=pn(s)?s.quality:s.bitrate;return e({message:`
|
|
6
|
+
var xs="2.0.129-dev.3cb78ab3.0";var ye=(r=>(r.STOPPED="stopped",r.READY="ready",r.PLAYING="playing",r.PAUSED="paused",r))(ye||{}),Ue=(I=>(I.MPEG="MPEG",I.DASH="DASH",I.DASH_SEP="DASH_SEP",I.DASH_SEP_VK="DASH_SEP",I.DASH_WEBM="DASH_WEBM",I.DASH_WEBM_AV1="DASH_WEBM_AV1",I.DASH_STREAMS="DASH_STREAMS",I.DASH_WEBM_VK="DASH_WEBM",I.DASH_ONDEMAND="DASH_ONDEMAND",I.DASH_ONDEMAND_VK="DASH_ONDEMAND",I.DASH_LIVE="DASH_LIVE",I.DASH_LIVE_CMAF="DASH_LIVE_CMAF",I.DASH_LIVE_WEBM="DASH_LIVE_WEBM",I.HLS="HLS",I.HLS_ONDEMAND="HLS_ONDEMAND",I.HLS_JS="HLS",I.HLS_LIVE="HLS_LIVE",I.HLS_LIVE_CMAF="HLS_LIVE_CMAF",I.WEB_RTC_LIVE="WEB_RTC_LIVE",I))(Ue||{});var lr=(r=>(r.NOT_AVAILABLE="NOT_AVAILABLE",r.AVAILABLE="AVAILABLE",r.CONNECTING="CONNECTING",r.CONNECTED="CONNECTED",r))(lr||{}),da=(i=>(i.HTTP1="http1",i.HTTP2="http2",i.QUIC="quic",i))(da||{});var ca=(s=>(s.NONE="none",s.INLINE="inline",s.FULLSCREEN="fullscreen",s.SECOND_SCREEN="second_screen",s.PIP="pip",s.INVISIBLE="invisible",s))(ca||{}),dr=(i=>(i.TRAFFIC_SAVING="traffic_saving",i.HIGH_QUALITY="high_quality",i.UNKNOWN="unknown",i))(dr||{});import{assertNever as Ls,assertNonNullable as fu,isNonNullable as cr,ValueSubject as pa,Subject as bu,Subscription as gu,merge as Su,observableFrom as vu,fromEvent as Ps,map as ws,tap as As,filterChanged as yu,isNullable as ha,ErrorCategory as $s}from"@vkontakte/videoplayer-shared/evergreen";var ks=n=>new Promise((e,t)=>{let i=document.createElement("script");i.setAttribute("src",n),i.onload=()=>e(),i.onerror=r=>t(r),document.body.appendChild(i)});var pr=class{constructor(e){this.connection$=new pa(void 0);this.castState$=new pa("NOT_AVAILABLE");this.errorEvent$=new bu;this.realCastState$=new pa("NOT_AVAILABLE");this.subscription=new gu;this.isDestroyed=!1;this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastInitializer");let t="chrome"in window;if(this.log({message:`[constructor] receiverApplicationId: ${this.params.receiverApplicationId}, isDisabled: ${this.params.isDisabled}, isSupported: ${t}`}),e.isDisabled||!t)return;let i=cr(window.chrome?.cast),r=!!window.__onGCastApiAvailable;i?this.initializeCastApi():(window.__onGCastApiAvailable=a=>{delete window.__onGCastApiAvailable,a&&!this.isDestroyed&&this.initializeCastApi()},r||ks("https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1").catch(()=>this.errorEvent$.next({id:"ChromecastLoading",category:$s.NETWORK,message:"Script loading failed!"})))}connect(){cast.framework.CastContext.getInstance()?.requestSession()}disconnect(){cast.framework.CastContext.getInstance()?.getCurrentSession()?.endSession(!0)}stopMedia(){return new Promise((e,t)=>{cast.framework.CastContext.getInstance()?.getCurrentSession()?.getMediaSession()?.stop(new chrome.cast.media.StopRequest,e,t)})}toggleConnection(){cr(this.connection$.getValue())?this.disconnect():this.connect()}setVolume(e){let t=this.connection$.getValue();ha(t)||(t.remotePlayer.volumeLevel=e,t.remotePlayerController.setVolumeLevel())}setMuted(e){let t=this.connection$.getValue();ha(t)||e!==t.remotePlayer.isMuted&&t.remotePlayerController.muteOrUnmute()}destroy(){this.isDestroyed=!0,this.subscription.unsubscribe()}initListeners(){let e=new cast.framework.RemotePlayer,t=new cast.framework.RemotePlayerController(e),i=cast.framework.CastContext.getInstance();this.subscription.add(Ps(i,cast.framework.CastContextEventType.SESSION_STATE_CHANGED).subscribe(r=>{switch(r.sessionState){case cast.framework.SessionState.SESSION_STARTED:case cast.framework.SessionState.SESSION_STARTING:case cast.framework.SessionState.SESSION_RESUMED:this.contentId=i.getCurrentSession()?.getMediaSession()?.media?.contentId;break;case cast.framework.SessionState.NO_SESSION:case cast.framework.SessionState.SESSION_ENDING:case cast.framework.SessionState.SESSION_ENDED:case cast.framework.SessionState.SESSION_START_FAILED:this.contentId=void 0;break;default:return Ls(r.sessionState)}})).add(Su(Ps(i,cast.framework.CastContextEventType.CAST_STATE_CHANGED).pipe(As(r=>{this.log({message:`[cast.framework.RemotePlayerEventType.CAST_STATE_CHANGED]: ${JSON.stringify(r)}`})}),ws(r=>r.castState)),vu([i.getCastState()])).pipe(yu(),ws(Tu),As(r=>{this.log({message:`realCastState$: ${r}`})})).subscribe(this.realCastState$)).add(this.realCastState$.subscribe(r=>{let a=r==="CONNECTED",s=cr(this.connection$.getValue());if(a&&!s){let o=i.getCurrentSession();fu(o);let u=o.getCastDevice(),l=o.getMediaSession()?.media?.contentId;(ha(l)||l===this.contentId)&&(this.log({message:"connection created"}),this.connection$.next({remotePlayer:e,remotePlayerController:t,session:o,castDevice:u}))}else!a&&s&&(this.log({message:"connection destroyed"}),this.connection$.next(void 0));this.castState$.next(r==="CONNECTED"?cr(this.connection$.getValue())?"CONNECTED":"AVAILABLE":r)}))}initializeCastApi(){let e,t,i;try{e=cast.framework.CastContext.getInstance(),t=chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,i=chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED}catch{return}try{e.setOptions({receiverApplicationId:this.params.receiverApplicationId??t,autoJoinPolicy:i}),this.initListeners()}catch(r){this.errorEvent$.next({id:"ChromecastInitializer",category:$s.EXTERNAL_API,message:"[initializeCastApi] failed",thrown:r})}}},Tu=n=>{switch(n){case cast.framework.CastState.NO_DEVICES_AVAILABLE:return"NOT_AVAILABLE";case cast.framework.CastState.NOT_CONNECTED:return"AVAILABLE";case cast.framework.CastState.CONNECTING:return"CONNECTING";case cast.framework.CastState.CONNECTED:return"CONNECTED";default:return Ls(n)}};import{assertNever as Ms}from"@vkontakte/videoplayer-shared/evergreen";var ie=(n,e=0,t=0)=>{switch(t){case 0:return n.replace("_offset_p",e===0?"":"_"+e.toFixed(0));case 1:{if(e===0)return n;let i=new URL(n);return i.searchParams.append("playback_shift",e.toFixed(0)),i.toString()}case 2:{let i=new URL(n);return!i.searchParams.get("offset_p")&&e===0?n:(i.searchParams.set("offset_p",e.toFixed(0)),i.toString())}default:Ms(t)}return n},hr=(n,e)=>{switch(e){case 0:return NaN;case 1:{let t=new URL(n);return Number(t.searchParams.get("playback_shift"))}case 2:{let t=new URL(n);return Number(t.searchParams.get("offset_p")??0)}default:Ms(e)}};var y=(n,e,t=!1)=>{let i=n.getTransition();(t||!i||i.to===e)&&n.setState(e)};import{isNonNullable as Iu,Subject as mr,merge as Ds}from"@vkontakte/videoplayer-shared/evergreen";var M=class{constructor(e){this.transitionStarted$=new mr;this.transitionEnded$=new mr;this.transitionUpdated$=new mr;this.forceChanged$=new mr;this.stateChangeStarted$=Ds(this.transitionStarted$,this.transitionUpdated$);this.stateChangeEnded$=Ds(this.transitionEnded$,this.forceChanged$);this.state=e,this.prevState=void 0}setState(e){let t=this.transition,i=this.state;this.transition=void 0,this.prevState=i,this.state=e,t?t.to===e?this.transitionEnded$.next(t):this.forceChanged$.next({from:t.from,to:e,canceledTransition:t}):this.forceChanged$.next({from:i,to:e,canceledTransition:t})}startTransitionTo(e){let t=this.transition,i=this.state;i===e||Iu(t)&&t.to===e||(this.prevState=i,this.state=e,t?(this.transition={from:t.from,to:e,canceledTransition:t},this.transitionUpdated$.next(this.transition)):(this.transition={from:i,to:e},this.transitionStarted$.next(this.transition)))}getTransition(){return this.transition}getState(){return this.state}getPrevState(){return this.prevState}};import{assertNever as Eu}from"@vkontakte/videoplayer-shared/evergreen";var Rs=n=>{switch(n){case"MPEG":case"DASH":case"DASH_SEP":case"DASH_ONDEMAND":case"DASH_WEBM":case"DASH_WEBM_AV1":case"DASH_STREAMS":case"HLS":case"HLS_ONDEMAND":return!1;case"DASH_LIVE":case"DASH_LIVE_CMAF":case"HLS_LIVE":case"HLS_LIVE_CMAF":case"DASH_LIVE_WEBM":case"WEB_RTC_LIVE":return!0;default:return Eu(n)}};import{assertNever as Lt,assertNonNullable as mt,debounce as Cs,ErrorCategory as Vs,fromEvent as ft,isNonNullable as Bs,map as Os,merge as _s,observableFrom as xu,Subject as ku,Subscription as ma,timeout as Pu,getHighestQuality as wu}from"@vkontakte/videoplayer-shared/evergreen";var Au=5,$u=5,Lu=500,Ns=7e3,qt=class{constructor(e){this.subscription=new ma;this.loadMediaTimeoutSubscription=new ma;this.videoState=new M("stopped");this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.videoState.getTransition(),i=this.params.desiredState.playbackState.getState(),r=this.params.desiredState.playbackState.getTransition(),a=this.params.desiredState.seekState.getState();if(this.log({message:`[syncPlayback] videoState: ${e}; videoTransition: ${JSON.stringify(t)}; desiredPlaybackState: ${i}; desiredPlaybackStateTransition: ${this.params.desiredState.playbackState.getTransition()}; seekState: ${JSON.stringify(a)};`}),i==="stopped"){e!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.stop());return}if(!t){if(r?.to!=="paused"&&a.state==="requested"&&e!=="stopped"){this.seek(a.position/1e3);return}switch(i){case"ready":{switch(e){case"playing":case"paused":case"ready":break;case"stopped":this.videoState.startTransitionTo("ready"),this.prepare();break;default:Lt(e)}break}case"playing":{switch(e){case"playing":break;case"paused":this.videoState.startTransitionTo("playing"),this.params.connection.remotePlayerController.playOrPause();break;case"ready":this.videoState.startTransitionTo("playing"),this.params.connection.remotePlayerController.playOrPause();break;case"stopped":this.videoState.startTransitionTo("ready"),this.prepare();break;default:Lt(e)}break}case"paused":{switch(e){case"playing":this.videoState.startTransitionTo("paused"),this.params.connection.remotePlayerController.playOrPause();break;case"paused":break;case"ready":this.videoState.startTransitionTo("paused"),this.videoState.setState("paused");break;case"stopped":this.videoState.startTransitionTo("ready"),this.prepare();break;default:Lt(e)}break}default:Lt(i)}}};this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastProvider"),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next(Rs(e.format)),this.params.output.isAudioAvailable$.next(!0),this.handleRemoteVolumeChange({volume:this.params.connection.remotePlayer.volumeLevel,muted:this.params.connection.remotePlayer.isMuted});let t=this.params.connection.session.getMediaSession();t&&this.restoreSession(t),this.subscribe()}destroy(){this.log({message:"[destroy]"}),this.subscription.unsubscribe()}subscribe(){this.subscription.add(this.loadMediaTimeoutSubscription);let e=new ma;this.subscription.add(e),this.subscription.add(_s(this.videoState.stateChangeStarted$.pipe(Os(r=>`stateChangeStarted$ ${JSON.stringify(r)}`)),this.videoState.stateChangeEnded$.pipe(Os(r=>`stateChangeEnded$ ${JSON.stringify(r)}`))).subscribe(r=>this.log({message:`[videoState] ${r}`})));let t=(r,a)=>this.subscription.add(r.subscribe(a));if(this.params.output.isLive$.getValue())this.params.output.position$.next(0),this.params.output.duration$.next(0);else{let r=new ku;e.add(r.pipe(Cs(Lu)).subscribe(()=>{this.params.output.seekedEvent$.next()}));let a=NaN;e.add(ft(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.CURRENT_TIME_CHANGED).subscribe(s=>{this.logRemoteEvent(s);let o=s.value;this.params.output.position$.next(o),(this.params.desiredState.seekState.getState().state==="applying"||Math.abs(o-a)>Au)&&r.next(o),a=o})),e.add(ft(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.DURATION_CHANGED).subscribe(s=>{this.logRemoteEvent(s),this.params.output.duration$.next(s.value)}))}t(ft(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED),r=>{this.logRemoteEvent(r),r.value?this.handleRemoteReady():(this.handleRemoteStop(),e.unsubscribe())}),t(ft(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED),r=>{this.logRemoteEvent(r),r.value?this.handleRemotePause():this.handleRemotePlay()}),t(ft(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.PLAYER_STATE_CHANGED),r=>{this.logRemoteEvent(r);let{remotePlayer:a}=this.params.connection,s=r.value,o=this.params.output.isBuffering$.getValue(),u=s===chrome.cast.media.PlayerState.BUFFERING;switch(o!==u&&this.params.output.isBuffering$.next(u),s){case chrome.cast.media.PlayerState.IDLE:!this.params.output.isLive$.getValue()&&a.duration-a.currentTime<$u&&this.params.output.endedEvent$.next(),this.handleRemoteStop(),y(this.params.desiredState.playbackState,"stopped");break;case chrome.cast.media.PlayerState.PAUSED:{this.handleRemotePause();break}case chrome.cast.media.PlayerState.PLAYING:this.handleRemotePlay();break;case chrome.cast.media.PlayerState.BUFFERING:break;default:Lt(s)}}),t(ft(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED),r=>{this.logRemoteEvent(r),this.handleRemoteVolumeChange({volume:r.value})}),t(ft(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED),r=>{this.logRemoteEvent(r),this.handleRemoteVolumeChange({muted:r.value})});let i=_s(this.params.desiredState.playbackState.stateChangeStarted$,this.params.desiredState.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,xu(["init"])).pipe(Cs(0));t(i,this.syncPlayback)}restoreSession(e){this.log({message:"restoreSession"});let{remotePlayer:t}=this.params.connection;if(e.playerState!==chrome.cast.media.PlayerState.IDLE){t.isPaused?(this.videoState.setState("paused"),y(this.params.desiredState.playbackState,"paused")):(this.videoState.setState("playing"),y(this.params.desiredState.playbackState,"playing"));let i=this.params.output.isLive$.getValue();this.params.output.duration$.next(i?0:t.duration),this.params.output.position$.next(i?0:t.currentTime),this.params.desiredState.seekState.setState({state:"none"})}}prepare(){let e=this.params.format;this.log({message:`[prepare] format: ${e}`});let t=this.createMediaInfo(e),i=this.createLoadRequest(t);this.loadMedia(i)}handleRemotePause(){let e=this.videoState.getState();(this.videoState.getTransition()?.to==="paused"||e==="playing")&&(this.videoState.setState("paused"),y(this.params.desiredState.playbackState,"paused"))}handleRemotePlay(){let e=this.videoState.getState();(this.videoState.getTransition()?.to==="playing"||e==="paused")&&(this.videoState.setState("playing"),y(this.params.desiredState.playbackState,"playing"))}handleRemoteReady(){this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready"),this.params.desiredState.playbackState.getTransition()?.to==="ready"&&y(this.params.desiredState.playbackState,"ready")}handleRemoteStop(){this.videoState.getState()!=="stopped"&&this.videoState.setState("stopped")}handleRemoteVolumeChange(e){let t=this.params.output.volume$.getValue(),i={volume:e.volume??t.volume,muted:e.muted??t.muted};(i.volume!==t.volume||i.muted!==i.muted)&&this.params.output.volume$.next(i)}seek(e){this.params.output.willSeekEvent$.next();let{remotePlayer:t,remotePlayerController:i}=this.params.connection;t.currentTime=e,i.seek()}stop(){let{remotePlayerController:e}=this.params.connection;e.stop()}createMediaInfo(e){let t=this.params.source,i,r,a;switch(e){case"MPEG":{let l=t[e];mt(l);let d=wu(Object.keys(l));mt(d);let c=l[d];mt(c),i=c,r="video/mp4",a=chrome.cast.media.StreamType.BUFFERED;break}case"HLS":case"HLS_ONDEMAND":{let l=t[e];mt(l),i=l.url,r="application/x-mpegurl",a=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_SEP":case"DASH_ONDEMAND":case"DASH_WEBM":case"DASH_WEBM_AV1":case"DASH_STREAMS":{let l=t[e];mt(l),i=l.url,r="application/dash+xml",a=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_LIVE_CMAF":{let l=t[e];mt(l),i=l.url,r="application/dash+xml",a=chrome.cast.media.StreamType.LIVE;break}case"HLS_LIVE":case"HLS_LIVE_CMAF":{let l=t[e];mt(l),i=ie(l.url),r="application/x-mpegurl",a=chrome.cast.media.StreamType.LIVE;break}case"DASH_LIVE":case"WEB_RTC_LIVE":{let l="Unsupported format for Chromecast",d=new Error(l);throw this.params.output.error$.next({id:"ChromecastProvider.createMediaInfo()",category:Vs.VIDEO_PIPELINE,message:l,thrown:d}),d}case"DASH":case"DASH_LIVE_WEBM":throw new Error(`${e} is no longer supported`);default:return Lt(e)}let s=new chrome.cast.media.MediaInfo(this.params.meta.videoId??i,r);s.contentUrl=i,s.streamType=a,s.metadata=new chrome.cast.media.GenericMediaMetadata;let{title:o,subtitle:u}=this.params.meta;return Bs(o)&&(s.metadata.title=o),Bs(u)&&(s.metadata.subtitle=u),s}createLoadRequest(e){let t=new chrome.cast.media.LoadRequest(e);t.autoplay=!1;let i=this.params.desiredState.seekState.getState();return i.state==="applying"||i.state==="requested"?t.currentTime=this.params.output.isLive$.getValue()?0:i.position/1e3:t.currentTime=0,t}loadMedia(e){let t=this.params.connection.session.loadMedia(e),i=new Promise((r,a)=>{this.loadMediaTimeoutSubscription.add(Pu(Ns).subscribe(()=>a(`timeout(${Ns})`)))});Promise.race([t,i]).then(()=>{this.log({message:`[loadMedia] completed, format: ${this.params.format}`}),this.params.desiredState.seekState.getState().state==="applying"&&this.params.output.seekedEvent$.next(),this.handleRemoteReady()},r=>{let a=`[prepare] loadMedia failed, format: ${this.params.format}, reason: ${r}`;this.log({message:a}),this.params.output.error$.next({id:"ChromecastProvider.loadMedia",category:Vs.VIDEO_PIPELINE,message:a,thrown:r})}).finally(()=>{this.loadMediaTimeoutSubscription.unsubscribe()})}logRemoteEvent(e){this.log({message:`[remoteEvent] ${JSON.stringify(e)}`})}};import{clearVideoElement as Us}from"@vkontakte/videoplayer-shared/evergreen";import{clearVideoElement as Mu}from"@vkontakte/videoplayer-shared/evergreen";var Fs=n=>{try{n.pause(),n.playbackRate=0,Mu(n),n.remove()}catch(e){console.error(e)}};import{fromEvent as Du,Subscription as Ru}from"@vkontakte/videoplayer-shared/evergreen";var fa=class{constructor(){this.attribute="data-pool-reused"}get(e){return e.hasAttribute(this.attribute)}set(e,t){e.toggleAttribute(this.attribute,t)}delete(e){e.removeAttribute(this.attribute)}},ba=window.WeakMap?new WeakMap:new fa,ga=window.WeakMap?new WeakMap:new Map,Cu=(n,e=20)=>{let t=0;return Du(n,"ratechange").subscribe(i=>{t++,t>=e&&(n.currentTime=n.currentTime,t=0)})},pe=(n,{audioVideoSyncRate:e,disableYandexPiP:t})=>{let i=n.querySelector("video"),r=!!i;i?Us(i):(i=document.createElement("video"),n.appendChild(i)),ba.set(i,r);let a=new Ru;return a.add(Cu(i,e)),ga.set(i,a),i.setAttribute("crossorigin","anonymous"),i.setAttribute("playsinline","playsinline"),t&&i.setAttribute("x-yandex-pip","false"),i.controls=!1,i.setAttribute("poster","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),i},he=n=>{ga.get(n)?.unsubscribe(),ga.delete(n);let t=ba.get(n);ba.delete(n),t?Us(n):Fs(n)};import{assertNonNullable as Gt,isNonNullable as _e,isNullable as Ou,fromEvent as Mt,merge as Hs,observableFrom as Qs,filterChanged as js,map as Yt,Subject as Ws,Subscription as _u,ValueSubject as Nu,ErrorCategory as Fu}from"@vkontakte/videoplayer-shared/evergreen";import{isNonNullable as Sa,isNullable as Vu,Subscription as Bu}from"@vkontakte/videoplayer-shared/evergreen";var fr=(n,e,t,{equal:i=(s,o)=>s===o,changed$:r,onError:a}={})=>{let s=n.getState(),o=e(),u=Vu(r),l=new Bu;return r&&l.add(r.subscribe(d=>{let c=n.getState();i(d,c)&&n.setState(d)},a)),i(o,s)||(t(s),u&&n.setState(s)),l.add(n.stateChangeStarted$.subscribe(d=>{t(d.to),u&&n.setState(d.to)},a)),l},Oe=(n,e,t)=>fr(e,()=>n.loop,i=>{Sa(i)&&(n.loop=i)},{onError:t}),me=(n,e,t,i)=>fr(e,()=>({muted:n.muted,volume:n.volume}),r=>{Sa(r)&&(n.muted=r.muted,n.volume=r.volume)},{equal:(r,a)=>r===a||r?.muted===a?.muted&&r?.volume===a?.volume,changed$:t,onError:i}),ke=(n,e,t,i)=>fr(e,()=>n.playbackRate,r=>{Sa(r)&&(n.playbackRate=r)},{changed$:t,onError:i}),Ze=fr;var Uu=n=>["__",n.language,n.label].join("|"),Hu=(n,e)=>{if(n.id===e)return!0;let[t,i,r]=e.split("|");return n.language===i&&n.label===r},va=class n{constructor(e){this.available$=new Ws;this.current$=new Nu(void 0);this.error$=new Ws;this.subscription=new _u;this.externalTracks=new Map;this.internalTracks=new Map;this.baseURL=e}connect(e,t,i){this.video=e,this.cueSettings=t.textTrackCuesSettings,this.subscribe();let r=a=>{this.error$.next({id:"TextTracksManager",category:Fu.WTF,message:"Generic HtmlVideoTextTrackManager error",thrown:a})};this.subscription.add(this.available$.subscribe(i.availableTextTracks$)),this.subscription.add(this.current$.subscribe(i.currentTextTrack$)),this.subscription.add(this.error$.subscribe(i.error$)),this.subscription.add(Ze(t.internalTextTracks,()=>Object.values(this.internalTracks),a=>{_e(a)&&this.setInternal(a)},{equal:(a,s)=>_e(a)&&_e(s)&&a.length===s.length&&a.every(({id:o},u)=>o===s[u].id),changed$:this.available$.pipe(Yt(a=>a.filter(({type:s})=>s==="internal"))),onError:r})),this.subscription.add(Ze(t.externalTextTracks,()=>Object.values(this.externalTracks),a=>{_e(a)&&this.setExternal(a)},{equal:(a,s)=>_e(a)&&_e(s)&&a.length===s.length&&a.every(({id:o},u)=>o===s[u].id),changed$:this.available$.pipe(Yt(a=>a.filter(({type:s})=>s==="external"))),onError:r})),this.subscription.add(Ze(t.currentTextTrack,()=>{if(this.video)return;let a=this.htmlTextTracksAsArray().find(({mode:s})=>s==="showing");return a&&this.htmlTextTrackToITextTrack(a).id},a=>this.select(a),{changed$:this.current$,onError:r})),this.subscription.add(Ze(t.textTrackCuesSettings,()=>({}),()=>{if(this.video)for(let a of this.htmlTextTracksAsArray())this.applyCueSettings(a.cues),this.applyCueSettings(a.activeCues)}))}subscribe(){Gt(this.video);let{textTracks:e}=this.video;this.subscription.add(Mt(e,"addtrack").subscribe(()=>{let i=this.current$.getValue();i&&this.select(i)})),this.subscription.add(Hs(Mt(e,"addtrack"),Mt(e,"removetrack"),Qs(["init"])).pipe(Yt(()=>this.htmlTextTracksAsArray().map(i=>this.htmlTextTrackToITextTrack(i))),js((i,r)=>i.length===r.length&&i.every(({id:a},s)=>a===r[s].id))).subscribe(this.available$)),this.subscription.add(Hs(Mt(e,"change"),Qs(["init"])).pipe(Yt(()=>this.htmlTextTracksAsArray().find(({mode:i})=>i==="showing")),Yt(i=>i&&this.htmlTextTrackToITextTrack(i).id),js()).subscribe(this.current$));let t=i=>this.applyCueSettings(i.target?.activeCues??null);this.subscription.add(Mt(e,"addtrack").subscribe(i=>{i.track?.addEventListener("cuechange",t);let r=a=>{let s=a.target?.cues??null;s&&s.length&&(this.applyCueSettings(a.target?.cues??null),a.target?.removeEventListener("cuechange",r))};i.track?.addEventListener("cuechange",r)})),this.subscription.add(Mt(e,"removetrack").subscribe(i=>{i.track?.removeEventListener("cuechange",t)}))}applyCueSettings(e){if(!e||!e.length)return;let t=this.cueSettings.getState();for(let i of Array.from(e)){let r=i;_e(t.align)&&(r.align=t.align),_e(t.position)&&(r.position=t.position),_e(t.size)&&(r.size=t.size),_e(t.line)&&(r.line=t.line)}}htmlTextTracksAsArray(e=!1){Gt(this.video);let t=[...this.video.textTracks];return e?t:t.filter(n.isHealthyTrack)}htmlTextTrackToITextTrack(e){let{language:t,label:i}=e,r=e.id?e.id:Uu(e),a=this.externalTracks.has(r),s=(a?this.externalTracks.get(r)?.isAuto:this.internalTracks.get(r)?.isAuto)??r.includes("auto");return a?{id:r,type:"external",isAuto:s,language:t,label:i,url:this.externalTracks.get(r)?.url}:{id:r,type:"internal",isAuto:s,language:t,label:i,url:this.internalTracks.get(r)?.url}}static isHealthyTrack(e){return!(e.kind==="metadata"||e.groupId||e.id===""&&e.label===""&&e.language==="")}setExternal(e){this.internalTracks.size>0&&Array.from(this.internalTracks).forEach(([,t])=>this.detach(t)),e.filter(({id:t})=>!this.externalTracks.has(t)).forEach(t=>this.attach(t)),Array.from(this.externalTracks).filter(([t])=>!e.find(i=>i.id===t)).forEach(([,t])=>this.detach(t))}setInternal(e){let t=[...this.externalTracks];e.filter(({id:i,language:r,isAuto:a})=>!this.internalTracks.has(i)&&!t.some(([,s])=>s.language===r&&s.isAuto===a)).forEach(i=>this.attach(i)),Array.from(this.internalTracks).filter(([i])=>!e.find(r=>r.id===i)).forEach(([,i])=>this.detach(i))}select(e){Gt(this.video);for(let t of this.htmlTextTracksAsArray(!0))t.mode="showing";for(let t of this.htmlTextTracksAsArray(!0))(Ou(e)||!Hu(t,e))&&(t.mode="disabled")}destroy(){if(this.subscription.unsubscribe(),this.video)for(let e of Array.from(this.video.getElementsByTagName("track"))){let t=e.getAttribute("id");t&&this.externalTracks.has(t)&&this.video.removeChild(e)}this.externalTracks.clear()}attach(e){Gt(this.video);let t=document.createElement("track");this.baseURL?t.setAttribute("src",new URL(e.url,this.baseURL).toString()):t.setAttribute("src",e.url),t.setAttribute("id",e.id),e.label&&t.setAttribute("label",e.label),e.language&&t.setAttribute("srclang",e.language),e.type==="external"?this.externalTracks.set(e.id,e):e.type==="internal"&&this.internalTracks.set(e.id,e),this.video.appendChild(t)}detach(e){Gt(this.video);let t=Array.prototype.find.call(this.video.getElementsByTagName("track"),i=>i.getAttribute("id")===e.id);t&&this.video.removeChild(t),e.type==="external"?this.externalTracks.delete(e.id):e.type==="internal"&&this.internalTracks.delete(e.id)}},Pe=va;var bt=class{constructor(){this.pausedTime=0;this.streamOffset=0;this.pauseTimestamp=0}getTotalPausedTime(){return this.pausedTime+this.getCurrentPausedTime()}getCurrentPausedTime(){return this.pauseTimestamp>0?Date.now()-this.pauseTimestamp:0}getStreamOffset(){return this.streamOffset}getTotalOffset(){return this.getTotalPausedTime()+this.streamOffset}pause(){this.pauseTimestamp===0&&(this.pauseTimestamp=Date.now())}resume(){this.pauseTimestamp>0&&(this.pausedTime+=this.getCurrentPausedTime(),this.pauseTimestamp=0)}resetTo(e,t=!1){this.streamOffset=e,this.pauseTimestamp=0,this.pausedTime=0,t&&this.pause()}};var qs=n=>{let e=n;for(;!(e instanceof Document)&&!(e instanceof ShadowRoot)&&e!==null;)e=e?.parentNode;return e??void 0},ya=n=>{let e=qs(n);return!!(e&&e.fullscreenElement&&e.fullscreenElement===n)},Gs=n=>{let e=qs(n);return!!(e&&e.pictureInPictureElement&&e.pictureInPictureElement===n)};import{fromEvent as fe,map as et,merge as Ia,filterChanged as Xu,isNonNullable as tn,Subject as Ju,filter as Kt,mapTo as Ea,combine as Zu,once as el,throttle as tl,ErrorCategory as il,ValueSubject as rn}from"@vkontakte/videoplayer-shared/evergreen";var Qu=3,Ys=(n,e,t=Qu)=>{let i=0,r=0;for(let a=0;a<n.length;a++){let s=n.start(a),o=n.end(a);if(s<=e&&e<=o){if(i=s,r=o,!t)return{from:i,to:r};for(let u=a-1;u>=0;u--)n.end(u)+t>=i&&(i=n.start(u));for(let u=a+1;u<n.length;u++)n.start(u)-t<=r&&(r=n.end(u))}}return{from:i,to:r}};var br=class{get current(){return this._current}get isYandex(){return this.current==="Yandex"}get isSafari(){return this.current==="Safari"}get isSamsungBrowser(){return this.current==="SamsungBrowser"}get safariVersion(){return this._safariVersion}detect(){let{userAgent:e}=navigator;try{let t=/yabrowser/i.test(e)?"Yandex":void 0,i=/samsungbrowser/i.test(e)?"SamsungBrowser":void 0,r=/chrome|crios/i.test(e)?"Chrome":void 0,a=/chromium/i.test(e)?"Chromium":void 0,s=/firefox|fxios/i.test(e)?"Firefox":void 0,o=/webkit|safari|khtml/i.test(e)?"Safari":void 0,u=/opr\//i.test(e)?"Opera":void 0,l=/edg/i.test(e)?"Edge":void 0;this._current=t||i||s||u||l||r||a||o||"Rest"}catch(t){console.error(t)}this.isSafari&&this.detectSafariVersion()}detectSafariVersion(){try{let{userAgent:e}=window.navigator,t=e.match(/Version\/(\d+)/);if(!t)return;let i=t[1],r=parseInt(i,10);if(isNaN(r))return;this._safariVersion=r}catch(e){console.error(e)}}};var zt=()=>/Mobile|mini|Fennec|Android|iP(ad|od|hone)/.test(navigator.appVersion??navigator.userAgent)||navigator?.userAgentData?.mobile;var gr=class{constructor(e){this._highEntropyValues={};this._displayChecker=e}get current(){return this._current}get isIOS(){let e=["iPhone","iPad","iPod"];return this._highEntropyValues.platform==="iOS"||e.includes(this.current)}get isMac(){return this._highEntropyValues.platform==="macOS"||this.current==="Mac"}get isApple(){return this.isIOS||this.isMac}get isIphoneOrOldIpad(){if(!this.isApple||!this._displayChecker.isTouch)return!1;let e=this.current==="iPad"||this._displayChecker.width>700,t=this._iosVersion;return!e||e&&!!t&&t<16}get isAndroid(){return this._highEntropyValues.platform==="Android"||this.current==="Android"}get isMobile(){return this._highEntropyValues.mobile||this._isMobile}get iOSVersion(){return this._iosVersion}detect(){let{userAgent:e}=navigator;try{this._isMobile=zt()}catch(t){console.error(t)}this.detectDevice(e),this.detectHighEntropyValues(),this.isIOS&&this.detectIOSVersion()}async detectHighEntropyValues(){let{userAgentData:e}=navigator;if(e){let t=await e.getHighEntropyValues(["architecture","bitness","brands","mobile","platform","formFactor","model","platformVersion","wow64"]);this._highEntropyValues=t}}detectDevice(e){try{let t=/android/i.test(e)?"Android":void 0,i=/iphone/i.test(e)?"iPhone":void 0,r=/ipad/i.test(e)?"iPad":void 0,a=/ipod/i.test(e)?"iPod":void 0,s=/mac/i.test(e)?"Mac":void 0,o=/webOS|BlackBerry|IEMobile|Opera Mini/i.test(e)?"RestMobile":void 0;this._current=t||i||r||a||o||s||"Desktop"}catch(t){console.error(t)}}detectIOSVersion(){try{if(this._highEntropyValues.platformVersion){let a=this._highEntropyValues.platformVersion.split(".").slice(0,2).join("."),s=parseFloat(a);this._iosVersion=s;return}let{userAgent:e}=window.navigator,t=e.match(/OS (\d+(_\d+)?)/i);if(!t)return;let i=t[1].replace(/_/g,".");if(!i)return;let r=parseFloat(i);if(isNaN(r))return;this._iosVersion=r}catch(e){console.error(e)}}};var Sr=class{get isTouch(){return typeof this._maxTouchPoints=="number"?this._maxTouchPoints>1:"ontouchstart"in window}get maxTouchPoints(){return this._maxTouchPoints}get height(){return this._height}get width(){return this._width}get screenHeight(){return this._screenHeight}get screenWidth(){return this._screenWidth}get pixelRatio(){return this._pixelRatio}get isHDR(){return this._isHdr}get colorDepth(){return this._colorDepth}detect(){let{maxTouchPoints:e}=navigator;try{this._maxTouchPoints=e??0,this._isHdr=!!matchMedia("(dynamic-range: high)")?.matches,this._colorDepth=screen.colorDepth}catch(t){console.error(t)}try{this._pixelRatio=window.devicePixelRatio||1,this._height=screen.height,this._width=screen.width,this._height=screen.height,this._screenHeight=this._height*this._pixelRatio,this._screenWidth=this._width*this._pixelRatio}catch(t){console.error(t)}}};var Le=()=>window.ManagedMediaSource||window.MediaSource,vr=()=>!!(window.ManagedMediaSource&&window.ManagedSourceBuffer?.prototype?.appendBuffer),zs=()=>!!(window.MediaSource&&window.SourceBuffer?.prototype?.appendBuffer),Ks=()=>window.ManagedMediaSource?new ManagedMediaSource:new MediaSource;var ju=document.createElement("video"),Wu='video/mp4; codecs="avc1.42000a,mp4a.40.2"',qu='video/mp4; codecs="hev1.1.6.L93.B0"',Xs='video/webm; codecs="vp09.00.10.08"',Js='video/webm; codecs="av01.0.00M.08"',Gu='audio/mp4; codecs="mp4a.40.2"',Yu='audio/webm; codecs="opus"',Zs,zu=async()=>{if(!window.navigator.mediaCapabilities)return;let n={type:"media-source",video:{contentType:"video/webm",width:1280,height:720,bitrate:1e6,framerate:30}},[e,t]=await Promise.all([window.navigator.mediaCapabilities.decodingInfo({...n,video:{...n.video,contentType:Js}}),window.navigator.mediaCapabilities.decodingInfo({...n,video:{...n.video,contentType:Xs}})]);Zs={DASH_WEBM_AV1:e,DASH_WEBM:t}};zu().catch(n=>{console.log(ju),console.error(n)});var yr=class{constructor(e,t){this._deviceChecker=e,this._browserChecker=t}get protocols(){return this._protocols}get containers(){return this._containers}get codecs(){return this._codecs}get webmDecodingInfo(){return Zs}get supportedCodecs(){return Object.keys(this._codecs).filter(e=>this._codecs[e])}get nativeHlsSupported(){return this._nativeHlsSupported}detect(){this._video=document.createElement("video");try{this._protocols={mms:vr(),mse:zs(),hls:!!(this._video.canPlayType?.("application/x-mpegurl")||this._video.canPlayType?.("vnd.apple.mpegURL")),webrtc:!!window.RTCPeerConnection,ws:!!window.WebSocket},this._containers={mp4:!!this._video.canPlayType?.("video/mp4"),webm:!!this._video.canPlayType?.("video/webm"),cmaf:!0};let e=!!Le()?.isTypeSupported?.(Wu),t=!!Le()?.isTypeSupported?.(qu),i=!!Le()?.isTypeSupported?.(Gu);this._codecs={h264:e,h265:t,vp9:!!Le()?.isTypeSupported?.(Xs),av1:!!Le()?.isTypeSupported?.(Js),aac:i,opus:!!Le()?.isTypeSupported?.(Yu),mpeg:(e||t)&&i},this._nativeHlsSupported=this._protocols.hls&&this._containers.mp4}catch(e){console.error(e)}this.destroyVideoElement()}destroyVideoElement(){if(!this._video)return;if(this._video.pause(),this._video.currentTime=0,this._video.removeAttribute("src"),this._video.src="",this._video.load(),this._video.remove){this._video.remove(),this._video=null;return}this._video.parentNode&&this._video.parentNode.removeChild(this._video);let e=this._video.cloneNode(!1);this._video.parentNode?.replaceChild(e,this._video),this._video=null}};var en="audio/mpeg",Tr=class{supportMp3(){return this._codecs.mp3&&this._containers.mpeg}detect(){this._audio=document.createElement("audio");try{this._containers={mpeg:!!this._audio.canPlayType?.(en)},this._codecs={mp3:!!Le()?.isTypeSupported?.(en)}}catch(e){console.error(e)}this.destroyAudioElement()}destroyAudioElement(){if(!this._audio)return;if(this._audio.pause(),this._audio.currentTime=0,this._audio.removeAttribute("src"),this._audio.src="",this._audio.load(),this._audio.remove){this._audio.remove(),this._audio=null;return}this._audio.parentNode&&this._audio.parentNode.removeChild(this._audio);let e=this._audio.cloneNode(!1);this._audio.parentNode?.replaceChild(e,this._audio),this._audio=null}};import{ValueSubject as Ku}from"@vkontakte/videoplayer-shared/evergreen";var Ta=class{constructor(){this.isInited$=new Ku(!1);this._displayChecker=new Sr,this._deviceChecker=new gr(this._displayChecker),this._browserChecker=new br,this._videoChecker=new yr(this._deviceChecker,this._browserChecker),this._audioChecker=new Tr,this.detect()}get display(){return this._displayChecker}get device(){return this._deviceChecker}get browser(){return this._browserChecker}get video(){return this._videoChecker}get audio(){return this._audioChecker}async detect(){this._displayChecker.detect(),this._deviceChecker.detect(),this._browserChecker.detect(),this._videoChecker.detect(),this._audioChecker.detect(),this.isInited$.next(!0)}},O=new Ta;var be=n=>{let e=w=>fe(n,w).pipe(Ea(void 0)),i=Ia(...["waiting","pause","canplay","play","canplaythrough","playing","seeking","seeked","ended"].map(w=>fe(n,w))).pipe(et(w=>w.type==="ended"?n.readyState<2:n.readyState<3),Xu()),r=Ia(fe(n,"progress"),fe(n,"timeupdate")).pipe(et(()=>Ys(n.buffered,n.currentTime))),a=O.browser.isSafari?Zu({play:e("play").pipe(el()),playing:e("playing")}).pipe(Ea(void 0)):e("playing"),s=fe(n,"volumechange").pipe(et(()=>({muted:n.muted,volume:n.volume}))),o=fe(n,"ratechange").pipe(et(()=>n.playbackRate)),u=fe(n,"error").pipe(Kt(()=>!!(n.error||n.played.length)),et(()=>{let w=n.error;return{id:w?`MediaError#${w.code}`:"HtmlVideoError",category:il.VIDEO_PIPELINE,message:w?w.message:"Error event from HTML video element",thrown:n.error??void 0}})),l=fe(n,"timeupdate").pipe(et(()=>n.currentTime)),d=new Ju,c=.3,p;l.subscribe(w=>{n.loop&&tn(p)&&tn(w)&&p>=n.duration-c&&w<=c&&d.next(p),p=w});let h=e("pause").pipe(Kt(()=>!n.error&&p!==n.duration)),m=fe(n,"enterpictureinpicture"),f=fe(n,"leavepictureinpicture"),b=new rn(Gs(n));m.subscribe(()=>b.next(!0)),f.subscribe(()=>b.next(!1));let T=new rn(ya(n));fe(n,"fullscreenchange").pipe(et(()=>ya(n))).subscribe(T);let I=.1,x=1e3,g=fe(n,"timeupdate").pipe(Kt(w=>n.duration-n.currentTime<I)),V=Ia(g.pipe(Kt(w=>!n.loop)),fe(n,"ended")).pipe(tl(x),Ea(void 0)),A=g.pipe(Kt(w=>n.loop));return{playing$:a,pause$:h,canplay$:e("canplay"),ended$:V,looped$:d,loopExpected$:A,error$:u,seeked$:e("seeked"),seeking$:e("seeking"),progress$:e("progress"),loadStart$:e("loadstart"),loadedMetadata$:e("loadedmetadata"),loadedData$:e("loadeddata"),timeUpdate$:l,durationChange$:fe(n,"durationchange").pipe(et(()=>n.duration)),isBuffering$:i,currentBuffer$:r,volumeState$:s,playbackRateState$:o,inPiP$:b,inFullscreen$:T,enterPip$:m,leavePip$:f}};import{VideoQuality as tt}from"@vkontakte/videoplayer-shared/evergreen";var it=n=>{switch(n){case"mobile":return tt.Q_144P;case"lowest":return tt.Q_240P;case"low":return tt.Q_360P;case"sd":case"medium":return tt.Q_480P;case"hd":case"high":return tt.Q_720P;case"fullhd":case"full":return tt.Q_1080P;case"quadhd":case"quad":return tt.Q_1440P;case"ultrahd":case"ultra":return tt.Q_2160P}};import{isNonNullable as ue,isNullable as ln,now as hn,isHigher as dn,isHigherOrEqual as wa,isInvariantQuality as cn,isLowerOrEqual as Aa,videoSizeToQuality as sl,assertNotEmptyArray as mn,assertNonNullable as nl}from"@vkontakte/videoplayer-shared/evergreen";var xa=!1,Qe={},an=n=>{xa=n},sn=()=>{Qe={}},nn=n=>{n(Qe)},Xt=(n,e)=>{xa&&(Qe.meta=Qe.meta??{},Qe.meta[n]=e)},oe=class{constructor(e){this.name=e}next(e){if(!xa)return;Qe.series=Qe.series??{};let t=Qe.series[this.name]??[];t.push([Date.now(),e]),Qe.series[this.name]=t}};import{isHigher as rl,isHigherOrEqual as xm,isLower as on,isLowerOrEqual as km,isNonNullable as Ir,isNullable as al,videoHeightToQuality as Er}from"@vkontakte/videoplayer-shared/evergreen";function ka({limits:n,highQualityLimit:e,trafficSavingLimit:t}){return!n.max&&n.min===e?"high_quality":!n.min&&n.max===t?"traffic_saving":"unknown"}function Pa({limits:n,highQualityLimit:e,trafficSavingLimit:t}){return!!n&&ka({limits:n,highQualityLimit:e,trafficSavingLimit:t})==="high_quality"}function Jt({limits:n,highestAvailableQuality:e,lowestAvailableQuality:t}){return al(n)||Ir(n.min)&&Ir(n.max)&&on(n.max,n.min)||Ir(n.min)&&e&&rl(n.min,e)||Ir(n.max)&&t&&on(n.max,t)}function un({limits:n,highestAvailableHeight:e,lowestAvailableHeight:t}){return Jt({limits:{max:n?.max?Er(n.max):void 0,min:n?.min?Er(n.min):void 0},highestAvailableQuality:e?Er(e):void 0,lowestAvailableQuality:t?Er(t):void 0})}var ol=new oe("best_bitrate"),fn=(n,e,t)=>(e-t)*Math.pow(2,-10*n)+t;var $a=n=>(e,t)=>n*(Number(e.bitrate)-Number(t.bitrate)),Zt=class{constructor(){this.history={}}recordSelection(e){this.history[e.id]=hn()}recordSwitch(e){this.last=e}clear(){this.last=void 0,this.history={}}},bn='Assertion "ABR Tracks is empty array" failed',xr=(n,e,t,i)=>{let r=[...e].sort($a(1)),a=[...t].sort($a(1)),s=a.filter(u=>ue(u.bitrate)&&ue(n.bitrate)?n.bitrate/u.bitrate>i:!0),o=a.at(Math.round(a.length*r.indexOf(n)/(r.length+1)))??a.at(-1);return o&&s.includes(o)?o:s.length?s.at(-1):a.at(0)},pn=n=>"quality"in n,gn=(n,e,t,i)=>{let r=ue(i?.last?.bitrate)&&ue(t?.bitrate)&&i.last.bitrate<t.bitrate?n.trackCooldownIncreaseQuality:n.trackCooldownDecreaseQuality,a=t&&i&&i.history[t.id]&&hn()-i.history[t.id]<=r&&(!i.last||t.id!==i.last.id);if(t?.id&&i&&!a&&i.recordSelection(t),a&&i?.last){let s=i.last;i?.recordSwitch(s);let o=pn(s)?"video":"audio",u=pn(s)?s.quality:s.bitrate;return e({message:`
|
|
7
7
|
[last ${o} selected] ${u}
|
|
8
8
|
`}),s}return i?.recordSwitch(t),t},ul=(n,e)=>Math.log(e)/Math.log(n),ll=({tuning:n,container:e,limits:t})=>{let i=n.containerSizeFactor;if(n.usePixelRatio&&O.display.pixelRatio){let r=O.display.pixelRatio;if(n.pixelRatioMultiplier)i*=n.pixelRatioMultiplier*(r-1)+1;else{let a=n.pixelRatioLogBase,[s=0,o=0,u=0]=n.pixelRatioLogCoefficients,l=ul(a,s*r+o)+u;Number.isFinite(l)&&(i*=l)}}return Pa({highQualityLimit:n.highQualityLimit,trafficSavingLimit:n.trafficSavingLimit,limits:t})&&(i*=2),{containerSizeLimit:n.limitByContainer&&e&&e.width>0&&e.height>0?{width:e.width*i,height:e.height*i}:void 0,containerSizeFactor:i}},rt=(n,{container:e,estimatedThroughput:t,tuning:i,limits:r,reserve:a=0,forwardBufferHealth:s,playbackRate:o,current:u,history:l,visible:d,droppedVideoMaxQualityLimit:c,stallsVideoMaxQualityLimit:p,stallsPredictedThroughput:h,abrLogger:m})=>{mn(n,bn);let{containerSizeFactor:f,containerSizeLimit:b}=ll({container:e,tuning:i,limits:r}),T=i.considerPlaybackRate&&ue(o)?o:1,C=n.filter(S=>!cn(S.quality)).sort((S,q)=>dn(S.quality,q.quality)?-1:1),I=C.at(-1)?.quality,x=C.at(0)?.quality,g=Jt({limits:r,lowestAvailableQuality:I,highestAvailableQuality:x}),V=T*fn(s??.5,i.bitrateFactorAtEmptyBuffer,i.bitrateFactorAtFullBuffer),A={},R=C.filter(S=>{let q=!0;if(b)if(S.size)q=S.size.width<=b.width&&S.size.height<=b.height;else{let U=b&&sl(b);q=U?Aa(S.quality,U):!0}if(!q)return A[S.quality]="FitsContainer",!1;let Ie=h||t,k=ue(Ie)&&isFinite(Ie)&&ue(S.bitrate)?Ie-a>=S.bitrate*V:!0,N=Pa({highQualityLimit:i.highQualityLimit,trafficSavingLimit:i.trafficSavingLimit,limits:r})&&r?.min===S.quality;if(!k&&!N)return A[S.quality]="FitsThroughput",!1;if(i.lazyQualitySwitch&&ue(i.minBufferToSwitchUp)&&u&&!cn(u.quality)&&(s??0)<i.minBufferToSwitchUp&&dn(S.quality,u.quality))return A[S.quality]="Buffer",!1;if(!!c&&wa(S.quality,c)&&!N)return A[S.quality]="DroppedFramesLimit",!1;if(!!p&&wa(S.quality,p)&&!N)return A[S.quality]="StallsLimit",!1;let ae=g||(ln(r?.max)||Aa(S.quality,r.max))&&(ln(r?.min)||wa(S.quality,r.min)),de=ue(d)&&!d?Aa(S.quality,i.backgroundVideoQualityLimit):!0;return!ae||!de?(A[S.quality]="FitsQualityLimits",!1):!0})[0];R&&R.bitrate&&ol.next(R.bitrate);let P=R??C.at(-1)??n[0],L=l?.last,E=gn(i,m,P,l);return ue(l)&&E.quality!==L?.quality&&m({message:`
|
|
9
9
|
[VIDEO TRACKS ABR]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vkontakte/videoplayer-core",
|
|
3
|
-
"version": "2.0.129-dev.
|
|
3
|
+
"version": "2.0.129-dev.3cb78ab3.0",
|
|
4
4
|
"author": "vk.com",
|
|
5
5
|
"description": "Videoplayer core library based on the vk.com platform",
|
|
6
6
|
"homepage": "https://vk.com",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"**/*.d.ts"
|
|
50
50
|
],
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@vkontakte/videoplayer-shared": "1.0.57-dev.
|
|
52
|
+
"@vkontakte/videoplayer-shared": "1.0.57-dev.743bdaf4.0",
|
|
53
53
|
"hls.js": "~1.4.7"
|
|
54
54
|
}
|
|
55
55
|
}
|