{"version":3,"file":"8377b586954180907041c5f7.js?3.6.14.7428b935c.1723600572441","mappings":"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,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAChE,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAChE,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAChE,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAChE,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAChE,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAChE,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAChE,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAChE,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAChE,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAChE,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAChE,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAChE,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAChE,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAChE,KAAQ,KAAQ,KAAQ,IAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAChE,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAChE,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAChE,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAChE,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAChE,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAChE,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAChE,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAChE,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAChE,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAChE,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAChE,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAChE,KAAQ,KAAQ,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,MAAQ,MAAQ,MAAS,MAAS,MAAS,MAC3D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,KAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAC/D,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,SA6ExC,SAASC,IACT,CAmBA,SAASC,EAAY1lD,EAAQopB,EAAKu8B,GAChC,IAAI3F,EAAQ,aAAe15C,KAAK+3B,UAAUkK,WACtCgI,EAAQ,yBACRI,EAAkB,qBAElBqP,IACFzP,EAAQ,qBACRI,EAAkB,gBAGpB8U,EAAS9lD,KAAKS,MACdA,KAAKgpB,IAAMA,EAIXhpB,KAAKiwC,OAASwU,EAAa7kD,EAAQopB,EAAI7R,MACvC,IAAIquC,EAAS,CACXrV,MAAOA,EACPI,gBAAiBA,EACjB7rB,SAAU,WACVvR,KAAM,EACNC,MAAO,EACP29B,IAAK,EACLC,OAAQ,EACRyU,QAAS,UAGN7F,IACH4F,EAAOE,YAA+B,KAAjB18B,EAAIyC,SAAkB,gBACiB,OAAjBzC,EAAIyC,SAAoB,cACA,cACnE+5B,EAAOG,YAAc,aAEvB3lD,KAAK4lD,YAAYJ,EAAQxlD,KAAKiwC,QAK9BjwC,KAAK69C,IAAMj+C,EAAOE,SAASg/B,cAAc,OACzC0mB,EAAS,CACPK,UAAyB,WAAd78B,EAAI26B,MAAqB,SAAW36B,EAAI26B,MACnDmC,KAAMP,EAAaO,KACnBC,WAAY,WACZrhC,SAAU,YAGPk7B,IACH4F,EAAOQ,UA9IX,SAAuB/V,GACrB,IAEI2L,EAFAqK,EAAY,GACZ9uC,EAAO,GAGX,IAAK84B,IAAWA,EAAOlS,WACrB,MAAO,MAGT,SAASmoB,EAAUD,EAAWvgB,GAC5B,IAAK,IAAIvmC,EAAIumC,EAAK3H,WAAWv+B,OAAS,EAAGL,GAAK,EAAGA,IAC/C8mD,EAAUvhD,KAAKghC,EAAK3H,WAAW5+B,GAEnC,CAEA,SAASgnD,EAAaF,GACpB,IAAKA,IAAcA,EAAUzmD,OAC3B,OAAO,KAGT,IAAIkmC,EAAOugB,EAAUtP,MACjBx/B,EAAOuuB,EAAKhW,aAAegW,EAAKoS,UACpC,GAAI3gC,EAAM,CAGR,IAAI0jC,EAAI1jC,EAAKytB,MAAM,cACnB,OAAIiW,GACFoL,EAAUzmD,OAAS,EACZq7C,EAAE,IAEJ1jC,CACT,CACA,MAAqB,SAAjBuuB,EAAKpsB,QACA6sC,EAAaF,GAElBvgB,EAAK3H,YACPmoB,EAAUD,EAAWvgB,GACdygB,EAAaF,SAFtB,CAIF,CAGA,IADAC,EAAUD,EAAWhW,GACb94B,EAAOgvC,EAAaF,IAC1B,IAAK,IAAI9mD,EAAI,EAAGA,EAAIgY,EAAK3X,OAAQL,IAAK,CACpCy8C,EAAWzkC,EAAKivC,WAAWjnD,GAC3B,IAAK,IAAIsO,EAAI,EAAGA,EAAI23C,EAAe5lD,OAAQiO,IACzC,GAAI23C,EAAe33C,KAAOmuC,EACxB,MAAO,KAGb,CAEF,MAAO,KACT,CAyFuByK,CAAcrmD,KAAKiwC,QACtCuV,EAAOE,YAA+B,KAAjB18B,EAAIyC,SAAkB,gBACiB,OAAjBzC,EAAIyC,SAAoB,cACA,cACnE66B,kBAAqB,aAGvBtmD,KAAK4lD,YAAYJ,GAEjBxlD,KAAK69C,IAAI5mC,YAAYjX,KAAKiwC,QAK1B,IAAIsW,EAAU,EACd,OAAQv9B,EAAI66B,eACZ,IAAK,QACH0C,EAAUv9B,EAAItE,SACd,MACF,IAAK,SACH6hC,EAAUv9B,EAAItE,SAAYsE,EAAI06B,KAAO,EACrC,MACF,IAAK,MACH6C,EAAUv9B,EAAItE,SAAWsE,EAAI06B,KAOV,KAAjB16B,EAAIyC,SACNzrB,KAAK4lD,YAAY,CACfzyC,KAAOnT,KAAKwmD,YAAYD,EAAS,KACjC/oC,MAAOxd,KAAKwmD,YAAYx9B,EAAI06B,KAAM,OAMpC1jD,KAAK4lD,YAAY,CACf7U,IAAK/wC,KAAKwmD,YAAYD,EAAS,KAC/B3oC,OAAQ5d,KAAKwmD,YAAYx9B,EAAI06B,KAAM,OAIvC1jD,KAAKymD,KAAO,SAASjO,GACnBx4C,KAAK4lD,YAAY,CACf7U,IAAK/wC,KAAKwmD,YAAYhO,EAAIzH,IAAK,MAC/BC,OAAQhxC,KAAKwmD,YAAYhO,EAAIxH,OAAQ,MACrC79B,KAAMnT,KAAKwmD,YAAYhO,EAAIrlC,KAAM,MACjCC,MAAOpT,KAAKwmD,YAAYhO,EAAIplC,MAAO,MACnCwK,OAAQ5d,KAAKwmD,YAAYhO,EAAI56B,OAAQ,MACrCJ,MAAOxd,KAAKwmD,YAAYhO,EAAIh7B,MAAO,OAEvC,CACF,CAOA,SAASkpC,EAAY98C,GACnB,IAMI+8C,EAAI/oC,EAAQJ,EAAOuzB,EANnB6O,EAAQ,aAAe15C,KAAK+3B,UAAUkK,WAO1C,GAAIv+B,EAAIi0C,IAAK,CACXjgC,EAAShU,EAAIi0C,IAAI5V,aACjBzqB,EAAQ5T,EAAIi0C,IAAI7V,YAChB+I,EAAMnnC,EAAIi0C,IAAI+I,UAEd,IAAIC,GAASA,EAAQj9C,EAAIi0C,IAAI9f,cAAgB8oB,EAAQA,EAAM,KAC/CA,EAAMC,gBAAkBD,EAAMC,iBAC1Cl9C,EAAMA,EAAIi0C,IAAIlE,wBAKdgN,EAAKE,EAAQrmD,KAAKC,IAAKomD,EAAM,IAAMA,EAAM,GAAGjpC,QAAW,EAAGhU,EAAIgU,OAASipC,EAAMrnD,QAChE,CAEf,CACAQ,KAAKmT,KAAOvJ,EAAIuJ,KAChBnT,KAAKoT,MAAQxJ,EAAIwJ,MACjBpT,KAAK+wC,IAAMnnC,EAAImnC,KAAOA,EACtB/wC,KAAK4d,OAAShU,EAAIgU,QAAUA,EAC5B5d,KAAKgxC,OAASpnC,EAAIonC,QAAWD,GAAOnnC,EAAIgU,QAAUA,GAClD5d,KAAKwd,MAAQ5T,EAAI4T,OAASA,EAC1Bxd,KAAK+mD,gBAAoBllD,IAAP8kD,EAAmBA,EAAK/8C,EAAIm9C,WAE1CnH,IAAU5/C,KAAK+mD,aACjB/mD,KAAK+mD,WAAa,GAEtB,CAqHA,SAASC,EAAsBpnD,EAAQqnD,EAAUC,EAAcC,GAmC7D,IAAIC,EAAc,IAAIV,EAAYO,GAC9Bj+B,EAAMi+B,EAASj+B,IACfq+B,EAlVN,SAAwBr+B,GACtB,GAAwB,iBAAbA,EAAIu6B,OACVv6B,EAAIy6B,aAAgBz6B,EAAIu6B,MAAQ,GAAKv6B,EAAIu6B,MAAQ,KACpD,OAAOv6B,EAAIu6B,KAEb,IAAKv6B,EAAIX,QAAUW,EAAIX,MAAMi/B,gBACxBt+B,EAAIX,MAAMi/B,cAAcC,aAC3B,OAAQ,EAKV,IAHA,IAAIl/B,EAAQW,EAAIX,MACZknB,EAAYlnB,EAAMi/B,cAClBE,EAAQ,EACHroD,EAAI,EAAGA,EAAIowC,EAAU/vC,QAAU+vC,EAAUpwC,KAAOkpB,EAAOlpB,IACpC,YAAtBowC,EAAUpwC,GAAGooB,MACfigC,IAGJ,OAAkB,IAATA,CACX,CAgUgBC,CAAez+B,GACzB0+B,EAAO,GAGX,GAAI1+B,EAAIy6B,YAAa,CACnB,IAAIC,EACJ,OAAQ16B,EAAIyC,UACZ,IAAK,GACHi8B,EAAO,CAAE,KAAM,MACfhE,EAAO,SACP,MACF,IAAK,KACHgE,EAAO,CAAE,KAAM,MACfhE,EAAO,QACP,MACF,IAAK,KACHgE,EAAO,CAAE,KAAM,MACfhE,EAAO,QAIT,IAAIiE,EAAOP,EAAYL,WACnBriC,EAAWijC,EAAOnnD,KAAK25C,MAAMkN,GAC7BO,EAAcV,EAAaxD,GAAQiE,EACnCE,EAAcH,EAAK,GAKnBlnD,KAAKsnD,IAAIpjC,GAAYkjC,IACvBljC,EAAWA,EAAW,GAAK,EAAI,EAC/BA,GAAYlkB,KAAK0kB,KAAK0iC,EAAcD,GAAQA,GAO1CN,EAAU,IACZ3iC,GAA6B,KAAjBsE,EAAIyC,SAAkBy7B,EAAatpC,OAASspC,EAAa1pC,MACrEkqC,EAAOA,EAAKK,WAKdX,EAAYX,KAAKoB,EAAanjC,EAEhC,KAAO,CAEL,IAAIsjC,EAAwBZ,EAAYL,WAAaG,EAAatpC,OAAU,IAE5E,OAAQoL,EAAIw6B,WACZ,IAAK,SACH6D,GAAYW,EAAuB,EACnC,MACF,IAAK,MACHX,GAAWW,EAKb,OAAQh/B,EAAIyC,UACZ,IAAK,GACHw7B,EAASrB,YAAY,CACnB7U,IAAKkW,EAAST,YAAYa,EAAS,OAErC,MACF,IAAK,KACHJ,EAASrB,YAAY,CACnBzyC,KAAM8zC,EAAST,YAAYa,EAAS,OAEtC,MACF,IAAK,KACHJ,EAASrB,YAAY,CACnBxyC,MAAO6zC,EAAST,YAAYa,EAAS,OAKzCK,EAAO,CAAE,KAAM,KAAM,KAAM,MAI3BN,EAAc,IAAIV,EAAYO,EAChC,CAEA,IAAIgB,EApHJ,SAA0B5pD,EAAGqpD,GAK3B,IAJA,IAAIO,EACAC,EAAoB,IAAIxB,EAAYroD,GACpCiiC,EAAa,EAERnhC,EAAI,EAAGA,EAAIuoD,EAAKloD,OAAQL,IAAK,CACpC,KAAOd,EAAE8pD,qBAAqBjB,EAAcQ,EAAKvoD,KACzCd,EAAE+pD,OAAOlB,IAAiB7oD,EAAEgqD,YAAYlB,IAC9C9oD,EAAEooD,KAAKiB,EAAKvoD,IAId,GAAId,EAAE+pD,OAAOlB,GACX,OAAO7oD,EAET,IAAIshD,EAAIthD,EAAEiqD,oBAAoBpB,GAG1B5mB,EAAaqf,IACfsI,EAAe,IAAIvB,EAAYroD,GAC/BiiC,EAAaqf,GAGfthD,EAAI,IAAIqoD,EAAYwB,EACtB,CACA,OAAOD,GAAgBC,CACzB,CA0FmBK,CAAiBnB,EAAaM,GACjDT,EAASR,KAAKwB,EAAaO,kBAAkBtB,GAC/C,CAEA,SAASzS,IAET,CArZA4Q,EAAS9+C,UAAUq/C,YAAc,SAASJ,EAAQ3H,GAEhD,IAAK,IAAIxQ,KADTwQ,EAAMA,GAAO79C,KAAK69C,IACD2H,EACXA,EAAOl/C,eAAe+mC,KACxBwQ,EAAI9/B,MAAMsvB,GAAQmY,EAAOnY,GAG/B,EAEAgY,EAAS9+C,UAAUigD,YAAc,SAASxoC,EAAKyqC,GAC7C,OAAe,IAARzqC,EAAY,EAAIA,EAAMyqC,CAC/B,EA2GAnD,EAAY/+C,UAAYo7C,EAAW0D,EAAS9+C,WAC5C++C,EAAY/+C,UAAUkB,YAAc69C,EA6CpCoB,EAAYngD,UAAUkgD,KAAO,SAASiB,EAAMgB,GAE1C,OADAA,OAAoB7mD,IAAX6mD,EAAuBA,EAAS1oD,KAAK+mD,WACtCW,GACR,IAAK,KACH1nD,KAAKmT,MAAQu1C,EACb1oD,KAAKoT,OAASs1C,EACd,MACF,IAAK,KACH1oD,KAAKmT,MAAQu1C,EACb1oD,KAAKoT,OAASs1C,EACd,MACF,IAAK,KACH1oD,KAAK+wC,KAAO2X,EACZ1oD,KAAKgxC,QAAU0X,EACf,MACF,IAAK,KACH1oD,KAAK+wC,KAAO2X,EACZ1oD,KAAKgxC,QAAU0X,EAGnB,EAGAhC,EAAYngD,UAAUoiD,SAAW,SAASC,GACxC,OAAO5oD,KAAKmT,KAAOy1C,EAAGx1C,OACfpT,KAAKoT,MAAQw1C,EAAGz1C,MAChBnT,KAAK+wC,IAAM6X,EAAG5X,QACdhxC,KAAKgxC,OAAS4X,EAAG7X,GAC1B,EAGA2V,EAAYngD,UAAU8hD,YAAc,SAASQ,GAC3C,IAAK,IAAI1pD,EAAI,EAAGA,EAAI0pD,EAAMrpD,OAAQL,IAChC,GAAIa,KAAK2oD,SAASE,EAAM1pD,IACtB,OAAO,EAGX,OAAO,CACT,EAGAunD,EAAYngD,UAAU6hD,OAAS,SAASU,GACtC,OAAO9oD,KAAK+wC,KAAO+X,EAAU/X,KACtB/wC,KAAKgxC,QAAU8X,EAAU9X,QACzBhxC,KAAKmT,MAAQ21C,EAAU31C,MACvBnT,KAAKoT,OAAS01C,EAAU11C,KACjC,EAMAszC,EAAYngD,UAAU4hD,qBAAuB,SAASW,EAAWpB,GAC/D,OAAQA,GACR,IAAK,KACH,OAAO1nD,KAAKmT,KAAO21C,EAAU31C,KAC/B,IAAK,KACH,OAAOnT,KAAKoT,MAAQ01C,EAAU11C,MAChC,IAAK,KACH,OAAOpT,KAAK+wC,IAAM+X,EAAU/X,IAC9B,IAAK,KACH,OAAO/wC,KAAKgxC,OAAS8X,EAAU9X,OAEnC,EAIA0V,EAAYngD,UAAU+hD,oBAAsB,SAASM,GAInD,OAHQpoD,KAAKC,IAAI,EAAGD,KAAK84B,IAAIt5B,KAAKoT,MAAOw1C,EAAGx1C,OAAS5S,KAAKC,IAAIT,KAAKmT,KAAMy1C,EAAGz1C,OACpE3S,KAAKC,IAAI,EAAGD,KAAK84B,IAAIt5B,KAAKgxC,OAAQ4X,EAAG5X,QAAUxwC,KAAKC,IAAIT,KAAK+wC,IAAK6X,EAAG7X,OAErD/wC,KAAK4d,OAAS5d,KAAKwd,MAC7C,EAMAkpC,EAAYngD,UAAUiiD,kBAAoB,SAASO,GACjD,MAAO,CACLhY,IAAK/wC,KAAK+wC,IAAMgY,EAAUhY,IAC1BC,OAAQ+X,EAAU/X,OAAShxC,KAAKgxC,OAChC79B,KAAMnT,KAAKmT,KAAO41C,EAAU51C,KAC5BC,MAAO21C,EAAU31C,MAAQpT,KAAKoT,MAC9BwK,OAAQ5d,KAAK4d,OACbJ,MAAOxd,KAAKwd,MAEhB,EAIAkpC,EAAYsC,qBAAuB,SAASp/C,GAC1C,IAAIgU,EAAShU,EAAIi0C,IAAMj0C,EAAIi0C,IAAI5V,aAAer+B,EAAI0P,QAAU1P,EAAIq+B,aAAe,EAC3EzqB,EAAQ5T,EAAIi0C,IAAMj0C,EAAIi0C,IAAI7V,YAAcp+B,EAAI0P,QAAU1P,EAAIo+B,YAAc,EACxE+I,EAAMnnC,EAAIi0C,IAAMj0C,EAAIi0C,IAAI+I,UAAYh9C,EAAI0P,QAAU1P,EAAIg9C,UAAY,EAYtE,MARU,CACRzzC,MAHFvJ,EAAMA,EAAIi0C,IAAMj0C,EAAIi0C,IAAIlE,wBACV/vC,EAAI0P,QAAU1P,EAAI+vC,wBAA0B/vC,GAE9CuJ,KACVC,MAAOxJ,EAAIwJ,MACX29B,IAAKnnC,EAAImnC,KAAOA,EAChBnzB,OAAQhU,EAAIgU,QAAUA,EACtBozB,OAAQpnC,EAAIonC,QAAWD,GAAOnnC,EAAIgU,QAAUA,GAC5CJ,MAAO5T,EAAI4T,OAASA,EAGxB,EAyIAi3B,EAAOE,cAAgB,WACrB,MAAO,CACLsU,OAAQ,SAAS73C,GACf,IAAKA,EACH,MAAO,GAET,GAAoB,iBAATA,EACT,MAAM,IAAIhS,MAAM,iCAElB,OAAO8pD,mBAAmBC,mBAAmB/3C,GAC/C,EAEJ,EAEAqjC,EAAOwM,oBAAsB,SAASrhD,EAAQwpD,GAC5C,OAAKxpD,GAAWwpD,EAGT3E,EAAa7kD,EAAQwpD,GAFnB,IAGX,EASA3U,EAAO4U,YAAc,SAASzpD,EAAQ+oB,EAAM2gC,GAC1C,IAAK1pD,IAAW+oB,IAAS2gC,EACvB,OAAO,KAIT,KAAOA,EAAQl2B,YACbk2B,EAAQlwC,YAAYkwC,EAAQl2B,YAG9B,IAAIm2B,EAAgB3pD,EAAOE,SAASg/B,cAAc,OAsBlD,GArBAyqB,EAAcxrC,MAAM2G,SAAW,WAC/B6kC,EAAcxrC,MAAM5K,KAAO,IAC3Bo2C,EAAcxrC,MAAM3K,MAAQ,IAC5Bm2C,EAAcxrC,MAAMgzB,IAAM,IAC1BwY,EAAcxrC,MAAMizB,OAAS,IAC7BuY,EAAcxrC,MAAMyrC,OArBO,OAsB3BF,EAAQryC,YAAYsyC,GAKpB,SAAuB5gC,GACrB,IAAK,IAAIxpB,EAAI,EAAGA,EAAIwpB,EAAKnpB,OAAQL,IAC/B,GAAIwpB,EAAKxpB,GAAG2gD,eAAiBn3B,EAAKxpB,GAAG+wC,aACnC,OAAO,EAGX,OAAO,CACT,CAGKuZ,CAAc9gC,GAAnB,CAOA,IAAIw+B,EAAe,GACfD,EAAeR,EAAYsC,qBAAqBO,GAEhDhE,EAAe,CACjBO,KAFatlD,KAAK25C,MAhDE,IAgDI+M,EAAatpC,OAA6B,KAAO,IAEnEkzB,kBAGR,WAGE,IAFA,IAAImW,EAAUj+B,EAEL7pB,EAAI,EAAGA,EAAIwpB,EAAKnpB,OAAQL,IAC/B6pB,EAAML,EAAKxpB,GAGX8nD,EAAW,IAAI3B,EAAY1lD,EAAQopB,EAAKu8B,GACxCgE,EAActyC,YAAYgwC,EAASpJ,KAGnCmJ,EAAsBpnD,EAAQqnD,EAAUC,EAAcC,GAItDn+B,EAAIknB,aAAe+W,EAASpJ,IAE5BsJ,EAAaziD,KAAKgiD,EAAYsC,qBAAqB/B,GAEtD,CAnBD,EATA,MAJE,IAAK,IAAI9nD,EAAI,EAAGA,EAAIwpB,EAAKnpB,OAAQL,IAC/BoqD,EAActyC,YAAY0R,EAAKxpB,GAAG+wC,aAgCxC,EAEAuE,EAAOC,OAAS,SAAS90C,EAAQ7B,EAAO2rD,GACjCA,IACHA,EAAU3rD,EACVA,EAAQ,CAAC,GAENA,IACHA,EAAQ,CAAC,GAGXiC,KAAKJ,OAASA,EACdI,KAAKjC,MAAQA,EACbiC,KAAK2pD,MAAQ,UACb3pD,KAAK4pD,OAAS,GACd5pD,KAAK0pD,QAAUA,GAAW,IAAIG,YAAY,QAC1C7pD,KAAKyiD,WAAa,EACpB,EAEAhO,EAAOC,OAAOnuC,UAAY,CAGxBujD,mBAAoB,SAAStrD,GAC3B,KAAIA,aAAaqjD,GAGf,MAAMrjD,EAFNwB,KAAK80C,gBAAkB90C,KAAK80C,eAAet2C,EAI/C,EACAsQ,MAAO,SAAUsC,GACf,IAAInR,EAAOD,KAUX,SAAS+pD,IAGP,IAFA,IAAIH,EAAS3pD,EAAK2pD,OACdI,EAAM,EACHA,EAAMJ,EAAOpqD,QAA0B,OAAhBoqD,EAAOI,IAAiC,OAAhBJ,EAAOI,MACzDA,EAEJ,IAAIzG,EAAOqG,EAAO5G,OAAO,EAAGgH,GAS5B,MAPoB,OAAhBJ,EAAOI,MACPA,EAEgB,OAAhBJ,EAAOI,MACPA,EAEJ/pD,EAAK2pD,OAASA,EAAO5G,OAAOgH,GACrBzG,CACT,CArBInyC,IAEFnR,EAAK2pD,QAAU3pD,EAAKypD,QAAQT,OAAO73C,EAAM,CAACyvB,QAAQ,KA8FpD,IACE,IAAI0iB,EACJ,GAAmB,YAAftjD,EAAK0pD,MAAqB,CAE5B,IAAK,UAAUzjD,KAAKjG,EAAK2pD,QACvB,OAAO5pD,KAKT,IAAI66C,GAFJ0I,EAAOwG,KAEMnlB,MAAM,sBACnB,IAAKiW,IAAMA,EAAE,GACX,MAAM,IAAIgH,EAAaA,EAAagB,OAAOkB,cAG7C9jD,EAAK0pD,MAAQ,QACf,CAGA,IADA,IAAIM,GAAuB,EACpBhqD,EAAK2pD,QAAQ,CAElB,IAAK,UAAU1jD,KAAKjG,EAAK2pD,QACvB,OAAO5pD,KAST,OANKiqD,EAGHA,GAAuB,EAFvB1G,EAAOwG,IAKD9pD,EAAK0pD,OACb,IAAK,SAEC,IAAIzjD,KAAKq9C,GA7CjBpB,EA8CkBoB,GA9CE,SAAU13C,EAAGw7B,GAE1B,WADGx7B,GA9DZ,SAAqBm2C,GACnB,IAAIiB,EAAW,IAAIf,EAsCnB,GApCAC,EAAaH,GAAO,SAAUn2C,EAAGw7B,GAC/B,OAAQx7B,GACR,IAAK,KACHo3C,EAASxN,IAAI5pC,EAAGw7B,GAChB,MACF,IAAK,QACH4b,EAASn/B,QAAQjY,EAAGw7B,GACpB,MACF,IAAK,QACH4b,EAASK,QAAQz3C,EAAGw7B,GACpB,MACF,IAAK,eACL,IAAK,iBACH,IAAI6iB,EAAK7iB,EAAEn5B,MAAM,KACjB,GAAkB,IAAdg8C,EAAG1qD,OACL,MAIF,IAAI2qD,EAAS,IAAIjI,EAGjB,GAFAiI,EAAOrmC,QAAQ,IAAKomC,EAAG,IACvBC,EAAOrmC,QAAQ,IAAKomC,EAAG,KAClBC,EAAO99C,IAAI,OAAS89C,EAAO99C,IAAI,KAClC,MAEF42C,EAASxN,IAAI5pC,EAAI,IAAKs+C,EAAO5c,IAAI,MACjC0V,EAASxN,IAAI5pC,EAAI,IAAKs+C,EAAO5c,IAAI,MACjC,MACF,IAAK,SACH0V,EAASE,IAAIt3C,EAAGw7B,EAAG,CAAC,OAGxB,GAAG,IAAK,MAIJ4b,EAAS52C,IAAI,MAAO,CACtB,IAAI62C,EAAS,IAAKjjD,EAAKlC,MAAMshD,WAAap/C,EAAKL,OAAOy/C,WACtD6D,EAAO1lC,MAAQylC,EAAS1V,IAAI,QAAS,KACrC2V,EAAOkH,MAAQnH,EAAS1V,IAAI,QAAS,GACrC2V,EAAOmH,cAAgBpH,EAAS1V,IAAI,gBAAiB,GACrD2V,EAAOoH,cAAgBrH,EAAS1V,IAAI,gBAAiB,KACrD2V,EAAOqH,gBAAkBtH,EAAS1V,IAAI,kBAAmB,GACzD2V,EAAOsH,gBAAkBvH,EAAS1V,IAAI,kBAAmB,KACzD2V,EAAOuH,OAASxH,EAAS1V,IAAI,SAAU,IAEvCttC,EAAKyqD,UAAYzqD,EAAKyqD,SAASxH,GAG/BjjD,EAAKwiD,WAAW/9C,KAAK,CACnB/C,GAAIshD,EAAS1V,IAAI,MACjB2V,OAAQA,GAEZ,CACF,CAQMyH,CAAYtjB,EAGhB,GAAG,KAwCakc,IAEVtjD,EAAK0pD,MAAQ,MAEf,SACF,IAAK,OAEEpG,IACHtjD,EAAK0pD,MAAQ,MAEf,SACF,IAAK,KAEH,GAAI,iBAAiBzjD,KAAKq9C,GAAO,CAC/BtjD,EAAK0pD,MAAQ,OACb,KACF,CAEA,IAAKpG,EACH,SAKF,GAHAtjD,EAAK+oB,IAAM,IAAK/oB,EAAKlC,MAAMqhD,QAAUn/C,EAAKL,OAAOw/C,QAAQ,EAAG,EAAG,IAC/Dn/C,EAAK0pD,MAAQ,OAEgB,IAAzBpG,EAAK9vC,QAAQ,UAAe,CAC9BxT,EAAK+oB,IAAIrnB,GAAK4hD,EACd,QACF,CAGF,IAAK,MAEH,IACEf,EAASe,EAAMtjD,EAAK+oB,IAAK/oB,EAAKwiD,WAChC,CAAE,MAAOjkD,GACPyB,EAAK6pD,mBAAmBtrD,GAExByB,EAAK+oB,IAAM,KACX/oB,EAAK0pD,MAAQ,SACb,QACF,CACA1pD,EAAK0pD,MAAQ,UACb,SACF,IAAK,UACH,IAAIiB,GAAwC,IAAzBrH,EAAK9vC,QAAQ,UAKhC,IAAK8vC,GAAQqH,IAAiBX,GAAuB,GAAO,CAE1DhqD,EAAK40C,OAAS50C,EAAK40C,MAAM50C,EAAK+oB,KAC9B/oB,EAAK+oB,IAAM,KACX/oB,EAAK0pD,MAAQ,KACb,QACF,CACI1pD,EAAK+oB,IAAI7R,OACXlX,EAAK+oB,IAAI7R,MAAQ,MAEnBlX,EAAK+oB,IAAI7R,MAAQosC,EACjB,SACF,IAAK,SAEEA,IACHtjD,EAAK0pD,MAAQ,MAEf,SAEJ,CACF,CAAE,MAAOnrD,GACPyB,EAAK6pD,mBAAmBtrD,GAGL,YAAfyB,EAAK0pD,OAAuB1pD,EAAK+oB,KAAO/oB,EAAK40C,OAC/C50C,EAAK40C,MAAM50C,EAAK+oB,KAElB/oB,EAAK+oB,IAAM,KAGX/oB,EAAK0pD,MAAuB,YAAf1pD,EAAK0pD,MAAsB,YAAc,QACxD,CACA,OAAO3pD,IACT,EACAk1C,MAAO,WACL,IAAIj1C,EAAOD,KACX,IAWE,GATAC,EAAK2pD,QAAU3pD,EAAKypD,QAAQT,UAExBhpD,EAAK+oB,KAAsB,WAAf/oB,EAAK0pD,SACnB1pD,EAAK2pD,QAAU,OACf3pD,EAAK6O,SAKY,YAAf7O,EAAK0pD,MACP,MAAM,IAAI9H,EAAaA,EAAagB,OAAOkB,aAE/C,CAAE,MAAMvlD,GACNyB,EAAK6pD,mBAAmBtrD,EAC1B,CAEA,OADAyB,EAAK80C,SAAW90C,EAAK80C,UACd/0C,IACT,GAGFN,EAAO+0C,OAASA,CAElB,CAr7CA,CAq7CEz0C,KAAOA,KAAKjC,OAED,SAASK,GAAG,IAAIC,EAAED,GAAGA,EAAE+hB,QAAQ,GAAG9hB,EAAE,CAACA,EAAEwsD,YAAY,QAAQ,IAAIvsD,EAAE,WAAWF,EAAE8/C,SAASN,SAAS,WAAW,UAAUv/C,EAAEuC,QAAQu9B,MAAMoE,IAAIjkC,EAAE,uCAAuC,CAAC,CAAnL,CAAqLsB,QAAiBxB,EAA+d,IAAI0sD,MAAjezsD,EAAueuB,OAAretB,EAA4e2/B,UAA1e1/B,EAAof4qD,mBAAlf3qD,EAAqgBgC,KAA9fnC,IAA4B,IAAzBA,EAAE0sD,uBAA4BvsD,EAAEwsD,SAAS,MAAMvsD,EAAEJ,EAAE6/C,SAASx/C,EAAEL,EAAE8hB,SAAS,CAAC,EAAE/hB,EAAEy3B,IAAI,qFAAqFt3B,EAAEE,EAAEwsD,UAAU,UAAU5sD,EAAE6sD,OAAOC,WAAW,IAAI9sD,EAAE6sD,OAAOE,YAAY,WAAW9sD,EAAEkb,UAAUlb,EAAE+/B,cAAc,IAAI3qB,cAAc,SAASnV,EAAEE,EAAEg/C,MAAM,SAASl/C,EAAEE,EAAEwsD,SAASxsD,EAAE4sD,UAAU,qBAAqB7sD,EAAE2mB,MAAM,KAAK3mB,EAAEwsD,UAAU,kCAAkCtsD,EAAEmgD,QAAQ,IAAIngD,EAAEmsD,YAAY","sources":["webpack://mono-repo/./src/js/lib/videojs/video.dev.js"],"sourcesContent":["/**\n * @license\n * Video.js 5.9.2 \n * Copyright Brightcove, Inc. \n * Available under Apache License Version 2.0\n * \n *\n * Includes vtt.js \n * Available under Apache License Version 2.0\n * \n */\n\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.videojs = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o logs the number of milliseconds it took for the deferred function to be invoked\n */\nvar now = nativeNow || function() {\n return new Date().getTime();\n};\n\nmodule.exports = now;\n\n},{\"../internal/getNative\":20}],5:[function(_dereq_,module,exports){\nvar isObject = _dereq_('../lang/isObject'),\n now = _dereq_('../date/now');\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed invocations. Provide an options object to indicate that `func`\n * should be invoked on the leading and/or trailing edge of the `wait` timeout.\n * Subsequent calls to the debounced function return the result of the last\n * `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked\n * on the trailing edge of the timeout only if the the debounced function is\n * invoked more than once during the `wait` timeout.\n *\n * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.leading=false] Specify invoking on the leading\n * edge of the timeout.\n * @param {number} [options.maxWait] The maximum time `func` is allowed to be\n * delayed before it's invoked.\n * @param {boolean} [options.trailing=true] Specify invoking on the trailing\n * edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // avoid costly calculations while the window size is in flux\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // invoke `sendMail` when the click event is fired, debouncing subsequent calls\n * jQuery('#postbox').on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // ensure `batchLog` is invoked once after 1 second of debounced calls\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', _.debounce(batchLog, 250, {\n * 'maxWait': 1000\n * }));\n *\n * // cancel a debounced call\n * var todoChanges = _.debounce(batchLog, 1000);\n * Object.observe(models.todo, todoChanges);\n *\n * Object.observe(models, function(changes) {\n * if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) {\n * todoChanges.cancel();\n * }\n * }, ['delete']);\n *\n * // ...at some point `models.todo` is changed\n * models.todo.completed = true;\n *\n * // ...before 1 second has passed `models.todo` is deleted\n * // which cancels the debounced `todoChanges` call\n * delete models.todo;\n */\nfunction debounce(func, wait, options) {\n var args,\n maxTimeoutId,\n result,\n stamp,\n thisArg,\n timeoutId,\n trailingCall,\n lastCalled = 0,\n maxWait = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = wait < 0 ? 0 : (+wait || 0);\n if (options === true) {\n var leading = true;\n trailing = false;\n } else if (isObject(options)) {\n leading = !!options.leading;\n maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait);\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function cancel() {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n if (maxTimeoutId) {\n clearTimeout(maxTimeoutId);\n }\n lastCalled = 0;\n maxTimeoutId = timeoutId = trailingCall = undefined;\n }\n\n function complete(isCalled, id) {\n if (id) {\n clearTimeout(id);\n }\n maxTimeoutId = timeoutId = trailingCall = undefined;\n if (isCalled) {\n lastCalled = now();\n result = func.apply(thisArg, args);\n if (!timeoutId && !maxTimeoutId) {\n args = thisArg = undefined;\n }\n }\n }\n\n function delayed() {\n var remaining = wait - (now() - stamp);\n if (remaining <= 0 || remaining > wait) {\n complete(trailingCall, maxTimeoutId);\n } else {\n timeoutId = setTimeout(delayed, remaining);\n }\n }\n\n function maxDelayed() {\n complete(trailing, timeoutId);\n }\n\n function debounced() {\n args = arguments;\n stamp = now();\n thisArg = this;\n trailingCall = trailing && (timeoutId || !leading);\n\n if (maxWait === false) {\n var leadingCall = leading && !timeoutId;\n } else {\n if (!maxTimeoutId && !leading) {\n lastCalled = stamp;\n }\n var remaining = maxWait - (stamp - lastCalled),\n isCalled = remaining <= 0 || remaining > maxWait;\n\n if (isCalled) {\n if (maxTimeoutId) {\n maxTimeoutId = clearTimeout(maxTimeoutId);\n }\n lastCalled = stamp;\n result = func.apply(thisArg, args);\n }\n else if (!maxTimeoutId) {\n maxTimeoutId = setTimeout(maxDelayed, remaining);\n }\n }\n if (isCalled && timeoutId) {\n timeoutId = clearTimeout(timeoutId);\n }\n else if (!timeoutId && wait !== maxWait) {\n timeoutId = setTimeout(delayed, wait);\n }\n if (leadingCall) {\n isCalled = true;\n result = func.apply(thisArg, args);\n }\n if (isCalled && !timeoutId && !maxTimeoutId) {\n args = thisArg = undefined;\n }\n return result;\n }\n debounced.cancel = cancel;\n return debounced;\n}\n\nmodule.exports = debounce;\n\n},{\"../date/now\":4,\"../lang/isObject\":33}],6:[function(_dereq_,module,exports){\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as an array.\n *\n * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/Web/JavaScript/Reference/Functions/rest_parameters).\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.restParam(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\nfunction restParam(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n rest = Array(length);\n\n while (++index < length) {\n rest[index] = args[start + index];\n }\n switch (start) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, args[0], rest);\n case 2: return func.call(this, args[0], args[1], rest);\n }\n var otherArgs = Array(start + 1);\n index = -1;\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = rest;\n return func.apply(this, otherArgs);\n };\n}\n\nmodule.exports = restParam;\n\n},{}],7:[function(_dereq_,module,exports){\nvar debounce = _dereq_('./debounce'),\n isObject = _dereq_('../lang/isObject');\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed invocations. Provide an options object to indicate\n * that `func` should be invoked on the leading and/or trailing edge of the\n * `wait` timeout. Subsequent calls to the throttled function return the\n * result of the last `func` call.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked\n * on the trailing edge of the timeout only if the the throttled function is\n * invoked more than once during the `wait` timeout.\n *\n * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.leading=true] Specify invoking on the leading\n * edge of the timeout.\n * @param {boolean} [options.trailing=true] Specify invoking on the trailing\n * edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // avoid excessively updating the position while scrolling\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // invoke `renewToken` when the click event is fired, but not more than once every 5 minutes\n * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, {\n * 'trailing': false\n * }));\n *\n * // cancel a trailing throttled call\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (options === false) {\n leading = false;\n } else if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, { 'leading': leading, 'maxWait': +wait, 'trailing': trailing });\n}\n\nmodule.exports = throttle;\n\n},{\"../lang/isObject\":33,\"./debounce\":5}],8:[function(_dereq_,module,exports){\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction arrayCopy(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = arrayCopy;\n\n},{}],9:[function(_dereq_,module,exports){\n/**\n * A specialized version of `_.forEach` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n\n},{}],10:[function(_dereq_,module,exports){\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property names to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @returns {Object} Returns `object`.\n */\nfunction baseCopy(source, props, object) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n object[key] = source[key];\n }\n return object;\n}\n\nmodule.exports = baseCopy;\n\n},{}],11:[function(_dereq_,module,exports){\nvar createBaseFor = _dereq_('./createBaseFor');\n\n/**\n * The base implementation of `baseForIn` and `baseForOwn` which iterates\n * over `object` properties returned by `keysFunc` invoking `iteratee` for\n * each property. Iteratee functions may exit iteration early by explicitly\n * returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n\n},{\"./createBaseFor\":18}],12:[function(_dereq_,module,exports){\nvar baseFor = _dereq_('./baseFor'),\n keysIn = _dereq_('../object/keysIn');\n\n/**\n * The base implementation of `_.forIn` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForIn(object, iteratee) {\n return baseFor(object, iteratee, keysIn);\n}\n\nmodule.exports = baseForIn;\n\n},{\"../object/keysIn\":39,\"./baseFor\":11}],13:[function(_dereq_,module,exports){\nvar arrayEach = _dereq_('./arrayEach'),\n baseMergeDeep = _dereq_('./baseMergeDeep'),\n isArray = _dereq_('../lang/isArray'),\n isArrayLike = _dereq_('./isArrayLike'),\n isObject = _dereq_('../lang/isObject'),\n isObjectLike = _dereq_('./isObjectLike'),\n isTypedArray = _dereq_('../lang/isTypedArray'),\n keys = _dereq_('../object/keys');\n\n/**\n * The base implementation of `_.merge` without support for argument juggling,\n * multiple sources, and `this` binding `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {Object} Returns `object`.\n */\nfunction baseMerge(object, source, customizer, stackA, stackB) {\n if (!isObject(object)) {\n return object;\n }\n var isSrcArr = isArrayLike(source) && (isArray(source) || isTypedArray(source)),\n props = isSrcArr ? undefined : keys(source);\n\n arrayEach(props || source, function(srcValue, key) {\n if (props) {\n key = srcValue;\n srcValue = source[key];\n }\n if (isObjectLike(srcValue)) {\n stackA || (stackA = []);\n stackB || (stackB = []);\n baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB);\n }\n else {\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n }\n if ((result !== undefined || (isSrcArr && !(key in object))) &&\n (isCommon || (result === result ? (result !== value) : (value === value)))) {\n object[key] = result;\n }\n }\n });\n return object;\n}\n\nmodule.exports = baseMerge;\n\n},{\"../lang/isArray\":30,\"../lang/isObject\":33,\"../lang/isTypedArray\":36,\"../object/keys\":38,\"./arrayEach\":9,\"./baseMergeDeep\":14,\"./isArrayLike\":21,\"./isObjectLike\":26}],14:[function(_dereq_,module,exports){\nvar arrayCopy = _dereq_('./arrayCopy'),\n isArguments = _dereq_('../lang/isArguments'),\n isArray = _dereq_('../lang/isArray'),\n isArrayLike = _dereq_('./isArrayLike'),\n isPlainObject = _dereq_('../lang/isPlainObject'),\n isTypedArray = _dereq_('../lang/isTypedArray'),\n toPlainObject = _dereq_('../lang/toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) {\n var length = stackA.length,\n srcValue = source[key];\n\n while (length--) {\n if (stackA[length] == srcValue) {\n object[key] = stackB[length];\n return;\n }\n }\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n if (isArrayLike(srcValue) && (isArray(srcValue) || isTypedArray(srcValue))) {\n result = isArray(value)\n ? value\n : (isArrayLike(value) ? arrayCopy(value) : []);\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n result = isArguments(value)\n ? toPlainObject(value)\n : (isPlainObject(value) ? value : {});\n }\n else {\n isCommon = false;\n }\n }\n // Add the source value to the stack of traversed objects and associate\n // it with its merged value.\n stackA.push(srcValue);\n stackB.push(result);\n\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB);\n } else if (result === result ? (result !== value) : (value === value)) {\n object[key] = result;\n }\n}\n\nmodule.exports = baseMergeDeep;\n\n},{\"../lang/isArguments\":29,\"../lang/isArray\":30,\"../lang/isPlainObject\":34,\"../lang/isTypedArray\":36,\"../lang/toPlainObject\":37,\"./arrayCopy\":8,\"./isArrayLike\":21}],15:[function(_dereq_,module,exports){\nvar toObject = _dereq_('./toObject');\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : toObject(object)[key];\n };\n}\n\nmodule.exports = baseProperty;\n\n},{\"./toObject\":28}],16:[function(_dereq_,module,exports){\nvar identity = _dereq_('../utility/identity');\n\n/**\n * A specialized version of `baseCallback` which only supports `this` binding\n * and specifying the number of arguments to provide to `func`.\n *\n * @private\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {number} [argCount] The number of arguments to provide to `func`.\n * @returns {Function} Returns the callback.\n */\nfunction bindCallback(func, thisArg, argCount) {\n if (typeof func != 'function') {\n return identity;\n }\n if (thisArg === undefined) {\n return func;\n }\n switch (argCount) {\n case 1: return function(value) {\n return func.call(thisArg, value);\n };\n case 3: return function(value, index, collection) {\n return func.call(thisArg, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(thisArg, accumulator, value, index, collection);\n };\n case 5: return function(value, other, key, object, source) {\n return func.call(thisArg, value, other, key, object, source);\n };\n }\n return function() {\n return func.apply(thisArg, arguments);\n };\n}\n\nmodule.exports = bindCallback;\n\n},{\"../utility/identity\":42}],17:[function(_dereq_,module,exports){\nvar bindCallback = _dereq_('./bindCallback'),\n isIterateeCall = _dereq_('./isIterateeCall'),\n restParam = _dereq_('../function/restParam');\n\n/**\n * Creates a `_.assign`, `_.defaults`, or `_.merge` function.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return restParam(function(object, sources) {\n var index = -1,\n length = object == null ? 0 : sources.length,\n customizer = length > 2 ? sources[length - 2] : undefined,\n guard = length > 2 ? sources[2] : undefined,\n thisArg = length > 1 ? sources[length - 1] : undefined;\n\n if (typeof customizer == 'function') {\n customizer = bindCallback(customizer, thisArg, 5);\n length -= 2;\n } else {\n customizer = typeof thisArg == 'function' ? thisArg : undefined;\n length -= (customizer ? 1 : 0);\n }\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n\n},{\"../function/restParam\":6,\"./bindCallback\":16,\"./isIterateeCall\":24}],18:[function(_dereq_,module,exports){\nvar toObject = _dereq_('./toObject');\n\n/**\n * Creates a base function for `_.forIn` or `_.forInRight`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var iterable = toObject(object),\n props = keysFunc(object),\n length = props.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length)) {\n var key = props[index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n\n},{\"./toObject\":28}],19:[function(_dereq_,module,exports){\nvar baseProperty = _dereq_('./baseProperty');\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\n * that affects Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\nmodule.exports = getLength;\n\n},{\"./baseProperty\":15}],20:[function(_dereq_,module,exports){\nvar isNative = _dereq_('../lang/isNative');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = object == null ? undefined : object[key];\n return isNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n\n},{\"../lang/isNative\":32}],21:[function(_dereq_,module,exports){\nvar getLength = _dereq_('./getLength'),\n isLength = _dereq_('./isLength');\n\n/**\n * Checks if `value` is array-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value));\n}\n\nmodule.exports = isArrayLike;\n\n},{\"./getLength\":19,\"./isLength\":25}],22:[function(_dereq_,module,exports){\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nvar isHostObject = (function() {\n try {\n Object({ 'toString': 0 } + '');\n } catch(e) {\n return function() { return false; };\n }\n return function(value) {\n // IE < 9 presents many host objects as `Object` objects that can coerce\n // to strings despite having improperly defined `toString` methods.\n return typeof value.toString != 'function' && typeof (value + '') == 'string';\n };\n}());\n\nmodule.exports = isHostObject;\n\n},{}],23:[function(_dereq_,module,exports){\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^\\d+$/;\n\n/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return value > -1 && value % 1 == 0 && value < length;\n}\n\nmodule.exports = isIndex;\n\n},{}],24:[function(_dereq_,module,exports){\nvar isArrayLike = _dereq_('./isArrayLike'),\n isIndex = _dereq_('./isIndex'),\n isObject = _dereq_('../lang/isObject');\n\n/**\n * Checks if the provided arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)) {\n var other = object[index];\n return value === value ? (value === other) : (other !== other);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n\n},{\"../lang/isObject\":33,\"./isArrayLike\":21,\"./isIndex\":23}],25:[function(_dereq_,module,exports){\n/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n\n},{}],26:[function(_dereq_,module,exports){\n/**\n * Checks if `value` is object-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n\n},{}],27:[function(_dereq_,module,exports){\nvar isArguments = _dereq_('../lang/isArguments'),\n isArray = _dereq_('../lang/isArray'),\n isIndex = _dereq_('./isIndex'),\n isLength = _dereq_('./isLength'),\n isString = _dereq_('../lang/isString'),\n keysIn = _dereq_('../object/keysIn');\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A fallback implementation of `Object.keys` which creates an array of the\n * own enumerable property names of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction shimKeys(object) {\n var props = keysIn(object),\n propsLength = props.length,\n length = propsLength && object.length;\n\n var allowIndexes = !!length && isLength(length) &&\n (isArray(object) || isArguments(object) || isString(object));\n\n var index = -1,\n result = [];\n\n while (++index < propsLength) {\n var key = props[index];\n if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = shimKeys;\n\n},{\"../lang/isArguments\":29,\"../lang/isArray\":30,\"../lang/isString\":35,\"../object/keysIn\":39,\"./isIndex\":23,\"./isLength\":25}],28:[function(_dereq_,module,exports){\nvar isObject = _dereq_('../lang/isObject'),\n isString = _dereq_('../lang/isString'),\n support = _dereq_('../support');\n\n/**\n * Converts `value` to an object if it's not one.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {Object} Returns the object.\n */\nfunction toObject(value) {\n if (support.unindexedChars && isString(value)) {\n var index = -1,\n length = value.length,\n result = Object(value);\n\n while (++index < length) {\n result[index] = value.charAt(index);\n }\n return result;\n }\n return isObject(value) ? value : Object(value);\n}\n\nmodule.exports = toObject;\n\n},{\"../lang/isObject\":33,\"../lang/isString\":35,\"../support\":41}],29:[function(_dereq_,module,exports){\nvar isArrayLike = _dereq_('../internal/isArrayLike'),\n isObjectLike = _dereq_('../internal/isObjectLike');\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Native method references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is classified as an `arguments` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n return isObjectLike(value) && isArrayLike(value) &&\n hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n}\n\nmodule.exports = isArguments;\n\n},{\"../internal/isArrayLike\":21,\"../internal/isObjectLike\":26}],30:[function(_dereq_,module,exports){\nvar getNative = _dereq_('../internal/getNative'),\n isLength = _dereq_('../internal/isLength'),\n isObjectLike = _dereq_('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeIsArray = getNative(Array, 'isArray');\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(function() { return arguments; }());\n * // => false\n */\nvar isArray = nativeIsArray || function(value) {\n return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;\n};\n\nmodule.exports = isArray;\n\n},{\"../internal/getNative\":20,\"../internal/isLength\":25,\"../internal/isObjectLike\":26}],31:[function(_dereq_,module,exports){\nvar isObject = _dereq_('./isObject');\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in older versions of Chrome and Safari which return 'function' for regexes\n // and Safari 8 which returns 'object' for typed array constructors.\n return isObject(value) && objToString.call(value) == funcTag;\n}\n\nmodule.exports = isFunction;\n\n},{\"./isObject\":33}],32:[function(_dereq_,module,exports){\nvar isFunction = _dereq_('./isFunction'),\n isHostObject = _dereq_('../internal/isHostObject'),\n isObjectLike = _dereq_('../internal/isObjectLike');\n\n/** Used to detect host constructors (Safari > 5). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar fnToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n fnToString.call(hasOwnProperty).replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (value == null) {\n return false;\n }\n if (isFunction(value)) {\n return reIsNative.test(fnToString.call(value));\n }\n return isObjectLike(value) && (isHostObject(value) ? reIsNative : reIsHostCtor).test(value);\n}\n\nmodule.exports = isNative;\n\n},{\"../internal/isHostObject\":22,\"../internal/isObjectLike\":26,\"./isFunction\":31}],33:[function(_dereq_,module,exports){\n/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n\n},{}],34:[function(_dereq_,module,exports){\nvar baseForIn = _dereq_('../internal/baseForIn'),\n isArguments = _dereq_('./isArguments'),\n isHostObject = _dereq_('../internal/isHostObject'),\n isObjectLike = _dereq_('../internal/isObjectLike'),\n support = _dereq_('../support');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * **Note:** This method assumes objects created by the `Object` constructor\n * have no inherited enumerable properties.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n var Ctor;\n\n // Exit early for non `Object` objects.\n if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isHostObject(value) && !isArguments(value)) ||\n (!hasOwnProperty.call(value, 'constructor') && (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor)))) {\n return false;\n }\n // IE < 9 iterates inherited properties before own properties. If the first\n // iterated property is an object's own property then there are no inherited\n // enumerable properties.\n var result;\n if (support.ownLast) {\n baseForIn(value, function(subValue, key, object) {\n result = hasOwnProperty.call(object, key);\n return false;\n });\n return result !== false;\n }\n // In most environments an object's own properties are iterated before\n // its inherited properties. If the last iterated property is an object's\n // own property then there are no inherited enumerable properties.\n baseForIn(value, function(subValue, key) {\n result = key;\n });\n return result === undefined || hasOwnProperty.call(value, result);\n}\n\nmodule.exports = isPlainObject;\n\n},{\"../internal/baseForIn\":12,\"../internal/isHostObject\":22,\"../internal/isObjectLike\":26,\"../support\":41,\"./isArguments\":29}],35:[function(_dereq_,module,exports){\nvar isObjectLike = _dereq_('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n\n},{\"../internal/isObjectLike\":26}],36:[function(_dereq_,module,exports){\nvar isLength = _dereq_('../internal/isLength'),\n isObjectLike = _dereq_('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dateTag] = typedArrayTags[errorTag] =\ntypedArrayTags[funcTag] = typedArrayTags[mapTag] =\ntypedArrayTags[numberTag] = typedArrayTags[objectTag] =\ntypedArrayTags[regexpTag] = typedArrayTags[setTag] =\ntypedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nfunction isTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)];\n}\n\nmodule.exports = isTypedArray;\n\n},{\"../internal/isLength\":25,\"../internal/isObjectLike\":26}],37:[function(_dereq_,module,exports){\nvar baseCopy = _dereq_('../internal/baseCopy'),\n keysIn = _dereq_('../object/keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable\n * properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return baseCopy(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n\n},{\"../internal/baseCopy\":10,\"../object/keysIn\":39}],38:[function(_dereq_,module,exports){\nvar getNative = _dereq_('../internal/getNative'),\n isArrayLike = _dereq_('../internal/isArrayLike'),\n isObject = _dereq_('../lang/isObject'),\n shimKeys = _dereq_('../internal/shimKeys'),\n support = _dereq_('../support');\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = getNative(Object, 'keys');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nvar keys = !nativeKeys ? shimKeys : function(object) {\n var Ctor = object == null ? undefined : object.constructor;\n if ((typeof Ctor == 'function' && Ctor.prototype === object) ||\n (typeof object == 'function' ? support.enumPrototypes : isArrayLike(object))) {\n return shimKeys(object);\n }\n return isObject(object) ? nativeKeys(object) : [];\n};\n\nmodule.exports = keys;\n\n},{\"../internal/getNative\":20,\"../internal/isArrayLike\":21,\"../internal/shimKeys\":27,\"../lang/isObject\":33,\"../support\":41}],39:[function(_dereq_,module,exports){\nvar arrayEach = _dereq_('../internal/arrayEach'),\n isArguments = _dereq_('../lang/isArguments'),\n isArray = _dereq_('../lang/isArray'),\n isFunction = _dereq_('../lang/isFunction'),\n isIndex = _dereq_('../internal/isIndex'),\n isLength = _dereq_('../internal/isLength'),\n isObject = _dereq_('../lang/isObject'),\n isString = _dereq_('../lang/isString'),\n support = _dereq_('../support');\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n stringTag = '[object String]';\n\n/** Used to fix the JScript `[[DontEnum]]` bug. */\nvar shadowProps = [\n 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable',\n 'toLocaleString', 'toString', 'valueOf'\n];\n\n/** Used for native method references. */\nvar errorProto = Error.prototype,\n objectProto = Object.prototype,\n stringProto = String.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Used to avoid iterating over non-enumerable properties in IE < 9. */\nvar nonEnumProps = {};\nnonEnumProps[arrayTag] = nonEnumProps[dateTag] = nonEnumProps[numberTag] = { 'constructor': true, 'toLocaleString': true, 'toString': true, 'valueOf': true };\nnonEnumProps[boolTag] = nonEnumProps[stringTag] = { 'constructor': true, 'toString': true, 'valueOf': true };\nnonEnumProps[errorTag] = nonEnumProps[funcTag] = nonEnumProps[regexpTag] = { 'constructor': true, 'toString': true };\nnonEnumProps[objectTag] = { 'constructor': true };\n\narrayEach(shadowProps, function(key) {\n for (var tag in nonEnumProps) {\n if (hasOwnProperty.call(nonEnumProps, tag)) {\n var props = nonEnumProps[tag];\n props[key] = hasOwnProperty.call(props, key);\n }\n }\n});\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n if (object == null) {\n return [];\n }\n if (!isObject(object)) {\n object = Object(object);\n }\n var length = object.length;\n\n length = (length && isLength(length) &&\n (isArray(object) || isArguments(object) || isString(object)) && length) || 0;\n\n var Ctor = object.constructor,\n index = -1,\n proto = (isFunction(Ctor) && Ctor.prototype) || objectProto,\n isProto = proto === object,\n result = Array(length),\n skipIndexes = length > 0,\n skipErrorProps = support.enumErrorProps && (object === errorProto || object instanceof Error),\n skipProto = support.enumPrototypes && isFunction(object);\n\n while (++index < length) {\n result[index] = (index + '');\n }\n // lodash skips the `constructor` property when it infers it's iterating\n // over a `prototype` object because IE < 9 can't set the `[[Enumerable]]`\n // attribute of an existing property and the `constructor` property of a\n // prototype defaults to non-enumerable.\n for (var key in object) {\n if (!(skipProto && key == 'prototype') &&\n !(skipErrorProps && (key == 'message' || key == 'name')) &&\n !(skipIndexes && isIndex(key, length)) &&\n !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n if (support.nonEnumShadows && object !== objectProto) {\n var tag = object === stringProto ? stringTag : (object === errorProto ? errorTag : objToString.call(object)),\n nonEnums = nonEnumProps[tag] || nonEnumProps[objectTag];\n\n if (tag == objectTag) {\n proto = objectProto;\n }\n length = shadowProps.length;\n while (length--) {\n key = shadowProps[length];\n var nonEnum = nonEnums[key];\n if (!(isProto && nonEnum) &&\n (nonEnum ? hasOwnProperty.call(object, key) : object[key] !== proto[key])) {\n result.push(key);\n }\n }\n }\n return result;\n}\n\nmodule.exports = keysIn;\n\n},{\"../internal/arrayEach\":9,\"../internal/isIndex\":23,\"../internal/isLength\":25,\"../lang/isArguments\":29,\"../lang/isArray\":30,\"../lang/isFunction\":31,\"../lang/isObject\":33,\"../lang/isString\":35,\"../support\":41}],40:[function(_dereq_,module,exports){\nvar baseMerge = _dereq_('../internal/baseMerge'),\n createAssigner = _dereq_('../internal/createAssigner');\n\n/**\n * Recursively merges own enumerable properties of the source object(s), that\n * don't resolve to `undefined` into the destination object. Subsequent sources\n * overwrite property assignments of previous sources. If `customizer` is\n * provided it's invoked to produce the merged values of the destination and\n * source properties. If `customizer` returns `undefined` merging is handled\n * by the method instead. The `customizer` is bound to `thisArg` and invoked\n * with five arguments: (objectValue, sourceValue, key, object, source).\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var users = {\n * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }]\n * };\n *\n * var ages = {\n * 'data': [{ 'age': 36 }, { 'age': 40 }]\n * };\n *\n * _.merge(users, ages);\n * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }\n *\n * // using a customizer callback\n * var object = {\n * 'fruits': ['apple'],\n * 'vegetables': ['beet']\n * };\n *\n * var other = {\n * 'fruits': ['banana'],\n * 'vegetables': ['carrot']\n * };\n *\n * _.merge(object, other, function(a, b) {\n * if (_.isArray(a)) {\n * return a.concat(b);\n * }\n * });\n * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }\n */\nvar merge = createAssigner(baseMerge);\n\nmodule.exports = merge;\n\n},{\"../internal/baseMerge\":13,\"../internal/createAssigner\":17}],41:[function(_dereq_,module,exports){\n/** Used for native method references. */\nvar arrayProto = Array.prototype,\n errorProto = Error.prototype,\n objectProto = Object.prototype;\n\n/** Native method references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/**\n * An object environment feature flags.\n *\n * @static\n * @memberOf _\n * @type Object\n */\nvar support = {};\n\n(function(x) {\n var Ctor = function() { this.x = x; },\n object = { '0': x, 'length': x },\n props = [];\n\n Ctor.prototype = { 'valueOf': x, 'y': x };\n for (var key in new Ctor) { props.push(key); }\n\n /**\n * Detect if `name` or `message` properties of `Error.prototype` are\n * enumerable by default (IE < 9, Safari < 5.1).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.enumErrorProps = propertyIsEnumerable.call(errorProto, 'message') ||\n propertyIsEnumerable.call(errorProto, 'name');\n\n /**\n * Detect if `prototype` properties are enumerable by default.\n *\n * Firefox < 3.6, Opera > 9.50 - Opera < 11.60, and Safari < 5.1\n * (if the prototype or a property on the prototype has been set)\n * incorrectly set the `[[Enumerable]]` value of a function's `prototype`\n * property to `true`.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.enumPrototypes = propertyIsEnumerable.call(Ctor, 'prototype');\n\n /**\n * Detect if properties shadowing those on `Object.prototype` are non-enumerable.\n *\n * In IE < 9 an object's own properties, shadowing non-enumerable ones,\n * are made non-enumerable as well (a.k.a the JScript `[[DontEnum]]` bug).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.nonEnumShadows = !/valueOf/.test(props);\n\n /**\n * Detect if own properties are iterated after inherited properties (IE < 9).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.ownLast = props[0] != 'x';\n\n /**\n * Detect if `Array#shift` and `Array#splice` augment array-like objects\n * correctly.\n *\n * Firefox < 10, compatibility modes of IE 8, and IE < 9 have buggy Array\n * `shift()` and `splice()` functions that fail to remove the last element,\n * `value[0]`, of array-like objects even though the \"length\" property is\n * set to `0`. The `shift()` method is buggy in compatibility modes of IE 8,\n * while `splice()` is buggy regardless of mode in IE < 9.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.spliceObjects = (splice.call(object, 0, 1), !object[0]);\n\n /**\n * Detect lack of support for accessing string characters by index.\n *\n * IE < 8 can't access characters by index. IE 8 can only access characters\n * by index on string literals, not string objects.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.unindexedChars = ('x'[0] + Object('x')[0]) != 'xx';\n}(1, 0));\n\nmodule.exports = support;\n\n},{}],42:[function(_dereq_,module,exports){\n/**\n * This method returns the first argument provided to it.\n *\n * @static\n * @memberOf _\n * @category Utility\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'user': 'fred' };\n *\n * _.identity(object) === object;\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n\n},{}],43:[function(_dereq_,module,exports){\n'use strict';\n\nvar keys = _dereq_('object-keys');\n\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tif (typeof sym === 'string') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(Object(sym) instanceof Symbol)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; }\n\tif (keys(obj).length !== 0) { return false; }\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n\n},{\"object-keys\":50}],44:[function(_dereq_,module,exports){\n'use strict';\n\n// modified from https://github.com/es-shims/es6-shim\nvar keys = _dereq_('object-keys');\nvar bind = _dereq_('function-bind');\nvar canBeObject = function (obj) {\n\treturn typeof obj !== 'undefined' && obj !== null;\n};\nvar hasSymbols = _dereq_('./hasSymbols')();\nvar toObject = Object;\nvar push = bind.call(Function.call, Array.prototype.push);\nvar propIsEnumerable = bind.call(Function.call, Object.prototype.propertyIsEnumerable);\n\nmodule.exports = function assign(target, source1) {\n\tif (!canBeObject(target)) { throw new TypeError('target must be an object'); }\n\tvar objTarget = toObject(target);\n\tvar s, source, i, props, syms, value, key;\n\tfor (s = 1; s < arguments.length; ++s) {\n\t\tsource = toObject(arguments[s]);\n\t\tprops = keys(source);\n\t\tif (hasSymbols && Object.getOwnPropertySymbols) {\n\t\t\tsyms = Object.getOwnPropertySymbols(source);\n\t\t\tfor (i = 0; i < syms.length; ++i) {\n\t\t\t\tkey = syms[i];\n\t\t\t\tif (propIsEnumerable(source, key)) {\n\t\t\t\t\tpush(props, key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (i = 0; i < props.length; ++i) {\n\t\t\tkey = props[i];\n\t\t\tvalue = source[key];\n\t\t\tif (propIsEnumerable(source, key)) {\n\t\t\t\tobjTarget[key] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn objTarget;\n};\n\n},{\"./hasSymbols\":43,\"function-bind\":49,\"object-keys\":50}],45:[function(_dereq_,module,exports){\n'use strict';\n\nvar defineProperties = _dereq_('define-properties');\n\nvar implementation = _dereq_('./implementation');\nvar getPolyfill = _dereq_('./polyfill');\nvar shim = _dereq_('./shim');\n\ndefineProperties(implementation, {\n\timplementation: implementation,\n\tgetPolyfill: getPolyfill,\n\tshim: shim\n});\n\nmodule.exports = implementation;\n\n},{\"./implementation\":44,\"./polyfill\":52,\"./shim\":53,\"define-properties\":46}],46:[function(_dereq_,module,exports){\n'use strict';\n\nvar keys = _dereq_('object-keys');\nvar foreach = _dereq_('foreach');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol';\n\nvar toStr = Object.prototype.toString;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\tObject.defineProperty(obj, 'x', { enumerable: false, value: obj });\n /* eslint-disable no-unused-vars, no-restricted-syntax */\n for (var _ in obj) { return false; }\n /* eslint-enable no-unused-vars, no-restricted-syntax */\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = Object.defineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\tObject.defineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = props.concat(Object.getOwnPropertySymbols(map));\n\t}\n\tforeach(props, function (name) {\n\t\tdefineProperty(object, name, map[name], predicates[name]);\n\t});\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n\n},{\"foreach\":47,\"object-keys\":50}],47:[function(_dereq_,module,exports){\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n if (toString.call(fn) !== '[object Function]') {\n throw new TypeError('iterator must be a function');\n }\n var l = obj.length;\n if (l === +l) {\n for (var i = 0; i < l; i++) {\n fn.call(ctx, obj[i], i, obj);\n }\n } else {\n for (var k in obj) {\n if (hasOwn.call(obj, k)) {\n fn.call(ctx, obj[k], k, obj);\n }\n }\n }\n};\n\n\n},{}],48:[function(_dereq_,module,exports){\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n\n},{}],49:[function(_dereq_,module,exports){\nvar implementation = _dereq_('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n\n},{\"./implementation\":48}],50:[function(_dereq_,module,exports){\n'use strict';\n\n// modified from https://github.com/es-shims/es5-shim\nvar has = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar slice = Array.prototype.slice;\nvar isArgs = _dereq_('./isArguments');\nvar hasDontEnumBug = !({ toString: null }).propertyIsEnumerable('toString');\nvar hasProtoEnumBug = function () {}.propertyIsEnumerable('prototype');\nvar dontEnums = [\n\t'toString',\n\t'toLocaleString',\n\t'valueOf',\n\t'hasOwnProperty',\n\t'isPrototypeOf',\n\t'propertyIsEnumerable',\n\t'constructor'\n];\nvar equalsConstructorPrototype = function (o) {\n\tvar ctor = o.constructor;\n\treturn ctor && ctor.prototype === o;\n};\nvar blacklistedKeys = {\n\t$console: true,\n\t$frame: true,\n\t$frameElement: true,\n\t$frames: true,\n\t$parent: true,\n\t$self: true,\n\t$webkitIndexedDB: true,\n\t$webkitStorageInfo: true,\n\t$window: true\n};\nvar hasAutomationEqualityBug = (function () {\n\t/* global window */\n\tif (typeof window === 'undefined') { return false; }\n\tfor (var k in window) {\n\t\ttry {\n\t\t\tif (!blacklistedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\ttry {\n\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}());\nvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t/* global window */\n\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\treturn equalsConstructorPrototype(o);\n\t}\n\ttry {\n\t\treturn equalsConstructorPrototype(o);\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar keysShim = function keys(object) {\n\tvar isObject = object !== null && typeof object === 'object';\n\tvar isFunction = toStr.call(object) === '[object Function]';\n\tvar isArguments = isArgs(object);\n\tvar isString = isObject && toStr.call(object) === '[object String]';\n\tvar theKeys = [];\n\n\tif (!isObject && !isFunction && !isArguments) {\n\t\tthrow new TypeError('Object.keys called on a non-object');\n\t}\n\n\tvar skipProto = hasProtoEnumBug && isFunction;\n\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\ttheKeys.push(String(i));\n\t\t}\n\t}\n\n\tif (isArguments && object.length > 0) {\n\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\ttheKeys.push(String(j));\n\t\t}\n\t} else {\n\t\tfor (var name in object) {\n\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\ttheKeys.push(String(name));\n\t\t\t}\n\t\t}\n\t}\n\n\tif (hasDontEnumBug) {\n\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t}\n\t\t}\n\t}\n\treturn theKeys;\n};\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\treturn (Object.keys(arguments) || '').length === 2;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tvar originalKeys = Object.keys;\n\t\t\tObject.keys = function keys(object) {\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t} else {\n\t\t\t\t\treturn originalKeys(object);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n\n},{\"./isArguments\":51}],51:[function(_dereq_,module,exports){\n'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n\n},{}],52:[function(_dereq_,module,exports){\n'use strict';\n\nvar implementation = _dereq_('./implementation');\n\nvar lacksProperEnumerationOrder = function () {\n\tif (!Object.assign) {\n\t\treturn false;\n\t}\n\t// v8, specifically in node 4.x, has a bug with incorrect property enumeration order\n\t// note: this does not detect the bug unless there's 20 characters\n\tvar str = 'abcdefghijklmnopqrst';\n\tvar letters = str.split('');\n\tvar map = {};\n\tfor (var i = 0; i < letters.length; ++i) {\n\t\tmap[letters[i]] = letters[i];\n\t}\n\tvar obj = Object.assign({}, map);\n\tvar actual = '';\n\tfor (var k in obj) {\n\t\tactual += k;\n\t}\n\treturn str !== actual;\n};\n\nvar assignHasPendingExceptions = function () {\n\tif (!Object.assign || !Object.preventExtensions) {\n\t\treturn false;\n\t}\n\t// Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t// which is 72% slower than our shim, and Firefox 40's native implementation.\n\tvar thrower = Object.preventExtensions({ 1: 2 });\n\ttry {\n\t\tObject.assign(thrower, 'xy');\n\t} catch (e) {\n\t\treturn thrower[1] === 'y';\n\t}\n};\n\nmodule.exports = function getPolyfill() {\n\tif (!Object.assign) {\n\t\treturn implementation;\n\t}\n\tif (lacksProperEnumerationOrder()) {\n\t\treturn implementation;\n\t}\n\tif (assignHasPendingExceptions()) {\n\t\treturn implementation;\n\t}\n\treturn Object.assign;\n};\n\n},{\"./implementation\":44}],53:[function(_dereq_,module,exports){\n'use strict';\n\nvar define = _dereq_('define-properties');\nvar getPolyfill = _dereq_('./polyfill');\n\nmodule.exports = function shimAssign() {\n\tvar polyfill = getPolyfill();\n\tdefine(\n\t\tObject,\n\t\t{ assign: polyfill },\n\t\t{ assign: function () { return Object.assign !== polyfill; } }\n\t);\n\treturn polyfill;\n};\n\n},{\"./polyfill\":52,\"define-properties\":46}],54:[function(_dereq_,module,exports){\nmodule.exports = SafeParseTuple\n\nfunction SafeParseTuple(obj, reviver) {\n var json\n var error = null\n\n try {\n json = JSON.parse(obj, reviver)\n } catch (err) {\n error = err\n }\n\n return [error, json]\n}\n\n},{}],55:[function(_dereq_,module,exports){\nfunction clean (s) {\n return s.replace(/\\n\\r?\\s*/g, '')\n}\n\n\nmodule.exports = function tsml (sa) {\n var s = ''\n , i = 0\n\n for (; i < arguments.length; i++)\n s += clean(sa[i]) + (arguments[i + 1] || '')\n\n return s\n}\n},{}],56:[function(_dereq_,module,exports){\n\"use strict\";\nvar window = _dereq_(\"global/window\")\nvar once = _dereq_(\"once\")\nvar isFunction = _dereq_(\"is-function\")\nvar parseHeaders = _dereq_(\"parse-headers\")\nvar xtend = _dereq_(\"xtend\")\n\nmodule.exports = createXHR\ncreateXHR.XMLHttpRequest = window.XMLHttpRequest || noop\ncreateXHR.XDomainRequest = \"withCredentials\" in (new createXHR.XMLHttpRequest()) ? createXHR.XMLHttpRequest : window.XDomainRequest\n\nforEachArray([\"get\", \"put\", \"post\", \"patch\", \"head\", \"delete\"], function(method) {\n createXHR[method === \"delete\" ? \"del\" : method] = function(uri, options, callback) {\n options = initParams(uri, options, callback)\n options.method = method.toUpperCase()\n return _createXHR(options)\n }\n})\n\nfunction forEachArray(array, iterator) {\n for (var i = 0; i < array.length; i++) {\n iterator(array[i])\n }\n}\n\nfunction isEmpty(obj){\n for(var i in obj){\n if(obj.hasOwnProperty(i)) return false\n }\n return true\n}\n\nfunction initParams(uri, options, callback) {\n var params = uri\n\n if (isFunction(options)) {\n callback = options\n if (typeof uri === \"string\") {\n params = {uri:uri}\n }\n } else {\n params = xtend(options, {uri: uri})\n }\n\n params.callback = callback\n return params\n}\n\nfunction createXHR(uri, options, callback) {\n options = initParams(uri, options, callback)\n return _createXHR(options)\n}\n\nfunction _createXHR(options) {\n var callback = options.callback\n if(typeof callback === \"undefined\"){\n throw new Error(\"callback argument missing\")\n }\n callback = once(callback)\n\n function readystatechange() {\n if (xhr.readyState === 4) {\n loadFunc()\n }\n }\n\n function getBody() {\n // Chrome with requestType=blob throws errors arround when even testing access to responseText\n var body = undefined\n\n if (xhr.response) {\n body = xhr.response\n } else if (xhr.responseType === \"text\" || !xhr.responseType) {\n body = xhr.responseText || xhr.responseXML\n }\n\n if (isJson) {\n try {\n body = JSON.parse(body)\n } catch (e) {}\n }\n\n return body\n }\n\n var failureResponse = {\n body: undefined,\n headers: {},\n statusCode: 0,\n method: method,\n url: uri,\n rawRequest: xhr\n }\n\n function errorFunc(evt) {\n clearTimeout(timeoutTimer)\n if(!(evt instanceof Error)){\n evt = new Error(\"\" + (evt || \"Unknown XMLHttpRequest Error\") )\n }\n evt.statusCode = 0\n callback(evt, failureResponse)\n }\n\n // will load the data & process the response in a special response object\n function loadFunc() {\n if (aborted) return\n var status\n clearTimeout(timeoutTimer)\n if(options.useXDR && xhr.status===undefined) {\n //IE8 CORS GET successful response doesn't have a status field, but body is fine\n status = 200\n } else {\n status = (xhr.status === 1223 ? 204 : xhr.status)\n }\n var response = failureResponse\n var err = null\n\n if (status !== 0){\n response = {\n body: getBody(),\n statusCode: status,\n method: method,\n headers: {},\n url: uri,\n rawRequest: xhr\n }\n if(xhr.getAllResponseHeaders){ //remember xhr can in fact be XDR for CORS in IE\n response.headers = parseHeaders(xhr.getAllResponseHeaders())\n }\n } else {\n err = new Error(\"Internal XMLHttpRequest Error\")\n }\n callback(err, response, response.body)\n\n }\n\n var xhr = options.xhr || null\n\n if (!xhr) {\n if (options.cors || options.useXDR) {\n xhr = new createXHR.XDomainRequest()\n }else{\n xhr = new createXHR.XMLHttpRequest()\n }\n }\n\n var key\n var aborted\n var uri = xhr.url = options.uri || options.url\n var method = xhr.method = options.method || \"GET\"\n var body = options.body || options.data || null\n var headers = xhr.headers = options.headers || {}\n var sync = !!options.sync\n var isJson = false\n var timeoutTimer\n\n if (\"json\" in options) {\n isJson = true\n headers[\"accept\"] || headers[\"Accept\"] || (headers[\"Accept\"] = \"application/json\") //Don't override existing accept header declared by user\n if (method !== \"GET\" && method !== \"HEAD\") {\n headers[\"content-type\"] || headers[\"Content-Type\"] || (headers[\"Content-Type\"] = \"application/json\") //Don't override existing accept header declared by user\n body = JSON.stringify(options.json)\n }\n }\n\n xhr.onreadystatechange = readystatechange\n xhr.onload = loadFunc\n xhr.onerror = errorFunc\n // IE9 must have onprogress be set to a unique function.\n xhr.onprogress = function () {\n // IE must die\n }\n xhr.ontimeout = errorFunc\n xhr.open(method, uri, !sync, options.username, options.password)\n //has to be after open\n if(!sync) {\n xhr.withCredentials = !!options.withCredentials\n }\n // Cannot set timeout with sync request\n // not setting timeout on the xhr object, because of old webkits etc. not handling that correctly\n // both npm's request and jquery 1.x use this kind of timeout, so this is being consistent\n if (!sync && options.timeout > 0 ) {\n timeoutTimer = setTimeout(function(){\n aborted=true//IE9 may still call readystatechange\n xhr.abort(\"timeout\")\n var e = new Error(\"XMLHttpRequest timeout\")\n e.code = \"ETIMEDOUT\"\n errorFunc(e)\n }, options.timeout )\n }\n\n if (xhr.setRequestHeader) {\n for(key in headers){\n if(headers.hasOwnProperty(key)){\n xhr.setRequestHeader(key, headers[key])\n }\n }\n } else if (options.headers && !isEmpty(options.headers)) {\n throw new Error(\"Headers cannot be set on an XDomainRequest object\")\n }\n\n if (\"responseType\" in options) {\n xhr.responseType = options.responseType\n }\n\n if (\"beforeSend\" in options &&\n typeof options.beforeSend === \"function\"\n ) {\n options.beforeSend(xhr)\n }\n\n xhr.send(body)\n\n return xhr\n\n\n}\n\nfunction noop() {}\n\n},{\"global/window\":2,\"is-function\":57,\"once\":58,\"parse-headers\":61,\"xtend\":62}],57:[function(_dereq_,module,exports){\nmodule.exports = isFunction\n\nvar toString = Object.prototype.toString\n\nfunction isFunction (fn) {\n var string = toString.call(fn)\n return string === '[object Function]' ||\n (typeof fn === 'function' && string !== '[object RegExp]') ||\n (typeof window !== 'undefined' &&\n // IE8 and below\n (fn === window.setTimeout ||\n fn === window.alert ||\n fn === window.confirm ||\n fn === window.prompt))\n};\n\n},{}],58:[function(_dereq_,module,exports){\nmodule.exports = once\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var called = false\n return function () {\n if (called) return\n called = true\n return fn.apply(this, arguments)\n }\n}\n\n},{}],59:[function(_dereq_,module,exports){\nvar isFunction = _dereq_('is-function')\n\nmodule.exports = forEach\n\nvar toString = Object.prototype.toString\nvar hasOwnProperty = Object.prototype.hasOwnProperty\n\nfunction forEach(list, iterator, context) {\n if (!isFunction(iterator)) {\n throw new TypeError('iterator must be a function')\n }\n\n if (arguments.length < 3) {\n context = this\n }\n \n if (toString.call(list) === '[object Array]')\n forEachArray(list, iterator, context)\n else if (typeof list === 'string')\n forEachString(list, iterator, context)\n else\n forEachObject(list, iterator, context)\n}\n\nfunction forEachArray(array, iterator, context) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n iterator.call(context, array[i], i, array)\n }\n }\n}\n\nfunction forEachString(string, iterator, context) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n iterator.call(context, string.charAt(i), i, string)\n }\n}\n\nfunction forEachObject(object, iterator, context) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n iterator.call(context, object[k], k, object)\n }\n }\n}\n\n},{\"is-function\":57}],60:[function(_dereq_,module,exports){\n\nexports = module.exports = trim;\n\nfunction trim(str){\n return str.replace(/^\\s*|\\s*$/g, '');\n}\n\nexports.left = function(str){\n return str.replace(/^\\s*/, '');\n};\n\nexports.right = function(str){\n return str.replace(/\\s*$/, '');\n};\n\n},{}],61:[function(_dereq_,module,exports){\nvar trim = _dereq_('trim')\n , forEach = _dereq_('for-each')\n , isArray = function(arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n }\n\nmodule.exports = function (headers) {\n if (!headers)\n return {}\n\n var result = {}\n\n forEach(\n trim(headers).split('\\n')\n , function (row) {\n var index = row.indexOf(':')\n , key = trim(row.slice(0, index)).toLowerCase()\n , value = trim(row.slice(index + 1))\n\n if (typeof(result[key]) === 'undefined') {\n result[key] = value\n } else if (isArray(result[key])) {\n result[key].push(value)\n } else {\n result[key] = [ result[key], value ]\n }\n }\n )\n\n return result\n}\n},{\"for-each\":59,\"trim\":60}],62:[function(_dereq_,module,exports){\nmodule.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n\n},{}],63:[function(_dereq_,module,exports){\n/**\n * @file big-play-button.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _buttonJs = _dereq_('./button.js');\n\nvar _buttonJs2 = _interopRequireDefault(_buttonJs);\n\nvar _componentJs = _dereq_('./component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\n/**\n * Initial play button. Shows before the video has played. The hiding of the\n * big play button is done via CSS and player states.\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Button\n * @class BigPlayButton\n */\n\nvar BigPlayButton = (function (_Button) {\n _inherits(BigPlayButton, _Button);\n\n function BigPlayButton(player, options) {\n _classCallCheck(this, BigPlayButton);\n\n _Button.call(this, player, options);\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n\n BigPlayButton.prototype.buildCSSClass = function buildCSSClass() {\n return 'vjs-big-play-button';\n };\n\n /**\n * Handles click for play\n *\n * @method handleClick\n */\n\n BigPlayButton.prototype.handleClick = function handleClick() {\n this.player_.play();\n };\n\n return BigPlayButton;\n})(_buttonJs2['default']);\n\nBigPlayButton.prototype.controlText_ = 'Play Video';\n\n_componentJs2['default'].registerComponent('BigPlayButton', BigPlayButton);\nexports['default'] = BigPlayButton;\nmodule.exports = exports['default'];\n\n},{\"./button.js\":64,\"./component.js\":67}],64:[function(_dereq_,module,exports){\n/**\n * @file button.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _clickableComponentJs = _dereq_('./clickable-component.js');\n\nvar _clickableComponentJs2 = _interopRequireDefault(_clickableComponentJs);\n\nvar _component = _dereq_('./component');\n\nvar _component2 = _interopRequireDefault(_component);\n\nvar _utilsEventsJs = _dereq_('./utils/events.js');\n\nvar Events = _interopRequireWildcard(_utilsEventsJs);\n\nvar _utilsFnJs = _dereq_('./utils/fn.js');\n\nvar Fn = _interopRequireWildcard(_utilsFnJs);\n\nvar _utilsLogJs = _dereq_('./utils/log.js');\n\nvar _utilsLogJs2 = _interopRequireDefault(_utilsLogJs);\n\nvar _globalDocument = _dereq_('global/document');\n\nvar _globalDocument2 = _interopRequireDefault(_globalDocument);\n\nvar _objectAssign = _dereq_('object.assign');\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\n/**\n * Base class for all buttons\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends ClickableComponent\n * @class Button\n */\n\nvar Button = (function (_ClickableComponent) {\n _inherits(Button, _ClickableComponent);\n\n function Button(player, options) {\n _classCallCheck(this, Button);\n\n _ClickableComponent.call(this, player, options);\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} type Element's node type. e.g. 'div'\n * @param {Object=} props An object of properties that should be set on the element\n * @param {Object=} attributes An object of attributes that should be set on the element\n * @return {Element}\n * @method createEl\n */\n\n Button.prototype.createEl = function createEl() {\n var tag = arguments.length <= 0 || arguments[0] === undefined ? 'button' : arguments[0];\n var props = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n var attributes = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];\n\n props = _objectAssign2['default']({\n className: this.buildCSSClass()\n }, props);\n\n if (tag !== 'button') {\n _utilsLogJs2['default'].warn('Creating a Button with an HTML element of ' + tag + ' is deprecated; use ClickableComponent instead.');\n\n // Add properties for clickable element which is not a native HTML button\n props = _objectAssign2['default']({\n tabIndex: 0\n }, props);\n\n // Add ARIA attributes for clickable element which is not a native HTML button\n attributes = _objectAssign2['default']({\n role: 'button'\n }, attributes);\n }\n\n // Add attributes for button element\n attributes = _objectAssign2['default']({\n type: 'button', // Necessary since the default button type is \"submit\"\n 'aria-live': 'polite' // let the screen reader user know that the text of the button may change\n }, attributes);\n\n var el = _component2['default'].prototype.createEl.call(this, tag, props, attributes);\n\n this.createControlTextEl(el);\n\n return el;\n };\n\n /**\n * Adds a child component inside this button\n *\n * @param {String|Component} child The class name or instance of a child to add\n * @param {Object=} options Options, including options to be passed to children of the child.\n * @return {Component} The child component (created by this process if a string was used)\n * @deprecated\n * @method addChild\n */\n\n Button.prototype.addChild = function addChild(child) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var className = this.constructor.name;\n _utilsLogJs2['default'].warn('Adding an actionable (user controllable) child to a Button (' + className + ') is not supported; use a ClickableComponent instead.');\n\n // Avoid the error message generated by ClickableComponent's addChild method\n return _component2['default'].prototype.addChild.call(this, child, options);\n };\n\n /**\n * Handle KeyPress (document level) - Extend with specific functionality for button\n *\n * @method handleKeyPress\n */\n\n Button.prototype.handleKeyPress = function handleKeyPress(event) {\n // Ignore Space (32) or Enter (13) key operation, which is handled by the browser for a button.\n if (event.which === 32 || event.which === 13) {} else {\n _ClickableComponent.prototype.handleKeyPress.call(this, event); // Pass keypress handling up for unsupported keys\n }\n };\n\n return Button;\n})(_clickableComponentJs2['default']);\n\n_component2['default'].registerComponent('Button', Button);\nexports['default'] = Button;\nmodule.exports = exports['default'];\n\n},{\"./clickable-component.js\":65,\"./component\":67,\"./utils/events.js\":135,\"./utils/fn.js\":136,\"./utils/log.js\":139,\"global/document\":1,\"object.assign\":45}],65:[function(_dereq_,module,exports){\n/**\n * @file button.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _component = _dereq_('./component');\n\nvar _component2 = _interopRequireDefault(_component);\n\nvar _utilsDomJs = _dereq_('./utils/dom.js');\n\nvar Dom = _interopRequireWildcard(_utilsDomJs);\n\nvar _utilsEventsJs = _dereq_('./utils/events.js');\n\nvar Events = _interopRequireWildcard(_utilsEventsJs);\n\nvar _utilsFnJs = _dereq_('./utils/fn.js');\n\nvar Fn = _interopRequireWildcard(_utilsFnJs);\n\nvar _utilsLogJs = _dereq_('./utils/log.js');\n\nvar _utilsLogJs2 = _interopRequireDefault(_utilsLogJs);\n\nvar _globalDocument = _dereq_('global/document');\n\nvar _globalDocument2 = _interopRequireDefault(_globalDocument);\n\nvar _objectAssign = _dereq_('object.assign');\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\n/**\n * Clickable Component which is clickable or keyboard actionable, but is not a native HTML button\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class ClickableComponent\n */\n\nvar ClickableComponent = (function (_Component) {\n _inherits(ClickableComponent, _Component);\n\n function ClickableComponent(player, options) {\n _classCallCheck(this, ClickableComponent);\n\n _Component.call(this, player, options);\n\n this.emitTapEvents();\n\n this.on('tap', this.handleClick);\n this.on('click', this.handleClick);\n this.on('focus', this.handleFocus);\n this.on('blur', this.handleBlur);\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} type Element's node type. e.g. 'div'\n * @param {Object=} props An object of properties that should be set on the element\n * @param {Object=} attributes An object of attributes that should be set on the element\n * @return {Element}\n * @method createEl\n */\n\n ClickableComponent.prototype.createEl = function createEl() {\n var tag = arguments.length <= 0 || arguments[0] === undefined ? 'div' : arguments[0];\n var props = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n var attributes = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];\n\n props = _objectAssign2['default']({\n className: this.buildCSSClass(),\n tabIndex: 0\n }, props);\n\n if (tag === 'button') {\n _utilsLogJs2['default'].error('Creating a ClickableComponent with an HTML element of ' + tag + ' is not supported; use a Button instead.');\n }\n\n // Add ARIA attributes for clickable element which is not a native HTML button\n attributes = _objectAssign2['default']({\n role: 'button',\n 'aria-live': 'polite' // let the screen reader user know that the text of the element may change\n }, attributes);\n\n var el = _Component.prototype.createEl.call(this, tag, props, attributes);\n\n this.createControlTextEl(el);\n\n return el;\n };\n\n /**\n * create control text\n *\n * @param {Element} el Parent element for the control text\n * @return {Element}\n * @method controlText\n */\n\n ClickableComponent.prototype.createControlTextEl = function createControlTextEl(el) {\n this.controlTextEl_ = Dom.createEl('span', {\n className: 'vjs-control-text'\n });\n\n if (el) {\n el.appendChild(this.controlTextEl_);\n }\n\n this.controlText(this.controlText_);\n\n return this.controlTextEl_;\n };\n\n /**\n * Controls text - both request and localize\n *\n * @param {String} text Text for element\n * @return {String}\n * @method controlText\n */\n\n ClickableComponent.prototype.controlText = function controlText(text) {\n if (!text) return this.controlText_ || 'Need Text';\n\n this.controlText_ = text;\n this.controlTextEl_.innerHTML = this.localize(this.controlText_);\n\n return this;\n };\n\n /**\n * Allows sub components to stack CSS class names\n *\n * @return {String}\n * @method buildCSSClass\n */\n\n ClickableComponent.prototype.buildCSSClass = function buildCSSClass() {\n return 'vjs-control vjs-button ' + _Component.prototype.buildCSSClass.call(this);\n };\n\n /**\n * Adds a child component inside this clickable-component\n *\n * @param {String|Component} child The class name or instance of a child to add\n * @param {Object=} options Options, including options to be passed to children of the child.\n * @return {Component} The child component (created by this process if a string was used)\n * @method addChild\n */\n\n ClickableComponent.prototype.addChild = function addChild(child) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n // TODO: Fix adding an actionable child to a ClickableComponent; currently\n // it will cause issues with assistive technology (e.g. screen readers)\n // which support ARIA, since an element with role=\"button\" cannot have\n // actionable child elements.\n\n //let className = this.constructor.name;\n //log.warn(`Adding a child to a ClickableComponent (${className}) can cause issues with assistive technology which supports ARIA, since an element with role=\"button\" cannot have actionable child elements.`);\n\n return _Component.prototype.addChild.call(this, child, options);\n };\n\n /**\n * Enable the component element\n *\n * @return {Component}\n * @method enable\n */\n\n ClickableComponent.prototype.enable = function enable() {\n this.removeClass('vjs-disabled');\n this.el_.setAttribute('aria-disabled', 'false');\n return this;\n };\n\n /**\n * Disable the component element\n *\n * @return {Component}\n * @method disable\n */\n\n ClickableComponent.prototype.disable = function disable() {\n this.addClass('vjs-disabled');\n this.el_.setAttribute('aria-disabled', 'true');\n return this;\n };\n\n /**\n * Handle Click - Override with specific functionality for component\n *\n * @method handleClick\n */\n\n ClickableComponent.prototype.handleClick = function handleClick() {};\n\n /**\n * Handle Focus - Add keyboard functionality to element\n *\n * @method handleFocus\n */\n\n ClickableComponent.prototype.handleFocus = function handleFocus() {\n Events.on(_globalDocument2['default'], 'keydown', Fn.bind(this, this.handleKeyPress));\n };\n\n /**\n * Handle KeyPress (document level) - Trigger click when Space or Enter key is pressed\n *\n * @method handleKeyPress\n */\n\n ClickableComponent.prototype.handleKeyPress = function handleKeyPress(event) {\n // Support Space (32) or Enter (13) key operation to fire a click event\n if (event.which === 32 || event.which === 13) {\n event.preventDefault();\n this.handleClick(event);\n } else if (_Component.prototype.handleKeyPress) {\n _Component.prototype.handleKeyPress.call(this, event); // Pass keypress handling up for unsupported keys\n }\n };\n\n /**\n * Handle Blur - Remove keyboard triggers\n *\n * @method handleBlur\n */\n\n ClickableComponent.prototype.handleBlur = function handleBlur() {\n Events.off(_globalDocument2['default'], 'keydown', Fn.bind(this, this.handleKeyPress));\n };\n\n return ClickableComponent;\n})(_component2['default']);\n\n_component2['default'].registerComponent('ClickableComponent', ClickableComponent);\nexports['default'] = ClickableComponent;\nmodule.exports = exports['default'];\n\n},{\"./component\":67,\"./utils/dom.js\":134,\"./utils/events.js\":135,\"./utils/fn.js\":136,\"./utils/log.js\":139,\"global/document\":1,\"object.assign\":45}],66:[function(_dereq_,module,exports){\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _button = _dereq_('./button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _component = _dereq_('./component');\n\nvar _component2 = _interopRequireDefault(_component);\n\n/**\n * The `CloseButton` component is a button which fires a \"close\" event\n * when it is activated.\n *\n * @extends Button\n * @class CloseButton\n */\n\nvar CloseButton = (function (_Button) {\n _inherits(CloseButton, _Button);\n\n function CloseButton(player, options) {\n _classCallCheck(this, CloseButton);\n\n _Button.call(this, player, options);\n this.controlText(options && options.controlText || this.localize('Close'));\n }\n\n CloseButton.prototype.buildCSSClass = function buildCSSClass() {\n return 'vjs-close-button ' + _Button.prototype.buildCSSClass.call(this);\n };\n\n CloseButton.prototype.handleClick = function handleClick() {\n this.trigger({ type: 'close', bubbles: false });\n };\n\n return CloseButton;\n})(_button2['default']);\n\n_component2['default'].registerComponent('CloseButton', CloseButton);\nexports['default'] = CloseButton;\nmodule.exports = exports['default'];\n\n},{\"./button\":64,\"./component\":67}],67:[function(_dereq_,module,exports){\n/**\n * @file component.js\n *\n * Player Component - Base class for all UI objects\n */\n\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar _globalWindow = _dereq_('global/window');\n\nvar _globalWindow2 = _interopRequireDefault(_globalWindow);\n\nvar _utilsDomJs = _dereq_('./utils/dom.js');\n\nvar Dom = _interopRequireWildcard(_utilsDomJs);\n\nvar _utilsFnJs = _dereq_('./utils/fn.js');\n\nvar Fn = _interopRequireWildcard(_utilsFnJs);\n\nvar _utilsGuidJs = _dereq_('./utils/guid.js');\n\nvar Guid = _interopRequireWildcard(_utilsGuidJs);\n\nvar _utilsEventsJs = _dereq_('./utils/events.js');\n\nvar Events = _interopRequireWildcard(_utilsEventsJs);\n\nvar _utilsLogJs = _dereq_('./utils/log.js');\n\nvar _utilsLogJs2 = _interopRequireDefault(_utilsLogJs);\n\nvar _utilsToTitleCaseJs = _dereq_('./utils/to-title-case.js');\n\nvar _utilsToTitleCaseJs2 = _interopRequireDefault(_utilsToTitleCaseJs);\n\nvar _objectAssign = _dereq_('object.assign');\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\nvar _utilsMergeOptionsJs = _dereq_('./utils/merge-options.js');\n\nvar _utilsMergeOptionsJs2 = _interopRequireDefault(_utilsMergeOptionsJs);\n\n/**\n * Base UI Component class\n * Components are embeddable UI objects that are represented by both a\n * javascript object and an element in the DOM. They can be children of other\n * components, and can have many children themselves.\n * ```js\n * // adding a button to the player\n * var button = player.addChild('button');\n * button.el(); // -> button element\n * ```\n * ```html\n *
\n *
Button
\n *
\n * ```\n * Components are also event targets.\n * ```js\n * button.on('click', function(){\n * console.log('Button Clicked!');\n * });\n * button.trigger('customevent');\n * ```\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @class Component\n */\n\nvar Component = (function () {\n function Component(player, options, ready) {\n _classCallCheck(this, Component);\n\n // The component might be the player itself and we can't pass `this` to super\n if (!player && this.play) {\n this.player_ = player = this; // eslint-disable-line\n } else {\n this.player_ = player;\n }\n\n // Make a copy of prototype.options_ to protect against overriding defaults\n this.options_ = _utilsMergeOptionsJs2['default']({}, this.options_);\n\n // Updated options with supplied options\n options = this.options_ = _utilsMergeOptionsJs2['default'](this.options_, options);\n\n // Get ID from options or options element if one is supplied\n this.id_ = options.id || options.el && options.el.id;\n\n // If there was no ID from the options, generate one\n if (!this.id_) {\n // Don't require the player ID function in the case of mock players\n var id = player && player.id && player.id() || 'no_player';\n\n this.id_ = id + '_component_' + Guid.newGUID();\n }\n\n this.name_ = options.name || null;\n\n // Create element if one wasn't provided in options\n if (options.el) {\n this.el_ = options.el;\n } else if (options.createEl !== false) {\n this.el_ = this.createEl();\n }\n\n this.children_ = [];\n this.childIndex_ = {};\n this.childNameIndex_ = {};\n\n // Add any child components in options\n if (options.initChildren !== false) {\n this.initChildren();\n }\n\n this.ready(ready);\n // Don't want to trigger ready here or it will before init is actually\n // finished for all children that run this constructor\n\n if (options.reportTouchActivity !== false) {\n this.enableTouchActivity();\n }\n }\n\n /**\n * Dispose of the component and all child components\n *\n * @method dispose\n */\n\n Component.prototype.dispose = function dispose() {\n this.trigger({ type: 'dispose', bubbles: false });\n\n // Dispose all children.\n if (this.children_) {\n for (var i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i].dispose) {\n this.children_[i].dispose();\n }\n }\n }\n\n // Delete child references\n this.children_ = null;\n this.childIndex_ = null;\n this.childNameIndex_ = null;\n\n // Remove all event listeners.\n this.off();\n\n // Remove element from DOM\n if (this.el_.parentNode) {\n this.el_.parentNode.removeChild(this.el_);\n }\n\n Dom.removeElData(this.el_);\n this.el_ = null;\n };\n\n /**\n * Return the component's player\n *\n * @return {Player}\n * @method player\n */\n\n Component.prototype.player = function player() {\n return this.player_;\n };\n\n /**\n * Deep merge of options objects\n * Whenever a property is an object on both options objects\n * the two properties will be merged using mergeOptions.\n *\n * ```js\n * Parent.prototype.options_ = {\n * optionSet: {\n * 'childOne': { 'foo': 'bar', 'asdf': 'fdsa' },\n * 'childTwo': {},\n * 'childThree': {}\n * }\n * }\n * newOptions = {\n * optionSet: {\n * 'childOne': { 'foo': 'baz', 'abc': '123' }\n * 'childTwo': null,\n * 'childFour': {}\n * }\n * }\n *\n * this.options(newOptions);\n * ```\n * RESULT\n * ```js\n * {\n * optionSet: {\n * 'childOne': { 'foo': 'baz', 'asdf': 'fdsa', 'abc': '123' },\n * 'childTwo': null, // Disabled. Won't be initialized.\n * 'childThree': {},\n * 'childFour': {}\n * }\n * }\n * ```\n *\n * @param {Object} obj Object of new option values\n * @return {Object} A NEW object of this.options_ and obj merged\n * @method options\n */\n\n Component.prototype.options = function options(obj) {\n _utilsLogJs2['default'].warn('this.options() has been deprecated and will be moved to the constructor in 6.0');\n\n if (!obj) {\n return this.options_;\n }\n\n this.options_ = _utilsMergeOptionsJs2['default'](this.options_, obj);\n return this.options_;\n };\n\n /**\n * Get the component's DOM element\n * ```js\n * var domEl = myComponent.el();\n * ```\n *\n * @return {Element}\n * @method el\n */\n\n Component.prototype.el = function el() {\n return this.el_;\n };\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} tagName Element's node type. e.g. 'div'\n * @param {Object=} properties An object of properties that should be set\n * @param {Object=} attributes An object of attributes that should be set\n * @return {Element}\n * @method createEl\n */\n\n Component.prototype.createEl = function createEl(tagName, properties, attributes) {\n return Dom.createEl(tagName, properties, attributes);\n };\n\n Component.prototype.localize = function localize(string) {\n var code = this.player_.language && this.player_.language();\n var languages = this.player_.languages && this.player_.languages();\n\n if (!code || !languages) {\n return string;\n }\n\n var language = languages[code];\n\n if (language && language[string]) {\n return language[string];\n }\n\n var primaryCode = code.split('-')[0];\n var primaryLang = languages[primaryCode];\n\n if (primaryLang && primaryLang[string]) {\n return primaryLang[string];\n }\n\n return string;\n };\n\n /**\n * Return the component's DOM element where children are inserted.\n * Will either be the same as el() or a new element defined in createEl().\n *\n * @return {Element}\n * @method contentEl\n */\n\n Component.prototype.contentEl = function contentEl() {\n return this.contentEl_ || this.el_;\n };\n\n /**\n * Get the component's ID\n * ```js\n * var id = myComponent.id();\n * ```\n *\n * @return {String}\n * @method id\n */\n\n Component.prototype.id = function id() {\n return this.id_;\n };\n\n /**\n * Get the component's name. The name is often used to reference the component.\n * ```js\n * var name = myComponent.name();\n * ```\n *\n * @return {String}\n * @method name\n */\n\n Component.prototype.name = function name() {\n return this.name_;\n };\n\n /**\n * Get an array of all child components\n * ```js\n * var kids = myComponent.children();\n * ```\n *\n * @return {Array} The children\n * @method children\n */\n\n Component.prototype.children = function children() {\n return this.children_;\n };\n\n /**\n * Returns a child component with the provided ID\n *\n * @return {Component}\n * @method getChildById\n */\n\n Component.prototype.getChildById = function getChildById(id) {\n return this.childIndex_[id];\n };\n\n /**\n * Returns a child component with the provided name\n *\n * @return {Component}\n * @method getChild\n */\n\n Component.prototype.getChild = function getChild(name) {\n return this.childNameIndex_[name];\n };\n\n /**\n * Adds a child component inside this component\n * ```js\n * myComponent.el();\n * // -> \n * myComponent.children();\n * // [empty array]\n *\n * var myButton = myComponent.addChild('MyButton');\n * // ->
myButton\n * // -> myButton === myComponent.children()[0];\n * ```\n * Pass in options for child constructors and options for children of the child\n * ```js\n * var myButton = myComponent.addChild('MyButton', {\n * text: 'Press Me',\n * buttonChildExample: {\n * buttonChildOption: true\n * }\n * });\n * ```\n *\n * @param {String|Component} child The class name or instance of a child to add\n * @param {Object=} options Options, including options to be passed to children of the child.\n * @param {Number} index into our children array to attempt to add the child\n * @return {Component} The child component (created by this process if a string was used)\n * @method addChild\n */\n\n Component.prototype.addChild = function addChild(child) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n var index = arguments.length <= 2 || arguments[2] === undefined ? this.children_.length : arguments[2];\n\n var component = undefined;\n var componentName = undefined;\n\n // If child is a string, create nt with options\n if (typeof child === 'string') {\n componentName = child;\n\n // Options can also be specified as a boolean, so convert to an empty object if false.\n if (!options) {\n options = {};\n }\n\n // Same as above, but true is deprecated so show a warning.\n if (options === true) {\n _utilsLogJs2['default'].warn('Initializing a child component with `true` is deprecated. Children should be defined in an array when possible, but if necessary use an object instead of `true`.');\n options = {};\n }\n\n // If no componentClass in options, assume componentClass is the name lowercased\n // (e.g. playButton)\n var componentClassName = options.componentClass || _utilsToTitleCaseJs2['default'](componentName);\n\n // Set name through options\n options.name = componentName;\n\n // Create a new object & element for this controls set\n // If there's no .player_, this is a player\n var ComponentClass = Component.getComponent(componentClassName);\n\n if (!ComponentClass) {\n throw new Error('Component ' + componentClassName + ' does not exist');\n }\n\n // data stored directly on the videojs object may be\n // misidentified as a component to retain\n // backwards-compatibility with 4.x. check to make sure the\n // component class can be instantiated.\n if (typeof ComponentClass !== 'function') {\n return null;\n }\n\n component = new ComponentClass(this.player_ || this, options);\n\n // child is a component instance\n } else {\n component = child;\n }\n\n this.children_.splice(index, 0, component);\n\n if (typeof component.id === 'function') {\n this.childIndex_[component.id()] = component;\n }\n\n // If a name wasn't used to create the component, check if we can use the\n // name function of the component\n componentName = componentName || component.name && component.name();\n\n if (componentName) {\n this.childNameIndex_[componentName] = component;\n }\n\n // Add the UI object's element to the container div (box)\n // Having an element is not required\n if (typeof component.el === 'function' && component.el()) {\n var childNodes = this.contentEl().children;\n var refNode = childNodes[index] || null;\n this.contentEl().insertBefore(component.el(), refNode);\n }\n\n // Return so it can stored on parent object if desired.\n return component;\n };\n\n /**\n * Remove a child component from this component's list of children, and the\n * child component's element from this component's element\n *\n * @param {Component} component Component to remove\n * @method removeChild\n */\n\n Component.prototype.removeChild = function removeChild(component) {\n if (typeof component === 'string') {\n component = this.getChild(component);\n }\n\n if (!component || !this.children_) {\n return;\n }\n\n var childFound = false;\n\n for (var i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i] === component) {\n childFound = true;\n this.children_.splice(i, 1);\n break;\n }\n }\n\n if (!childFound) {\n return;\n }\n\n this.childIndex_[component.id()] = null;\n this.childNameIndex_[component.name()] = null;\n\n var compEl = component.el();\n\n if (compEl && compEl.parentNode === this.contentEl()) {\n this.contentEl().removeChild(component.el());\n }\n };\n\n /**\n * Add and initialize default child components from options\n * ```js\n * // when an instance of MyComponent is created, all children in options\n * // will be added to the instance by their name strings and options\n * MyComponent.prototype.options_ = {\n * children: [\n * 'myChildComponent'\n * ],\n * myChildComponent: {\n * myChildOption: true\n * }\n * };\n *\n * // Or when creating the component\n * var myComp = new MyComponent(player, {\n * children: [\n * 'myChildComponent'\n * ],\n * myChildComponent: {\n * myChildOption: true\n * }\n * });\n * ```\n * The children option can also be an array of\n * child options objects (that also include a 'name' key).\n * This can be used if you have two child components of the\n * same type that need different options.\n * ```js\n * var myComp = new MyComponent(player, {\n * children: [\n * 'button',\n * {\n * name: 'button',\n * someOtherOption: true\n * },\n * {\n * name: 'button',\n * someOtherOption: false\n * }\n * ]\n * });\n * ```\n *\n * @method initChildren\n */\n\n Component.prototype.initChildren = function initChildren() {\n var _this = this;\n\n var children = this.options_.children;\n\n if (children) {\n (function () {\n // `this` is `parent`\n var parentOptions = _this.options_;\n\n var handleAdd = function handleAdd(child) {\n var name = child.name;\n var opts = child.opts;\n\n // Allow options for children to be set at the parent options\n // e.g. videojs(id, { controlBar: false });\n // instead of videojs(id, { children: { controlBar: false });\n if (parentOptions[name] !== undefined) {\n opts = parentOptions[name];\n }\n\n // Allow for disabling default components\n // e.g. options['children']['posterImage'] = false\n if (opts === false) {\n return;\n }\n\n // Allow options to be passed as a simple boolean if no configuration\n // is necessary.\n if (opts === true) {\n opts = {};\n }\n\n // We also want to pass the original player options to each component as well so they don't need to\n // reach back into the player for options later.\n opts.playerOptions = _this.options_.playerOptions;\n\n // Create and add the child component.\n // Add a direct reference to the child by name on the parent instance.\n // If two of the same component are used, different names should be supplied\n // for each\n var newChild = _this.addChild(name, opts);\n if (newChild) {\n _this[name] = newChild;\n }\n };\n\n // Allow for an array of children details to passed in the options\n var workingChildren = undefined;\n var Tech = Component.getComponent('Tech');\n\n if (Array.isArray(children)) {\n workingChildren = children;\n } else {\n workingChildren = Object.keys(children);\n }\n\n workingChildren\n // children that are in this.options_ but also in workingChildren would\n // give us extra children we do not want. So, we want to filter them out.\n .concat(Object.keys(_this.options_).filter(function (child) {\n return !workingChildren.some(function (wchild) {\n if (typeof wchild === 'string') {\n return child === wchild;\n } else {\n return child === wchild.name;\n }\n });\n })).map(function (child) {\n var name = undefined,\n opts = undefined;\n\n if (typeof child === 'string') {\n name = child;\n opts = children[name] || _this.options_[name] || {};\n } else {\n name = child.name;\n opts = child;\n }\n\n return { name: name, opts: opts };\n }).filter(function (child) {\n // we have to make sure that child.name isn't in the techOrder since\n // techs are registerd as Components but can't aren't compatible\n // See https://github.com/videojs/video.js/issues/2772\n var c = Component.getComponent(child.opts.componentClass || _utilsToTitleCaseJs2['default'](child.name));\n return c && !Tech.isTech(c);\n }).forEach(handleAdd);\n })();\n }\n };\n\n /**\n * Allows sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n\n Component.prototype.buildCSSClass = function buildCSSClass() {\n // Child classes can include a function that does:\n // return 'CLASS NAME' + this._super();\n return '';\n };\n\n /**\n * Add an event listener to this component's element\n * ```js\n * var myFunc = function(){\n * var myComponent = this;\n * // Do something when the event is fired\n * };\n *\n * myComponent.on('eventType', myFunc);\n * ```\n * The context of myFunc will be myComponent unless previously bound.\n * Alternatively, you can add a listener to another element or component.\n * ```js\n * myComponent.on(otherElement, 'eventName', myFunc);\n * myComponent.on(otherComponent, 'eventName', myFunc);\n * ```\n * The benefit of using this over `VjsEvents.on(otherElement, 'eventName', myFunc)`\n * and `otherComponent.on('eventName', myFunc)` is that this way the listeners\n * will be automatically cleaned up when either component is disposed.\n * It will also bind myComponent as the context of myFunc.\n * **NOTE**: When using this on elements in the page other than window\n * and document (both permanent), if you remove the element from the DOM\n * you need to call `myComponent.trigger(el, 'dispose')` on it to clean up\n * references to it and allow the browser to garbage collect it.\n *\n * @param {String|Component} first The event type or other component\n * @param {Function|String} second The event handler or event type\n * @param {Function} third The event handler\n * @return {Component}\n * @method on\n */\n\n Component.prototype.on = function on(first, second, third) {\n var _this2 = this;\n\n if (typeof first === 'string' || Array.isArray(first)) {\n Events.on(this.el_, first, Fn.bind(this, second));\n\n // Targeting another component or element\n } else {\n (function () {\n var target = first;\n var type = second;\n var fn = Fn.bind(_this2, third);\n\n // When this component is disposed, remove the listener from the other component\n var removeOnDispose = function removeOnDispose() {\n return _this2.off(target, type, fn);\n };\n\n // Use the same function ID so we can remove it later it using the ID\n // of the original listener\n removeOnDispose.guid = fn.guid;\n _this2.on('dispose', removeOnDispose);\n\n // If the other component is disposed first we need to clean the reference\n // to the other component in this component's removeOnDispose listener\n // Otherwise we create a memory leak.\n var cleanRemover = function cleanRemover() {\n return _this2.off('dispose', removeOnDispose);\n };\n\n // Add the same function ID so we can easily remove it later\n cleanRemover.guid = fn.guid;\n\n // Check if this is a DOM node\n if (first.nodeName) {\n // Add the listener to the other element\n Events.on(target, type, fn);\n Events.on(target, 'dispose', cleanRemover);\n\n // Should be a component\n // Not using `instanceof Component` because it makes mock players difficult\n } else if (typeof first.on === 'function') {\n // Add the listener to the other component\n target.on(type, fn);\n target.on('dispose', cleanRemover);\n }\n })();\n }\n\n return this;\n };\n\n /**\n * Remove an event listener from this component's element\n * ```js\n * myComponent.off('eventType', myFunc);\n * ```\n * If myFunc is excluded, ALL listeners for the event type will be removed.\n * If eventType is excluded, ALL listeners will be removed from the component.\n * Alternatively you can use `off` to remove listeners that were added to other\n * elements or components using `myComponent.on(otherComponent...`.\n * In this case both the event type and listener function are REQUIRED.\n * ```js\n * myComponent.off(otherElement, 'eventType', myFunc);\n * myComponent.off(otherComponent, 'eventType', myFunc);\n * ```\n *\n * @param {String=|Component} first The event type or other component\n * @param {Function=|String} second The listener function or event type\n * @param {Function=} third The listener for other component\n * @return {Component}\n * @method off\n */\n\n Component.prototype.off = function off(first, second, third) {\n if (!first || typeof first === 'string' || Array.isArray(first)) {\n Events.off(this.el_, first, second);\n } else {\n var target = first;\n var type = second;\n // Ensure there's at least a guid, even if the function hasn't been used\n var fn = Fn.bind(this, third);\n\n // Remove the dispose listener on this component,\n // which was given the same guid as the event listener\n this.off('dispose', fn);\n\n if (first.nodeName) {\n // Remove the listener\n Events.off(target, type, fn);\n // Remove the listener for cleaning the dispose listener\n Events.off(target, 'dispose', fn);\n } else {\n target.off(type, fn);\n target.off('dispose', fn);\n }\n }\n\n return this;\n };\n\n /**\n * Add an event listener to be triggered only once and then removed\n * ```js\n * myComponent.one('eventName', myFunc);\n * ```\n * Alternatively you can add a listener to another element or component\n * that will be triggered only once.\n * ```js\n * myComponent.one(otherElement, 'eventName', myFunc);\n * myComponent.one(otherComponent, 'eventName', myFunc);\n * ```\n *\n * @param {String|Component} first The event type or other component\n * @param {Function|String} second The listener function or event type\n * @param {Function=} third The listener function for other component\n * @return {Component}\n * @method one\n */\n\n Component.prototype.one = function one(first, second, third) {\n var _this3 = this,\n _arguments = arguments;\n\n if (typeof first === 'string' || Array.isArray(first)) {\n Events.one(this.el_, first, Fn.bind(this, second));\n } else {\n (function () {\n var target = first;\n var type = second;\n var fn = Fn.bind(_this3, third);\n\n var newFunc = function newFunc() {\n _this3.off(target, type, newFunc);\n fn.apply(null, _arguments);\n };\n\n // Keep the same function ID so we can remove it later\n newFunc.guid = fn.guid;\n\n _this3.on(target, type, newFunc);\n })();\n }\n\n return this;\n };\n\n /**\n * Trigger an event on an element\n * ```js\n * myComponent.trigger('eventName');\n * myComponent.trigger({'type':'eventName'});\n * myComponent.trigger('eventName', {data: 'some data'});\n * myComponent.trigger({'type':'eventName'}, {data: 'some data'});\n * ```\n *\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Component} self\n * @method trigger\n */\n\n Component.prototype.trigger = function trigger(event, hash) {\n Events.trigger(this.el_, event, hash);\n return this;\n };\n\n /**\n * Bind a listener to the component's ready state.\n * Different from event listeners in that if the ready event has already happened\n * it will trigger the function immediately.\n *\n * @param {Function} fn Ready listener\n * @param {Boolean} sync Exec the listener synchronously if component is ready\n * @return {Component}\n * @method ready\n */\n\n Component.prototype.ready = function ready(fn) {\n var sync = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1];\n\n if (fn) {\n if (this.isReady_) {\n if (sync) {\n fn.call(this);\n } else {\n // Call the function asynchronously by default for consistency\n this.setTimeout(fn, 1);\n }\n } else {\n this.readyQueue_ = this.readyQueue_ || [];\n this.readyQueue_.push(fn);\n }\n }\n return this;\n };\n\n /**\n * Trigger the ready listeners\n *\n * @return {Component}\n * @method triggerReady\n */\n\n Component.prototype.triggerReady = function triggerReady() {\n this.isReady_ = true;\n\n // Ensure ready is triggerd asynchronously\n this.setTimeout(function () {\n var readyQueue = this.readyQueue_;\n\n // Reset Ready Queue\n this.readyQueue_ = [];\n\n if (readyQueue && readyQueue.length > 0) {\n readyQueue.forEach(function (fn) {\n fn.call(this);\n }, this);\n }\n\n // Allow for using event listeners also\n this.trigger('ready');\n }, 1);\n };\n\n /**\n * Finds a single DOM element matching `selector` within the component's\n * `contentEl` or another custom context.\n *\n * @method $\n * @param {String} selector\n * A valid CSS selector, which will be passed to `querySelector`.\n *\n * @param {Element|String} [context=document]\n * A DOM element within which to query. Can also be a selector\n * string in which case the first matching element will be used\n * as context. If missing (or no element matches selector), falls\n * back to `document`.\n *\n * @return {Element|null}\n */\n\n Component.prototype.$ = function $(selector, context) {\n return Dom.$(selector, context || this.contentEl());\n };\n\n /**\n * Finds a all DOM elements matching `selector` within the component's\n * `contentEl` or another custom context.\n *\n * @method $$\n * @param {String} selector\n * A valid CSS selector, which will be passed to `querySelectorAll`.\n *\n * @param {Element|String} [context=document]\n * A DOM element within which to query. Can also be a selector\n * string in which case the first matching element will be used\n * as context. If missing (or no element matches selector), falls\n * back to `document`.\n *\n * @return {NodeList}\n */\n\n Component.prototype.$$ = function $$(selector, context) {\n return Dom.$$(selector, context || this.contentEl());\n };\n\n /**\n * Check if a component's element has a CSS class name\n *\n * @param {String} classToCheck Classname to check\n * @return {Component}\n * @method hasClass\n */\n\n Component.prototype.hasClass = function hasClass(classToCheck) {\n return Dom.hasElClass(this.el_, classToCheck);\n };\n\n /**\n * Add a CSS class name to the component's element\n *\n * @param {String} classToAdd Classname to add\n * @return {Component}\n * @method addClass\n */\n\n Component.prototype.addClass = function addClass(classToAdd) {\n Dom.addElClass(this.el_, classToAdd);\n return this;\n };\n\n /**\n * Remove a CSS class name from the component's element\n *\n * @param {String} classToRemove Classname to remove\n * @return {Component}\n * @method removeClass\n */\n\n Component.prototype.removeClass = function removeClass(classToRemove) {\n Dom.removeElClass(this.el_, classToRemove);\n return this;\n };\n\n /**\n * Add or remove a CSS class name from the component's element\n *\n * @param {String} classToToggle\n * @param {Boolean|Function} [predicate]\n * Can be a function that returns a Boolean. If `true`, the class\n * will be added; if `false`, the class will be removed. If not\n * given, the class will be added if not present and vice versa.\n *\n * @return {Component}\n * @method toggleClass\n */\n\n Component.prototype.toggleClass = function toggleClass(classToToggle, predicate) {\n Dom.toggleElClass(this.el_, classToToggle, predicate);\n return this;\n };\n\n /**\n * Show the component element if hidden\n *\n * @return {Component}\n * @method show\n */\n\n Component.prototype.show = function show() {\n this.removeClass('vjs-hidden');\n return this;\n };\n\n /**\n * Hide the component element if currently showing\n *\n * @return {Component}\n * @method hide\n */\n\n Component.prototype.hide = function hide() {\n this.addClass('vjs-hidden');\n return this;\n };\n\n /**\n * Lock an item in its visible state\n * To be used with fadeIn/fadeOut.\n *\n * @return {Component}\n * @private\n * @method lockShowing\n */\n\n Component.prototype.lockShowing = function lockShowing() {\n this.addClass('vjs-lock-showing');\n return this;\n };\n\n /**\n * Unlock an item to be hidden\n * To be used with fadeIn/fadeOut.\n *\n * @return {Component}\n * @private\n * @method unlockShowing\n */\n\n Component.prototype.unlockShowing = function unlockShowing() {\n this.removeClass('vjs-lock-showing');\n return this;\n };\n\n /**\n * Set or get the width of the component (CSS values)\n * Setting the video tag dimension values only works with values in pixels.\n * Percent values will not work.\n * Some percents can be used, but width()/height() will return the number + %,\n * not the actual computed width/height.\n *\n * @param {Number|String=} num Optional width number\n * @param {Boolean} skipListeners Skip the 'resize' event trigger\n * @return {Component} This component, when setting the width\n * @return {Number|String} The width, when getting\n * @method width\n */\n\n Component.prototype.width = function width(num, skipListeners) {\n return this.dimension('width', num, skipListeners);\n };\n\n /**\n * Get or set the height of the component (CSS values)\n * Setting the video tag dimension values only works with values in pixels.\n * Percent values will not work.\n * Some percents can be used, but width()/height() will return the number + %,\n * not the actual computed width/height.\n *\n * @param {Number|String=} num New component height\n * @param {Boolean=} skipListeners Skip the resize event trigger\n * @return {Component} This component, when setting the height\n * @return {Number|String} The height, when getting\n * @method height\n */\n\n Component.prototype.height = function height(num, skipListeners) {\n return this.dimension('height', num, skipListeners);\n };\n\n /**\n * Set both width and height at the same time\n *\n * @param {Number|String} width Width of player\n * @param {Number|String} height Height of player\n * @return {Component} The component\n * @method dimensions\n */\n\n Component.prototype.dimensions = function dimensions(width, height) {\n // Skip resize listeners on width for optimization\n return this.width(width, true).height(height);\n };\n\n /**\n * Get or set width or height\n * This is the shared code for the width() and height() methods.\n * All for an integer, integer + 'px' or integer + '%';\n * Known issue: Hidden elements officially have a width of 0. We're defaulting\n * to the style.width value and falling back to computedStyle which has the\n * hidden element issue. Info, but probably not an efficient fix:\n * http://www.foliotek.com/devblog/getting-the-width-of-a-hidden-element-with-jquery-using-width/\n *\n * @param {String} widthOrHeight 'width' or 'height'\n * @param {Number|String=} num New dimension\n * @param {Boolean=} skipListeners Skip resize event trigger\n * @return {Component} The component if a dimension was set\n * @return {Number|String} The dimension if nothing was set\n * @private\n * @method dimension\n */\n\n Component.prototype.dimension = function dimension(widthOrHeight, num, skipListeners) {\n if (num !== undefined) {\n // Set to zero if null or literally NaN (NaN !== NaN)\n if (num === null || num !== num) {\n num = 0;\n }\n\n // Check if using css width/height (% or px) and adjust\n if (('' + num).indexOf('%') !== -1 || ('' + num).indexOf('px') !== -1) {\n this.el_.style[widthOrHeight] = num;\n } else if (num === 'auto') {\n this.el_.style[widthOrHeight] = '';\n } else {\n this.el_.style[widthOrHeight] = num + 'px';\n }\n\n // skipListeners allows us to avoid triggering the resize event when setting both width and height\n if (!skipListeners) {\n this.trigger('resize');\n }\n\n // Return component\n return this;\n }\n\n // Not setting a value, so getting it\n // Make sure element exists\n if (!this.el_) {\n return 0;\n }\n\n // Get dimension value from style\n var val = this.el_.style[widthOrHeight];\n var pxIndex = val.indexOf('px');\n\n if (pxIndex !== -1) {\n // Return the pixel value with no 'px'\n return parseInt(val.slice(0, pxIndex), 10);\n }\n\n // No px so using % or no style was set, so falling back to offsetWidth/height\n // If component has display:none, offset will return 0\n // TODO: handle display:none and no dimension style using px\n return parseInt(this.el_['offset' + _utilsToTitleCaseJs2['default'](widthOrHeight)], 10);\n };\n\n /**\n * Get width or height of computed style\n * @param {String} widthOrHeight 'width' or 'height'\n * @return {Number|Boolean} The bolean false if nothing was set\n * @method currentDimension\n */\n\n Component.prototype.currentDimension = function currentDimension(widthOrHeight) {\n var computedWidthOrHeight = 0;\n\n if (widthOrHeight !== 'width' && widthOrHeight !== 'height') {\n throw new Error('currentDimension only accepts width or height value');\n }\n\n if (typeof _globalWindow2['default'].getComputedStyle === 'function') {\n var computedStyle = _globalWindow2['default'].getComputedStyle(this.el_);\n computedWidthOrHeight = computedStyle.getPropertyValue(widthOrHeight) || computedStyle[widthOrHeight];\n } else if (this.el_.currentStyle) {\n // ie 8 doesn't support computed style, shim it\n // return clientWidth or clientHeight instead for better accuracy\n var rule = 'offset' + _utilsToTitleCaseJs2['default'](widthOrHeight);\n computedWidthOrHeight = this.el_[rule];\n }\n\n // remove 'px' from variable and parse as integer\n computedWidthOrHeight = parseFloat(computedWidthOrHeight);\n return computedWidthOrHeight;\n };\n\n /**\n * Get an object which contains width and height values of computed style\n * @return {Object} The dimensions of element\n * @method currentDimensions\n */\n\n Component.prototype.currentDimensions = function currentDimensions() {\n return {\n width: this.currentDimension('width'),\n height: this.currentDimension('height')\n };\n };\n\n /**\n * Get width of computed style\n * @return {Integer}\n * @method currentWidth\n */\n\n Component.prototype.currentWidth = function currentWidth() {\n return this.currentDimension('width');\n };\n\n /**\n * Get height of computed style\n * @return {Integer}\n * @method currentHeight\n */\n\n Component.prototype.currentHeight = function currentHeight() {\n return this.currentDimension('height');\n };\n\n /**\n * Emit 'tap' events when touch events are supported\n * This is used to support toggling the controls through a tap on the video.\n * We're requiring them to be enabled because otherwise every component would\n * have this extra overhead unnecessarily, on mobile devices where extra\n * overhead is especially bad.\n *\n * @private\n * @method emitTapEvents\n */\n\n Component.prototype.emitTapEvents = function emitTapEvents() {\n // Track the start time so we can determine how long the touch lasted\n var touchStart = 0;\n var firstTouch = null;\n\n // Maximum movement allowed during a touch event to still be considered a tap\n // Other popular libs use anywhere from 2 (hammer.js) to 15, so 10 seems like a nice, round number.\n var tapMovementThreshold = 10;\n\n // The maximum length a touch can be while still being considered a tap\n var touchTimeThreshold = 200;\n\n var couldBeTap = undefined;\n\n this.on('touchstart', function (event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length === 1) {\n // Copy the touches object to prevent modifying the original\n firstTouch = _objectAssign2['default']({}, event.touches[0]);\n // Record start time so we can detect a tap vs. \"touch and hold\"\n touchStart = new Date().getTime();\n // Reset couldBeTap tracking\n couldBeTap = true;\n }\n });\n\n this.on('touchmove', function (event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length > 1) {\n couldBeTap = false;\n } else if (firstTouch) {\n // Some devices will throw touchmoves for all but the slightest of taps.\n // So, if we moved only a small distance, this could still be a tap\n var xdiff = event.touches[0].pageX - firstTouch.pageX;\n var ydiff = event.touches[0].pageY - firstTouch.pageY;\n var touchDistance = Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n\n if (touchDistance > tapMovementThreshold) {\n couldBeTap = false;\n }\n }\n });\n\n var noTap = function noTap() {\n couldBeTap = false;\n };\n\n // TODO: Listen to the original target. http://youtu.be/DujfpXOKUp8?t=13m8s\n this.on('touchleave', noTap);\n this.on('touchcancel', noTap);\n\n // When the touch ends, measure how long it took and trigger the appropriate\n // event\n this.on('touchend', function (event) {\n firstTouch = null;\n // Proceed only if the touchmove/leave/cancel event didn't happen\n if (couldBeTap === true) {\n // Measure how long the touch lasted\n var touchTime = new Date().getTime() - touchStart;\n\n // Make sure the touch was less than the threshold to be considered a tap\n if (touchTime < touchTimeThreshold) {\n // Don't let browser turn this into a click\n event.preventDefault();\n this.trigger('tap');\n // It may be good to copy the touchend event object and change the\n // type to tap, if the other event properties aren't exact after\n // Events.fixEvent runs (e.g. event.target)\n }\n }\n });\n };\n\n /**\n * Report user touch activity when touch events occur\n * User activity is used to determine when controls should show/hide. It's\n * relatively simple when it comes to mouse events, because any mouse event\n * should show the controls. So we capture mouse events that bubble up to the\n * player and report activity when that happens.\n * With touch events it isn't as easy. We can't rely on touch events at the\n * player level, because a tap (touchstart + touchend) on the video itself on\n * mobile devices is meant to turn controls off (and on). User activity is\n * checked asynchronously, so what could happen is a tap event on the video\n * turns the controls off, then the touchend event bubbles up to the player,\n * which if it reported user activity, would turn the controls right back on.\n * (We also don't want to completely block touch events from bubbling up)\n * Also a touchmove, touch+hold, and anything other than a tap is not supposed\n * to turn the controls back on on a mobile device.\n * Here we're setting the default component behavior to report user activity\n * whenever touch events happen, and this can be turned off by components that\n * want touch events to act differently.\n *\n * @method enableTouchActivity\n */\n\n Component.prototype.enableTouchActivity = function enableTouchActivity() {\n // Don't continue if the root player doesn't support reporting user activity\n if (!this.player() || !this.player().reportUserActivity) {\n return;\n }\n\n // listener for reporting that the user is active\n var report = Fn.bind(this.player(), this.player().reportUserActivity);\n\n var touchHolding = undefined;\n\n this.on('touchstart', function () {\n report();\n // For as long as the they are touching the device or have their mouse down,\n // we consider them active even if they're not moving their finger or mouse.\n // So we want to continue to update that they are active\n this.clearInterval(touchHolding);\n // report at the same interval as activityCheck\n touchHolding = this.setInterval(report, 250);\n });\n\n var touchEnd = function touchEnd(event) {\n report();\n // stop the interval that maintains activity if the touch is holding\n this.clearInterval(touchHolding);\n };\n\n this.on('touchmove', report);\n this.on('touchend', touchEnd);\n this.on('touchcancel', touchEnd);\n };\n\n /**\n * Creates timeout and sets up disposal automatically.\n *\n * @param {Function} fn The function to run after the timeout.\n * @param {Number} timeout Number of ms to delay before executing specified function.\n * @return {Number} Returns the timeout ID\n * @method setTimeout\n */\n\n Component.prototype.setTimeout = function setTimeout(fn, timeout) {\n fn = Fn.bind(this, fn);\n\n // window.setTimeout would be preferable here, but due to some bizarre issue with Sinon and/or Phantomjs, we can't.\n var timeoutId = _globalWindow2['default'].setTimeout(fn, timeout);\n\n var disposeFn = function disposeFn() {\n this.clearTimeout(timeoutId);\n };\n\n disposeFn.guid = 'vjs-timeout-' + timeoutId;\n\n this.on('dispose', disposeFn);\n\n return timeoutId;\n };\n\n /**\n * Clears a timeout and removes the associated dispose listener\n *\n * @param {Number} timeoutId The id of the timeout to clear\n * @return {Number} Returns the timeout ID\n * @method clearTimeout\n */\n\n Component.prototype.clearTimeout = function clearTimeout(timeoutId) {\n _globalWindow2['default'].clearTimeout(timeoutId);\n\n var disposeFn = function disposeFn() {};\n\n disposeFn.guid = 'vjs-timeout-' + timeoutId;\n\n this.off('dispose', disposeFn);\n\n return timeoutId;\n };\n\n /**\n * Creates an interval and sets up disposal automatically.\n *\n * @param {Function} fn The function to run every N seconds.\n * @param {Number} interval Number of ms to delay before executing specified function.\n * @return {Number} Returns the interval ID\n * @method setInterval\n */\n\n Component.prototype.setInterval = function setInterval(fn, interval) {\n fn = Fn.bind(this, fn);\n\n var intervalId = _globalWindow2['default'].setInterval(fn, interval);\n\n var disposeFn = function disposeFn() {\n this.clearInterval(intervalId);\n };\n\n disposeFn.guid = 'vjs-interval-' + intervalId;\n\n this.on('dispose', disposeFn);\n\n return intervalId;\n };\n\n /**\n * Clears an interval and removes the associated dispose listener\n *\n * @param {Number} intervalId The id of the interval to clear\n * @return {Number} Returns the interval ID\n * @method clearInterval\n */\n\n Component.prototype.clearInterval = function clearInterval(intervalId) {\n _globalWindow2['default'].clearInterval(intervalId);\n\n var disposeFn = function disposeFn() {};\n\n disposeFn.guid = 'vjs-interval-' + intervalId;\n\n this.off('dispose', disposeFn);\n\n return intervalId;\n };\n\n /**\n * Registers a component\n *\n * @param {String} name Name of the component to register\n * @param {Object} comp The component to register\n * @static\n * @method registerComponent\n */\n\n Component.registerComponent = function registerComponent(name, comp) {\n if (!Component.components_) {\n Component.components_ = {};\n }\n\n Component.components_[name] = comp;\n return comp;\n };\n\n /**\n * Gets a component by name\n *\n * @param {String} name Name of the component to get\n * @return {Component}\n * @static\n * @method getComponent\n */\n\n Component.getComponent = function getComponent(name) {\n if (Component.components_ && Component.components_[name]) {\n return Component.components_[name];\n }\n\n if (_globalWindow2['default'] && _globalWindow2['default'].videojs && _globalWindow2['default'].videojs[name]) {\n _utilsLogJs2['default'].warn('The ' + name + ' component was added to the videojs object when it should be registered using videojs.registerComponent(name, component)');\n return _globalWindow2['default'].videojs[name];\n }\n };\n\n /**\n * Sets up the constructor using the supplied init method\n * or uses the init of the parent object\n *\n * @param {Object} props An object of properties\n * @static\n * @deprecated\n * @method extend\n */\n\n Component.extend = function extend(props) {\n props = props || {};\n\n _utilsLogJs2['default'].warn('Component.extend({}) has been deprecated, use videojs.extend(Component, {}) instead');\n\n // Set up the constructor using the supplied init method\n // or using the init of the parent object\n // Make sure to check the unobfuscated version for external libs\n var init = props.init || props.init || this.prototype.init || this.prototype.init || function () {};\n // In Resig's simple class inheritance (previously used) the constructor\n // is a function that calls `this.init.apply(arguments)`\n // However that would prevent us from using `ParentObject.call(this);`\n // in a Child constructor because the `this` in `this.init`\n // would still refer to the Child and cause an infinite loop.\n // We would instead have to do\n // `ParentObject.prototype.init.apply(this, arguments);`\n // Bleh. We're not creating a _super() function, so it's good to keep\n // the parent constructor reference simple.\n var subObj = function subObj() {\n init.apply(this, arguments);\n };\n\n // Inherit from this object's prototype\n subObj.prototype = Object.create(this.prototype);\n // Reset the constructor property for subObj otherwise\n // instances of subObj would have the constructor of the parent Object\n subObj.prototype.constructor = subObj;\n\n // Make the class extendable\n subObj.extend = Component.extend;\n\n // Extend subObj's prototype with functions and other properties from props\n for (var _name in props) {\n if (props.hasOwnProperty(_name)) {\n subObj.prototype[_name] = props[_name];\n }\n }\n\n return subObj;\n };\n\n return Component;\n})();\n\nComponent.registerComponent('Component', Component);\nexports['default'] = Component;\nmodule.exports = exports['default'];\n\n},{\"./utils/dom.js\":134,\"./utils/events.js\":135,\"./utils/fn.js\":136,\"./utils/guid.js\":138,\"./utils/log.js\":139,\"./utils/merge-options.js\":140,\"./utils/to-title-case.js\":143,\"global/window\":2,\"object.assign\":45}],68:[function(_dereq_,module,exports){\n/**\n * @file control-bar.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _componentJs = _dereq_('../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\n// Required children\n\nvar _playToggleJs = _dereq_('./play-toggle.js');\n\nvar _playToggleJs2 = _interopRequireDefault(_playToggleJs);\n\nvar _timeControlsCurrentTimeDisplayJs = _dereq_('./time-controls/current-time-display.js');\n\nvar _timeControlsCurrentTimeDisplayJs2 = _interopRequireDefault(_timeControlsCurrentTimeDisplayJs);\n\nvar _timeControlsDurationDisplayJs = _dereq_('./time-controls/duration-display.js');\n\nvar _timeControlsDurationDisplayJs2 = _interopRequireDefault(_timeControlsDurationDisplayJs);\n\nvar _timeControlsTimeDividerJs = _dereq_('./time-controls/time-divider.js');\n\nvar _timeControlsTimeDividerJs2 = _interopRequireDefault(_timeControlsTimeDividerJs);\n\nvar _timeControlsRemainingTimeDisplayJs = _dereq_('./time-controls/remaining-time-display.js');\n\nvar _timeControlsRemainingTimeDisplayJs2 = _interopRequireDefault(_timeControlsRemainingTimeDisplayJs);\n\nvar _liveDisplayJs = _dereq_('./live-display.js');\n\nvar _liveDisplayJs2 = _interopRequireDefault(_liveDisplayJs);\n\nvar _progressControlProgressControlJs = _dereq_('./progress-control/progress-control.js');\n\nvar _progressControlProgressControlJs2 = _interopRequireDefault(_progressControlProgressControlJs);\n\nvar _fullscreenToggleJs = _dereq_('./fullscreen-toggle.js');\n\nvar _fullscreenToggleJs2 = _interopRequireDefault(_fullscreenToggleJs);\n\nvar _volumeControlVolumeControlJs = _dereq_('./volume-control/volume-control.js');\n\nvar _volumeControlVolumeControlJs2 = _interopRequireDefault(_volumeControlVolumeControlJs);\n\nvar _volumeMenuButtonJs = _dereq_('./volume-menu-button.js');\n\nvar _volumeMenuButtonJs2 = _interopRequireDefault(_volumeMenuButtonJs);\n\nvar _muteToggleJs = _dereq_('./mute-toggle.js');\n\nvar _muteToggleJs2 = _interopRequireDefault(_muteToggleJs);\n\nvar _textTrackControlsChaptersButtonJs = _dereq_('./text-track-controls/chapters-button.js');\n\nvar _textTrackControlsChaptersButtonJs2 = _interopRequireDefault(_textTrackControlsChaptersButtonJs);\n\nvar _textTrackControlsDescriptionsButtonJs = _dereq_('./text-track-controls/descriptions-button.js');\n\nvar _textTrackControlsDescriptionsButtonJs2 = _interopRequireDefault(_textTrackControlsDescriptionsButtonJs);\n\nvar _textTrackControlsSubtitlesButtonJs = _dereq_('./text-track-controls/subtitles-button.js');\n\nvar _textTrackControlsSubtitlesButtonJs2 = _interopRequireDefault(_textTrackControlsSubtitlesButtonJs);\n\nvar _textTrackControlsCaptionsButtonJs = _dereq_('./text-track-controls/captions-button.js');\n\nvar _textTrackControlsCaptionsButtonJs2 = _interopRequireDefault(_textTrackControlsCaptionsButtonJs);\n\nvar _playbackRateMenuPlaybackRateMenuButtonJs = _dereq_('./playback-rate-menu/playback-rate-menu-button.js');\n\nvar _playbackRateMenuPlaybackRateMenuButtonJs2 = _interopRequireDefault(_playbackRateMenuPlaybackRateMenuButtonJs);\n\nvar _spacerControlsCustomControlSpacerJs = _dereq_('./spacer-controls/custom-control-spacer.js');\n\nvar _spacerControlsCustomControlSpacerJs2 = _interopRequireDefault(_spacerControlsCustomControlSpacerJs);\n\n/**\n * Container of main controls\n *\n * @extends Component\n * @class ControlBar\n */\n\nvar ControlBar = (function (_Component) {\n _inherits(ControlBar, _Component);\n\n function ControlBar() {\n _classCallCheck(this, ControlBar);\n\n _Component.apply(this, arguments);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n\n ControlBar.prototype.createEl = function createEl() {\n return _Component.prototype.createEl.call(this, 'div', {\n className: 'vjs-control-bar',\n dir: 'ltr'\n }, {\n 'role': 'group' // The control bar is a group, so it can contain menuitems\n });\n };\n\n return ControlBar;\n})(_componentJs2['default']);\n\nControlBar.prototype.options_ = {\n loadEvent: 'play',\n children: ['playToggle', 'volumeMenuButton', 'currentTimeDisplay', 'timeDivider', 'durationDisplay', 'progressControl', 'liveDisplay', 'remainingTimeDisplay', 'customControlSpacer', 'playbackRateMenuButton', 'chaptersButton', 'descriptionsButton', 'subtitlesButton', 'captionsButton', 'fullscreenToggle']\n};\n\n_componentJs2['default'].registerComponent('ControlBar', ControlBar);\nexports['default'] = ControlBar;\nmodule.exports = exports['default'];\n\n},{\"../component.js\":67,\"./fullscreen-toggle.js\":69,\"./live-display.js\":70,\"./mute-toggle.js\":71,\"./play-toggle.js\":72,\"./playback-rate-menu/playback-rate-menu-button.js\":73,\"./progress-control/progress-control.js\":78,\"./spacer-controls/custom-control-spacer.js\":81,\"./text-track-controls/captions-button.js\":84,\"./text-track-controls/chapters-button.js\":85,\"./text-track-controls/descriptions-button.js\":87,\"./text-track-controls/subtitles-button.js\":89,\"./time-controls/current-time-display.js\":92,\"./time-controls/duration-display.js\":93,\"./time-controls/remaining-time-display.js\":94,\"./time-controls/time-divider.js\":95,\"./volume-control/volume-control.js\":97,\"./volume-menu-button.js\":99}],69:[function(_dereq_,module,exports){\n/**\n * @file fullscreen-toggle.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _buttonJs = _dereq_('../button.js');\n\nvar _buttonJs2 = _interopRequireDefault(_buttonJs);\n\nvar _componentJs = _dereq_('../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\n/**\n * Toggle fullscreen video\n *\n * @extends Button\n * @class FullscreenToggle\n */\n\nvar FullscreenToggle = (function (_Button) {\n _inherits(FullscreenToggle, _Button);\n\n function FullscreenToggle() {\n _classCallCheck(this, FullscreenToggle);\n\n _Button.apply(this, arguments);\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n\n FullscreenToggle.prototype.buildCSSClass = function buildCSSClass() {\n return 'vjs-fullscreen-control ' + _Button.prototype.buildCSSClass.call(this);\n };\n\n /**\n * Handles click for full screen\n *\n * @method handleClick\n */\n\n FullscreenToggle.prototype.handleClick = function handleClick() {\n if (!this.player_.isFullscreen()) {\n this.player_.requestFullscreen();\n this.controlText('Non-Fullscreen');\n } else {\n this.player_.exitFullscreen();\n this.controlText('Fullscreen');\n }\n };\n\n return FullscreenToggle;\n})(_buttonJs2['default']);\n\nFullscreenToggle.prototype.controlText_ = 'Fullscreen';\n\n_componentJs2['default'].registerComponent('FullscreenToggle', FullscreenToggle);\nexports['default'] = FullscreenToggle;\nmodule.exports = exports['default'];\n\n},{\"../button.js\":64,\"../component.js\":67}],70:[function(_dereq_,module,exports){\n/**\n * @file live-display.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _component = _dereq_('../component');\n\nvar _component2 = _interopRequireDefault(_component);\n\nvar _utilsDomJs = _dereq_('../utils/dom.js');\n\nvar Dom = _interopRequireWildcard(_utilsDomJs);\n\n/**\n * Displays the live indicator\n * TODO - Future make it click to snap to live\n *\n * @extends Component\n * @class LiveDisplay\n */\n\nvar LiveDisplay = (function (_Component) {\n _inherits(LiveDisplay, _Component);\n\n function LiveDisplay(player, options) {\n _classCallCheck(this, LiveDisplay);\n\n _Component.call(this, player, options);\n\n this.updateShowing();\n this.on(this.player(), 'durationchange', this.updateShowing);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n\n LiveDisplay.prototype.createEl = function createEl() {\n var el = _Component.prototype.createEl.call(this, 'div', {\n className: 'vjs-live-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-live-display',\n innerHTML: '' + this.localize('Stream Type') + '' + this.localize('LIVE')\n }, {\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n };\n\n LiveDisplay.prototype.updateShowing = function updateShowing() {\n if (this.player().duration() === Infinity) {\n this.show();\n } else {\n this.hide();\n }\n };\n\n return LiveDisplay;\n})(_component2['default']);\n\n_component2['default'].registerComponent('LiveDisplay', LiveDisplay);\nexports['default'] = LiveDisplay;\nmodule.exports = exports['default'];\n\n},{\"../component\":67,\"../utils/dom.js\":134}],71:[function(_dereq_,module,exports){\n/**\n * @file mute-toggle.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _button = _dereq_('../button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _component = _dereq_('../component');\n\nvar _component2 = _interopRequireDefault(_component);\n\nvar _utilsDomJs = _dereq_('../utils/dom.js');\n\nvar Dom = _interopRequireWildcard(_utilsDomJs);\n\n/**\n * A button component for muting the audio\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class MuteToggle\n */\n\nvar MuteToggle = (function (_Button) {\n _inherits(MuteToggle, _Button);\n\n function MuteToggle(player, options) {\n _classCallCheck(this, MuteToggle);\n\n _Button.call(this, player, options);\n\n this.on(player, 'volumechange', this.update);\n\n // hide mute toggle if the current tech doesn't support volume control\n if (player.tech_ && player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n }\n\n this.on(player, 'loadstart', function () {\n this.update(); // We need to update the button to account for a default muted state.\n\n if (player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n\n MuteToggle.prototype.buildCSSClass = function buildCSSClass() {\n return 'vjs-mute-control ' + _Button.prototype.buildCSSClass.call(this);\n };\n\n /**\n * Handle click on mute\n *\n * @method handleClick\n */\n\n MuteToggle.prototype.handleClick = function handleClick() {\n this.player_.muted(this.player_.muted() ? false : true);\n };\n\n /**\n * Update volume\n *\n * @method update\n */\n\n MuteToggle.prototype.update = function update() {\n var vol = this.player_.volume(),\n level = 3;\n\n if (vol === 0 || this.player_.muted()) {\n level = 0;\n } else if (vol < 0.33) {\n level = 1;\n } else if (vol < 0.67) {\n level = 2;\n }\n\n // Don't rewrite the button text if the actual text doesn't change.\n // This causes unnecessary and confusing information for screen reader users.\n // This check is needed because this function gets called every time the volume level is changed.\n var toMute = this.player_.muted() ? 'Unmute' : 'Mute';\n if (this.controlText() !== toMute) {\n this.controlText(toMute);\n }\n\n /* TODO improve muted icon classes */\n for (var i = 0; i < 4; i++) {\n Dom.removeElClass(this.el_, 'vjs-vol-' + i);\n }\n Dom.addElClass(this.el_, 'vjs-vol-' + level);\n };\n\n return MuteToggle;\n})(_button2['default']);\n\nMuteToggle.prototype.controlText_ = 'Mute';\n\n_component2['default'].registerComponent('MuteToggle', MuteToggle);\nexports['default'] = MuteToggle;\nmodule.exports = exports['default'];\n\n},{\"../button\":64,\"../component\":67,\"../utils/dom.js\":134}],72:[function(_dereq_,module,exports){\n/**\n * @file play-toggle.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _buttonJs = _dereq_('../button.js');\n\nvar _buttonJs2 = _interopRequireDefault(_buttonJs);\n\nvar _componentJs = _dereq_('../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\n/**\n * Button to toggle between play and pause\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class PlayToggle\n */\n\nvar PlayToggle = (function (_Button) {\n _inherits(PlayToggle, _Button);\n\n function PlayToggle(player, options) {\n _classCallCheck(this, PlayToggle);\n\n _Button.call(this, player, options);\n\n this.on(player, 'play', this.handlePlay);\n this.on(player, 'pause', this.handlePause);\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n\n PlayToggle.prototype.buildCSSClass = function buildCSSClass() {\n return 'vjs-play-control ' + _Button.prototype.buildCSSClass.call(this);\n };\n\n /**\n * Handle click to toggle between play and pause\n *\n * @method handleClick\n */\n\n PlayToggle.prototype.handleClick = function handleClick() {\n if (this.player_.paused()) {\n this.player_.play();\n } else {\n this.player_.pause();\n }\n };\n\n /**\n * Add the vjs-playing class to the element so it can change appearance\n *\n * @method handlePlay\n */\n\n PlayToggle.prototype.handlePlay = function handlePlay() {\n this.removeClass('vjs-paused');\n this.addClass('vjs-playing');\n this.controlText('Pause'); // change the button text to \"Pause\"\n };\n\n /**\n * Add the vjs-paused class to the element so it can change appearance\n *\n * @method handlePause\n */\n\n PlayToggle.prototype.handlePause = function handlePause() {\n this.removeClass('vjs-playing');\n this.addClass('vjs-paused');\n this.controlText('Play'); // change the button text to \"Play\"\n };\n\n return PlayToggle;\n})(_buttonJs2['default']);\n\nPlayToggle.prototype.controlText_ = 'Play';\n\n_componentJs2['default'].registerComponent('PlayToggle', PlayToggle);\nexports['default'] = PlayToggle;\nmodule.exports = exports['default'];\n\n},{\"../button.js\":64,\"../component.js\":67}],73:[function(_dereq_,module,exports){\n/**\n * @file playback-rate-menu-button.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _menuMenuButtonJs = _dereq_('../../menu/menu-button.js');\n\nvar _menuMenuButtonJs2 = _interopRequireDefault(_menuMenuButtonJs);\n\nvar _menuMenuJs = _dereq_('../../menu/menu.js');\n\nvar _menuMenuJs2 = _interopRequireDefault(_menuMenuJs);\n\nvar _playbackRateMenuItemJs = _dereq_('./playback-rate-menu-item.js');\n\nvar _playbackRateMenuItemJs2 = _interopRequireDefault(_playbackRateMenuItemJs);\n\nvar _componentJs = _dereq_('../../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\nvar _utilsDomJs = _dereq_('../../utils/dom.js');\n\nvar Dom = _interopRequireWildcard(_utilsDomJs);\n\n/**\n * The component for controlling the playback rate\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class PlaybackRateMenuButton\n */\n\nvar PlaybackRateMenuButton = (function (_MenuButton) {\n _inherits(PlaybackRateMenuButton, _MenuButton);\n\n function PlaybackRateMenuButton(player, options) {\n _classCallCheck(this, PlaybackRateMenuButton);\n\n _MenuButton.call(this, player, options);\n\n this.updateVisibility();\n this.updateLabel();\n\n this.on(player, 'loadstart', this.updateVisibility);\n this.on(player, 'ratechange', this.updateLabel);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n\n PlaybackRateMenuButton.prototype.createEl = function createEl() {\n var el = _MenuButton.prototype.createEl.call(this);\n\n this.labelEl_ = Dom.createEl('div', {\n className: 'vjs-playback-rate-value',\n innerHTML: 1.0\n });\n\n el.appendChild(this.labelEl_);\n\n return el;\n };\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n\n PlaybackRateMenuButton.prototype.buildCSSClass = function buildCSSClass() {\n return 'vjs-playback-rate ' + _MenuButton.prototype.buildCSSClass.call(this);\n };\n\n /**\n * Create the playback rate menu\n *\n * @return {Menu} Menu object populated with items\n * @method createMenu\n */\n\n PlaybackRateMenuButton.prototype.createMenu = function createMenu() {\n var menu = new _menuMenuJs2['default'](this.player());\n var rates = this.playbackRates();\n\n if (rates) {\n for (var i = rates.length - 1; i >= 0; i--) {\n menu.addChild(new _playbackRateMenuItemJs2['default'](this.player(), { 'rate': rates[i] + 'x' }));\n }\n }\n\n return menu;\n };\n\n /**\n * Updates ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n\n PlaybackRateMenuButton.prototype.updateARIAAttributes = function updateARIAAttributes() {\n // Current playback rate\n this.el().setAttribute('aria-valuenow', this.player().playbackRate());\n };\n\n /**\n * Handle menu item click\n *\n * @method handleClick\n */\n\n PlaybackRateMenuButton.prototype.handleClick = function handleClick() {\n // select next rate option\n var currentRate = this.player().playbackRate();\n var rates = this.playbackRates();\n\n // this will select first one if the last one currently selected\n var newRate = rates[0];\n for (var i = 0; i < rates.length; i++) {\n if (rates[i] > currentRate) {\n newRate = rates[i];\n break;\n }\n }\n this.player().playbackRate(newRate);\n };\n\n /**\n * Get possible playback rates\n *\n * @return {Array} Possible playback rates\n * @method playbackRates\n */\n\n PlaybackRateMenuButton.prototype.playbackRates = function playbackRates() {\n return this.options_['playbackRates'] || this.options_.playerOptions && this.options_.playerOptions['playbackRates'];\n };\n\n /**\n * Get whether playback rates is supported by the tech\n * and an array of playback rates exists\n *\n * @return {Boolean} Whether changing playback rate is supported\n * @method playbackRateSupported\n */\n\n PlaybackRateMenuButton.prototype.playbackRateSupported = function playbackRateSupported() {\n return this.player().tech_ && this.player().tech_['featuresPlaybackRate'] && this.playbackRates() && this.playbackRates().length > 0;\n };\n\n /**\n * Hide playback rate controls when they're no playback rate options to select\n *\n * @method updateVisibility\n */\n\n PlaybackRateMenuButton.prototype.updateVisibility = function updateVisibility() {\n if (this.playbackRateSupported()) {\n this.removeClass('vjs-hidden');\n } else {\n this.addClass('vjs-hidden');\n }\n };\n\n /**\n * Update button label when rate changed\n *\n * @method updateLabel\n */\n\n PlaybackRateMenuButton.prototype.updateLabel = function updateLabel() {\n if (this.playbackRateSupported()) {\n this.labelEl_.innerHTML = this.player().playbackRate() + 'x';\n }\n };\n\n return PlaybackRateMenuButton;\n})(_menuMenuButtonJs2['default']);\n\nPlaybackRateMenuButton.prototype.controlText_ = 'Playback Rate';\n\n_componentJs2['default'].registerComponent('PlaybackRateMenuButton', PlaybackRateMenuButton);\nexports['default'] = PlaybackRateMenuButton;\nmodule.exports = exports['default'];\n\n},{\"../../component.js\":67,\"../../menu/menu-button.js\":106,\"../../menu/menu.js\":108,\"../../utils/dom.js\":134,\"./playback-rate-menu-item.js\":74}],74:[function(_dereq_,module,exports){\n/**\n * @file playback-rate-menu-item.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _menuMenuItemJs = _dereq_('../../menu/menu-item.js');\n\nvar _menuMenuItemJs2 = _interopRequireDefault(_menuMenuItemJs);\n\nvar _componentJs = _dereq_('../../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\n/**\n * The specific menu item type for selecting a playback rate\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class PlaybackRateMenuItem\n */\n\nvar PlaybackRateMenuItem = (function (_MenuItem) {\n _inherits(PlaybackRateMenuItem, _MenuItem);\n\n function PlaybackRateMenuItem(player, options) {\n _classCallCheck(this, PlaybackRateMenuItem);\n\n var label = options['rate'];\n var rate = parseFloat(label, 10);\n\n // Modify options for parent MenuItem class's init.\n options['label'] = label;\n options['selected'] = rate === 1;\n _MenuItem.call(this, player, options);\n\n this.label = label;\n this.rate = rate;\n\n this.on(player, 'ratechange', this.update);\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n\n PlaybackRateMenuItem.prototype.handleClick = function handleClick() {\n _MenuItem.prototype.handleClick.call(this);\n this.player().playbackRate(this.rate);\n };\n\n /**\n * Update playback rate with selected rate\n *\n * @method update\n */\n\n PlaybackRateMenuItem.prototype.update = function update() {\n this.selected(this.player().playbackRate() === this.rate);\n };\n\n return PlaybackRateMenuItem;\n})(_menuMenuItemJs2['default']);\n\nPlaybackRateMenuItem.prototype.contentElType = 'button';\n\n_componentJs2['default'].registerComponent('PlaybackRateMenuItem', PlaybackRateMenuItem);\nexports['default'] = PlaybackRateMenuItem;\nmodule.exports = exports['default'];\n\n},{\"../../component.js\":67,\"../../menu/menu-item.js\":107}],75:[function(_dereq_,module,exports){\n/**\n * @file load-progress-bar.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _componentJs = _dereq_('../../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\nvar _utilsDomJs = _dereq_('../../utils/dom.js');\n\nvar Dom = _interopRequireWildcard(_utilsDomJs);\n\n/**\n * Shows load progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class LoadProgressBar\n */\n\nvar LoadProgressBar = (function (_Component) {\n _inherits(LoadProgressBar, _Component);\n\n function LoadProgressBar(player, options) {\n _classCallCheck(this, LoadProgressBar);\n\n _Component.call(this, player, options);\n this.on(player, 'progress', this.update);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n\n LoadProgressBar.prototype.createEl = function createEl() {\n return _Component.prototype.createEl.call(this, 'div', {\n className: 'vjs-load-progress',\n innerHTML: '' + this.localize('Loaded') + ': 0%'\n });\n };\n\n /**\n * Update progress bar\n *\n * @method update\n */\n\n LoadProgressBar.prototype.update = function update() {\n var buffered = this.player_.buffered();\n var duration = this.player_.duration();\n var bufferedEnd = this.player_.bufferedEnd();\n var children = this.el_.children;\n\n // get the percent width of a time compared to the total end\n var percentify = function percentify(time, end) {\n var percent = time / end || 0; // no NaN\n return (percent >= 1 ? 1 : percent) * 100 + '%';\n };\n\n // update the width of the progress bar\n this.el_.style.width = percentify(bufferedEnd, duration);\n\n // add child elements to represent the individual buffered time ranges\n for (var i = 0; i < buffered.length; i++) {\n var start = buffered.start(i);\n var end = buffered.end(i);\n var part = children[i];\n\n if (!part) {\n part = this.el_.appendChild(Dom.createEl());\n }\n\n // set the percent based on the width of the progress bar (bufferedEnd)\n part.style.left = percentify(start, bufferedEnd);\n part.style.width = percentify(end - start, bufferedEnd);\n }\n\n // remove unused buffered range elements\n for (var i = children.length; i > buffered.length; i--) {\n this.el_.removeChild(children[i - 1]);\n }\n };\n\n return LoadProgressBar;\n})(_componentJs2['default']);\n\n_componentJs2['default'].registerComponent('LoadProgressBar', LoadProgressBar);\nexports['default'] = LoadProgressBar;\nmodule.exports = exports['default'];\n\n},{\"../../component.js\":67,\"../../utils/dom.js\":134}],76:[function(_dereq_,module,exports){\n/**\n * @file mouse-time-display.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _globalWindow = _dereq_('global/window');\n\nvar _globalWindow2 = _interopRequireDefault(_globalWindow);\n\nvar _componentJs = _dereq_('../../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\nvar _utilsDomJs = _dereq_('../../utils/dom.js');\n\nvar Dom = _interopRequireWildcard(_utilsDomJs);\n\nvar _utilsFnJs = _dereq_('../../utils/fn.js');\n\nvar Fn = _interopRequireWildcard(_utilsFnJs);\n\nvar _utilsFormatTimeJs = _dereq_('../../utils/format-time.js');\n\nvar _utilsFormatTimeJs2 = _interopRequireDefault(_utilsFormatTimeJs);\n\nvar _lodashCompatFunctionThrottle = _dereq_('lodash-compat/function/throttle');\n\nvar _lodashCompatFunctionThrottle2 = _interopRequireDefault(_lodashCompatFunctionThrottle);\n\n/**\n * The Mouse Time Display component shows the time you will seek to\n * when hovering over the progress bar\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class MouseTimeDisplay\n */\n\nvar MouseTimeDisplay = (function (_Component) {\n _inherits(MouseTimeDisplay, _Component);\n\n function MouseTimeDisplay(player, options) {\n var _this = this;\n\n _classCallCheck(this, MouseTimeDisplay);\n\n _Component.call(this, player, options);\n\n if (options.playerOptions && options.playerOptions.controlBar && options.playerOptions.controlBar.progressControl && options.playerOptions.controlBar.progressControl.keepTooltipsInside) {\n this.keepTooltipsInside = options.playerOptions.controlBar.progressControl.keepTooltipsInside;\n }\n\n if (this.keepTooltipsInside) {\n this.tooltip = Dom.createEl('div', { className: 'vjs-time-tooltip' });\n this.el().appendChild(this.tooltip);\n this.addClass('vjs-keep-tooltips-inside');\n }\n\n this.update(0, 0);\n\n player.on('ready', function () {\n _this.on(player.controlBar.progressControl.el(), 'mousemove', _lodashCompatFunctionThrottle2['default'](Fn.bind(_this, _this.handleMouseMove), 25));\n });\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n\n MouseTimeDisplay.prototype.createEl = function createEl() {\n return _Component.prototype.createEl.call(this, 'div', {\n className: 'vjs-mouse-display'\n });\n };\n\n MouseTimeDisplay.prototype.handleMouseMove = function handleMouseMove(event) {\n var duration = this.player_.duration();\n var newTime = this.calculateDistance(event) * duration;\n var position = event.pageX - Dom.findElPosition(this.el().parentNode).left;\n\n this.update(newTime, position);\n };\n\n MouseTimeDisplay.prototype.update = function update(newTime, position) {\n var time = _utilsFormatTimeJs2['default'](newTime, this.player_.duration());\n\n this.el().style.left = position + 'px';\n this.el().setAttribute('data-current-time', time);\n\n if (this.keepTooltipsInside) {\n var clampedPosition = this.clampPosition_(position);\n var difference = position - clampedPosition + 1;\n var tooltipWidth = parseFloat(_globalWindow2['default'].getComputedStyle(this.tooltip).width);\n var tooltipWidthHalf = tooltipWidth / 2;\n\n this.tooltip.innerHTML = time;\n this.tooltip.style.right = '-' + (tooltipWidthHalf - difference) + 'px';\n }\n };\n\n MouseTimeDisplay.prototype.calculateDistance = function calculateDistance(event) {\n return Dom.getPointerPosition(this.el().parentNode, event).x;\n };\n\n /**\n * This takes in a horizontal position for the bar and returns a clamped position.\n * Clamped position means that it will keep the position greater than half the width\n * of the tooltip and smaller than the player width minus half the width o the tooltip.\n * It will only clamp the position if `keepTooltipsInside` option is set.\n *\n * @param {Number} position the position the bar wants to be\n * @return {Number} newPosition the (potentially) clamped position\n * @method clampPosition_\n */\n\n MouseTimeDisplay.prototype.clampPosition_ = function clampPosition_(position) {\n if (!this.keepTooltipsInside) {\n return position;\n }\n\n var playerWidth = parseFloat(_globalWindow2['default'].getComputedStyle(this.player().el()).width);\n var tooltipWidth = parseFloat(_globalWindow2['default'].getComputedStyle(this.tooltip).width);\n var tooltipWidthHalf = tooltipWidth / 2;\n var actualPosition = position;\n\n if (position < tooltipWidthHalf) {\n actualPosition = Math.ceil(tooltipWidthHalf);\n } else if (position > playerWidth - tooltipWidthHalf) {\n actualPosition = Math.floor(playerWidth - tooltipWidthHalf);\n }\n\n return actualPosition;\n };\n\n return MouseTimeDisplay;\n})(_componentJs2['default']);\n\n_componentJs2['default'].registerComponent('MouseTimeDisplay', MouseTimeDisplay);\nexports['default'] = MouseTimeDisplay;\nmodule.exports = exports['default'];\n\n},{\"../../component.js\":67,\"../../utils/dom.js\":134,\"../../utils/fn.js\":136,\"../../utils/format-time.js\":137,\"global/window\":2,\"lodash-compat/function/throttle\":7}],77:[function(_dereq_,module,exports){\n/**\n * @file play-progress-bar.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _componentJs = _dereq_('../../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\nvar _utilsFnJs = _dereq_('../../utils/fn.js');\n\nvar Fn = _interopRequireWildcard(_utilsFnJs);\n\nvar _utilsDomJs = _dereq_('../../utils/dom.js');\n\nvar Dom = _interopRequireWildcard(_utilsDomJs);\n\nvar _utilsFormatTimeJs = _dereq_('../../utils/format-time.js');\n\nvar _utilsFormatTimeJs2 = _interopRequireDefault(_utilsFormatTimeJs);\n\n/**\n * Shows play progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class PlayProgressBar\n */\n\nvar PlayProgressBar = (function (_Component) {\n _inherits(PlayProgressBar, _Component);\n\n function PlayProgressBar(player, options) {\n _classCallCheck(this, PlayProgressBar);\n\n _Component.call(this, player, options);\n this.updateDataAttr();\n this.on(player, 'timeupdate', this.updateDataAttr);\n player.ready(Fn.bind(this, this.updateDataAttr));\n\n if (options.playerOptions && options.playerOptions.controlBar && options.playerOptions.controlBar.progressControl && options.playerOptions.controlBar.progressControl.keepTooltipsInside) {\n this.keepTooltipsInside = options.playerOptions.controlBar.progressControl.keepTooltipsInside;\n }\n\n if (this.keepTooltipsInside) {\n this.addClass('vjs-keep-tooltips-inside');\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n\n PlayProgressBar.prototype.createEl = function createEl() {\n return _Component.prototype.createEl.call(this, 'div', {\n className: 'vjs-play-progress vjs-slider-bar',\n innerHTML: '' + this.localize('Progress') + ': 0%'\n });\n };\n\n PlayProgressBar.prototype.updateDataAttr = function updateDataAttr() {\n var time = this.player_.scrubbing() ? this.player_.getCache().currentTime : this.player_.currentTime();\n this.el_.setAttribute('data-current-time', _utilsFormatTimeJs2['default'](time, this.player_.duration()));\n };\n\n return PlayProgressBar;\n})(_componentJs2['default']);\n\n_componentJs2['default'].registerComponent('PlayProgressBar', PlayProgressBar);\nexports['default'] = PlayProgressBar;\nmodule.exports = exports['default'];\n\n},{\"../../component.js\":67,\"../../utils/dom.js\":134,\"../../utils/fn.js\":136,\"../../utils/format-time.js\":137}],78:[function(_dereq_,module,exports){\n/**\n * @file progress-control.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _componentJs = _dereq_('../../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\nvar _seekBarJs = _dereq_('./seek-bar.js');\n\nvar _seekBarJs2 = _interopRequireDefault(_seekBarJs);\n\nvar _mouseTimeDisplayJs = _dereq_('./mouse-time-display.js');\n\nvar _mouseTimeDisplayJs2 = _interopRequireDefault(_mouseTimeDisplayJs);\n\n/**\n * The Progress Control component contains the seek bar, load progress,\n * and play progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class ProgressControl\n */\n\nvar ProgressControl = (function (_Component) {\n _inherits(ProgressControl, _Component);\n\n function ProgressControl() {\n _classCallCheck(this, ProgressControl);\n\n _Component.apply(this, arguments);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n\n ProgressControl.prototype.createEl = function createEl() {\n return _Component.prototype.createEl.call(this, 'div', {\n className: 'vjs-progress-control vjs-control'\n });\n };\n\n return ProgressControl;\n})(_componentJs2['default']);\n\nProgressControl.prototype.options_ = {\n children: ['seekBar']\n};\n\n_componentJs2['default'].registerComponent('ProgressControl', ProgressControl);\nexports['default'] = ProgressControl;\nmodule.exports = exports['default'];\n\n},{\"../../component.js\":67,\"./mouse-time-display.js\":76,\"./seek-bar.js\":79}],79:[function(_dereq_,module,exports){\n/**\n * @file seek-bar.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _globalWindow = _dereq_('global/window');\n\nvar _globalWindow2 = _interopRequireDefault(_globalWindow);\n\nvar _sliderSliderJs = _dereq_('../../slider/slider.js');\n\nvar _sliderSliderJs2 = _interopRequireDefault(_sliderSliderJs);\n\nvar _componentJs = _dereq_('../../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\nvar _loadProgressBarJs = _dereq_('./load-progress-bar.js');\n\nvar _loadProgressBarJs2 = _interopRequireDefault(_loadProgressBarJs);\n\nvar _playProgressBarJs = _dereq_('./play-progress-bar.js');\n\nvar _playProgressBarJs2 = _interopRequireDefault(_playProgressBarJs);\n\nvar _tooltipProgressBarJs = _dereq_('./tooltip-progress-bar.js');\n\nvar _tooltipProgressBarJs2 = _interopRequireDefault(_tooltipProgressBarJs);\n\nvar _utilsFnJs = _dereq_('../../utils/fn.js');\n\nvar Fn = _interopRequireWildcard(_utilsFnJs);\n\nvar _utilsFormatTimeJs = _dereq_('../../utils/format-time.js');\n\nvar _utilsFormatTimeJs2 = _interopRequireDefault(_utilsFormatTimeJs);\n\nvar _objectAssign = _dereq_('object.assign');\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\n/**\n * Seek Bar and holder for the progress bars\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Slider\n * @class SeekBar\n */\n\nvar SeekBar = (function (_Slider) {\n _inherits(SeekBar, _Slider);\n\n function SeekBar(player, options) {\n _classCallCheck(this, SeekBar);\n\n _Slider.call(this, player, options);\n this.on(player, 'timeupdate', this.updateProgress);\n this.on(player, 'ended', this.updateProgress);\n player.ready(Fn.bind(this, this.updateProgress));\n\n if (options.playerOptions && options.playerOptions.controlBar && options.playerOptions.controlBar.progressControl && options.playerOptions.controlBar.progressControl.keepTooltipsInside) {\n this.keepTooltipsInside = options.playerOptions.controlBar.progressControl.keepTooltipsInside;\n }\n\n if (this.keepTooltipsInside) {\n this.tooltipProgressBar = this.addChild('TooltipProgressBar');\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n\n SeekBar.prototype.createEl = function createEl() {\n return _Slider.prototype.createEl.call(this, 'div', {\n className: 'vjs-progress-holder'\n }, {\n 'aria-label': 'progress bar'\n });\n };\n\n /**\n * Update ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n\n SeekBar.prototype.updateProgress = function updateProgress() {\n this.updateAriaAttributes(this.el_);\n\n if (this.keepTooltipsInside) {\n this.updateAriaAttributes(this.tooltipProgressBar.el_);\n this.tooltipProgressBar.el_.style.width = this.bar.el_.style.width;\n\n var playerWidth = parseFloat(_globalWindow2['default'].getComputedStyle(this.player().el()).width);\n var tooltipWidth = parseFloat(_globalWindow2['default'].getComputedStyle(this.tooltipProgressBar.tooltip).width);\n var tooltipStyle = this.tooltipProgressBar.el().style;\n tooltipStyle.maxWidth = Math.floor(playerWidth - tooltipWidth / 2) + 'px';\n tooltipStyle.minWidth = Math.ceil(tooltipWidth / 2) + 'px';\n tooltipStyle.right = '-' + tooltipWidth / 2 + 'px';\n }\n };\n\n SeekBar.prototype.updateAriaAttributes = function updateAriaAttributes(el) {\n // Allows for smooth scrubbing, when player can't keep up.\n var time = this.player_.scrubbing() ? this.player_.getCache().currentTime : this.player_.currentTime();\n el.setAttribute('aria-valuenow', (this.getPercent() * 100).toFixed(2)); // machine readable value of progress bar (percentage complete)\n el.setAttribute('aria-valuetext', _utilsFormatTimeJs2['default'](time, this.player_.duration())); // human readable value of progress bar (time complete)\n };\n\n /**\n * Get percentage of video played\n *\n * @return {Number} Percentage played\n * @method getPercent\n */\n\n SeekBar.prototype.getPercent = function getPercent() {\n var percent = this.player_.currentTime() / this.player_.duration();\n return percent >= 1 ? 1 : percent;\n };\n\n /**\n * Handle mouse down on seek bar\n *\n * @method handleMouseDown\n */\n\n SeekBar.prototype.handleMouseDown = function handleMouseDown(event) {\n _Slider.prototype.handleMouseDown.call(this, event);\n\n this.player_.scrubbing(true);\n\n this.videoWasPlaying = !this.player_.paused();\n this.player_.pause();\n };\n\n /**\n * Handle mouse move on seek bar\n *\n * @method handleMouseMove\n */\n\n SeekBar.prototype.handleMouseMove = function handleMouseMove(event) {\n var newTime = this.calculateDistance(event) * this.player_.duration();\n\n // Don't let video end while scrubbing.\n if (newTime === this.player_.duration()) {\n newTime = newTime - 0.1;\n }\n\n // Set new time (tell player to seek to new time)\n this.player_.currentTime(newTime);\n };\n\n /**\n * Handle mouse up on seek bar\n *\n * @method handleMouseUp\n */\n\n SeekBar.prototype.handleMouseUp = function handleMouseUp(event) {\n _Slider.prototype.handleMouseUp.call(this, event);\n\n this.player_.scrubbing(false);\n if (this.videoWasPlaying) {\n this.player_.play();\n }\n };\n\n /**\n * Move more quickly fast forward for keyboard-only users\n *\n * @method stepForward\n */\n\n SeekBar.prototype.stepForward = function stepForward() {\n this.player_.currentTime(this.player_.currentTime() + 5); // more quickly fast forward for keyboard-only users\n };\n\n /**\n * Move more quickly rewind for keyboard-only users\n *\n * @method stepBack\n */\n\n SeekBar.prototype.stepBack = function stepBack() {\n this.player_.currentTime(this.player_.currentTime() - 5); // more quickly rewind for keyboard-only users\n };\n\n return SeekBar;\n})(_sliderSliderJs2['default']);\n\nSeekBar.prototype.options_ = {\n children: ['loadProgressBar', 'mouseTimeDisplay', 'playProgressBar'],\n 'barName': 'playProgressBar'\n};\n\nSeekBar.prototype.playerEvent = 'timeupdate';\n\n_componentJs2['default'].registerComponent('SeekBar', SeekBar);\nexports['default'] = SeekBar;\nmodule.exports = exports['default'];\n\n},{\"../../component.js\":67,\"../../slider/slider.js\":116,\"../../utils/fn.js\":136,\"../../utils/format-time.js\":137,\"./load-progress-bar.js\":75,\"./play-progress-bar.js\":77,\"./tooltip-progress-bar.js\":80,\"global/window\":2,\"object.assign\":45}],80:[function(_dereq_,module,exports){\n/**\n * @file play-progress-bar.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _componentJs = _dereq_('../../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\nvar _utilsFnJs = _dereq_('../../utils/fn.js');\n\nvar Fn = _interopRequireWildcard(_utilsFnJs);\n\nvar _utilsDomJs = _dereq_('../../utils/dom.js');\n\nvar Dom = _interopRequireWildcard(_utilsDomJs);\n\nvar _utilsFormatTimeJs = _dereq_('../../utils/format-time.js');\n\nvar _utilsFormatTimeJs2 = _interopRequireDefault(_utilsFormatTimeJs);\n\n/**\n * Shows play progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class PlayProgressBar\n */\n\nvar TooltipProgressBar = (function (_Component) {\n _inherits(TooltipProgressBar, _Component);\n\n function TooltipProgressBar(player, options) {\n _classCallCheck(this, TooltipProgressBar);\n\n _Component.call(this, player, options);\n this.updateDataAttr();\n this.on(player, 'timeupdate', this.updateDataAttr);\n player.ready(Fn.bind(this, this.updateDataAttr));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n\n TooltipProgressBar.prototype.createEl = function createEl() {\n var el = _Component.prototype.createEl.call(this, 'div', {\n className: 'vjs-tooltip-progress-bar vjs-slider-bar',\n innerHTML: '\\n ' + this.localize('Progress') + ': 0%'\n });\n\n this.tooltip = el.querySelector('.vjs-time-tooltip');\n\n return el;\n };\n\n TooltipProgressBar.prototype.updateDataAttr = function updateDataAttr() {\n var time = this.player_.scrubbing() ? this.player_.getCache().currentTime : this.player_.currentTime();\n var formattedTime = _utilsFormatTimeJs2['default'](time, this.player_.duration());\n this.el_.setAttribute('data-current-time', formattedTime);\n this.tooltip.innerHTML = formattedTime;\n };\n\n return TooltipProgressBar;\n})(_componentJs2['default']);\n\n_componentJs2['default'].registerComponent('TooltipProgressBar', TooltipProgressBar);\nexports['default'] = TooltipProgressBar;\nmodule.exports = exports['default'];\n\n},{\"../../component.js\":67,\"../../utils/dom.js\":134,\"../../utils/fn.js\":136,\"../../utils/format-time.js\":137}],81:[function(_dereq_,module,exports){\n/**\n * @file custom-control-spacer.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _spacerJs = _dereq_('./spacer.js');\n\nvar _spacerJs2 = _interopRequireDefault(_spacerJs);\n\nvar _componentJs = _dereq_('../../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\n/**\n * Spacer specifically meant to be used as an insertion point for new plugins, etc.\n *\n * @extends Spacer\n * @class CustomControlSpacer\n */\n\nvar CustomControlSpacer = (function (_Spacer) {\n _inherits(CustomControlSpacer, _Spacer);\n\n function CustomControlSpacer() {\n _classCallCheck(this, CustomControlSpacer);\n\n _Spacer.apply(this, arguments);\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n\n CustomControlSpacer.prototype.buildCSSClass = function buildCSSClass() {\n return 'vjs-custom-control-spacer ' + _Spacer.prototype.buildCSSClass.call(this);\n };\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n\n CustomControlSpacer.prototype.createEl = function createEl() {\n var el = _Spacer.prototype.createEl.call(this, {\n className: this.buildCSSClass()\n });\n\n // No-flex/table-cell mode requires there be some content\n // in the cell to fill the remaining space of the table.\n el.innerHTML = ' ';\n return el;\n };\n\n return CustomControlSpacer;\n})(_spacerJs2['default']);\n\n_componentJs2['default'].registerComponent('CustomControlSpacer', CustomControlSpacer);\nexports['default'] = CustomControlSpacer;\nmodule.exports = exports['default'];\n\n},{\"../../component.js\":67,\"./spacer.js\":82}],82:[function(_dereq_,module,exports){\n/**\n * @file spacer.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _componentJs = _dereq_('../../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\n/**\n * Just an empty spacer element that can be used as an append point for plugins, etc.\n * Also can be used to create space between elements when necessary.\n *\n * @extends Component\n * @class Spacer\n */\n\nvar Spacer = (function (_Component) {\n _inherits(Spacer, _Component);\n\n function Spacer() {\n _classCallCheck(this, Spacer);\n\n _Component.apply(this, arguments);\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n\n Spacer.prototype.buildCSSClass = function buildCSSClass() {\n return 'vjs-spacer ' + _Component.prototype.buildCSSClass.call(this);\n };\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n\n Spacer.prototype.createEl = function createEl() {\n return _Component.prototype.createEl.call(this, 'div', {\n className: this.buildCSSClass()\n });\n };\n\n return Spacer;\n})(_componentJs2['default']);\n\n_componentJs2['default'].registerComponent('Spacer', Spacer);\n\nexports['default'] = Spacer;\nmodule.exports = exports['default'];\n\n},{\"../../component.js\":67}],83:[function(_dereq_,module,exports){\n/**\n * @file caption-settings-menu-item.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _textTrackMenuItemJs = _dereq_('./text-track-menu-item.js');\n\nvar _textTrackMenuItemJs2 = _interopRequireDefault(_textTrackMenuItemJs);\n\nvar _componentJs = _dereq_('../../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\n/**\n * The menu item for caption track settings menu\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends TextTrackMenuItem\n * @class CaptionSettingsMenuItem\n */\n\nvar CaptionSettingsMenuItem = (function (_TextTrackMenuItem) {\n _inherits(CaptionSettingsMenuItem, _TextTrackMenuItem);\n\n function CaptionSettingsMenuItem(player, options) {\n _classCallCheck(this, CaptionSettingsMenuItem);\n\n options['track'] = {\n 'kind': options['kind'],\n 'player': player,\n 'label': options['kind'] + ' settings',\n 'selectable': false,\n 'default': false,\n mode: 'disabled'\n };\n\n // CaptionSettingsMenuItem has no concept of 'selected'\n options['selectable'] = false;\n\n _TextTrackMenuItem.call(this, player, options);\n this.addClass('vjs-texttrack-settings');\n this.controlText(', opens ' + options['kind'] + ' settings dialog');\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n\n CaptionSettingsMenuItem.prototype.handleClick = function handleClick() {\n this.player().getChild('textTrackSettings').show();\n this.player().getChild('textTrackSettings').el_.focus();\n };\n\n return CaptionSettingsMenuItem;\n})(_textTrackMenuItemJs2['default']);\n\n_componentJs2['default'].registerComponent('CaptionSettingsMenuItem', CaptionSettingsMenuItem);\nexports['default'] = CaptionSettingsMenuItem;\nmodule.exports = exports['default'];\n\n},{\"../../component.js\":67,\"./text-track-menu-item.js\":91}],84:[function(_dereq_,module,exports){\n/**\n * @file captions-button.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _textTrackButtonJs = _dereq_('./text-track-button.js');\n\nvar _textTrackButtonJs2 = _interopRequireDefault(_textTrackButtonJs);\n\nvar _componentJs = _dereq_('../../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\nvar _captionSettingsMenuItemJs = _dereq_('./caption-settings-menu-item.js');\n\nvar _captionSettingsMenuItemJs2 = _interopRequireDefault(_captionSettingsMenuItemJs);\n\n/**\n * The button component for toggling and selecting captions\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class CaptionsButton\n */\n\nvar CaptionsButton = (function (_TextTrackButton) {\n _inherits(CaptionsButton, _TextTrackButton);\n\n function CaptionsButton(player, options, ready) {\n _classCallCheck(this, CaptionsButton);\n\n _TextTrackButton.call(this, player, options, ready);\n this.el_.setAttribute('aria-label', 'Captions Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n\n CaptionsButton.prototype.buildCSSClass = function buildCSSClass() {\n return 'vjs-captions-button ' + _TextTrackButton.prototype.buildCSSClass.call(this);\n };\n\n /**\n * Update caption menu items\n *\n * @method update\n */\n\n CaptionsButton.prototype.update = function update() {\n var threshold = 2;\n _TextTrackButton.prototype.update.call(this);\n\n // if native, then threshold is 1 because no settings button\n if (this.player().tech_ && this.player().tech_['featuresNativeTextTracks']) {\n threshold = 1;\n }\n\n if (this.items && this.items.length > threshold) {\n this.show();\n } else {\n this.hide();\n }\n };\n\n /**\n * Create caption menu items\n *\n * @return {Array} Array of menu items\n * @method createItems\n */\n\n CaptionsButton.prototype.createItems = function createItems() {\n var items = [];\n\n if (!(this.player().tech_ && this.player().tech_['featuresNativeTextTracks'])) {\n items.push(new _captionSettingsMenuItemJs2['default'](this.player_, { 'kind': this.kind_ }));\n }\n\n return _TextTrackButton.prototype.createItems.call(this, items);\n };\n\n return CaptionsButton;\n})(_textTrackButtonJs2['default']);\n\nCaptionsButton.prototype.kind_ = 'captions';\nCaptionsButton.prototype.controlText_ = 'Captions';\n\n_componentJs2['default'].registerComponent('CaptionsButton', CaptionsButton);\nexports['default'] = CaptionsButton;\nmodule.exports = exports['default'];\n\n},{\"../../component.js\":67,\"./caption-settings-menu-item.js\":83,\"./text-track-button.js\":90}],85:[function(_dereq_,module,exports){\n/**\n * @file chapters-button.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _textTrackButtonJs = _dereq_('./text-track-button.js');\n\nvar _textTrackButtonJs2 = _interopRequireDefault(_textTrackButtonJs);\n\nvar _componentJs = _dereq_('../../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\nvar _textTrackMenuItemJs = _dereq_('./text-track-menu-item.js');\n\nvar _textTrackMenuItemJs2 = _interopRequireDefault(_textTrackMenuItemJs);\n\nvar _chaptersTrackMenuItemJs = _dereq_('./chapters-track-menu-item.js');\n\nvar _chaptersTrackMenuItemJs2 = _interopRequireDefault(_chaptersTrackMenuItemJs);\n\nvar _menuMenuJs = _dereq_('../../menu/menu.js');\n\nvar _menuMenuJs2 = _interopRequireDefault(_menuMenuJs);\n\nvar _utilsDomJs = _dereq_('../../utils/dom.js');\n\nvar Dom = _interopRequireWildcard(_utilsDomJs);\n\nvar _utilsFnJs = _dereq_('../../utils/fn.js');\n\nvar Fn = _interopRequireWildcard(_utilsFnJs);\n\nvar _utilsToTitleCaseJs = _dereq_('../../utils/to-title-case.js');\n\nvar _utilsToTitleCaseJs2 = _interopRequireDefault(_utilsToTitleCaseJs);\n\nvar _globalWindow = _dereq_('global/window');\n\nvar _globalWindow2 = _interopRequireDefault(_globalWindow);\n\n/**\n * The button component for toggling and selecting chapters\n * Chapters act much differently than other text tracks\n * Cues are navigation vs. other tracks of alternative languages\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class ChaptersButton\n */\n\nvar ChaptersButton = (function (_TextTrackButton) {\n _inherits(ChaptersButton, _TextTrackButton);\n\n function ChaptersButton(player, options, ready) {\n _classCallCheck(this, ChaptersButton);\n\n _TextTrackButton.call(this, player, options, ready);\n this.el_.setAttribute('aria-label', 'Chapters Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n\n ChaptersButton.prototype.buildCSSClass = function buildCSSClass() {\n return 'vjs-chapters-button ' + _TextTrackButton.prototype.buildCSSClass.call(this);\n };\n\n /**\n * Create a menu item for each text track\n *\n * @return {Array} Array of menu items\n * @method createItems\n */\n\n ChaptersButton.prototype.createItems = function createItems() {\n var items = [];\n\n var tracks = this.player_.textTracks();\n\n if (!tracks) {\n return items;\n }\n\n for (var i = 0; i < tracks.length; i++) {\n var track = tracks[i];\n if (track['kind'] === this.kind_) {\n items.push(new _textTrackMenuItemJs2['default'](this.player_, {\n 'track': track\n }));\n }\n }\n\n return items;\n };\n\n /**\n * Create menu from chapter buttons\n *\n * @return {Menu} Menu of chapter buttons\n * @method createMenu\n */\n\n ChaptersButton.prototype.createMenu = function createMenu() {\n var _this = this;\n\n var tracks = this.player_.textTracks() || [];\n var chaptersTrack = undefined;\n var items = this.items = [];\n\n for (var i = 0, _length = tracks.length; i < _length; i++) {\n var track = tracks[i];\n\n if (track['kind'] === this.kind_) {\n chaptersTrack = track;\n\n break;\n }\n }\n\n var menu = this.menu;\n if (menu === undefined) {\n menu = new _menuMenuJs2['default'](this.player_);\n var title = Dom.createEl('li', {\n className: 'vjs-menu-title',\n innerHTML: _utilsToTitleCaseJs2['default'](this.kind_),\n tabIndex: -1\n });\n menu.children_.unshift(title);\n Dom.insertElFirst(title, menu.contentEl());\n }\n\n if (chaptersTrack && chaptersTrack.cues == null) {\n chaptersTrack['mode'] = 'hidden';\n\n var remoteTextTrackEl = this.player_.remoteTextTrackEls().getTrackElementByTrack_(chaptersTrack);\n\n if (remoteTextTrackEl) {\n remoteTextTrackEl.addEventListener('load', function (event) {\n return _this.update();\n });\n }\n }\n\n if (chaptersTrack && chaptersTrack.cues && chaptersTrack.cues.length > 0) {\n var cues = chaptersTrack['cues'],\n cue = undefined;\n\n for (var i = 0, l = cues.length; i < l; i++) {\n cue = cues[i];\n\n var mi = new _chaptersTrackMenuItemJs2['default'](this.player_, {\n 'track': chaptersTrack,\n 'cue': cue\n });\n\n items.push(mi);\n\n menu.addChild(mi);\n }\n\n this.addChild(menu);\n }\n\n if (this.items.length > 0) {\n this.show();\n }\n\n return menu;\n };\n\n return ChaptersButton;\n})(_textTrackButtonJs2['default']);\n\nChaptersButton.prototype.kind_ = 'chapters';\nChaptersButton.prototype.controlText_ = 'Chapters';\n\n_componentJs2['default'].registerComponent('ChaptersButton', ChaptersButton);\nexports['default'] = ChaptersButton;\nmodule.exports = exports['default'];\n\n},{\"../../component.js\":67,\"../../menu/menu.js\":108,\"../../utils/dom.js\":134,\"../../utils/fn.js\":136,\"../../utils/to-title-case.js\":143,\"./chapters-track-menu-item.js\":86,\"./text-track-button.js\":90,\"./text-track-menu-item.js\":91,\"global/window\":2}],86:[function(_dereq_,module,exports){\n/**\n * @file chapters-track-menu-item.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _menuMenuItemJs = _dereq_('../../menu/menu-item.js');\n\nvar _menuMenuItemJs2 = _interopRequireDefault(_menuMenuItemJs);\n\nvar _componentJs = _dereq_('../../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\nvar _utilsFnJs = _dereq_('../../utils/fn.js');\n\nvar Fn = _interopRequireWildcard(_utilsFnJs);\n\n/**\n * The chapter track menu item\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class ChaptersTrackMenuItem\n */\n\nvar ChaptersTrackMenuItem = (function (_MenuItem) {\n _inherits(ChaptersTrackMenuItem, _MenuItem);\n\n function ChaptersTrackMenuItem(player, options) {\n _classCallCheck(this, ChaptersTrackMenuItem);\n\n var track = options['track'];\n var cue = options['cue'];\n var currentTime = player.currentTime();\n\n // Modify options for parent MenuItem class's init.\n options['label'] = cue.text;\n options['selected'] = cue['startTime'] <= currentTime && currentTime < cue['endTime'];\n _MenuItem.call(this, player, options);\n\n this.track = track;\n this.cue = cue;\n track.addEventListener('cuechange', Fn.bind(this, this.update));\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n\n ChaptersTrackMenuItem.prototype.handleClick = function handleClick() {\n _MenuItem.prototype.handleClick.call(this);\n this.player_.currentTime(this.cue.startTime);\n this.update(this.cue.startTime);\n };\n\n /**\n * Update chapter menu item\n *\n * @method update\n */\n\n ChaptersTrackMenuItem.prototype.update = function update() {\n var cue = this.cue;\n var currentTime = this.player_.currentTime();\n\n // vjs.log(currentTime, cue.startTime);\n this.selected(cue['startTime'] <= currentTime && currentTime < cue['endTime']);\n };\n\n return ChaptersTrackMenuItem;\n})(_menuMenuItemJs2['default']);\n\n_componentJs2['default'].registerComponent('ChaptersTrackMenuItem', ChaptersTrackMenuItem);\nexports['default'] = ChaptersTrackMenuItem;\nmodule.exports = exports['default'];\n\n},{\"../../component.js\":67,\"../../menu/menu-item.js\":107,\"../../utils/fn.js\":136}],87:[function(_dereq_,module,exports){\n/**\n * @file descriptions-button.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _textTrackButtonJs = _dereq_('./text-track-button.js');\n\nvar _textTrackButtonJs2 = _interopRequireDefault(_textTrackButtonJs);\n\nvar _componentJs = _dereq_('../../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\nvar _utilsFnJs = _dereq_('../../utils/fn.js');\n\nvar Fn = _interopRequireWildcard(_utilsFnJs);\n\n/**\n * The button component for toggling and selecting descriptions\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class DescriptionsButton\n */\n\nvar DescriptionsButton = (function (_TextTrackButton) {\n _inherits(DescriptionsButton, _TextTrackButton);\n\n function DescriptionsButton(player, options, ready) {\n var _this = this;\n\n _classCallCheck(this, DescriptionsButton);\n\n _TextTrackButton.call(this, player, options, ready);\n this.el_.setAttribute('aria-label', 'Descriptions Menu');\n\n var tracks = player.textTracks();\n\n if (tracks) {\n (function () {\n var changeHandler = Fn.bind(_this, _this.handleTracksChange);\n\n tracks.addEventListener('change', changeHandler);\n _this.on('dispose', function () {\n tracks.removeEventListener('change', changeHandler);\n });\n })();\n }\n }\n\n /**\n * Handle text track change\n *\n * @method handleTracksChange\n */\n\n DescriptionsButton.prototype.handleTracksChange = function handleTracksChange(event) {\n var tracks = this.player().textTracks();\n var disabled = false;\n\n // Check whether a track of a different kind is showing\n for (var i = 0, l = tracks.length; i < l; i++) {\n var track = tracks[i];\n if (track['kind'] !== this.kind_ && track['mode'] === 'showing') {\n disabled = true;\n break;\n }\n }\n\n // If another track is showing, disable this menu button\n if (disabled) {\n this.disable();\n } else {\n this.enable();\n }\n };\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n\n DescriptionsButton.prototype.buildCSSClass = function buildCSSClass() {\n return 'vjs-descriptions-button ' + _TextTrackButton.prototype.buildCSSClass.call(this);\n };\n\n return DescriptionsButton;\n})(_textTrackButtonJs2['default']);\n\nDescriptionsButton.prototype.kind_ = 'descriptions';\nDescriptionsButton.prototype.controlText_ = 'Descriptions';\n\n_componentJs2['default'].registerComponent('DescriptionsButton', DescriptionsButton);\nexports['default'] = DescriptionsButton;\nmodule.exports = exports['default'];\n\n},{\"../../component.js\":67,\"../../utils/fn.js\":136,\"./text-track-button.js\":90}],88:[function(_dereq_,module,exports){\n/**\n * @file off-text-track-menu-item.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _textTrackMenuItemJs = _dereq_('./text-track-menu-item.js');\n\nvar _textTrackMenuItemJs2 = _interopRequireDefault(_textTrackMenuItemJs);\n\nvar _componentJs = _dereq_('../../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\n/**\n * A special menu item for turning of a specific type of text track\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends TextTrackMenuItem\n * @class OffTextTrackMenuItem\n */\n\nvar OffTextTrackMenuItem = (function (_TextTrackMenuItem) {\n _inherits(OffTextTrackMenuItem, _TextTrackMenuItem);\n\n function OffTextTrackMenuItem(player, options) {\n _classCallCheck(this, OffTextTrackMenuItem);\n\n // Create pseudo track info\n // Requires options['kind']\n options['track'] = {\n 'kind': options['kind'],\n 'player': player,\n 'label': options['kind'] + ' off',\n 'default': false,\n 'mode': 'disabled'\n };\n\n // MenuItem is selectable\n options['selectable'] = true;\n\n _TextTrackMenuItem.call(this, player, options);\n this.selected(true);\n }\n\n /**\n * Handle text track change\n *\n * @param {Object} event Event object\n * @method handleTracksChange\n */\n\n OffTextTrackMenuItem.prototype.handleTracksChange = function handleTracksChange(event) {\n var tracks = this.player().textTracks();\n var selected = true;\n\n for (var i = 0, l = tracks.length; i < l; i++) {\n var track = tracks[i];\n if (track['kind'] === this.track['kind'] && track['mode'] === 'showing') {\n selected = false;\n break;\n }\n }\n\n this.selected(selected);\n };\n\n return OffTextTrackMenuItem;\n})(_textTrackMenuItemJs2['default']);\n\n_componentJs2['default'].registerComponent('OffTextTrackMenuItem', OffTextTrackMenuItem);\nexports['default'] = OffTextTrackMenuItem;\nmodule.exports = exports['default'];\n\n},{\"../../component.js\":67,\"./text-track-menu-item.js\":91}],89:[function(_dereq_,module,exports){\n/**\n * @file subtitles-button.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _textTrackButtonJs = _dereq_('./text-track-button.js');\n\nvar _textTrackButtonJs2 = _interopRequireDefault(_textTrackButtonJs);\n\nvar _componentJs = _dereq_('../../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\n/**\n * The button component for toggling and selecting subtitles\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class SubtitlesButton\n */\n\nvar SubtitlesButton = (function (_TextTrackButton) {\n _inherits(SubtitlesButton, _TextTrackButton);\n\n function SubtitlesButton(player, options, ready) {\n _classCallCheck(this, SubtitlesButton);\n\n _TextTrackButton.call(this, player, options, ready);\n this.el_.setAttribute('aria-label', 'Subtitles Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n\n SubtitlesButton.prototype.buildCSSClass = function buildCSSClass() {\n return 'vjs-subtitles-button ' + _TextTrackButton.prototype.buildCSSClass.call(this);\n };\n\n return SubtitlesButton;\n})(_textTrackButtonJs2['default']);\n\nSubtitlesButton.prototype.kind_ = 'subtitles';\nSubtitlesButton.prototype.controlText_ = 'Subtitles';\n\n_componentJs2['default'].registerComponent('SubtitlesButton', SubtitlesButton);\nexports['default'] = SubtitlesButton;\nmodule.exports = exports['default'];\n\n},{\"../../component.js\":67,\"./text-track-button.js\":90}],90:[function(_dereq_,module,exports){\n/**\n * @file text-track-button.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _menuMenuButtonJs = _dereq_('../../menu/menu-button.js');\n\nvar _menuMenuButtonJs2 = _interopRequireDefault(_menuMenuButtonJs);\n\nvar _componentJs = _dereq_('../../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\nvar _utilsFnJs = _dereq_('../../utils/fn.js');\n\nvar Fn = _interopRequireWildcard(_utilsFnJs);\n\nvar _textTrackMenuItemJs = _dereq_('./text-track-menu-item.js');\n\nvar _textTrackMenuItemJs2 = _interopRequireDefault(_textTrackMenuItemJs);\n\nvar _offTextTrackMenuItemJs = _dereq_('./off-text-track-menu-item.js');\n\nvar _offTextTrackMenuItemJs2 = _interopRequireDefault(_offTextTrackMenuItemJs);\n\n/**\n * The base class for buttons that toggle specific text track types (e.g. subtitles)\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class TextTrackButton\n */\n\nvar TextTrackButton = (function (_MenuButton) {\n _inherits(TextTrackButton, _MenuButton);\n\n function TextTrackButton(player, options) {\n _classCallCheck(this, TextTrackButton);\n\n _MenuButton.call(this, player, options);\n\n var tracks = this.player_.textTracks();\n\n if (this.items.length <= 1) {\n this.hide();\n }\n\n if (!tracks) {\n return;\n }\n\n var updateHandler = Fn.bind(this, this.update);\n tracks.addEventListener('removetrack', updateHandler);\n tracks.addEventListener('addtrack', updateHandler);\n\n this.player_.on('dispose', function () {\n tracks.removeEventListener('removetrack', updateHandler);\n tracks.removeEventListener('addtrack', updateHandler);\n });\n }\n\n // Create a menu item for each text track\n\n TextTrackButton.prototype.createItems = function createItems() {\n var items = arguments.length <= 0 || arguments[0] === undefined ? [] : arguments[0];\n\n // Add an OFF menu item to turn all tracks off\n items.push(new _offTextTrackMenuItemJs2['default'](this.player_, { 'kind': this.kind_ }));\n\n var tracks = this.player_.textTracks();\n\n if (!tracks) {\n return items;\n }\n\n for (var i = 0; i < tracks.length; i++) {\n var track = tracks[i];\n\n // only add tracks that are of the appropriate kind and have a label\n if (track['kind'] === this.kind_) {\n items.push(new _textTrackMenuItemJs2['default'](this.player_, {\n // MenuItem is selectable\n 'selectable': true,\n 'track': track\n }));\n }\n }\n\n return items;\n };\n\n return TextTrackButton;\n})(_menuMenuButtonJs2['default']);\n\n_componentJs2['default'].registerComponent('TextTrackButton', TextTrackButton);\nexports['default'] = TextTrackButton;\nmodule.exports = exports['default'];\n\n},{\"../../component.js\":67,\"../../menu/menu-button.js\":106,\"../../utils/fn.js\":136,\"./off-text-track-menu-item.js\":88,\"./text-track-menu-item.js\":91}],91:[function(_dereq_,module,exports){\n/**\n * @file text-track-menu-item.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _menuMenuItemJs = _dereq_('../../menu/menu-item.js');\n\nvar _menuMenuItemJs2 = _interopRequireDefault(_menuMenuItemJs);\n\nvar _componentJs = _dereq_('../../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\nvar _utilsFnJs = _dereq_('../../utils/fn.js');\n\nvar Fn = _interopRequireWildcard(_utilsFnJs);\n\nvar _globalWindow = _dereq_('global/window');\n\nvar _globalWindow2 = _interopRequireDefault(_globalWindow);\n\nvar _globalDocument = _dereq_('global/document');\n\nvar _globalDocument2 = _interopRequireDefault(_globalDocument);\n\n/**\n * The specific menu item type for selecting a language within a text track kind\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class TextTrackMenuItem\n */\n\nvar TextTrackMenuItem = (function (_MenuItem) {\n _inherits(TextTrackMenuItem, _MenuItem);\n\n function TextTrackMenuItem(player, options) {\n var _this = this;\n\n _classCallCheck(this, TextTrackMenuItem);\n\n var track = options['track'];\n var tracks = player.textTracks();\n\n // Modify options for parent MenuItem class's init.\n options['label'] = track['label'] || track['language'] || 'Unknown';\n options['selected'] = track['default'] || track['mode'] === 'showing';\n\n _MenuItem.call(this, player, options);\n\n this.track = track;\n\n if (tracks) {\n (function () {\n var changeHandler = Fn.bind(_this, _this.handleTracksChange);\n\n tracks.addEventListener('change', changeHandler);\n _this.on('dispose', function () {\n tracks.removeEventListener('change', changeHandler);\n });\n })();\n }\n\n // iOS7 doesn't dispatch change events to TextTrackLists when an\n // associated track's mode changes. Without something like\n // Object.observe() (also not present on iOS7), it's not\n // possible to detect changes to the mode attribute and polyfill\n // the change event. As a poor substitute, we manually dispatch\n // change events whenever the controls modify the mode.\n if (tracks && tracks.onchange === undefined) {\n (function () {\n var event = undefined;\n\n _this.on(['tap', 'click'], function () {\n if (typeof _globalWindow2['default'].Event !== 'object') {\n // Android 2.3 throws an Illegal Constructor error for window.Event\n try {\n event = new _globalWindow2['default'].Event('change');\n } catch (err) {}\n }\n\n if (!event) {\n event = _globalDocument2['default'].createEvent('Event');\n event.initEvent('change', true, true);\n }\n\n tracks.dispatchEvent(event);\n });\n })();\n }\n }\n\n /**\n * Handle click on text track\n *\n * @method handleClick\n */\n\n TextTrackMenuItem.prototype.handleClick = function handleClick(event) {\n var kind = this.track['kind'];\n var tracks = this.player_.textTracks();\n\n _MenuItem.prototype.handleClick.call(this, event);\n\n if (!tracks) return;\n\n for (var i = 0; i < tracks.length; i++) {\n var track = tracks[i];\n\n if (track['kind'] !== kind) {\n continue;\n }\n\n if (track === this.track) {\n track['mode'] = 'showing';\n } else {\n track['mode'] = 'disabled';\n }\n }\n };\n\n /**\n * Handle text track change\n *\n * @method handleTracksChange\n */\n\n TextTrackMenuItem.prototype.handleTracksChange = function handleTracksChange(event) {\n this.selected(this.track['mode'] === 'showing');\n };\n\n return TextTrackMenuItem;\n})(_menuMenuItemJs2['default']);\n\n_componentJs2['default'].registerComponent('TextTrackMenuItem', TextTrackMenuItem);\nexports['default'] = TextTrackMenuItem;\nmodule.exports = exports['default'];\n\n},{\"../../component.js\":67,\"../../menu/menu-item.js\":107,\"../../utils/fn.js\":136,\"global/document\":1,\"global/window\":2}],92:[function(_dereq_,module,exports){\n/**\n * @file current-time-display.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _componentJs = _dereq_('../../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\nvar _utilsDomJs = _dereq_('../../utils/dom.js');\n\nvar Dom = _interopRequireWildcard(_utilsDomJs);\n\nvar _utilsFormatTimeJs = _dereq_('../../utils/format-time.js');\n\nvar _utilsFormatTimeJs2 = _interopRequireDefault(_utilsFormatTimeJs);\n\n/**\n * Displays the current time\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class CurrentTimeDisplay\n */\n\nvar CurrentTimeDisplay = (function (_Component) {\n _inherits(CurrentTimeDisplay, _Component);\n\n function CurrentTimeDisplay(player, options) {\n _classCallCheck(this, CurrentTimeDisplay);\n\n _Component.call(this, player, options);\n\n this.on(player, 'timeupdate', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n\n CurrentTimeDisplay.prototype.createEl = function createEl() {\n var el = _Component.prototype.createEl.call(this, 'div', {\n className: 'vjs-current-time vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-current-time-display',\n // label the current time for screen reader users\n innerHTML: 'Current Time ' + '0:00'\n }, {\n // tell screen readers not to automatically read the time as it changes\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n };\n\n /**\n * Update current time display\n *\n * @method updateContent\n */\n\n CurrentTimeDisplay.prototype.updateContent = function updateContent() {\n // Allows for smooth scrubbing, when player can't keep up.\n var time = this.player_.scrubbing() ? this.player_.getCache().currentTime : this.player_.currentTime();\n var localizedText = this.localize('Current Time');\n var formattedTime = _utilsFormatTimeJs2['default'](time, this.player_.duration());\n if (formattedTime !== this.formattedTime_) {\n this.formattedTime_ = formattedTime;\n this.contentEl_.innerHTML = '' + localizedText + ' ' + formattedTime;\n }\n };\n\n return CurrentTimeDisplay;\n})(_componentJs2['default']);\n\n_componentJs2['default'].registerComponent('CurrentTimeDisplay', CurrentTimeDisplay);\nexports['default'] = CurrentTimeDisplay;\nmodule.exports = exports['default'];\n\n},{\"../../component.js\":67,\"../../utils/dom.js\":134,\"../../utils/format-time.js\":137}],93:[function(_dereq_,module,exports){\n/**\n * @file duration-display.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _componentJs = _dereq_('../../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\nvar _utilsDomJs = _dereq_('../../utils/dom.js');\n\nvar Dom = _interopRequireWildcard(_utilsDomJs);\n\nvar _utilsFormatTimeJs = _dereq_('../../utils/format-time.js');\n\nvar _utilsFormatTimeJs2 = _interopRequireDefault(_utilsFormatTimeJs);\n\n/**\n * Displays the duration\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class DurationDisplay\n */\n\nvar DurationDisplay = (function (_Component) {\n _inherits(DurationDisplay, _Component);\n\n function DurationDisplay(player, options) {\n _classCallCheck(this, DurationDisplay);\n\n _Component.call(this, player, options);\n\n // this might need to be changed to 'durationchange' instead of 'timeupdate' eventually,\n // however the durationchange event fires before this.player_.duration() is set,\n // so the value cannot be written out using this method.\n // Once the order of durationchange and this.player_.duration() being set is figured out,\n // this can be updated.\n this.on(player, 'timeupdate', this.updateContent);\n this.on(player, 'loadedmetadata', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n\n DurationDisplay.prototype.createEl = function createEl() {\n var el = _Component.prototype.createEl.call(this, 'div', {\n className: 'vjs-duration vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-duration-display',\n // label the duration time for screen reader users\n innerHTML: '' + this.localize('Duration Time') + ' 0:00'\n }, {\n // tell screen readers not to automatically read the time as it changes\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n };\n\n /**\n * Update duration time display\n *\n * @method updateContent\n */\n\n DurationDisplay.prototype.updateContent = function updateContent() {\n var duration = this.player_.duration();\n if (duration && this.duration_ !== duration) {\n this.duration_ = duration;\n var localizedText = this.localize('Duration Time');\n var formattedTime = _utilsFormatTimeJs2['default'](duration);\n this.contentEl_.innerHTML = '' + localizedText + ' ' + formattedTime; // label the duration time for screen reader users\n }\n };\n\n return DurationDisplay;\n})(_componentJs2['default']);\n\n_componentJs2['default'].registerComponent('DurationDisplay', DurationDisplay);\nexports['default'] = DurationDisplay;\nmodule.exports = exports['default'];\n\n},{\"../../component.js\":67,\"../../utils/dom.js\":134,\"../../utils/format-time.js\":137}],94:[function(_dereq_,module,exports){\n/**\n * @file remaining-time-display.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _componentJs = _dereq_('../../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\nvar _utilsDomJs = _dereq_('../../utils/dom.js');\n\nvar Dom = _interopRequireWildcard(_utilsDomJs);\n\nvar _utilsFormatTimeJs = _dereq_('../../utils/format-time.js');\n\nvar _utilsFormatTimeJs2 = _interopRequireDefault(_utilsFormatTimeJs);\n\n/**\n * Displays the time left in the video\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class RemainingTimeDisplay\n */\n\nvar RemainingTimeDisplay = (function (_Component) {\n _inherits(RemainingTimeDisplay, _Component);\n\n function RemainingTimeDisplay(player, options) {\n _classCallCheck(this, RemainingTimeDisplay);\n\n _Component.call(this, player, options);\n\n this.on(player, 'timeupdate', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n\n RemainingTimeDisplay.prototype.createEl = function createEl() {\n var el = _Component.prototype.createEl.call(this, 'div', {\n className: 'vjs-remaining-time vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-remaining-time-display',\n // label the remaining time for screen reader users\n innerHTML: '' + this.localize('Remaining Time') + ' -0:00'\n }, {\n // tell screen readers not to automatically read the time as it changes\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n };\n\n /**\n * Update remaining time display\n *\n * @method updateContent\n */\n\n RemainingTimeDisplay.prototype.updateContent = function updateContent() {\n if (this.player_.duration()) {\n var localizedText = this.localize('Remaining Time');\n var formattedTime = _utilsFormatTimeJs2['default'](this.player_.remainingTime());\n if (formattedTime !== this.formattedTime_) {\n this.formattedTime_ = formattedTime;\n this.contentEl_.innerHTML = '' + localizedText + ' -' + formattedTime;\n }\n }\n\n // Allows for smooth scrubbing, when player can't keep up.\n // var time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n // this.contentEl_.innerHTML = vjs.formatTime(time, this.player_.duration());\n };\n\n return RemainingTimeDisplay;\n})(_componentJs2['default']);\n\n_componentJs2['default'].registerComponent('RemainingTimeDisplay', RemainingTimeDisplay);\nexports['default'] = RemainingTimeDisplay;\nmodule.exports = exports['default'];\n\n},{\"../../component.js\":67,\"../../utils/dom.js\":134,\"../../utils/format-time.js\":137}],95:[function(_dereq_,module,exports){\n/**\n * @file time-divider.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _componentJs = _dereq_('../../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\n/**\n * The separator between the current time and duration.\n * Can be hidden if it's not needed in the design.\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class TimeDivider\n */\n\nvar TimeDivider = (function (_Component) {\n _inherits(TimeDivider, _Component);\n\n function TimeDivider() {\n _classCallCheck(this, TimeDivider);\n\n _Component.apply(this, arguments);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n\n TimeDivider.prototype.createEl = function createEl() {\n return _Component.prototype.createEl.call(this, 'div', {\n className: 'vjs-time-control vjs-time-divider',\n innerHTML: '
/
'\n });\n };\n\n return TimeDivider;\n})(_componentJs2['default']);\n\n_componentJs2['default'].registerComponent('TimeDivider', TimeDivider);\nexports['default'] = TimeDivider;\nmodule.exports = exports['default'];\n\n},{\"../../component.js\":67}],96:[function(_dereq_,module,exports){\n/**\n * @file volume-bar.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _sliderSliderJs = _dereq_('../../slider/slider.js');\n\nvar _sliderSliderJs2 = _interopRequireDefault(_sliderSliderJs);\n\nvar _componentJs = _dereq_('../../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\nvar _utilsFnJs = _dereq_('../../utils/fn.js');\n\nvar Fn = _interopRequireWildcard(_utilsFnJs);\n\n// Required children\n\nvar _volumeLevelJs = _dereq_('./volume-level.js');\n\nvar _volumeLevelJs2 = _interopRequireDefault(_volumeLevelJs);\n\n/**\n * The bar that contains the volume level and can be clicked on to adjust the level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Slider\n * @class VolumeBar\n */\n\nvar VolumeBar = (function (_Slider) {\n _inherits(VolumeBar, _Slider);\n\n function VolumeBar(player, options) {\n _classCallCheck(this, VolumeBar);\n\n _Slider.call(this, player, options);\n this.on(player, 'volumechange', this.updateARIAAttributes);\n player.ready(Fn.bind(this, this.updateARIAAttributes));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n\n VolumeBar.prototype.createEl = function createEl() {\n return _Slider.prototype.createEl.call(this, 'div', {\n className: 'vjs-volume-bar vjs-slider-bar'\n }, {\n 'aria-label': 'volume level'\n });\n };\n\n /**\n * Handle mouse move on volume bar\n *\n * @method handleMouseMove\n */\n\n VolumeBar.prototype.handleMouseMove = function handleMouseMove(event) {\n this.checkMuted();\n this.player_.volume(this.calculateDistance(event));\n };\n\n VolumeBar.prototype.checkMuted = function checkMuted() {\n if (this.player_.muted()) {\n this.player_.muted(false);\n }\n };\n\n /**\n * Get percent of volume level\n *\n * @retun {Number} Volume level percent\n * @method getPercent\n */\n\n VolumeBar.prototype.getPercent = function getPercent() {\n if (this.player_.muted()) {\n return 0;\n } else {\n return this.player_.volume();\n }\n };\n\n /**\n * Increase volume level for keyboard users\n *\n * @method stepForward\n */\n\n VolumeBar.prototype.stepForward = function stepForward() {\n this.checkMuted();\n this.player_.volume(this.player_.volume() + 0.1);\n };\n\n /**\n * Decrease volume level for keyboard users\n *\n * @method stepBack\n */\n\n VolumeBar.prototype.stepBack = function stepBack() {\n this.checkMuted();\n this.player_.volume(this.player_.volume() - 0.1);\n };\n\n /**\n * Update ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n\n VolumeBar.prototype.updateARIAAttributes = function updateARIAAttributes() {\n // Current value of volume bar as a percentage\n var volume = (this.player_.volume() * 100).toFixed(2);\n this.el_.setAttribute('aria-valuenow', volume);\n this.el_.setAttribute('aria-valuetext', volume + '%');\n };\n\n return VolumeBar;\n})(_sliderSliderJs2['default']);\n\nVolumeBar.prototype.options_ = {\n children: ['volumeLevel'],\n 'barName': 'volumeLevel'\n};\n\nVolumeBar.prototype.playerEvent = 'volumechange';\n\n_componentJs2['default'].registerComponent('VolumeBar', VolumeBar);\nexports['default'] = VolumeBar;\nmodule.exports = exports['default'];\n\n},{\"../../component.js\":67,\"../../slider/slider.js\":116,\"../../utils/fn.js\":136,\"./volume-level.js\":98}],97:[function(_dereq_,module,exports){\n/**\n * @file volume-control.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _componentJs = _dereq_('../../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\n// Required children\n\nvar _volumeBarJs = _dereq_('./volume-bar.js');\n\nvar _volumeBarJs2 = _interopRequireDefault(_volumeBarJs);\n\n/**\n * The component for controlling the volume level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class VolumeControl\n */\n\nvar VolumeControl = (function (_Component) {\n _inherits(VolumeControl, _Component);\n\n function VolumeControl(player, options) {\n _classCallCheck(this, VolumeControl);\n\n _Component.call(this, player, options);\n\n // hide volume controls when they're not supported by the current tech\n if (player.tech_ && player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n }\n this.on(player, 'loadstart', function () {\n if (player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n });\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n\n VolumeControl.prototype.createEl = function createEl() {\n return _Component.prototype.createEl.call(this, 'div', {\n className: 'vjs-volume-control vjs-control'\n });\n };\n\n return VolumeControl;\n})(_componentJs2['default']);\n\nVolumeControl.prototype.options_ = {\n children: ['volumeBar']\n};\n\n_componentJs2['default'].registerComponent('VolumeControl', VolumeControl);\nexports['default'] = VolumeControl;\nmodule.exports = exports['default'];\n\n},{\"../../component.js\":67,\"./volume-bar.js\":96}],98:[function(_dereq_,module,exports){\n/**\n * @file volume-level.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _componentJs = _dereq_('../../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\n/**\n * Shows volume level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class VolumeLevel\n */\n\nvar VolumeLevel = (function (_Component) {\n _inherits(VolumeLevel, _Component);\n\n function VolumeLevel() {\n _classCallCheck(this, VolumeLevel);\n\n _Component.apply(this, arguments);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n\n VolumeLevel.prototype.createEl = function createEl() {\n return _Component.prototype.createEl.call(this, 'div', {\n className: 'vjs-volume-level',\n innerHTML: ''\n });\n };\n\n return VolumeLevel;\n})(_componentJs2['default']);\n\n_componentJs2['default'].registerComponent('VolumeLevel', VolumeLevel);\nexports['default'] = VolumeLevel;\nmodule.exports = exports['default'];\n\n},{\"../../component.js\":67}],99:[function(_dereq_,module,exports){\n/**\n * @file volume-menu-button.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _utilsFnJs = _dereq_('../utils/fn.js');\n\nvar Fn = _interopRequireWildcard(_utilsFnJs);\n\nvar _componentJs = _dereq_('../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\nvar _popupPopupJs = _dereq_('../popup/popup.js');\n\nvar _popupPopupJs2 = _interopRequireDefault(_popupPopupJs);\n\nvar _popupPopupButtonJs = _dereq_('../popup/popup-button.js');\n\nvar _popupPopupButtonJs2 = _interopRequireDefault(_popupPopupButtonJs);\n\nvar _muteToggleJs = _dereq_('./mute-toggle.js');\n\nvar _muteToggleJs2 = _interopRequireDefault(_muteToggleJs);\n\nvar _volumeControlVolumeBarJs = _dereq_('./volume-control/volume-bar.js');\n\nvar _volumeControlVolumeBarJs2 = _interopRequireDefault(_volumeControlVolumeBarJs);\n\n/**\n * Button for volume popup\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends PopupButton\n * @class VolumeMenuButton\n */\n\nvar VolumeMenuButton = (function (_PopupButton) {\n _inherits(VolumeMenuButton, _PopupButton);\n\n function VolumeMenuButton(player) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n _classCallCheck(this, VolumeMenuButton);\n\n // Default to inline\n if (options.inline === undefined) {\n options.inline = true;\n }\n\n // If the vertical option isn't passed at all, default to true.\n if (options.vertical === undefined) {\n // If an inline volumeMenuButton is used, we should default to using\n // a horizontal slider for obvious reasons.\n if (options.inline) {\n options.vertical = false;\n } else {\n options.vertical = true;\n }\n }\n\n // The vertical option needs to be set on the volumeBar as well,\n // since that will need to be passed along to the VolumeBar constructor\n options.volumeBar = options.volumeBar || {};\n options.volumeBar.vertical = !!options.vertical;\n\n _PopupButton.call(this, player, options);\n\n // Same listeners as MuteToggle\n this.on(player, 'volumechange', this.volumeUpdate);\n this.on(player, 'loadstart', this.volumeUpdate);\n\n // hide mute toggle if the current tech doesn't support volume control\n function updateVisibility() {\n if (player.tech_ && player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n }\n\n updateVisibility.call(this);\n this.on(player, 'loadstart', updateVisibility);\n\n this.on(this.volumeBar, ['slideractive', 'focus'], function () {\n this.addClass('vjs-slider-active');\n });\n\n this.on(this.volumeBar, ['sliderinactive', 'blur'], function () {\n this.removeClass('vjs-slider-active');\n });\n\n this.on(this.volumeBar, ['focus'], function () {\n this.addClass('vjs-lock-showing');\n });\n\n this.on(this.volumeBar, ['blur'], function () {\n this.removeClass('vjs-lock-showing');\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n\n VolumeMenuButton.prototype.buildCSSClass = function buildCSSClass() {\n var orientationClass = '';\n if (!!this.options_.vertical) {\n orientationClass = 'vjs-volume-menu-button-vertical';\n } else {\n orientationClass = 'vjs-volume-menu-button-horizontal';\n }\n\n return 'vjs-volume-menu-button ' + _PopupButton.prototype.buildCSSClass.call(this) + ' ' + orientationClass;\n };\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {Popup} The volume popup button\n * @method createPopup\n */\n\n VolumeMenuButton.prototype.createPopup = function createPopup() {\n var popup = new _popupPopupJs2['default'](this.player_, {\n contentElType: 'div'\n });\n\n var vb = new _volumeControlVolumeBarJs2['default'](this.player_, this.options_.volumeBar);\n\n popup.addChild(vb);\n\n this.menuContent = popup;\n this.volumeBar = vb;\n\n this.attachVolumeBarEvents();\n\n return popup;\n };\n\n /**\n * Handle click on volume popup and calls super\n *\n * @method handleClick\n */\n\n VolumeMenuButton.prototype.handleClick = function handleClick() {\n _muteToggleJs2['default'].prototype.handleClick.call(this);\n _PopupButton.prototype.handleClick.call(this);\n };\n\n VolumeMenuButton.prototype.attachVolumeBarEvents = function attachVolumeBarEvents() {\n this.menuContent.on(['mousedown', 'touchdown'], Fn.bind(this, this.handleMouseDown));\n };\n\n VolumeMenuButton.prototype.handleMouseDown = function handleMouseDown(event) {\n this.on(['mousemove', 'touchmove'], Fn.bind(this.volumeBar, this.volumeBar.handleMouseMove));\n this.on(this.el_.ownerDocument, ['mouseup', 'touchend'], this.handleMouseUp);\n };\n\n VolumeMenuButton.prototype.handleMouseUp = function handleMouseUp(event) {\n this.off(['mousemove', 'touchmove'], Fn.bind(this.volumeBar, this.volumeBar.handleMouseMove));\n };\n\n return VolumeMenuButton;\n})(_popupPopupButtonJs2['default']);\n\nVolumeMenuButton.prototype.volumeUpdate = _muteToggleJs2['default'].prototype.update;\nVolumeMenuButton.prototype.controlText_ = 'Mute';\n\n_componentJs2['default'].registerComponent('VolumeMenuButton', VolumeMenuButton);\nexports['default'] = VolumeMenuButton;\nmodule.exports = exports['default'];\n\n},{\"../component.js\":67,\"../popup/popup-button.js\":112,\"../popup/popup.js\":113,\"../utils/fn.js\":136,\"./mute-toggle.js\":71,\"./volume-control/volume-bar.js\":96}],100:[function(_dereq_,module,exports){\n/**\n * @file error-display.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _component = _dereq_('./component');\n\nvar _component2 = _interopRequireDefault(_component);\n\nvar _modalDialog = _dereq_('./modal-dialog');\n\nvar _modalDialog2 = _interopRequireDefault(_modalDialog);\n\nvar _utilsDom = _dereq_('./utils/dom');\n\nvar Dom = _interopRequireWildcard(_utilsDom);\n\nvar _utilsMergeOptions = _dereq_('./utils/merge-options');\n\nvar _utilsMergeOptions2 = _interopRequireDefault(_utilsMergeOptions);\n\n/**\n * Display that an error has occurred making the video unplayable.\n *\n * @extends ModalDialog\n * @class ErrorDisplay\n */\n\nvar ErrorDisplay = (function (_ModalDialog) {\n _inherits(ErrorDisplay, _ModalDialog);\n\n /**\n * Constructor for error display modal.\n *\n * @param {Player} player\n * @param {Object} [options]\n */\n\n function ErrorDisplay(player, options) {\n _classCallCheck(this, ErrorDisplay);\n\n _ModalDialog.call(this, player, options);\n this.on(player, 'error', this.open);\n }\n\n /**\n * Include the old class for backward-compatibility.\n *\n * This can be removed in 6.0.\n *\n * @method buildCSSClass\n * @deprecated\n * @return {String}\n */\n\n ErrorDisplay.prototype.buildCSSClass = function buildCSSClass() {\n return 'vjs-error-display ' + _ModalDialog.prototype.buildCSSClass.call(this);\n };\n\n /**\n * Generates the modal content based on the player error.\n *\n * @return {String|Null}\n */\n\n ErrorDisplay.prototype.content = function content() {\n var error = this.player().error();\n return error ? this.localize(error.message) : '';\n };\n\n return ErrorDisplay;\n})(_modalDialog2['default']);\n\nErrorDisplay.prototype.options_ = _utilsMergeOptions2['default'](_modalDialog2['default'].prototype.options_, {\n fillAlways: true,\n temporary: false,\n uncloseable: true\n});\n\n_component2['default'].registerComponent('ErrorDisplay', ErrorDisplay);\nexports['default'] = ErrorDisplay;\nmodule.exports = exports['default'];\n\n},{\"./component\":67,\"./modal-dialog\":109,\"./utils/dom\":134,\"./utils/merge-options\":140}],101:[function(_dereq_,module,exports){\n/**\n * @file event-target.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _utilsEventsJs = _dereq_('./utils/events.js');\n\nvar Events = _interopRequireWildcard(_utilsEventsJs);\n\nvar EventTarget = function EventTarget() {};\n\nEventTarget.prototype.allowedEvents_ = {};\n\nEventTarget.prototype.on = function (type, fn) {\n // Remove the addEventListener alias before calling Events.on\n // so we don't get into an infinite type loop\n var ael = this.addEventListener;\n this.addEventListener = Function.prototype;\n Events.on(this, type, fn);\n this.addEventListener = ael;\n};\nEventTarget.prototype.addEventListener = EventTarget.prototype.on;\n\nEventTarget.prototype.off = function (type, fn) {\n Events.off(this, type, fn);\n};\nEventTarget.prototype.removeEventListener = EventTarget.prototype.off;\n\nEventTarget.prototype.one = function (type, fn) {\n Events.one(this, type, fn);\n};\n\nEventTarget.prototype.trigger = function (event) {\n var type = event.type || event;\n\n if (typeof event === 'string') {\n event = {\n type: type\n };\n }\n event = Events.fixEvent(event);\n\n if (this.allowedEvents_[type] && this['on' + type]) {\n this['on' + type](event);\n }\n\n Events.trigger(this, event);\n};\n// The standard DOM EventTarget.dispatchEvent() is aliased to trigger()\nEventTarget.prototype.dispatchEvent = EventTarget.prototype.trigger;\n\nexports['default'] = EventTarget;\nmodule.exports = exports['default'];\n\n},{\"./utils/events.js\":135}],102:[function(_dereq_,module,exports){\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utilsLog = _dereq_('./utils/log');\n\nvar _utilsLog2 = _interopRequireDefault(_utilsLog);\n\n/*\n * @file extend.js\n *\n * A combination of node inherits and babel's inherits (after transpile).\n * Both work the same but node adds `super_` to the subClass\n * and Bable adds the superClass as __proto__. Both seem useful.\n */\nvar _inherits = function _inherits(subClass, superClass) {\n if (typeof superClass !== 'function' && superClass !== null) {\n throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n\n if (superClass) {\n // node\n subClass.super_ = superClass;\n }\n};\n\n/*\n * Function for subclassing using the same inheritance that\n * videojs uses internally\n * ```js\n * var Button = videojs.getComponent('Button');\n * ```\n * ```js\n * var MyButton = videojs.extend(Button, {\n * constructor: function(player, options) {\n * Button.call(this, player, options);\n * },\n * onClick: function() {\n * // doSomething\n * }\n * });\n * ```\n */\nvar extendFn = function extendFn(superClass) {\n var subClassMethods = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var subClass = function subClass() {\n superClass.apply(this, arguments);\n };\n var methods = {};\n\n if (typeof subClassMethods === 'object') {\n if (typeof subClassMethods.init === 'function') {\n _utilsLog2['default'].warn('Constructor logic via init() is deprecated; please use constructor() instead.');\n subClassMethods.constructor = subClassMethods.init;\n }\n if (subClassMethods.constructor !== Object.prototype.constructor) {\n subClass = subClassMethods.constructor;\n }\n methods = subClassMethods;\n } else if (typeof subClassMethods === 'function') {\n subClass = subClassMethods;\n }\n\n _inherits(subClass, superClass);\n\n // Extend subObj's prototype with functions and other properties from props\n for (var name in methods) {\n if (methods.hasOwnProperty(name)) {\n subClass.prototype[name] = methods[name];\n }\n }\n\n return subClass;\n};\n\nexports['default'] = extendFn;\nmodule.exports = exports['default'];\n\n},{\"./utils/log\":139}],103:[function(_dereq_,module,exports){\n/**\n * @file fullscreen-api.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _globalDocument = _dereq_('global/document');\n\nvar _globalDocument2 = _interopRequireDefault(_globalDocument);\n\n/*\n * Store the browser-specific methods for the fullscreen API\n * @type {Object|undefined}\n * @private\n */\nvar FullscreenApi = {};\n\n// browser API methods\n// map approach from Screenful.js - https://github.com/sindresorhus/screenfull.js\nvar apiMap = [\n// Spec: https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html\n['requestFullscreen', 'exitFullscreen', 'fullscreenElement', 'fullscreenEnabled', 'fullscreenchange', 'fullscreenerror'],\n// WebKit\n['webkitRequestFullscreen', 'webkitExitFullscreen', 'webkitFullscreenElement', 'webkitFullscreenEnabled', 'webkitfullscreenchange', 'webkitfullscreenerror'],\n// Old WebKit (Safari 5.1)\n['webkitRequestFullScreen', 'webkitCancelFullScreen', 'webkitCurrentFullScreenElement', 'webkitCancelFullScreen', 'webkitfullscreenchange', 'webkitfullscreenerror'],\n// Mozilla\n['mozRequestFullScreen', 'mozCancelFullScreen', 'mozFullScreenElement', 'mozFullScreenEnabled', 'mozfullscreenchange', 'mozfullscreenerror'],\n// Microsoft\n['msRequestFullscreen', 'msExitFullscreen', 'msFullscreenElement', 'msFullscreenEnabled', 'MSFullscreenChange', 'MSFullscreenError']];\n\nvar specApi = apiMap[0];\nvar browserApi = undefined;\n\n// determine the supported set of functions\nfor (var i = 0; i < apiMap.length; i++) {\n // check for exitFullscreen function\n if (apiMap[i][1] in _globalDocument2['default']) {\n browserApi = apiMap[i];\n break;\n }\n}\n\n// map the browser API names to the spec API names\nif (browserApi) {\n for (var i = 0; i < browserApi.length; i++) {\n FullscreenApi[specApi[i]] = browserApi[i];\n }\n}\n\nexports['default'] = FullscreenApi;\nmodule.exports = exports['default'];\n\n},{\"global/document\":1}],104:[function(_dereq_,module,exports){\n/**\n * @file loading-spinner.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _component = _dereq_('./component');\n\nvar _component2 = _interopRequireDefault(_component);\n\n/* Loading Spinner\n================================================================================ */\n/**\n * Loading spinner for waiting events\n *\n * @extends Component\n * @class LoadingSpinner\n */\n\nvar LoadingSpinner = (function (_Component) {\n _inherits(LoadingSpinner, _Component);\n\n function LoadingSpinner() {\n _classCallCheck(this, LoadingSpinner);\n\n _Component.apply(this, arguments);\n }\n\n /**\n * Create the component's DOM element\n *\n * @method createEl\n */\n\n LoadingSpinner.prototype.createEl = function createEl() {\n return _Component.prototype.createEl.call(this, 'div', {\n className: 'vjs-loading-spinner',\n dir: 'ltr'\n });\n };\n\n return LoadingSpinner;\n})(_component2['default']);\n\n_component2['default'].registerComponent('LoadingSpinner', LoadingSpinner);\nexports['default'] = LoadingSpinner;\nmodule.exports = exports['default'];\n\n},{\"./component\":67}],105:[function(_dereq_,module,exports){\n/**\n * @file media-error.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _objectAssign = _dereq_('object.assign');\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\n/*\n * Custom MediaError to mimic the HTML5 MediaError\n *\n * @param {Number} code The media error code\n */\nvar MediaError = function MediaError(code) {\n if (typeof code === 'number') {\n this.code = code;\n } else if (typeof code === 'string') {\n // default code is zero, so this is a custom error\n this.message = code;\n } else if (typeof code === 'object') {\n // object\n _objectAssign2['default'](this, code);\n }\n\n if (!this.message) {\n this.message = MediaError.defaultMessages[this.code] || '';\n }\n};\n\n/*\n * The error code that refers two one of the defined\n * MediaError types\n *\n * @type {Number}\n */\nMediaError.prototype.code = 0;\n\n/*\n * An optional message to be shown with the error.\n * Message is not part of the HTML5 video spec\n * but allows for more informative custom errors.\n *\n * @type {String}\n */\nMediaError.prototype.message = '';\n\n/*\n * An optional status code that can be set by plugins\n * to allow even more detail about the error.\n * For example the HLS plugin might provide the specific\n * HTTP status code that was returned when the error\n * occurred, then allowing a custom error overlay\n * to display more information.\n *\n * @type {Array}\n */\nMediaError.prototype.status = null;\n\nMediaError.errorTypes = ['MEDIA_ERR_CUSTOM', // = 0\n'MEDIA_ERR_ABORTED', // = 1\n'MEDIA_ERR_NETWORK', // = 2\n'MEDIA_ERR_DECODE', // = 3\n'MEDIA_ERR_SRC_NOT_SUPPORTED', // = 4\n'MEDIA_ERR_ENCRYPTED' // = 5\n];\n\nMediaError.defaultMessages = {\n 1: 'You aborted the media playback',\n 2: 'A network error caused the media download to fail part-way.',\n 3: 'The media playback was aborted due to a corruption problem or because the media used features your browser did not support.',\n 4: 'The media could not be loaded, either because the server or network failed or because the format is not supported.',\n 5: 'The media is encrypted and we do not have the keys to decrypt it.'\n};\n\n// Add types as properties on MediaError\n// e.g. MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED = 4;\nfor (var errNum = 0; errNum < MediaError.errorTypes.length; errNum++) {\n MediaError[MediaError.errorTypes[errNum]] = errNum;\n // values should be accessible on both the class and instance\n MediaError.prototype[MediaError.errorTypes[errNum]] = errNum;\n}\n\nexports['default'] = MediaError;\nmodule.exports = exports['default'];\n\n},{\"object.assign\":45}],106:[function(_dereq_,module,exports){\n/**\n * @file menu-button.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _clickableComponentJs = _dereq_('../clickable-component.js');\n\nvar _clickableComponentJs2 = _interopRequireDefault(_clickableComponentJs);\n\nvar _componentJs = _dereq_('../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\nvar _menuJs = _dereq_('./menu.js');\n\nvar _menuJs2 = _interopRequireDefault(_menuJs);\n\nvar _utilsDomJs = _dereq_('../utils/dom.js');\n\nvar Dom = _interopRequireWildcard(_utilsDomJs);\n\nvar _utilsFnJs = _dereq_('../utils/fn.js');\n\nvar Fn = _interopRequireWildcard(_utilsFnJs);\n\nvar _utilsToTitleCaseJs = _dereq_('../utils/to-title-case.js');\n\nvar _utilsToTitleCaseJs2 = _interopRequireDefault(_utilsToTitleCaseJs);\n\n/**\n * A button class with a popup menu\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class MenuButton\n */\n\nvar MenuButton = (function (_ClickableComponent) {\n _inherits(MenuButton, _ClickableComponent);\n\n function MenuButton(player) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n _classCallCheck(this, MenuButton);\n\n _ClickableComponent.call(this, player, options);\n\n this.update();\n\n this.enabled_ = true;\n\n this.el_.setAttribute('aria-haspopup', 'true');\n this.el_.setAttribute('role', 'menuitem');\n this.on('keydown', this.handleSubmenuKeyPress);\n }\n\n /**\n * Update menu\n *\n * @method update\n */\n\n MenuButton.prototype.update = function update() {\n var menu = this.createMenu();\n\n if (this.menu) {\n this.removeChild(this.menu);\n }\n\n this.menu = menu;\n this.addChild(menu);\n\n /**\n * Track the state of the menu button\n *\n * @type {Boolean}\n * @private\n */\n this.buttonPressed_ = false;\n this.el_.setAttribute('aria-expanded', 'false');\n\n if (this.items && this.items.length === 0) {\n this.hide();\n } else if (this.items && this.items.length > 1) {\n this.show();\n }\n };\n\n /**\n * Create menu\n *\n * @return {Menu} The constructed menu\n * @method createMenu\n */\n\n MenuButton.prototype.createMenu = function createMenu() {\n var menu = new _menuJs2['default'](this.player_);\n\n // Add a title list item to the top\n if (this.options_.title) {\n var title = Dom.createEl('li', {\n className: 'vjs-menu-title',\n innerHTML: _utilsToTitleCaseJs2['default'](this.options_.title),\n tabIndex: -1\n });\n menu.children_.unshift(title);\n Dom.insertElFirst(title, menu.contentEl());\n }\n\n this.items = this['createItems']();\n\n if (this.items) {\n // Add menu items to the menu\n for (var i = 0; i < this.items.length; i++) {\n menu.addItem(this.items[i]);\n }\n }\n\n return menu;\n };\n\n /**\n * Create the list of menu items. Specific to each subclass.\n *\n * @method createItems\n */\n\n MenuButton.prototype.createItems = function createItems() {};\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n\n MenuButton.prototype.createEl = function createEl() {\n return _ClickableComponent.prototype.createEl.call(this, 'div', {\n className: this.buildCSSClass()\n });\n };\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n\n MenuButton.prototype.buildCSSClass = function buildCSSClass() {\n var menuButtonClass = 'vjs-menu-button';\n\n // If the inline option is passed, we want to use different styles altogether.\n if (this.options_.inline === true) {\n menuButtonClass += '-inline';\n } else {\n menuButtonClass += '-popup';\n }\n\n return 'vjs-menu-button ' + menuButtonClass + ' ' + _ClickableComponent.prototype.buildCSSClass.call(this);\n };\n\n /**\n * When you click the button it adds focus, which\n * will show the menu indefinitely.\n * So we'll remove focus when the mouse leaves the button.\n * Focus is needed for tab navigation.\n * Allow sub components to stack CSS class names\n *\n * @method handleClick\n */\n\n MenuButton.prototype.handleClick = function handleClick() {\n this.one('mouseout', Fn.bind(this, function () {\n this.menu.unlockShowing();\n this.el_.blur();\n }));\n if (this.buttonPressed_) {\n this.unpressButton();\n } else {\n this.pressButton();\n }\n };\n\n /**\n * Handle key press on menu\n *\n * @param {Object} event Key press event\n * @method handleKeyPress\n */\n\n MenuButton.prototype.handleKeyPress = function handleKeyPress(event) {\n\n // Escape (27) key or Tab (9) key unpress the 'button'\n if (event.which === 27 || event.which === 9) {\n if (this.buttonPressed_) {\n this.unpressButton();\n }\n // Don't preventDefault for Tab key - we still want to lose focus\n if (event.which !== 9) {\n event.preventDefault();\n }\n // Up (38) key or Down (40) key press the 'button'\n } else if (event.which === 38 || event.which === 40) {\n if (!this.buttonPressed_) {\n this.pressButton();\n event.preventDefault();\n }\n } else {\n _ClickableComponent.prototype.handleKeyPress.call(this, event);\n }\n };\n\n /**\n * Handle key press on submenu\n *\n * @param {Object} event Key press event\n * @method handleSubmenuKeyPress\n */\n\n MenuButton.prototype.handleSubmenuKeyPress = function handleSubmenuKeyPress(event) {\n\n // Escape (27) key or Tab (9) key unpress the 'button'\n if (event.which === 27 || event.which === 9) {\n if (this.buttonPressed_) {\n this.unpressButton();\n }\n // Don't preventDefault for Tab key - we still want to lose focus\n if (event.which !== 9) {\n event.preventDefault();\n }\n }\n };\n\n /**\n * Makes changes based on button pressed\n *\n * @method pressButton\n */\n\n MenuButton.prototype.pressButton = function pressButton() {\n if (this.enabled_) {\n this.buttonPressed_ = true;\n this.menu.lockShowing();\n this.el_.setAttribute('aria-expanded', 'true');\n this.menu.focus(); // set the focus into the submenu\n }\n };\n\n /**\n * Makes changes based on button unpressed\n *\n * @method unpressButton\n */\n\n MenuButton.prototype.unpressButton = function unpressButton() {\n if (this.enabled_) {\n this.buttonPressed_ = false;\n this.menu.unlockShowing();\n this.el_.setAttribute('aria-expanded', 'false');\n this.el_.focus(); // Set focus back to this menu button\n }\n };\n\n /**\n * Disable the menu button\n *\n * @return {Component}\n * @method disable\n */\n\n MenuButton.prototype.disable = function disable() {\n // Unpress, but don't force focus on this button\n this.buttonPressed_ = false;\n this.menu.unlockShowing();\n this.el_.setAttribute('aria-expanded', 'false');\n\n this.enabled_ = false;\n\n return _ClickableComponent.prototype.disable.call(this);\n };\n\n /**\n * Enable the menu button\n *\n * @return {Component}\n * @method disable\n */\n\n MenuButton.prototype.enable = function enable() {\n this.enabled_ = true;\n\n return _ClickableComponent.prototype.enable.call(this);\n };\n\n return MenuButton;\n})(_clickableComponentJs2['default']);\n\n_componentJs2['default'].registerComponent('MenuButton', MenuButton);\nexports['default'] = MenuButton;\nmodule.exports = exports['default'];\n\n},{\"../clickable-component.js\":65,\"../component.js\":67,\"../utils/dom.js\":134,\"../utils/fn.js\":136,\"../utils/to-title-case.js\":143,\"./menu.js\":108}],107:[function(_dereq_,module,exports){\n/**\n * @file menu-item.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _clickableComponentJs = _dereq_('../clickable-component.js');\n\nvar _clickableComponentJs2 = _interopRequireDefault(_clickableComponentJs);\n\nvar _componentJs = _dereq_('../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\nvar _objectAssign = _dereq_('object.assign');\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\n/**\n * The component for a menu item. `
`\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class MenuItem\n */\n\nvar MenuItem = (function (_ClickableComponent) {\n _inherits(MenuItem, _ClickableComponent);\n\n function MenuItem(player, options) {\n _classCallCheck(this, MenuItem);\n\n _ClickableComponent.call(this, player, options);\n\n this.selectable = options['selectable'];\n\n this.selected(options['selected']);\n\n if (this.selectable) {\n // TODO: May need to be either menuitemcheckbox or menuitemradio,\n // and may need logical grouping of menu items.\n this.el_.setAttribute('role', 'menuitemcheckbox');\n } else {\n this.el_.setAttribute('role', 'menuitem');\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} type Desc\n * @param {Object=} props Desc\n * @return {Element}\n * @method createEl\n */\n\n MenuItem.prototype.createEl = function createEl(type, props, attrs) {\n return _ClickableComponent.prototype.createEl.call(this, 'li', _objectAssign2['default']({\n className: 'vjs-menu-item',\n innerHTML: this.localize(this.options_['label']),\n tabIndex: -1\n }, props), attrs);\n };\n\n /**\n * Handle a click on the menu item, and set it to selected\n *\n * @method handleClick\n */\n\n MenuItem.prototype.handleClick = function handleClick() {\n this.selected(true);\n };\n\n /**\n * Set this menu item as selected or not\n *\n * @param {Boolean} selected\n * @method selected\n */\n\n MenuItem.prototype.selected = function selected(_selected) {\n if (this.selectable) {\n if (_selected) {\n this.addClass('vjs-selected');\n this.el_.setAttribute('aria-checked', 'true');\n // aria-checked isn't fully supported by browsers/screen readers,\n // so indicate selected state to screen reader in the control text.\n this.controlText(', selected');\n } else {\n this.removeClass('vjs-selected');\n this.el_.setAttribute('aria-checked', 'false');\n // Indicate un-selected state to screen reader\n // Note that a space clears out the selected state text\n this.controlText(' ');\n }\n }\n };\n\n return MenuItem;\n})(_clickableComponentJs2['default']);\n\n_componentJs2['default'].registerComponent('MenuItem', MenuItem);\nexports['default'] = MenuItem;\nmodule.exports = exports['default'];\n\n},{\"../clickable-component.js\":65,\"../component.js\":67,\"object.assign\":45}],108:[function(_dereq_,module,exports){\n/**\n * @file menu.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _componentJs = _dereq_('../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\nvar _utilsDomJs = _dereq_('../utils/dom.js');\n\nvar Dom = _interopRequireWildcard(_utilsDomJs);\n\nvar _utilsFnJs = _dereq_('../utils/fn.js');\n\nvar Fn = _interopRequireWildcard(_utilsFnJs);\n\nvar _utilsEventsJs = _dereq_('../utils/events.js');\n\nvar Events = _interopRequireWildcard(_utilsEventsJs);\n\n/**\n * The Menu component is used to build pop up menus, including subtitle and\n * captions selection menus.\n *\n * @extends Component\n * @class Menu\n */\n\nvar Menu = (function (_Component) {\n _inherits(Menu, _Component);\n\n function Menu(player, options) {\n _classCallCheck(this, Menu);\n\n _Component.call(this, player, options);\n\n this.focusedChild_ = -1;\n\n this.on('keydown', this.handleKeyPress);\n }\n\n /**\n * Add a menu item to the menu\n *\n * @param {Object|String} component Component or component type to add\n * @method addItem\n */\n\n Menu.prototype.addItem = function addItem(component) {\n this.addChild(component);\n component.on('click', Fn.bind(this, function () {\n this.unlockShowing();\n //TODO: Need to set keyboard focus back to the menuButton\n }));\n };\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n\n Menu.prototype.createEl = function createEl() {\n var contentElType = this.options_.contentElType || 'ul';\n this.contentEl_ = Dom.createEl(contentElType, {\n className: 'vjs-menu-content'\n });\n this.contentEl_.setAttribute('role', 'menu');\n var el = _Component.prototype.createEl.call(this, 'div', {\n append: this.contentEl_,\n className: 'vjs-menu'\n });\n el.setAttribute('role', 'presentation');\n el.appendChild(this.contentEl_);\n\n // Prevent clicks from bubbling up. Needed for Menu Buttons,\n // where a click on the parent is significant\n Events.on(el, 'click', function (event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n });\n\n return el;\n };\n\n /**\n * Handle key press for menu\n *\n * @param {Object} event Event object\n * @method handleKeyPress\n */\n\n Menu.prototype.handleKeyPress = function handleKeyPress(event) {\n if (event.which === 37 || event.which === 40) {\n // Left and Down Arrows\n event.preventDefault();\n this.stepForward();\n } else if (event.which === 38 || event.which === 39) {\n // Up and Right Arrows\n event.preventDefault();\n this.stepBack();\n }\n };\n\n /**\n * Move to next (lower) menu item for keyboard users\n *\n * @method stepForward\n */\n\n Menu.prototype.stepForward = function stepForward() {\n var stepChild = 0;\n\n if (this.focusedChild_ !== undefined) {\n stepChild = this.focusedChild_ + 1;\n }\n this.focus(stepChild);\n };\n\n /**\n * Move to previous (higher) menu item for keyboard users\n *\n * @method stepBack\n */\n\n Menu.prototype.stepBack = function stepBack() {\n var stepChild = 0;\n\n if (this.focusedChild_ !== undefined) {\n stepChild = this.focusedChild_ - 1;\n }\n this.focus(stepChild);\n };\n\n /**\n * Set focus on a menu item in the menu\n *\n * @param {Object|String} item Index of child item set focus on\n * @method focus\n */\n\n Menu.prototype.focus = function focus() {\n var item = arguments.length <= 0 || arguments[0] === undefined ? 0 : arguments[0];\n\n var children = this.children().slice();\n var haveTitle = children.length && children[0].className && /vjs-menu-title/.test(children[0].className);\n\n if (haveTitle) {\n children.shift();\n }\n\n if (children.length > 0) {\n if (item < 0) {\n item = 0;\n } else if (item >= children.length) {\n item = children.length - 1;\n }\n\n this.focusedChild_ = item;\n\n children[item].el_.focus();\n }\n };\n\n return Menu;\n})(_componentJs2['default']);\n\n_componentJs2['default'].registerComponent('Menu', Menu);\nexports['default'] = Menu;\nmodule.exports = exports['default'];\n\n},{\"../component.js\":67,\"../utils/dom.js\":134,\"../utils/events.js\":135,\"../utils/fn.js\":136}],109:[function(_dereq_,module,exports){\n/**\n * @file modal-dialog.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _utilsDom = _dereq_('./utils/dom');\n\nvar Dom = _interopRequireWildcard(_utilsDom);\n\nvar _utilsFn = _dereq_('./utils/fn');\n\nvar Fn = _interopRequireWildcard(_utilsFn);\n\nvar _utilsLog = _dereq_('./utils/log');\n\nvar _utilsLog2 = _interopRequireDefault(_utilsLog);\n\nvar _component = _dereq_('./component');\n\nvar _component2 = _interopRequireDefault(_component);\n\nvar _closeButton = _dereq_('./close-button');\n\nvar _closeButton2 = _interopRequireDefault(_closeButton);\n\nvar MODAL_CLASS_NAME = 'vjs-modal-dialog';\nvar ESC = 27;\n\n/**\n * The `ModalDialog` displays over the video and its controls, which blocks\n * interaction with the player until it is closed.\n *\n * Modal dialogs include a \"Close\" button and will close when that button\n * is activated - or when ESC is pressed anywhere.\n *\n * @extends Component\n * @class ModalDialog\n */\n\nvar ModalDialog = (function (_Component) {\n _inherits(ModalDialog, _Component);\n\n /**\n * Constructor for modals.\n *\n * @param {Player} player\n * @param {Object} [options]\n * @param {Mixed} [options.content=undefined]\n * Provide customized content for this modal.\n *\n * @param {String} [options.description]\n * A text description for the modal, primarily for accessibility.\n *\n * @param {Boolean} [options.fillAlways=false]\n * Normally, modals are automatically filled only the first time\n * they open. This tells the modal to refresh its content\n * every time it opens.\n *\n * @param {String} [options.label]\n * A text label for the modal, primarily for accessibility.\n *\n * @param {Boolean} [options.temporary=true]\n * If `true`, the modal can only be opened once; it will be\n * disposed as soon as it's closed.\n *\n * @param {Boolean} [options.uncloseable=false]\n * If `true`, the user will not be able to close the modal\n * through the UI in the normal ways. Programmatic closing is\n * still possible.\n *\n */\n\n function ModalDialog(player, options) {\n _classCallCheck(this, ModalDialog);\n\n _Component.call(this, player, options);\n this.opened_ = this.hasBeenOpened_ = this.hasBeenFilled_ = false;\n\n this.closeable(!this.options_.uncloseable);\n this.content(this.options_.content);\n\n // Make sure the contentEl is defined AFTER any children are initialized\n // because we only want the contents of the modal in the contentEl\n // (not the UI elements like the close button).\n this.contentEl_ = Dom.createEl('div', {\n className: MODAL_CLASS_NAME + '-content'\n }, {\n role: 'document'\n });\n\n this.descEl_ = Dom.createEl('p', {\n className: MODAL_CLASS_NAME + '-description vjs-offscreen',\n id: this.el().getAttribute('aria-describedby')\n });\n\n Dom.textContent(this.descEl_, this.description());\n this.el_.appendChild(this.descEl_);\n this.el_.appendChild(this.contentEl_);\n }\n\n /*\n * Modal dialog default options.\n *\n * @type {Object}\n * @private\n */\n\n /**\n * Create the modal's DOM element\n *\n * @method createEl\n * @return {Element}\n */\n\n ModalDialog.prototype.createEl = function createEl() {\n return _Component.prototype.createEl.call(this, 'div', {\n className: this.buildCSSClass(),\n tabIndex: -1\n }, {\n 'aria-describedby': this.id() + '_description',\n 'aria-hidden': 'true',\n 'aria-label': this.label(),\n role: 'dialog'\n });\n };\n\n /**\n * Build the modal's CSS class.\n *\n * @method buildCSSClass\n * @return {String}\n */\n\n ModalDialog.prototype.buildCSSClass = function buildCSSClass() {\n return MODAL_CLASS_NAME + ' vjs-hidden ' + _Component.prototype.buildCSSClass.call(this);\n };\n\n /**\n * Handles key presses on the document, looking for ESC, which closes\n * the modal.\n *\n * @method handleKeyPress\n * @param {Event} e\n */\n\n ModalDialog.prototype.handleKeyPress = function handleKeyPress(e) {\n if (e.which === ESC && this.closeable()) {\n this.close();\n }\n };\n\n /**\n * Returns the label string for this modal. Primarily used for accessibility.\n *\n * @return {String}\n */\n\n ModalDialog.prototype.label = function label() {\n return this.options_.label || this.localize('Modal Window');\n };\n\n /**\n * Returns the description string for this modal. Primarily used for\n * accessibility.\n *\n * @return {String}\n */\n\n ModalDialog.prototype.description = function description() {\n var desc = this.options_.description || this.localize('This is a modal window.');\n\n // Append a universal closeability message if the modal is closeable.\n if (this.closeable()) {\n desc += ' ' + this.localize('This modal can be closed by pressing the Escape key or activating the close button.');\n }\n\n return desc;\n };\n\n /**\n * Opens the modal.\n *\n * @method open\n * @return {ModalDialog}\n */\n\n ModalDialog.prototype.open = function open() {\n if (!this.opened_) {\n var player = this.player();\n\n this.trigger('beforemodalopen');\n this.opened_ = true;\n\n // Fill content if the modal has never opened before and\n // never been filled.\n if (this.options_.fillAlways || !this.hasBeenOpened_ && !this.hasBeenFilled_) {\n this.fill();\n }\n\n // If the player was playing, pause it and take note of its previously\n // playing state.\n this.wasPlaying_ = !player.paused();\n\n if (this.wasPlaying_) {\n player.pause();\n }\n\n if (this.closeable()) {\n this.on(this.el_.ownerDocument, 'keydown', Fn.bind(this, this.handleKeyPress));\n }\n\n player.controls(false);\n this.show();\n this.el().setAttribute('aria-hidden', 'false');\n this.trigger('modalopen');\n this.hasBeenOpened_ = true;\n }\n return this;\n };\n\n /**\n * Whether or not the modal is opened currently.\n *\n * @method opened\n * @param {Boolean} [value]\n * If given, it will open (`true`) or close (`false`) the modal.\n *\n * @return {Boolean}\n */\n\n ModalDialog.prototype.opened = function opened(value) {\n if (typeof value === 'boolean') {\n this[value ? 'open' : 'close']();\n }\n return this.opened_;\n };\n\n /**\n * Closes the modal.\n *\n * @method close\n * @return {ModalDialog}\n */\n\n ModalDialog.prototype.close = function close() {\n if (this.opened_) {\n var player = this.player();\n\n this.trigger('beforemodalclose');\n this.opened_ = false;\n\n if (this.wasPlaying_) {\n player.play();\n }\n\n if (this.closeable()) {\n this.off(this.el_.ownerDocument, 'keydown', Fn.bind(this, this.handleKeyPress));\n }\n\n player.controls(true);\n this.hide();\n this.el().setAttribute('aria-hidden', 'true');\n this.trigger('modalclose');\n\n if (this.options_.temporary) {\n this.dispose();\n }\n }\n return this;\n };\n\n /**\n * Whether or not the modal is closeable via the UI.\n *\n * @method closeable\n * @param {Boolean} [value]\n * If given as a Boolean, it will set the `closeable` option.\n *\n * @return {Boolean}\n */\n\n ModalDialog.prototype.closeable = function closeable(value) {\n if (typeof value === 'boolean') {\n var closeable = this.closeable_ = !!value;\n var _close = this.getChild('closeButton');\n\n // If this is being made closeable and has no close button, add one.\n if (closeable && !_close) {\n\n // The close button should be a child of the modal - not its\n // content element, so temporarily change the content element.\n var temp = this.contentEl_;\n this.contentEl_ = this.el_;\n _close = this.addChild('closeButton');\n this.contentEl_ = temp;\n this.on(_close, 'close', this.close);\n }\n\n // If this is being made uncloseable and has a close button, remove it.\n if (!closeable && _close) {\n this.off(_close, 'close', this.close);\n this.removeChild(_close);\n _close.dispose();\n }\n }\n return this.closeable_;\n };\n\n /**\n * Fill the modal's content element with the modal's \"content\" option.\n *\n * The content element will be emptied before this change takes place.\n *\n * @method fill\n * @return {ModalDialog}\n */\n\n ModalDialog.prototype.fill = function fill() {\n return this.fillWith(this.content());\n };\n\n /**\n * Fill the modal's content element with arbitrary content.\n *\n * The content element will be emptied before this change takes place.\n *\n * @method fillWith\n * @param {Mixed} [content]\n * The same rules apply to this as apply to the `content` option.\n *\n * @return {ModalDialog}\n */\n\n ModalDialog.prototype.fillWith = function fillWith(content) {\n var contentEl = this.contentEl();\n var parentEl = contentEl.parentNode;\n var nextSiblingEl = contentEl.nextSibling;\n\n this.trigger('beforemodalfill');\n this.hasBeenFilled_ = true;\n\n // Detach the content element from the DOM before performing\n // manipulation to avoid modifying the live DOM multiple times.\n parentEl.removeChild(contentEl);\n this.empty();\n Dom.insertContent(contentEl, content);\n this.trigger('modalfill');\n\n // Re-inject the re-filled content element.\n if (nextSiblingEl) {\n parentEl.insertBefore(contentEl, nextSiblingEl);\n } else {\n parentEl.appendChild(contentEl);\n }\n\n return this;\n };\n\n /**\n * Empties the content element.\n *\n * This happens automatically anytime the modal is filled.\n *\n * @method empty\n * @return {ModalDialog}\n */\n\n ModalDialog.prototype.empty = function empty() {\n this.trigger('beforemodalempty');\n Dom.emptyEl(this.contentEl());\n this.trigger('modalempty');\n return this;\n };\n\n /**\n * Gets or sets the modal content, which gets normalized before being\n * rendered into the DOM.\n *\n * This does not update the DOM or fill the modal, but it is called during\n * that process.\n *\n * @method content\n * @param {Mixed} [value]\n * If defined, sets the internal content value to be used on the\n * next call(s) to `fill`. This value is normalized before being\n * inserted. To \"clear\" the internal content value, pass `null`.\n *\n * @return {Mixed}\n */\n\n ModalDialog.prototype.content = function content(value) {\n if (typeof value !== 'undefined') {\n this.content_ = value;\n }\n return this.content_;\n };\n\n return ModalDialog;\n})(_component2['default']);\n\nModalDialog.prototype.options_ = {\n temporary: true\n};\n\n_component2['default'].registerComponent('ModalDialog', ModalDialog);\nexports['default'] = ModalDialog;\nmodule.exports = exports['default'];\n\n},{\"./close-button\":66,\"./component\":67,\"./utils/dom\":134,\"./utils/fn\":136,\"./utils/log\":139}],110:[function(_dereq_,module,exports){\n/**\n * @file player.js\n */\n// Subclasses Component\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _componentJs = _dereq_('./component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\nvar _globalDocument = _dereq_('global/document');\n\nvar _globalDocument2 = _interopRequireDefault(_globalDocument);\n\nvar _globalWindow = _dereq_('global/window');\n\nvar _globalWindow2 = _interopRequireDefault(_globalWindow);\n\nvar _utilsEventsJs = _dereq_('./utils/events.js');\n\nvar Events = _interopRequireWildcard(_utilsEventsJs);\n\nvar _utilsDomJs = _dereq_('./utils/dom.js');\n\nvar Dom = _interopRequireWildcard(_utilsDomJs);\n\nvar _utilsFnJs = _dereq_('./utils/fn.js');\n\nvar Fn = _interopRequireWildcard(_utilsFnJs);\n\nvar _utilsGuidJs = _dereq_('./utils/guid.js');\n\nvar Guid = _interopRequireWildcard(_utilsGuidJs);\n\nvar _utilsBrowserJs = _dereq_('./utils/browser.js');\n\nvar browser = _interopRequireWildcard(_utilsBrowserJs);\n\nvar _utilsLogJs = _dereq_('./utils/log.js');\n\nvar _utilsLogJs2 = _interopRequireDefault(_utilsLogJs);\n\nvar _utilsToTitleCaseJs = _dereq_('./utils/to-title-case.js');\n\nvar _utilsToTitleCaseJs2 = _interopRequireDefault(_utilsToTitleCaseJs);\n\nvar _utilsTimeRangesJs = _dereq_('./utils/time-ranges.js');\n\nvar _utilsBufferJs = _dereq_('./utils/buffer.js');\n\nvar _utilsStylesheetJs = _dereq_('./utils/stylesheet.js');\n\nvar stylesheet = _interopRequireWildcard(_utilsStylesheetJs);\n\nvar _fullscreenApiJs = _dereq_('./fullscreen-api.js');\n\nvar _fullscreenApiJs2 = _interopRequireDefault(_fullscreenApiJs);\n\nvar _mediaErrorJs = _dereq_('./media-error.js');\n\nvar _mediaErrorJs2 = _interopRequireDefault(_mediaErrorJs);\n\nvar _safeJsonParseTuple = _dereq_('safe-json-parse/tuple');\n\nvar _safeJsonParseTuple2 = _interopRequireDefault(_safeJsonParseTuple);\n\nvar _objectAssign = _dereq_('object.assign');\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\nvar _utilsMergeOptionsJs = _dereq_('./utils/merge-options.js');\n\nvar _utilsMergeOptionsJs2 = _interopRequireDefault(_utilsMergeOptionsJs);\n\nvar _tracksTextTrackListConverterJs = _dereq_('./tracks/text-track-list-converter.js');\n\nvar _tracksTextTrackListConverterJs2 = _interopRequireDefault(_tracksTextTrackListConverterJs);\n\n// Include required child components (importing also registers them)\n\nvar _techLoaderJs = _dereq_('./tech/loader.js');\n\nvar _techLoaderJs2 = _interopRequireDefault(_techLoaderJs);\n\nvar _posterImageJs = _dereq_('./poster-image.js');\n\nvar _posterImageJs2 = _interopRequireDefault(_posterImageJs);\n\nvar _tracksTextTrackDisplayJs = _dereq_('./tracks/text-track-display.js');\n\nvar _tracksTextTrackDisplayJs2 = _interopRequireDefault(_tracksTextTrackDisplayJs);\n\nvar _loadingSpinnerJs = _dereq_('./loading-spinner.js');\n\nvar _loadingSpinnerJs2 = _interopRequireDefault(_loadingSpinnerJs);\n\nvar _bigPlayButtonJs = _dereq_('./big-play-button.js');\n\nvar _bigPlayButtonJs2 = _interopRequireDefault(_bigPlayButtonJs);\n\nvar _controlBarControlBarJs = _dereq_('./control-bar/control-bar.js');\n\nvar _controlBarControlBarJs2 = _interopRequireDefault(_controlBarControlBarJs);\n\nvar _errorDisplayJs = _dereq_('./error-display.js');\n\nvar _errorDisplayJs2 = _interopRequireDefault(_errorDisplayJs);\n\nvar _tracksTextTrackSettingsJs = _dereq_('./tracks/text-track-settings.js');\n\nvar _tracksTextTrackSettingsJs2 = _interopRequireDefault(_tracksTextTrackSettingsJs);\n\nvar _modalDialog = _dereq_('./modal-dialog');\n\nvar _modalDialog2 = _interopRequireDefault(_modalDialog);\n\n// Require html5 tech, at least for disposing the original video tag\n\nvar _techTechJs = _dereq_('./tech/tech.js');\n\nvar _techTechJs2 = _interopRequireDefault(_techTechJs);\n\nvar _techHtml5Js = _dereq_('./tech/html5.js');\n\nvar _techHtml5Js2 = _interopRequireDefault(_techHtml5Js);\n\n/**\n * An instance of the `Player` class is created when any of the Video.js setup methods are used to initialize a video.\n * ```js\n * var myPlayer = videojs('example_video_1');\n * ```\n * In the following example, the `data-setup` attribute tells the Video.js library to create a player instance when the library is ready.\n * ```html\n * \n * ```\n * After an instance has been created it can be accessed globally using `Video('example_video_1')`.\n *\n * @param {Element} tag The original video tag used for configuring options\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class Player\n */\n\nvar Player = (function (_Component) {\n _inherits(Player, _Component);\n\n /**\n * player's constructor function\n *\n * @constructs\n * @method init\n * @param {Element} tag The original video tag used for configuring options\n * @param {Object=} options Player options\n * @param {Function=} ready Ready callback function\n */\n\n function Player(tag, options, ready) {\n var _this = this;\n\n _classCallCheck(this, Player);\n\n // Make sure tag ID exists\n tag.id = tag.id || 'vjs_video_' + Guid.newGUID();\n\n // Set Options\n // The options argument overrides options set in the video tag\n // which overrides globally set options.\n // This latter part coincides with the load order\n // (tag must exist before Player)\n options = _objectAssign2['default'](Player.getTagSettings(tag), options);\n\n // Delay the initialization of children because we need to set up\n // player properties first, and can't use `this` before `super()`\n options.initChildren = false;\n\n // Same with creating the element\n options.createEl = false;\n\n // we don't want the player to report touch activity on itself\n // see enableTouchActivity in Component\n options.reportTouchActivity = false;\n\n // Run base component initializing with new options\n _Component.call(this, null, options, ready);\n\n // if the global option object was accidentally blown away by\n // someone, bail early with an informative error\n if (!this.options_ || !this.options_.techOrder || !this.options_.techOrder.length) {\n throw new Error('No techOrder specified. Did you overwrite ' + 'videojs.options instead of just changing the ' + 'properties you want to override?');\n }\n\n this.tag = tag; // Store the original tag used to set options\n\n // Store the tag attributes used to restore html5 element\n this.tagAttributes = tag && Dom.getElAttributes(tag);\n\n // Update current language\n this.language(this.options_.language);\n\n // Update Supported Languages\n if (options.languages) {\n (function () {\n // Normalise player option languages to lowercase\n var languagesToLower = {};\n\n Object.getOwnPropertyNames(options.languages).forEach(function (name) {\n languagesToLower[name.toLowerCase()] = options.languages[name];\n });\n _this.languages_ = languagesToLower;\n })();\n } else {\n this.languages_ = Player.prototype.options_.languages;\n }\n\n // Cache for video property values.\n this.cache_ = {};\n\n // Set poster\n this.poster_ = options.poster || '';\n\n // Set controls\n this.controls_ = !!options.controls;\n\n // Original tag settings stored in options\n // now remove immediately so native controls don't flash.\n // May be turned back on by HTML5 tech if nativeControlsForTouch is true\n tag.controls = false;\n\n /*\n * Store the internal state of scrubbing\n *\n * @private\n * @return {Boolean} True if the user is scrubbing\n */\n this.scrubbing_ = false;\n\n this.el_ = this.createEl();\n\n // We also want to pass the original player options to each component and plugin\n // as well so they don't need to reach back into the player for options later.\n // We also need to do another copy of this.options_ so we don't end up with\n // an infinite loop.\n var playerOptionsCopy = _utilsMergeOptionsJs2['default'](this.options_);\n\n // Load plugins\n if (options.plugins) {\n (function () {\n var plugins = options.plugins;\n\n Object.getOwnPropertyNames(plugins).forEach(function (name) {\n if (typeof this[name] === 'function') {\n this[name](plugins[name]);\n } else {\n _utilsLogJs2['default'].error('Unable to find plugin:', name);\n }\n }, _this);\n })();\n }\n\n this.options_.playerOptions = playerOptionsCopy;\n\n this.initChildren();\n\n // Set isAudio based on whether or not an audio tag was used\n this.isAudio(tag.nodeName.toLowerCase() === 'audio');\n\n // Update controls className. Can't do this when the controls are initially\n // set because the element doesn't exist yet.\n if (this.controls()) {\n this.addClass('vjs-controls-enabled');\n } else {\n this.addClass('vjs-controls-disabled');\n }\n\n // Set ARIA label and region role depending on player type\n this.el_.setAttribute('role', 'region');\n if (this.isAudio()) {\n this.el_.setAttribute('aria-label', 'audio player');\n } else {\n this.el_.setAttribute('aria-label', 'video player');\n }\n\n if (this.isAudio()) {\n this.addClass('vjs-audio');\n }\n\n if (this.flexNotSupported_()) {\n this.addClass('vjs-no-flex');\n }\n\n // TODO: Make this smarter. Toggle user state between touching/mousing\n // using events, since devices can have both touch and mouse events.\n // if (browser.TOUCH_ENABLED) {\n // this.addClass('vjs-touch-enabled');\n // }\n\n // iOS Safari has broken hover handling\n if (!browser.IS_IOS) {\n this.addClass('vjs-workinghover');\n }\n\n // Make player easily findable by ID\n Player.players[this.id_] = this;\n\n // When the player is first initialized, trigger activity so components\n // like the control bar show themselves if needed\n this.userActive(true);\n this.reportUserActivity();\n this.listenForUserActivity_();\n\n this.on('fullscreenchange', this.handleFullscreenChange_);\n this.on('stageclick', this.handleStageClick_);\n }\n\n /*\n * Global player list\n *\n * @type {Object}\n */\n\n /**\n * Destroys the video player and does any necessary cleanup\n * ```js\n * myPlayer.dispose();\n * ```\n * This is especially helpful if you are dynamically adding and removing videos\n * to/from the DOM.\n *\n * @method dispose\n */\n\n Player.prototype.dispose = function dispose() {\n this.trigger('dispose');\n // prevent dispose from being called twice\n this.off('dispose');\n\n if (this.styleEl_ && this.styleEl_.parentNode) {\n this.styleEl_.parentNode.removeChild(this.styleEl_);\n }\n\n // Kill reference to this player\n Player.players[this.id_] = null;\n if (this.tag && this.tag.player) {\n this.tag.player = null;\n }\n if (this.el_ && this.el_.player) {\n this.el_.player = null;\n }\n\n if (this.tech_) {\n this.tech_.dispose();\n }\n\n _Component.prototype.dispose.call(this);\n };\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n\n Player.prototype.createEl = function createEl() {\n var el = this.el_ = _Component.prototype.createEl.call(this, 'div');\n var tag = this.tag;\n\n // Remove width/height attrs from tag so CSS can make it 100% width/height\n tag.removeAttribute('width');\n tag.removeAttribute('height');\n\n // Copy over all the attributes from the tag, including ID and class\n // ID will now reference player box, not the video tag\n var attrs = Dom.getElAttributes(tag);\n\n Object.getOwnPropertyNames(attrs).forEach(function (attr) {\n // workaround so we don't totally break IE7\n // http://stackoverflow.com/questions/3653444/css-styles-not-applied-on-dynamic-elements-in-internet-explorer-7\n if (attr === 'class') {\n el.className = attrs[attr];\n } else {\n el.setAttribute(attr, attrs[attr]);\n }\n });\n\n // Update tag id/class for use as HTML5 playback tech\n // Might think we should do this after embedding in container so .vjs-tech class\n // doesn't flash 100% width/height, but class only applies with .video-js parent\n tag.playerId = tag.id;\n tag.id += '_html5_api';\n tag.className = 'vjs-tech';\n\n // Make player findable on elements\n tag.player = el.player = this;\n // Default state of video is paused\n this.addClass('vjs-paused');\n\n // Add a style element in the player that we'll use to set the width/height\n // of the player in a way that's still overrideable by CSS, just like the\n // video element\n if (_globalWindow2['default'].VIDEOJS_NO_DYNAMIC_STYLE !== true) {\n this.styleEl_ = stylesheet.createStyleElement('vjs-styles-dimensions');\n var defaultsStyleEl = Dom.$('.vjs-styles-defaults');\n var head = Dom.$('head');\n head.insertBefore(this.styleEl_, defaultsStyleEl ? defaultsStyleEl.nextSibling : head.firstChild);\n }\n\n // Pass in the width/height/aspectRatio options which will update the style el\n this.width(this.options_.width);\n this.height(this.options_.height);\n this.fluid(this.options_.fluid);\n this.aspectRatio(this.options_.aspectRatio);\n\n // Hide any links within the video/audio tag, because IE doesn't hide them completely.\n var links = tag.getElementsByTagName('a');\n for (var i = 0; i < links.length; i++) {\n var linkEl = links.item(i);\n Dom.addElClass(linkEl, 'vjs-hidden');\n linkEl.setAttribute('hidden', 'hidden');\n }\n\n // insertElFirst seems to cause the networkState to flicker from 3 to 2, so\n // keep track of the original for later so we can know if the source originally failed\n tag.initNetworkState_ = tag.networkState;\n\n // Wrap video tag in div (el/box) container\n if (tag.parentNode) {\n tag.parentNode.insertBefore(el, tag);\n }\n\n // insert the tag as the first child of the player element\n // then manually add it to the children array so that this.addChild\n // will work properly for other components\n Dom.insertElFirst(tag, el); // Breaks iPhone, fixed in HTML5 setup.\n this.children_.unshift(tag);\n\n this.el_ = el;\n\n return el;\n };\n\n /**\n * Get/set player width\n *\n * @param {Number=} value Value for width\n * @return {Number} Width when getting\n * @method width\n */\n\n Player.prototype.width = function width(value) {\n return this.dimension('width', value);\n };\n\n /**\n * Get/set player height\n *\n * @param {Number=} value Value for height\n * @return {Number} Height when getting\n * @method height\n */\n\n Player.prototype.height = function height(value) {\n return this.dimension('height', value);\n };\n\n /**\n * Get/set dimension for player\n *\n * @param {String} dimension Either width or height\n * @param {Number=} value Value for dimension\n * @return {Component}\n * @method dimension\n */\n\n Player.prototype.dimension = function dimension(_dimension, value) {\n var privDimension = _dimension + '_';\n\n if (value === undefined) {\n return this[privDimension] || 0;\n }\n\n if (value === '') {\n // If an empty string is given, reset the dimension to be automatic\n this[privDimension] = undefined;\n } else {\n var parsedVal = parseFloat(value);\n\n if (isNaN(parsedVal)) {\n _utilsLogJs2['default'].error('Improper value \"' + value + '\" supplied for for ' + _dimension);\n return this;\n }\n\n this[privDimension] = parsedVal;\n }\n\n this.updateStyleEl_();\n return this;\n };\n\n /**\n * Add/remove the vjs-fluid class\n *\n * @param {Boolean} bool Value of true adds the class, value of false removes the class\n * @method fluid\n */\n\n Player.prototype.fluid = function fluid(bool) {\n if (bool === undefined) {\n return !!this.fluid_;\n }\n\n this.fluid_ = !!bool;\n\n if (bool) {\n this.addClass('vjs-fluid');\n } else {\n this.removeClass('vjs-fluid');\n }\n };\n\n /**\n * Get/Set the aspect ratio\n *\n * @param {String=} ratio Aspect ratio for player\n * @return aspectRatio\n * @method aspectRatio\n */\n\n Player.prototype.aspectRatio = function aspectRatio(ratio) {\n if (ratio === undefined) {\n return this.aspectRatio_;\n }\n\n // Check for width:height format\n if (!/^\\d+\\:\\d+$/.test(ratio)) {\n throw new Error('Improper value supplied for aspect ratio. The format should be width:height, for example 16:9.');\n }\n this.aspectRatio_ = ratio;\n\n // We're assuming if you set an aspect ratio you want fluid mode,\n // because in fixed mode you could calculate width and height yourself.\n this.fluid(true);\n\n this.updateStyleEl_();\n };\n\n /**\n * Update styles of the player element (height, width and aspect ratio)\n *\n * @method updateStyleEl_\n */\n\n Player.prototype.updateStyleEl_ = function updateStyleEl_() {\n if (_globalWindow2['default'].VIDEOJS_NO_DYNAMIC_STYLE === true) {\n var _width = typeof this.width_ === 'number' ? this.width_ : this.options_.width;\n var _height = typeof this.height_ === 'number' ? this.height_ : this.options_.height;\n var techEl = this.tech_ && this.tech_.el();\n\n if (techEl) {\n if (_width >= 0) {\n techEl.width = _width;\n }\n if (_height >= 0) {\n techEl.height = _height;\n }\n }\n\n return;\n }\n\n var width = undefined;\n var height = undefined;\n var aspectRatio = undefined;\n var idClass = undefined;\n\n // The aspect ratio is either used directly or to calculate width and height.\n if (this.aspectRatio_ !== undefined && this.aspectRatio_ !== 'auto') {\n // Use any aspectRatio that's been specifically set\n aspectRatio = this.aspectRatio_;\n } else if (this.videoWidth()) {\n // Otherwise try to get the aspect ratio from the video metadata\n aspectRatio = this.videoWidth() + ':' + this.videoHeight();\n } else {\n // Or use a default. The video element's is 2:1, but 16:9 is more common.\n aspectRatio = '16:9';\n }\n\n // Get the ratio as a decimal we can use to calculate dimensions\n var ratioParts = aspectRatio.split(':');\n var ratioMultiplier = ratioParts[1] / ratioParts[0];\n\n if (this.width_ !== undefined) {\n // Use any width that's been specifically set\n width = this.width_;\n } else if (this.height_ !== undefined) {\n // Or calulate the width from the aspect ratio if a height has been set\n width = this.height_ / ratioMultiplier;\n } else {\n // Or use the video's metadata, or use the video el's default of 300\n width = this.videoWidth() || 300;\n }\n\n if (this.height_ !== undefined) {\n // Use any height that's been specifically set\n height = this.height_;\n } else {\n // Otherwise calculate the height from the ratio and the width\n height = width * ratioMultiplier;\n }\n\n // Ensure the CSS class is valid by starting with an alpha character\n if (/^[^a-zA-Z]/.test(this.id())) {\n idClass = 'dimensions-' + this.id();\n } else {\n idClass = this.id() + '-dimensions';\n }\n\n // Ensure the right class is still on the player for the style element\n this.addClass(idClass);\n\n stylesheet.setTextContent(this.styleEl_, '\\n .' + idClass + ' {\\n width: ' + width + 'px;\\n height: ' + height + 'px;\\n }\\n\\n .' + idClass + '.vjs-fluid {\\n padding-top: ' + ratioMultiplier * 100 + '%;\\n }\\n ');\n };\n\n /**\n * Load the Media Playback Technology (tech)\n * Load/Create an instance of playback technology including element and API methods\n * And append playback element in player div.\n *\n * @param {String} techName Name of the playback technology\n * @param {String} source Video source\n * @method loadTech_\n * @private\n */\n\n Player.prototype.loadTech_ = function loadTech_(techName, source) {\n\n // Pause and remove current playback technology\n if (this.tech_) {\n this.unloadTech_();\n }\n\n // get rid of the HTML5 video tag as soon as we are using another tech\n if (techName !== 'Html5' && this.tag) {\n _techTechJs2['default'].getTech('Html5').disposeMediaElement(this.tag);\n this.tag.player = null;\n this.tag = null;\n }\n\n this.techName_ = techName;\n\n // Turn off API access because we're loading a new tech that might load asynchronously\n this.isReady_ = false;\n\n // Grab tech-specific options from player options and add source and parent element to use.\n var techOptions = _objectAssign2['default']({\n 'nativeControlsForTouch': this.options_.nativeControlsForTouch,\n 'source': source,\n 'playerId': this.id(),\n 'techId': this.id() + '_' + techName + '_api',\n 'textTracks': this.textTracks_,\n 'autoplay': this.options_.autoplay,\n 'preload': this.options_.preload,\n 'loop': this.options_.loop,\n 'muted': this.options_.muted,\n 'poster': this.poster(),\n 'language': this.language(),\n 'vtt.js': this.options_['vtt.js']\n }, this.options_[techName.toLowerCase()]);\n\n if (this.tag) {\n techOptions.tag = this.tag;\n }\n\n if (source) {\n this.currentType_ = source.type;\n if (source.src === this.cache_.src && this.cache_.currentTime > 0) {\n techOptions.startTime = this.cache_.currentTime;\n }\n\n this.cache_.src = source.src;\n }\n\n // Initialize tech instance\n var techComponent = _techTechJs2['default'].getTech(techName);\n // Support old behavior of techs being registered as components.\n // Remove once that deprecated behavior is removed.\n if (!techComponent) {\n techComponent = _componentJs2['default'].getComponent(techName);\n }\n this.tech_ = new techComponent(techOptions);\n\n // player.triggerReady is always async, so don't need this to be async\n this.tech_.ready(Fn.bind(this, this.handleTechReady_), true);\n\n _tracksTextTrackListConverterJs2['default'].jsonToTextTracks(this.textTracksJson_ || [], this.tech_);\n\n // Listen to all HTML5-defined events and trigger them on the player\n this.on(this.tech_, 'loadstart', this.handleTechLoadStart_);\n this.on(this.tech_, 'waiting', this.handleTechWaiting_);\n this.on(this.tech_, 'canplay', this.handleTechCanPlay_);\n this.on(this.tech_, 'canplaythrough', this.handleTechCanPlayThrough_);\n this.on(this.tech_, 'playing', this.handleTechPlaying_);\n this.on(this.tech_, 'ended', this.handleTechEnded_);\n this.on(this.tech_, 'seeking', this.handleTechSeeking_);\n this.on(this.tech_, 'seeked', this.handleTechSeeked_);\n this.on(this.tech_, 'play', this.handleTechPlay_);\n this.on(this.tech_, 'firstplay', this.handleTechFirstPlay_);\n this.on(this.tech_, 'pause', this.handleTechPause_);\n this.on(this.tech_, 'progress', this.handleTechProgress_);\n this.on(this.tech_, 'durationchange', this.handleTechDurationChange_);\n this.on(this.tech_, 'fullscreenchange', this.handleTechFullscreenChange_);\n this.on(this.tech_, 'error', this.handleTechError_);\n this.on(this.tech_, 'suspend', this.handleTechSuspend_);\n this.on(this.tech_, 'abort', this.handleTechAbort_);\n this.on(this.tech_, 'emptied', this.handleTechEmptied_);\n this.on(this.tech_, 'stalled', this.handleTechStalled_);\n this.on(this.tech_, 'loadedmetadata', this.handleTechLoadedMetaData_);\n this.on(this.tech_, 'loadeddata', this.handleTechLoadedData_);\n this.on(this.tech_, 'timeupdate', this.handleTechTimeUpdate_);\n this.on(this.tech_, 'ratechange', this.handleTechRateChange_);\n this.on(this.tech_, 'volumechange', this.handleTechVolumeChange_);\n this.on(this.tech_, 'texttrackchange', this.handleTechTextTrackChange_);\n this.on(this.tech_, 'loadedmetadata', this.updateStyleEl_);\n this.on(this.tech_, 'posterchange', this.handleTechPosterChange_);\n\n this.usingNativeControls(this.techGet_('controls'));\n\n if (this.controls() && !this.usingNativeControls()) {\n this.addTechControlsListeners_();\n }\n\n // Add the tech element in the DOM if it was not already there\n // Make sure to not insert the original video element if using Html5\n if (this.tech_.el().parentNode !== this.el() && (techName !== 'Html5' || !this.tag)) {\n Dom.insertElFirst(this.tech_.el(), this.el());\n }\n\n // Get rid of the original video tag reference after the first tech is loaded\n if (this.tag) {\n this.tag.player = null;\n this.tag = null;\n }\n };\n\n /**\n * Unload playback technology\n *\n * @method unloadTech_\n * @private\n */\n\n Player.prototype.unloadTech_ = function unloadTech_() {\n // Save the current text tracks so that we can reuse the same text tracks with the next tech\n this.textTracks_ = this.textTracks();\n this.textTracksJson_ = _tracksTextTrackListConverterJs2['default'].textTracksToJson(this.tech_);\n\n this.isReady_ = false;\n\n this.tech_.dispose();\n\n this.tech_ = false;\n };\n\n /**\n * Return a reference to the current tech.\n * It will only return a reference to the tech if given an object with the\n * `IWillNotUseThisInPlugins` property on it. This is try and prevent misuse\n * of techs by plugins.\n *\n * @param {Object}\n * @return {Object} The Tech\n * @method tech\n */\n\n Player.prototype.tech = function tech(safety) {\n if (safety && safety.IWillNotUseThisInPlugins) {\n return this.tech_;\n }\n var errorText = '\\n Please make sure that you are not using this inside of a plugin.\\n To disable this alert and error, please pass in an object with\\n `IWillNotUseThisInPlugins` to the `tech` method. See\\n https://github.com/videojs/video.js/issues/2617 for more info.\\n ';\n _globalWindow2['default'].alert(errorText);\n throw new Error(errorText);\n };\n\n /**\n * Set up click and touch listeners for the playback element\n *\n * On desktops, a click on the video itself will toggle playback,\n * on a mobile device a click on the video toggles controls.\n * (toggling controls is done by toggling the user state between active and\n * inactive)\n * A tap can signal that a user has become active, or has become inactive\n * e.g. a quick tap on an iPhone movie should reveal the controls. Another\n * quick tap should hide them again (signaling the user is in an inactive\n * viewing state)\n * In addition to this, we still want the user to be considered inactive after\n * a few seconds of inactivity.\n * Note: the only part of iOS interaction we can't mimic with this setup\n * is a touch and hold on the video element counting as activity in order to\n * keep the controls showing, but that shouldn't be an issue. A touch and hold\n * on any controls will still keep the user active\n *\n * @private\n * @method addTechControlsListeners_\n */\n\n Player.prototype.addTechControlsListeners_ = function addTechControlsListeners_() {\n // Make sure to remove all the previous listeners in case we are called multiple times.\n this.removeTechControlsListeners_();\n\n // Some browsers (Chrome & IE) don't trigger a click on a flash swf, but do\n // trigger mousedown/up.\n // http://stackoverflow.com/questions/1444562/javascript-onclick-event-over-flash-object\n // Any touch events are set to block the mousedown event from happening\n this.on(this.tech_, 'mousedown', this.handleTechClick_);\n\n // If the controls were hidden we don't want that to change without a tap event\n // so we'll check if the controls were already showing before reporting user\n // activity\n this.on(this.tech_, 'touchstart', this.handleTechTouchStart_);\n this.on(this.tech_, 'touchmove', this.handleTechTouchMove_);\n this.on(this.tech_, 'touchend', this.handleTechTouchEnd_);\n\n // The tap listener needs to come after the touchend listener because the tap\n // listener cancels out any reportedUserActivity when setting userActive(false)\n this.on(this.tech_, 'tap', this.handleTechTap_);\n };\n\n /**\n * Remove the listeners used for click and tap controls. This is needed for\n * toggling to controls disabled, where a tap/touch should do nothing.\n *\n * @method removeTechControlsListeners_\n * @private\n */\n\n Player.prototype.removeTechControlsListeners_ = function removeTechControlsListeners_() {\n // We don't want to just use `this.off()` because there might be other needed\n // listeners added by techs that extend this.\n this.off(this.tech_, 'tap', this.handleTechTap_);\n this.off(this.tech_, 'touchstart', this.handleTechTouchStart_);\n this.off(this.tech_, 'touchmove', this.handleTechTouchMove_);\n this.off(this.tech_, 'touchend', this.handleTechTouchEnd_);\n this.off(this.tech_, 'mousedown', this.handleTechClick_);\n };\n\n /**\n * Player waits for the tech to be ready\n *\n * @method handleTechReady_\n * @private\n */\n\n Player.prototype.handleTechReady_ = function handleTechReady_() {\n this.triggerReady();\n\n // Keep the same volume as before\n if (this.cache_.volume) {\n this.techCall_('setVolume', this.cache_.volume);\n }\n\n // Look if the tech found a higher resolution poster while loading\n this.handleTechPosterChange_();\n\n // Update the duration if available\n this.handleTechDurationChange_();\n\n // Chrome and Safari both have issues with autoplay.\n // In Safari (5.1.1), when we move the video element into the container div, autoplay doesn't work.\n // In Chrome (15), if you have autoplay + a poster + no controls, the video gets hidden (but audio plays)\n // This fixes both issues. Need to wait for API, so it updates displays correctly\n if (this.src() && this.tag && this.options_.autoplay && this.paused()) {\n delete this.tag.poster; // Chrome Fix. Fixed in Chrome v16.\n this.play();\n }\n };\n\n /**\n * Fired when the user agent begins looking for media data\n *\n * @private\n * @method handleTechLoadStart_\n */\n\n Player.prototype.handleTechLoadStart_ = function handleTechLoadStart_() {\n // TODO: Update to use `emptied` event instead. See #1277.\n\n this.removeClass('vjs-ended');\n\n // reset the error state\n this.error(null);\n\n // If it's already playing we want to trigger a firstplay event now.\n // The firstplay event relies on both the play and loadstart events\n // which can happen in any order for a new source\n if (!this.paused()) {\n this.trigger('loadstart');\n this.trigger('firstplay');\n } else {\n // reset the hasStarted state\n this.hasStarted(false);\n this.trigger('loadstart');\n }\n };\n\n /**\n * Add/remove the vjs-has-started class\n *\n * @param {Boolean} hasStarted The value of true adds the class the value of false remove the class\n * @return {Boolean} Boolean value if has started\n * @private\n * @method hasStarted\n */\n\n Player.prototype.hasStarted = function hasStarted(_hasStarted) {\n if (_hasStarted !== undefined) {\n // only update if this is a new value\n if (this.hasStarted_ !== _hasStarted) {\n this.hasStarted_ = _hasStarted;\n if (_hasStarted) {\n this.addClass('vjs-has-started');\n // trigger the firstplay event if this newly has played\n this.trigger('firstplay');\n } else {\n this.removeClass('vjs-has-started');\n }\n }\n return this;\n }\n return !!this.hasStarted_;\n };\n\n /**\n * Fired whenever the media begins or resumes playback\n *\n * @private\n * @method handleTechPlay_\n */\n\n Player.prototype.handleTechPlay_ = function handleTechPlay_() {\n this.removeClass('vjs-ended');\n this.removeClass('vjs-paused');\n this.addClass('vjs-playing');\n\n // hide the poster when the user hits play\n // https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-play\n this.hasStarted(true);\n\n this.trigger('play');\n };\n\n /**\n * Fired whenever the media begins waiting\n *\n * @private\n * @method handleTechWaiting_\n */\n\n Player.prototype.handleTechWaiting_ = function handleTechWaiting_() {\n var _this2 = this;\n\n this.addClass('vjs-waiting');\n this.trigger('waiting');\n this.one('timeupdate', function () {\n return _this2.removeClass('vjs-waiting');\n });\n };\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @private\n * @method handleTechCanPlay_\n */\n\n Player.prototype.handleTechCanPlay_ = function handleTechCanPlay_() {\n this.removeClass('vjs-waiting');\n this.trigger('canplay');\n };\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @private\n * @method handleTechCanPlayThrough_\n */\n\n Player.prototype.handleTechCanPlayThrough_ = function handleTechCanPlayThrough_() {\n this.removeClass('vjs-waiting');\n this.trigger('canplaythrough');\n };\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @private\n * @method handleTechPlaying_\n */\n\n Player.prototype.handleTechPlaying_ = function handleTechPlaying_() {\n this.removeClass('vjs-waiting');\n this.trigger('playing');\n };\n\n /**\n * Fired whenever the player is jumping to a new time\n *\n * @private\n * @method handleTechSeeking_\n */\n\n Player.prototype.handleTechSeeking_ = function handleTechSeeking_() {\n this.addClass('vjs-seeking');\n this.trigger('seeking');\n };\n\n /**\n * Fired when the player has finished jumping to a new time\n *\n * @private\n * @method handleTechSeeked_\n */\n\n Player.prototype.handleTechSeeked_ = function handleTechSeeked_() {\n this.removeClass('vjs-seeking');\n this.trigger('seeked');\n };\n\n /**\n * Fired the first time a video is played\n * Not part of the HLS spec, and we're not sure if this is the best\n * implementation yet, so use sparingly. If you don't have a reason to\n * prevent playback, use `myPlayer.one('play');` instead.\n *\n * @private\n * @method handleTechFirstPlay_\n */\n\n Player.prototype.handleTechFirstPlay_ = function handleTechFirstPlay_() {\n //If the first starttime attribute is specified\n //then we will start at the given offset in seconds\n if (this.options_.starttime) {\n this.currentTime(this.options_.starttime);\n }\n\n this.addClass('vjs-has-started');\n this.trigger('firstplay');\n };\n\n /**\n * Fired whenever the media has been paused\n *\n * @private\n * @method handleTechPause_\n */\n\n Player.prototype.handleTechPause_ = function handleTechPause_() {\n this.removeClass('vjs-playing');\n this.addClass('vjs-paused');\n this.trigger('pause');\n };\n\n /**\n * Fired while the user agent is downloading media data\n *\n * @private\n * @method handleTechProgress_\n */\n\n Player.prototype.handleTechProgress_ = function handleTechProgress_() {\n this.trigger('progress');\n };\n\n /**\n * Fired when the end of the media resource is reached (currentTime == duration)\n *\n * @private\n * @method handleTechEnded_\n */\n\n Player.prototype.handleTechEnded_ = function handleTechEnded_() {\n this.addClass('vjs-ended');\n if (this.options_.loop) {\n this.currentTime(0);\n this.play();\n } else if (!this.paused()) {\n this.pause();\n }\n\n this.trigger('ended');\n };\n\n /**\n * Fired when the duration of the media resource is first known or changed\n *\n * @private\n * @method handleTechDurationChange_\n */\n\n Player.prototype.handleTechDurationChange_ = function handleTechDurationChange_() {\n this.duration(this.techGet_('duration'));\n };\n\n /**\n * Handle a click on the media element to play/pause\n *\n * @param {Object=} event Event object\n * @private\n * @method handleTechClick_\n */\n\n Player.prototype.handleTechClick_ = function handleTechClick_(event) {\n // We're using mousedown to detect clicks thanks to Flash, but mousedown\n // will also be triggered with right-clicks, so we need to prevent that\n if (event.button !== 0) return;\n\n // When controls are disabled a click should not toggle playback because\n // the click is considered a control\n if (this.controls()) {\n if (this.paused()) {\n this.play();\n } else {\n this.pause();\n }\n }\n };\n\n /**\n * Handle a tap on the media element. It will toggle the user\n * activity state, which hides and shows the controls.\n *\n * @private\n * @method handleTechTap_\n */\n\n Player.prototype.handleTechTap_ = function handleTechTap_() {\n this.userActive(!this.userActive());\n };\n\n /**\n * Handle touch to start\n *\n * @private\n * @method handleTechTouchStart_\n */\n\n Player.prototype.handleTechTouchStart_ = function handleTechTouchStart_() {\n this.userWasActive = this.userActive();\n };\n\n /**\n * Handle touch to move\n *\n * @private\n * @method handleTechTouchMove_\n */\n\n Player.prototype.handleTechTouchMove_ = function handleTechTouchMove_() {\n if (this.userWasActive) {\n this.reportUserActivity();\n }\n };\n\n /**\n * Handle touch to end\n *\n * @private\n * @method handleTechTouchEnd_\n */\n\n Player.prototype.handleTechTouchEnd_ = function handleTechTouchEnd_(event) {\n // Stop the mouse events from also happening\n event.preventDefault();\n };\n\n /**\n * Fired when the player switches in or out of fullscreen mode\n *\n * @private\n * @method handleFullscreenChange_\n */\n\n Player.prototype.handleFullscreenChange_ = function handleFullscreenChange_() {\n if (this.isFullscreen()) {\n this.addClass('vjs-fullscreen');\n } else {\n this.removeClass('vjs-fullscreen');\n }\n };\n\n /**\n * native click events on the SWF aren't triggered on IE11, Win8.1RT\n * use stageclick events triggered from inside the SWF instead\n *\n * @private\n * @method handleStageClick_\n */\n\n Player.prototype.handleStageClick_ = function handleStageClick_() {\n this.reportUserActivity();\n };\n\n /**\n * Handle Tech Fullscreen Change\n *\n * @private\n * @method handleTechFullscreenChange_\n */\n\n Player.prototype.handleTechFullscreenChange_ = function handleTechFullscreenChange_(event, data) {\n if (data) {\n this.isFullscreen(data.isFullscreen);\n }\n this.trigger('fullscreenchange');\n };\n\n /**\n * Fires when an error occurred during the loading of an audio/video\n *\n * @private\n * @method handleTechError_\n */\n\n Player.prototype.handleTechError_ = function handleTechError_() {\n var error = this.tech_.error();\n this.error(error && error.code);\n };\n\n /**\n * Fires when the browser is intentionally not getting media data\n *\n * @private\n * @method handleTechSuspend_\n */\n\n Player.prototype.handleTechSuspend_ = function handleTechSuspend_() {\n this.trigger('suspend');\n };\n\n /**\n * Fires when the loading of an audio/video is aborted\n *\n * @private\n * @method handleTechAbort_\n */\n\n Player.prototype.handleTechAbort_ = function handleTechAbort_() {\n this.trigger('abort');\n };\n\n /**\n * Fires when the current playlist is empty\n *\n * @private\n * @method handleTechEmptied_\n */\n\n Player.prototype.handleTechEmptied_ = function handleTechEmptied_() {\n this.trigger('emptied');\n };\n\n /**\n * Fires when the browser is trying to get media data, but data is not available\n *\n * @private\n * @method handleTechStalled_\n */\n\n Player.prototype.handleTechStalled_ = function handleTechStalled_() {\n this.trigger('stalled');\n };\n\n /**\n * Fires when the browser has loaded meta data for the audio/video\n *\n * @private\n * @method handleTechLoadedMetaData_\n */\n\n Player.prototype.handleTechLoadedMetaData_ = function handleTechLoadedMetaData_() {\n this.trigger('loadedmetadata');\n };\n\n /**\n * Fires when the browser has loaded the current frame of the audio/video\n *\n * @private\n * @method handleTechLoadedData_\n */\n\n Player.prototype.handleTechLoadedData_ = function handleTechLoadedData_() {\n this.trigger('loadeddata');\n };\n\n /**\n * Fires when the current playback position has changed\n *\n * @private\n * @method handleTechTimeUpdate_\n */\n\n Player.prototype.handleTechTimeUpdate_ = function handleTechTimeUpdate_() {\n this.trigger('timeupdate');\n };\n\n /**\n * Fires when the playing speed of the audio/video is changed\n *\n * @private\n * @method handleTechRateChange_\n */\n\n Player.prototype.handleTechRateChange_ = function handleTechRateChange_() {\n this.trigger('ratechange');\n };\n\n /**\n * Fires when the volume has been changed\n *\n * @private\n * @method handleTechVolumeChange_\n */\n\n Player.prototype.handleTechVolumeChange_ = function handleTechVolumeChange_() {\n this.trigger('volumechange');\n };\n\n /**\n * Fires when the text track has been changed\n *\n * @private\n * @method handleTechTextTrackChange_\n */\n\n Player.prototype.handleTechTextTrackChange_ = function handleTechTextTrackChange_() {\n this.trigger('texttrackchange');\n };\n\n /**\n * Get object for cached values.\n *\n * @return {Object}\n * @method getCache\n */\n\n Player.prototype.getCache = function getCache() {\n return this.cache_;\n };\n\n /**\n * Pass values to the playback tech\n *\n * @param {String=} method Method\n * @param {Object=} arg Argument\n * @private\n * @method techCall_\n */\n\n Player.prototype.techCall_ = function techCall_(method, arg) {\n // If it's not ready yet, call method when it is\n if (this.tech_ && !this.tech_.isReady_) {\n this.tech_.ready(function () {\n this[method](arg);\n }, true);\n\n // Otherwise call method now\n } else {\n try {\n this.tech_[method](arg);\n } catch (e) {\n _utilsLogJs2['default'](e);\n throw e;\n }\n }\n };\n\n /**\n * Get calls can't wait for the tech, and sometimes don't need to.\n *\n * @param {String} method Tech method\n * @return {Method}\n * @private\n * @method techGet_\n */\n\n Player.prototype.techGet_ = function techGet_(method) {\n if (this.tech_ && this.tech_.isReady_) {\n\n // Flash likes to die and reload when you hide or reposition it.\n // In these cases the object methods go away and we get errors.\n // When that happens we'll catch the errors and inform tech that it's not ready any more.\n try {\n return this.tech_[method]();\n } catch (e) {\n // When building additional tech libs, an expected method may not be defined yet\n if (this.tech_[method] === undefined) {\n _utilsLogJs2['default']('Video.js: ' + method + ' method not defined for ' + this.techName_ + ' playback technology.', e);\n } else {\n // When a method isn't available on the object it throws a TypeError\n if (e.name === 'TypeError') {\n _utilsLogJs2['default']('Video.js: ' + method + ' unavailable on ' + this.techName_ + ' playback technology element.', e);\n this.tech_.isReady_ = false;\n } else {\n _utilsLogJs2['default'](e);\n }\n }\n throw e;\n }\n }\n\n return;\n };\n\n /**\n * start media playback\n * ```js\n * myPlayer.play();\n * ```\n *\n * @return {Player} self\n * @method play\n */\n\n Player.prototype.play = function play() {\n this.techCall_('play');\n return this;\n };\n\n /**\n * Pause the video playback\n * ```js\n * myPlayer.pause();\n * ```\n *\n * @return {Player} self\n * @method pause\n */\n\n Player.prototype.pause = function pause() {\n this.techCall_('pause');\n return this;\n };\n\n /**\n * Check if the player is paused\n * ```js\n * var isPaused = myPlayer.paused();\n * var isPlaying = !myPlayer.paused();\n * ```\n *\n * @return {Boolean} false if the media is currently playing, or true otherwise\n * @method paused\n */\n\n Player.prototype.paused = function paused() {\n // The initial state of paused should be true (in Safari it's actually false)\n return this.techGet_('paused') === false ? false : true;\n };\n\n /**\n * Returns whether or not the user is \"scrubbing\". Scrubbing is when the user\n * has clicked the progress bar handle and is dragging it along the progress bar.\n *\n * @param {Boolean} isScrubbing True/false the user is scrubbing\n * @return {Boolean} The scrubbing status when getting\n * @return {Object} The player when setting\n * @method scrubbing\n */\n\n Player.prototype.scrubbing = function scrubbing(isScrubbing) {\n if (isScrubbing !== undefined) {\n this.scrubbing_ = !!isScrubbing;\n\n if (isScrubbing) {\n this.addClass('vjs-scrubbing');\n } else {\n this.removeClass('vjs-scrubbing');\n }\n\n return this;\n }\n\n return this.scrubbing_;\n };\n\n /**\n * Get or set the current time (in seconds)\n * ```js\n * // get\n * var whereYouAt = myPlayer.currentTime();\n * // set\n * myPlayer.currentTime(120); // 2 minutes into the video\n * ```\n *\n * @param {Number|String=} seconds The time to seek to\n * @return {Number} The time in seconds, when not setting\n * @return {Player} self, when the current time is set\n * @method currentTime\n */\n\n Player.prototype.currentTime = function currentTime(seconds) {\n if (seconds !== undefined) {\n\n this.techCall_('setCurrentTime', seconds);\n\n return this;\n }\n\n // cache last currentTime and return. default to 0 seconds\n //\n // Caching the currentTime is meant to prevent a massive amount of reads on the tech's\n // currentTime when scrubbing, but may not provide much performance benefit afterall.\n // Should be tested. Also something has to read the actual current time or the cache will\n // never get updated.\n return this.cache_.currentTime = this.techGet_('currentTime') || 0;\n };\n\n /**\n * Get the length in time of the video in seconds\n * ```js\n * var lengthOfVideo = myPlayer.duration();\n * ```\n * **NOTE**: The video must have started loading before the duration can be\n * known, and in the case of Flash, may not be known until the video starts\n * playing.\n *\n * @param {Number} seconds Duration when setting\n * @return {Number} The duration of the video in seconds when getting\n * @method duration\n */\n\n Player.prototype.duration = function duration(seconds) {\n if (seconds === undefined) {\n return this.cache_.duration || 0;\n }\n\n seconds = parseFloat(seconds) || 0;\n\n // Standardize on Inifity for signaling video is live\n if (seconds < 0) {\n seconds = Infinity;\n }\n\n if (seconds !== this.cache_.duration) {\n // Cache the last set value for optimized scrubbing (esp. Flash)\n this.cache_.duration = seconds;\n\n if (seconds === Infinity) {\n this.addClass('vjs-live');\n } else {\n this.removeClass('vjs-live');\n }\n\n this.trigger('durationchange');\n }\n\n return this;\n };\n\n /**\n * Calculates how much time is left.\n * ```js\n * var timeLeft = myPlayer.remainingTime();\n * ```\n * Not a native video element function, but useful\n *\n * @return {Number} The time remaining in seconds\n * @method remainingTime\n */\n\n Player.prototype.remainingTime = function remainingTime() {\n return this.duration() - this.currentTime();\n };\n\n // http://dev.w3.org/html5/spec/video.html#dom-media-buffered\n // Buffered returns a timerange object.\n // Kind of like an array of portions of the video that have been downloaded.\n\n /**\n * Get a TimeRange object with the times of the video that have been downloaded\n * If you just want the percent of the video that's been downloaded,\n * use bufferedPercent.\n * ```js\n * // Number of different ranges of time have been buffered. Usually 1.\n * numberOfRanges = bufferedTimeRange.length,\n * // Time in seconds when the first range starts. Usually 0.\n * firstRangeStart = bufferedTimeRange.start(0),\n * // Time in seconds when the first range ends\n * firstRangeEnd = bufferedTimeRange.end(0),\n * // Length in seconds of the first time range\n * firstRangeLength = firstRangeEnd - firstRangeStart;\n * ```\n *\n * @return {Object} A mock TimeRange object (following HTML spec)\n * @method buffered\n */\n\n Player.prototype.buffered = function buffered() {\n var buffered = this.techGet_('buffered');\n\n if (!buffered || !buffered.length) {\n buffered = _utilsTimeRangesJs.createTimeRange(0, 0);\n }\n\n return buffered;\n };\n\n /**\n * Get the percent (as a decimal) of the video that's been downloaded\n * ```js\n * var howMuchIsDownloaded = myPlayer.bufferedPercent();\n * ```\n * 0 means none, 1 means all.\n * (This method isn't in the HTML5 spec, but it's very convenient)\n *\n * @return {Number} A decimal between 0 and 1 representing the percent\n * @method bufferedPercent\n */\n\n Player.prototype.bufferedPercent = function bufferedPercent() {\n return _utilsBufferJs.bufferedPercent(this.buffered(), this.duration());\n };\n\n /**\n * Get the ending time of the last buffered time range\n * This is used in the progress bar to encapsulate all time ranges.\n *\n * @return {Number} The end of the last buffered time range\n * @method bufferedEnd\n */\n\n Player.prototype.bufferedEnd = function bufferedEnd() {\n var buffered = this.buffered(),\n duration = this.duration(),\n end = buffered.end(buffered.length - 1);\n\n if (end > duration) {\n end = duration;\n }\n\n return end;\n };\n\n /**\n * Get or set the current volume of the media\n * ```js\n * // get\n * var howLoudIsIt = myPlayer.volume();\n * // set\n * myPlayer.volume(0.5); // Set volume to half\n * ```\n * 0 is off (muted), 1.0 is all the way up, 0.5 is half way.\n *\n * @param {Number} percentAsDecimal The new volume as a decimal percent\n * @return {Number} The current volume when getting\n * @return {Player} self when setting\n * @method volume\n */\n\n Player.prototype.volume = function volume(percentAsDecimal) {\n var vol = undefined;\n\n if (percentAsDecimal !== undefined) {\n vol = Math.max(0, Math.min(1, parseFloat(percentAsDecimal))); // Force value to between 0 and 1\n this.cache_.volume = vol;\n this.techCall_('setVolume', vol);\n\n return this;\n }\n\n // Default to 1 when returning current volume.\n vol = parseFloat(this.techGet_('volume'));\n return isNaN(vol) ? 1 : vol;\n };\n\n /**\n * Get the current muted state, or turn mute on or off\n * ```js\n * // get\n * var isVolumeMuted = myPlayer.muted();\n * // set\n * myPlayer.muted(true); // mute the volume\n * ```\n *\n * @param {Boolean=} muted True to mute, false to unmute\n * @return {Boolean} True if mute is on, false if not when getting\n * @return {Player} self when setting mute\n * @method muted\n */\n\n Player.prototype.muted = function muted(_muted) {\n if (_muted !== undefined) {\n this.techCall_('setMuted', _muted);\n return this;\n }\n return this.techGet_('muted') || false; // Default to false\n };\n\n // Check if current tech can support native fullscreen\n // (e.g. with built in controls like iOS, so not our flash swf)\n /**\n * Check to see if fullscreen is supported\n *\n * @return {Boolean}\n * @method supportsFullScreen\n */\n\n Player.prototype.supportsFullScreen = function supportsFullScreen() {\n return this.techGet_('supportsFullScreen') || false;\n };\n\n /**\n * Check if the player is in fullscreen mode\n * ```js\n * // get\n * var fullscreenOrNot = myPlayer.isFullscreen();\n * // set\n * myPlayer.isFullscreen(true); // tell the player it's in fullscreen\n * ```\n * NOTE: As of the latest HTML5 spec, isFullscreen is no longer an official\n * property and instead document.fullscreenElement is used. But isFullscreen is\n * still a valuable property for internal player workings.\n *\n * @param {Boolean=} isFS Update the player's fullscreen state\n * @return {Boolean} true if fullscreen false if not when getting\n * @return {Player} self when setting\n * @method isFullscreen\n */\n\n Player.prototype.isFullscreen = function isFullscreen(isFS) {\n if (isFS !== undefined) {\n this.isFullscreen_ = !!isFS;\n return this;\n }\n return !!this.isFullscreen_;\n };\n\n /**\n * Increase the size of the video to full screen\n * ```js\n * myPlayer.requestFullscreen();\n * ```\n * In some browsers, full screen is not supported natively, so it enters\n * \"full window mode\", where the video fills the browser window.\n * In browsers and devices that support native full screen, sometimes the\n * browser's default controls will be shown, and not the Video.js custom skin.\n * This includes most mobile devices (iOS, Android) and older versions of\n * Safari.\n *\n * @return {Player} self\n * @method requestFullscreen\n */\n\n Player.prototype.requestFullscreen = function requestFullscreen() {\n var fsApi = _fullscreenApiJs2['default'];\n\n this.isFullscreen(true);\n\n if (fsApi.requestFullscreen) {\n // the browser supports going fullscreen at the element level so we can\n // take the controls fullscreen as well as the video\n\n // Trigger fullscreenchange event after change\n // We have to specifically add this each time, and remove\n // when canceling fullscreen. Otherwise if there's multiple\n // players on a page, they would all be reacting to the same fullscreen\n // events\n Events.on(_globalDocument2['default'], fsApi.fullscreenchange, Fn.bind(this, function documentFullscreenChange(e) {\n this.isFullscreen(_globalDocument2['default'][fsApi.fullscreenElement]);\n\n // If cancelling fullscreen, remove event listener.\n if (this.isFullscreen() === false) {\n Events.off(_globalDocument2['default'], fsApi.fullscreenchange, documentFullscreenChange);\n }\n\n this.trigger('fullscreenchange');\n }));\n\n this.el_[fsApi.requestFullscreen]();\n } else if (this.tech_.supportsFullScreen()) {\n // we can't take the video.js controls fullscreen but we can go fullscreen\n // with native controls\n this.techCall_('enterFullScreen');\n } else {\n // fullscreen isn't supported so we'll just stretch the video element to\n // fill the viewport\n this.enterFullWindow();\n this.trigger('fullscreenchange');\n }\n\n return this;\n };\n\n /**\n * Return the video to its normal size after having been in full screen mode\n * ```js\n * myPlayer.exitFullscreen();\n * ```\n *\n * @return {Player} self\n * @method exitFullscreen\n */\n\n Player.prototype.exitFullscreen = function exitFullscreen() {\n var fsApi = _fullscreenApiJs2['default'];\n this.isFullscreen(false);\n\n // Check for browser element fullscreen support\n if (fsApi.requestFullscreen) {\n _globalDocument2['default'][fsApi.exitFullscreen]();\n } else if (this.tech_.supportsFullScreen()) {\n this.techCall_('exitFullScreen');\n } else {\n this.exitFullWindow();\n this.trigger('fullscreenchange');\n }\n\n return this;\n };\n\n /**\n * When fullscreen isn't supported we can stretch the video container to as wide as the browser will let us.\n *\n * @method enterFullWindow\n */\n\n Player.prototype.enterFullWindow = function enterFullWindow() {\n this.isFullWindow = true;\n\n // Storing original doc overflow value to return to when fullscreen is off\n this.docOrigOverflow = _globalDocument2['default'].documentElement.style.overflow;\n\n // Add listener for esc key to exit fullscreen\n Events.on(_globalDocument2['default'], 'keydown', Fn.bind(this, this.fullWindowOnEscKey));\n\n // Hide any scroll bars\n _globalDocument2['default'].documentElement.style.overflow = 'hidden';\n\n // Apply fullscreen styles\n Dom.addElClass(_globalDocument2['default'].body, 'vjs-full-window');\n\n this.trigger('enterFullWindow');\n };\n\n /**\n * Check for call to either exit full window or full screen on ESC key\n *\n * @param {String} event Event to check for key press\n * @method fullWindowOnEscKey\n */\n\n Player.prototype.fullWindowOnEscKey = function fullWindowOnEscKey(event) {\n if (event.keyCode === 27) {\n if (this.isFullscreen() === true) {\n this.exitFullscreen();\n } else {\n this.exitFullWindow();\n }\n }\n };\n\n /**\n * Exit full window\n *\n * @method exitFullWindow\n */\n\n Player.prototype.exitFullWindow = function exitFullWindow() {\n this.isFullWindow = false;\n Events.off(_globalDocument2['default'], 'keydown', this.fullWindowOnEscKey);\n\n // Unhide scroll bars.\n _globalDocument2['default'].documentElement.style.overflow = this.docOrigOverflow;\n\n // Remove fullscreen styles\n Dom.removeElClass(_globalDocument2['default'].body, 'vjs-full-window');\n\n // Resize the box, controller, and poster to original sizes\n // this.positionAll();\n this.trigger('exitFullWindow');\n };\n\n /**\n * Check whether the player can play a given mimetype\n *\n * @param {String} type The mimetype to check\n * @return {String} 'probably', 'maybe', or '' (empty string)\n * @method canPlayType\n */\n\n Player.prototype.canPlayType = function canPlayType(type) {\n var can = undefined;\n\n // Loop through each playback technology in the options order\n for (var i = 0, j = this.options_.techOrder; i < j.length; i++) {\n var techName = _utilsToTitleCaseJs2['default'](j[i]);\n var tech = _techTechJs2['default'].getTech(techName);\n\n // Support old behavior of techs being registered as components.\n // Remove once that deprecated behavior is removed.\n if (!tech) {\n tech = _componentJs2['default'].getComponent(techName);\n }\n\n // Check if the current tech is defined before continuing\n if (!tech) {\n _utilsLogJs2['default'].error('The \"' + techName + '\" tech is undefined. Skipped browser support check for that tech.');\n continue;\n }\n\n // Check if the browser supports this technology\n if (tech.isSupported()) {\n can = tech.canPlayType(type);\n\n if (can) {\n return can;\n }\n }\n }\n\n return '';\n };\n\n /**\n * Select source based on tech-order or source-order\n * Uses source-order selection if `options.sourceOrder` is truthy. Otherwise,\n * defaults to tech-order selection\n *\n * @param {Array} sources The sources for a media asset\n * @return {Object|Boolean} Object of source and tech order, otherwise false\n * @method selectSource\n */\n\n Player.prototype.selectSource = function selectSource(sources) {\n // Get only the techs specified in `techOrder` that exist and are supported by the\n // current platform\n var techs = this.options_.techOrder.map(_utilsToTitleCaseJs2['default']).map(function (techName) {\n // `Component.getComponent(...)` is for support of old behavior of techs\n // being registered as components.\n // Remove once that deprecated behavior is removed.\n return [techName, _techTechJs2['default'].getTech(techName) || _componentJs2['default'].getComponent(techName)];\n }).filter(function (_ref) {\n var techName = _ref[0];\n var tech = _ref[1];\n\n // Check if the current tech is defined before continuing\n if (tech) {\n // Check if the browser supports this technology\n return tech.isSupported();\n }\n\n _utilsLogJs2['default'].error('The \"' + techName + '\" tech is undefined. Skipped browser support check for that tech.');\n return false;\n });\n\n // Iterate over each `innerArray` element once per `outerArray` element and execute\n // `tester` with both. If `tester` returns a non-falsy value, exit early and return\n // that value.\n var findFirstPassingTechSourcePair = function findFirstPassingTechSourcePair(outerArray, innerArray, tester) {\n var found = undefined;\n\n outerArray.some(function (outerChoice) {\n return innerArray.some(function (innerChoice) {\n found = tester(outerChoice, innerChoice);\n\n if (found) {\n return true;\n }\n });\n });\n\n return found;\n };\n\n var foundSourceAndTech = undefined;\n var flip = function flip(fn) {\n return function (a, b) {\n return fn(b, a);\n };\n };\n var finder = function finder(_ref2, source) {\n var techName = _ref2[0];\n var tech = _ref2[1];\n\n if (tech.canPlaySource(source)) {\n return { source: source, tech: techName };\n }\n };\n\n // Depending on the truthiness of `options.sourceOrder`, we swap the order of techs and sources\n // to select from them based on their priority.\n if (this.options_.sourceOrder) {\n // Source-first ordering\n foundSourceAndTech = findFirstPassingTechSourcePair(sources, techs, flip(finder));\n } else {\n // Tech-first ordering\n foundSourceAndTech = findFirstPassingTechSourcePair(techs, sources, finder);\n }\n\n return foundSourceAndTech || false;\n };\n\n /**\n * The source function updates the video source\n * There are three types of variables you can pass as the argument.\n * **URL String**: A URL to the the video file. Use this method if you are sure\n * the current playback technology (HTML5/Flash) can support the source you\n * provide. Currently only MP4 files can be used in both HTML5 and Flash.\n * ```js\n * myPlayer.src(\"http://www.example.com/path/to/video.mp4\");\n * ```\n * **Source Object (or element):* * A javascript object containing information\n * about the source file. Use this method if you want the player to determine if\n * it can support the file using the type information.\n * ```js\n * myPlayer.src({ type: \"video/mp4\", src: \"http://www.example.com/path/to/video.mp4\" });\n * ```\n * **Array of Source Objects:* * To provide multiple versions of the source so\n * that it can be played using HTML5 across browsers you can use an array of\n * source objects. Video.js will detect which version is supported and load that\n * file.\n * ```js\n * myPlayer.src([\n * { type: \"video/mp4\", src: \"http://www.example.com/path/to/video.mp4\" },\n * { type: \"video/webm\", src: \"http://www.example.com/path/to/video.webm\" },\n * { type: \"video/ogg\", src: \"http://www.example.com/path/to/video.ogv\" }\n * ]);\n * ```\n *\n * @param {String|Object|Array=} source The source URL, object, or array of sources\n * @return {String} The current video source when getting\n * @return {String} The player when setting\n * @method src\n */\n\n Player.prototype.src = function src(source) {\n if (source === undefined) {\n return this.techGet_('src');\n }\n\n var currentTech = _techTechJs2['default'].getTech(this.techName_);\n // Support old behavior of techs being registered as components.\n // Remove once that deprecated behavior is removed.\n if (!currentTech) {\n currentTech = _componentJs2['default'].getComponent(this.techName_);\n }\n\n // case: Array of source objects to choose from and pick the best to play\n if (Array.isArray(source)) {\n this.sourceList_(source);\n\n // case: URL String (http://myvideo...)\n } else if (typeof source === 'string') {\n // create a source object from the string\n this.src({ src: source });\n\n // case: Source object { src: '', type: '' ... }\n } else if (source instanceof Object) {\n // check if the source has a type and the loaded tech cannot play the source\n // if there's no type we'll just try the current tech\n if (source.type && !currentTech.canPlaySource(source)) {\n // create a source list with the current source and send through\n // the tech loop to check for a compatible technology\n this.sourceList_([source]);\n } else {\n this.cache_.src = source.src;\n this.currentType_ = source.type || '';\n\n // wait until the tech is ready to set the source\n this.ready(function () {\n\n // The setSource tech method was added with source handlers\n // so older techs won't support it\n // We need to check the direct prototype for the case where subclasses\n // of the tech do not support source handlers\n if (currentTech.prototype.hasOwnProperty('setSource')) {\n this.techCall_('setSource', source);\n } else {\n this.techCall_('src', source.src);\n }\n\n if (this.options_.preload === 'auto') {\n this.load();\n }\n\n if (this.options_.autoplay) {\n this.play();\n }\n\n // Set the source synchronously if possible (#2326)\n }, true);\n }\n }\n\n return this;\n };\n\n /**\n * Handle an array of source objects\n *\n * @param {Array} sources Array of source objects\n * @private\n * @method sourceList_\n */\n\n Player.prototype.sourceList_ = function sourceList_(sources) {\n var sourceTech = this.selectSource(sources);\n\n if (sourceTech) {\n if (sourceTech.tech === this.techName_) {\n // if this technology is already loaded, set the source\n this.src(sourceTech.source);\n } else {\n // load this technology with the chosen source\n this.loadTech_(sourceTech.tech, sourceTech.source);\n }\n } else {\n // We need to wrap this in a timeout to give folks a chance to add error event handlers\n this.setTimeout(function () {\n this.error({ code: 4, message: this.localize(this.options_.notSupportedMessage) });\n }, 0);\n\n // we could not find an appropriate tech, but let's still notify the delegate that this is it\n // this needs a better comment about why this is needed\n this.triggerReady();\n }\n };\n\n /**\n * Begin loading the src data.\n *\n * @return {Player} Returns the player\n * @method load\n */\n\n Player.prototype.load = function load() {\n this.techCall_('load');\n return this;\n };\n\n /**\n * Reset the player. Loads the first tech in the techOrder,\n * and calls `reset` on the tech`.\n *\n * @return {Player} Returns the player\n * @method reset\n */\n\n Player.prototype.reset = function reset() {\n this.loadTech_(_utilsToTitleCaseJs2['default'](this.options_.techOrder[0]), null);\n this.techCall_('reset');\n return this;\n };\n\n /**\n * Returns the fully qualified URL of the current source value e.g. http://mysite.com/video.mp4\n * Can be used in conjuction with `currentType` to assist in rebuilding the current source object.\n *\n * @return {String} The current source\n * @method currentSrc\n */\n\n Player.prototype.currentSrc = function currentSrc() {\n return this.techGet_('currentSrc') || this.cache_.src || '';\n };\n\n /**\n * Get the current source type e.g. video/mp4\n * This can allow you rebuild the current source object so that you could load the same\n * source and tech later\n *\n * @return {String} The source MIME type\n * @method currentType\n */\n\n Player.prototype.currentType = function currentType() {\n return this.currentType_ || '';\n };\n\n /**\n * Get or set the preload attribute\n *\n * @param {Boolean} value Boolean to determine if preload should be used\n * @return {String} The preload attribute value when getting\n * @return {Player} Returns the player when setting\n * @method preload\n */\n\n Player.prototype.preload = function preload(value) {\n if (value !== undefined) {\n this.techCall_('setPreload', value);\n this.options_.preload = value;\n return this;\n }\n return this.techGet_('preload');\n };\n\n /**\n * Get or set the autoplay attribute.\n *\n * @param {Boolean} value Boolean to determine if video should autoplay\n * @return {String} The autoplay attribute value when getting\n * @return {Player} Returns the player when setting\n * @method autoplay\n */\n\n Player.prototype.autoplay = function autoplay(value) {\n if (value !== undefined) {\n this.techCall_('setAutoplay', value);\n this.options_.autoplay = value;\n return this;\n }\n return this.techGet_('autoplay', value);\n };\n\n /**\n * Get or set the loop attribute on the video element.\n *\n * @param {Boolean} value Boolean to determine if video should loop\n * @return {String} The loop attribute value when getting\n * @return {Player} Returns the player when setting\n * @method loop\n */\n\n Player.prototype.loop = function loop(value) {\n if (value !== undefined) {\n this.techCall_('setLoop', value);\n this.options_['loop'] = value;\n return this;\n }\n return this.techGet_('loop');\n };\n\n /**\n * Get or set the poster image source url\n *\n * ##### EXAMPLE:\n * ```js\n * // get\n * var currentPoster = myPlayer.poster();\n * // set\n * myPlayer.poster('http://example.com/myImage.jpg');\n * ```\n *\n * @param {String=} src Poster image source URL\n * @return {String} poster URL when getting\n * @return {Player} self when setting\n * @method poster\n */\n\n Player.prototype.poster = function poster(src) {\n if (src === undefined) {\n return this.poster_;\n }\n\n // The correct way to remove a poster is to set as an empty string\n // other falsey values will throw errors\n if (!src) {\n src = '';\n }\n\n // update the internal poster variable\n this.poster_ = src;\n\n // update the tech's poster\n this.techCall_('setPoster', src);\n\n // alert components that the poster has been set\n this.trigger('posterchange');\n\n return this;\n };\n\n /**\n * Some techs (e.g. YouTube) can provide a poster source in an\n * asynchronous way. We want the poster component to use this\n * poster source so that it covers up the tech's controls.\n * (YouTube's play button). However we only want to use this\n * soruce if the player user hasn't set a poster through\n * the normal APIs.\n *\n * @private\n * @method handleTechPosterChange_\n */\n\n Player.prototype.handleTechPosterChange_ = function handleTechPosterChange_() {\n if (!this.poster_ && this.tech_ && this.tech_.poster) {\n this.poster_ = this.tech_.poster() || '';\n\n // Let components know the poster has changed\n this.trigger('posterchange');\n }\n };\n\n /**\n * Get or set whether or not the controls are showing.\n *\n * @param {Boolean} bool Set controls to showing or not\n * @return {Boolean} Controls are showing\n * @method controls\n */\n\n Player.prototype.controls = function controls(bool) {\n if (bool !== undefined) {\n bool = !!bool; // force boolean\n // Don't trigger a change event unless it actually changed\n if (this.controls_ !== bool) {\n this.controls_ = bool;\n\n if (this.usingNativeControls()) {\n this.techCall_('setControls', bool);\n }\n\n if (bool) {\n this.removeClass('vjs-controls-disabled');\n this.addClass('vjs-controls-enabled');\n this.trigger('controlsenabled');\n\n if (!this.usingNativeControls()) {\n this.addTechControlsListeners_();\n }\n } else {\n this.removeClass('vjs-controls-enabled');\n this.addClass('vjs-controls-disabled');\n this.trigger('controlsdisabled');\n\n if (!this.usingNativeControls()) {\n this.removeTechControlsListeners_();\n }\n }\n }\n return this;\n }\n return !!this.controls_;\n };\n\n /**\n * Toggle native controls on/off. Native controls are the controls built into\n * devices (e.g. default iPhone controls), Flash, or other techs\n * (e.g. Vimeo Controls)\n * **This should only be set by the current tech, because only the tech knows\n * if it can support native controls**\n *\n * @param {Boolean} bool True signals that native controls are on\n * @return {Player} Returns the player\n * @private\n * @method usingNativeControls\n */\n\n Player.prototype.usingNativeControls = function usingNativeControls(bool) {\n if (bool !== undefined) {\n bool = !!bool; // force boolean\n // Don't trigger a change event unless it actually changed\n if (this.usingNativeControls_ !== bool) {\n this.usingNativeControls_ = bool;\n if (bool) {\n this.addClass('vjs-using-native-controls');\n\n /**\n * player is using the native device controls\n *\n * @event usingnativecontrols\n * @memberof Player\n * @instance\n * @private\n */\n this.trigger('usingnativecontrols');\n } else {\n this.removeClass('vjs-using-native-controls');\n\n /**\n * player is using the custom HTML controls\n *\n * @event usingcustomcontrols\n * @memberof Player\n * @instance\n * @private\n */\n this.trigger('usingcustomcontrols');\n }\n }\n return this;\n }\n return !!this.usingNativeControls_;\n };\n\n /**\n * Set or get the current MediaError\n *\n * @param {*} err A MediaError or a String/Number to be turned into a MediaError\n * @return {MediaError|null} when getting\n * @return {Player} when setting\n * @method error\n */\n\n Player.prototype.error = function error(err) {\n if (err === undefined) {\n return this.error_ || null;\n }\n\n // restoring to default\n if (err === null) {\n this.error_ = err;\n this.removeClass('vjs-error');\n this.errorDisplay.close();\n return this;\n }\n\n // error instance\n if (err instanceof _mediaErrorJs2['default']) {\n this.error_ = err;\n } else {\n this.error_ = new _mediaErrorJs2['default'](err);\n }\n\n // add the vjs-error classname to the player\n this.addClass('vjs-error');\n\n // log the name of the error type and any message\n // ie8 just logs \"[object object]\" if you just log the error object\n _utilsLogJs2['default'].error('(CODE:' + this.error_.code + ' ' + _mediaErrorJs2['default'].errorTypes[this.error_.code] + ')', this.error_.message, this.error_);\n\n // fire an error event on the player\n this.trigger('error');\n\n return this;\n };\n\n /**\n * Returns whether or not the player is in the \"ended\" state.\n *\n * @return {Boolean} True if the player is in the ended state, false if not.\n * @method ended\n */\n\n Player.prototype.ended = function ended() {\n return this.techGet_('ended');\n };\n\n /**\n * Returns whether or not the player is in the \"seeking\" state.\n *\n * @return {Boolean} True if the player is in the seeking state, false if not.\n * @method seeking\n */\n\n Player.prototype.seeking = function seeking() {\n return this.techGet_('seeking');\n };\n\n /**\n * Returns the TimeRanges of the media that are currently available\n * for seeking to.\n *\n * @return {TimeRanges} the seekable intervals of the media timeline\n * @method seekable\n */\n\n Player.prototype.seekable = function seekable() {\n return this.techGet_('seekable');\n };\n\n /**\n * Report user activity\n *\n * @param {Object} event Event object\n * @method reportUserActivity\n */\n\n Player.prototype.reportUserActivity = function reportUserActivity(event) {\n this.userActivity_ = true;\n };\n\n /**\n * Get/set if user is active\n *\n * @param {Boolean} bool Value when setting\n * @return {Boolean} Value if user is active user when getting\n * @method userActive\n */\n\n Player.prototype.userActive = function userActive(bool) {\n if (bool !== undefined) {\n bool = !!bool;\n if (bool !== this.userActive_) {\n this.userActive_ = bool;\n if (bool) {\n // If the user was inactive and is now active we want to reset the\n // inactivity timer\n this.userActivity_ = true;\n this.removeClass('vjs-user-inactive');\n this.addClass('vjs-user-active');\n this.trigger('useractive');\n } else {\n // We're switching the state to inactive manually, so erase any other\n // activity\n this.userActivity_ = false;\n\n // Chrome/Safari/IE have bugs where when you change the cursor it can\n // trigger a mousemove event. This causes an issue when you're hiding\n // the cursor when the user is inactive, and a mousemove signals user\n // activity. Making it impossible to go into inactive mode. Specifically\n // this happens in fullscreen when we really need to hide the cursor.\n //\n // When this gets resolved in ALL browsers it can be removed\n // https://code.google.com/p/chromium/issues/detail?id=103041\n if (this.tech_) {\n this.tech_.one('mousemove', function (e) {\n e.stopPropagation();\n e.preventDefault();\n });\n }\n\n this.removeClass('vjs-user-active');\n this.addClass('vjs-user-inactive');\n this.trigger('userinactive');\n }\n }\n return this;\n }\n return this.userActive_;\n };\n\n /**\n * Listen for user activity based on timeout value\n *\n * @private\n * @method listenForUserActivity_\n */\n\n Player.prototype.listenForUserActivity_ = function listenForUserActivity_() {\n var mouseInProgress = undefined,\n lastMoveX = undefined,\n lastMoveY = undefined;\n\n var handleActivity = Fn.bind(this, this.reportUserActivity);\n\n var handleMouseMove = function handleMouseMove(e) {\n // #1068 - Prevent mousemove spamming\n // Chrome Bug: https://code.google.com/p/chromium/issues/detail?id=366970\n if (e.screenX !== lastMoveX || e.screenY !== lastMoveY) {\n lastMoveX = e.screenX;\n lastMoveY = e.screenY;\n handleActivity();\n }\n };\n\n var handleMouseDown = function handleMouseDown() {\n handleActivity();\n // For as long as the they are touching the device or have their mouse down,\n // we consider them active even if they're not moving their finger or mouse.\n // So we want to continue to update that they are active\n this.clearInterval(mouseInProgress);\n // Setting userActivity=true now and setting the interval to the same time\n // as the activityCheck interval (250) should ensure we never miss the\n // next activityCheck\n mouseInProgress = this.setInterval(handleActivity, 250);\n };\n\n var handleMouseUp = function handleMouseUp(event) {\n handleActivity();\n // Stop the interval that maintains activity if the mouse/touch is down\n this.clearInterval(mouseInProgress);\n };\n\n // Any mouse movement will be considered user activity\n this.on('mousedown', handleMouseDown);\n this.on('mousemove', handleMouseMove);\n this.on('mouseup', handleMouseUp);\n\n // Listen for keyboard navigation\n // Shouldn't need to use inProgress interval because of key repeat\n this.on('keydown', handleActivity);\n this.on('keyup', handleActivity);\n\n // Run an interval every 250 milliseconds instead of stuffing everything into\n // the mousemove/touchmove function itself, to prevent performance degradation.\n // `this.reportUserActivity` simply sets this.userActivity_ to true, which\n // then gets picked up by this loop\n // http://ejohn.org/blog/learning-from-twitter/\n var inactivityTimeout = undefined;\n var activityCheck = this.setInterval(function () {\n // Check to see if mouse/touch activity has happened\n if (this.userActivity_) {\n // Reset the activity tracker\n this.userActivity_ = false;\n\n // If the user state was inactive, set the state to active\n this.userActive(true);\n\n // Clear any existing inactivity timeout to start the timer over\n this.clearTimeout(inactivityTimeout);\n\n var timeout = this.options_['inactivityTimeout'];\n if (timeout > 0) {\n // In milliseconds, if no more activity has occurred the\n // user will be considered inactive\n inactivityTimeout = this.setTimeout(function () {\n // Protect against the case where the inactivityTimeout can trigger just\n // before the next user activity is picked up by the activityCheck loop\n // causing a flicker\n if (!this.userActivity_) {\n this.userActive(false);\n }\n }, timeout);\n }\n }\n }, 250);\n };\n\n /**\n * Gets or sets the current playback rate. A playback rate of\n * 1.0 represents normal speed and 0.5 would indicate half-speed\n * playback, for instance.\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-playbackrate\n *\n * @param {Number} rate New playback rate to set.\n * @return {Number} Returns the new playback rate when setting\n * @return {Number} Returns the current playback rate when getting\n * @method playbackRate\n */\n\n Player.prototype.playbackRate = function playbackRate(rate) {\n if (rate !== undefined) {\n this.techCall_('setPlaybackRate', rate);\n return this;\n }\n\n if (this.tech_ && this.tech_['featuresPlaybackRate']) {\n return this.techGet_('playbackRate');\n } else {\n return 1.0;\n }\n };\n\n /**\n * Gets or sets the audio flag\n *\n * @param {Boolean} bool True signals that this is an audio player.\n * @return {Boolean} Returns true if player is audio, false if not when getting\n * @return {Player} Returns the player if setting\n * @private\n * @method isAudio\n */\n\n Player.prototype.isAudio = function isAudio(bool) {\n if (bool !== undefined) {\n this.isAudio_ = !!bool;\n return this;\n }\n\n return !!this.isAudio_;\n };\n\n /**\n * Returns the current state of network activity for the element, from\n * the codes in the list below.\n * - NETWORK_EMPTY (numeric value 0)\n * The element has not yet been initialised. All attributes are in\n * their initial states.\n * - NETWORK_IDLE (numeric value 1)\n * The element's resource selection algorithm is active and has\n * selected a resource, but it is not actually using the network at\n * this time.\n * - NETWORK_LOADING (numeric value 2)\n * The user agent is actively trying to download data.\n * - NETWORK_NO_SOURCE (numeric value 3)\n * The element's resource selection algorithm is active, but it has\n * not yet found a resource to use.\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#network-states\n * @return {Number} the current network activity state\n * @method networkState\n */\n\n Player.prototype.networkState = function networkState() {\n return this.techGet_('networkState');\n };\n\n /**\n * Returns a value that expresses the current state of the element\n * with respect to rendering the current playback position, from the\n * codes in the list below.\n * - HAVE_NOTHING (numeric value 0)\n * No information regarding the media resource is available.\n * - HAVE_METADATA (numeric value 1)\n * Enough of the resource has been obtained that the duration of the\n * resource is available.\n * - HAVE_CURRENT_DATA (numeric value 2)\n * Data for the immediate current playback position is available.\n * - HAVE_FUTURE_DATA (numeric value 3)\n * Data for the immediate current playback position is available, as\n * well as enough data for the user agent to advance the current\n * playback position in the direction of playback.\n * - HAVE_ENOUGH_DATA (numeric value 4)\n * The user agent estimates that enough data is available for\n * playback to proceed uninterrupted.\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-readystate\n * @return {Number} the current playback rendering state\n * @method readyState\n */\n\n Player.prototype.readyState = function readyState() {\n return this.techGet_('readyState');\n };\n\n /**\n * Text tracks are tracks of timed text events.\n * Captions - text displayed over the video for the hearing impaired\n * Subtitles - text displayed over the video for those who don't understand language in the video\n * Chapters - text displayed in a menu allowing the user to jump to particular points (chapters) in the video\n * Descriptions - audio descriptions that are read back to the user by a screen reading device\n */\n\n /**\n * Get an array of associated text tracks. captions, subtitles, chapters, descriptions\n * http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-texttracks\n *\n * @return {Array} Array of track objects\n * @method textTracks\n */\n\n Player.prototype.textTracks = function textTracks() {\n // cannot use techGet_ directly because it checks to see whether the tech is ready.\n // Flash is unlikely to be ready in time but textTracks should still work.\n return this.tech_ && this.tech_['textTracks']();\n };\n\n /**\n * Get an array of remote text tracks\n *\n * @return {Array}\n * @method remoteTextTracks\n */\n\n Player.prototype.remoteTextTracks = function remoteTextTracks() {\n return this.tech_ && this.tech_['remoteTextTracks']();\n };\n\n /**\n * Get an array of remote html track elements\n *\n * @return {HTMLTrackElement[]}\n * @method remoteTextTrackEls\n */\n\n Player.prototype.remoteTextTrackEls = function remoteTextTrackEls() {\n return this.tech_ && this.tech_['remoteTextTrackEls']();\n };\n\n /**\n * Add a text track\n * In addition to the W3C settings we allow adding additional info through options.\n * http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-addtexttrack\n *\n * @param {String} kind Captions, subtitles, chapters, descriptions, or metadata\n * @param {String=} label Optional label\n * @param {String=} language Optional language\n * @method addTextTrack\n */\n\n Player.prototype.addTextTrack = function addTextTrack(kind, label, language) {\n return this.tech_ && this.tech_['addTextTrack'](kind, label, language);\n };\n\n /**\n * Add a remote text track\n *\n * @param {Object} options Options for remote text track\n * @method addRemoteTextTrack\n */\n\n Player.prototype.addRemoteTextTrack = function addRemoteTextTrack(options) {\n return this.tech_ && this.tech_['addRemoteTextTrack'](options);\n };\n\n /**\n * Remove a remote text track\n *\n * @param {Object} track Remote text track to remove\n * @method removeRemoteTextTrack\n */\n // destructure the input into an object with a track argument, defaulting to arguments[0]\n // default the whole argument to an empty object if nothing was passed in\n\n Player.prototype.removeRemoteTextTrack = function removeRemoteTextTrack() {\n var _ref3 = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n var _ref3$track = _ref3.track;\n var track = _ref3$track === undefined ? arguments[0] : _ref3$track;\n // jshint ignore:line\n this.tech_ && this.tech_['removeRemoteTextTrack'](track);\n };\n\n /**\n * Get video width\n *\n * @return {Number} Video width\n * @method videoWidth\n */\n\n Player.prototype.videoWidth = function videoWidth() {\n return this.tech_ && this.tech_.videoWidth && this.tech_.videoWidth() || 0;\n };\n\n /**\n * Get video height\n *\n * @return {Number} Video height\n * @method videoHeight\n */\n\n Player.prototype.videoHeight = function videoHeight() {\n return this.tech_ && this.tech_.videoHeight && this.tech_.videoHeight() || 0;\n };\n\n // Methods to add support for\n // initialTime: function(){ return this.techCall_('initialTime'); },\n // startOffsetTime: function(){ return this.techCall_('startOffsetTime'); },\n // played: function(){ return this.techCall_('played'); },\n // videoTracks: function(){ return this.techCall_('videoTracks'); },\n // audioTracks: function(){ return this.techCall_('audioTracks'); },\n // defaultPlaybackRate: function(){ return this.techCall_('defaultPlaybackRate'); },\n // defaultMuted: function(){ return this.techCall_('defaultMuted'); }\n\n /**\n * The player's language code\n * NOTE: The language should be set in the player options if you want the\n * the controls to be built with a specific language. Changing the lanugage\n * later will not update controls text.\n *\n * @param {String} code The locale string\n * @return {String} The locale string when getting\n * @return {Player} self when setting\n * @method language\n */\n\n Player.prototype.language = function language(code) {\n if (code === undefined) {\n return this.language_;\n }\n\n this.language_ = ('' + code).toLowerCase();\n return this;\n };\n\n /**\n * Get the player's language dictionary\n * Merge every time, because a newly added plugin might call videojs.addLanguage() at any time\n * Languages specified directly in the player options have precedence\n *\n * @return {Array} Array of languages\n * @method languages\n */\n\n Player.prototype.languages = function languages() {\n return _utilsMergeOptionsJs2['default'](Player.prototype.options_.languages, this.languages_);\n };\n\n /**\n * Converts track info to JSON\n *\n * @return {Object} JSON object of options\n * @method toJSON\n */\n\n Player.prototype.toJSON = function toJSON() {\n var options = _utilsMergeOptionsJs2['default'](this.options_);\n var tracks = options.tracks;\n\n options.tracks = [];\n\n for (var i = 0; i < tracks.length; i++) {\n var track = tracks[i];\n\n // deep merge tracks and null out player so no circular references\n track = _utilsMergeOptionsJs2['default'](track);\n track.player = undefined;\n options.tracks[i] = track;\n }\n\n return options;\n };\n\n /**\n * Creates a simple modal dialog (an instance of the `ModalDialog`\n * component) that immediately overlays the player with arbitrary\n * content and removes itself when closed.\n *\n * @param {String|Function|Element|Array|Null} content\n * Same as `ModalDialog#content`'s param of the same name.\n *\n * The most straight-forward usage is to provide a string or DOM\n * element.\n *\n * @param {Object} [options]\n * Extra options which will be passed on to the `ModalDialog`.\n *\n * @return {ModalDialog}\n */\n\n Player.prototype.createModal = function createModal(content, options) {\n var player = this;\n\n options = options || {};\n options.content = content || '';\n\n var modal = new _modalDialog2['default'](player, options);\n\n player.addChild(modal);\n modal.on('dispose', function () {\n player.removeChild(modal);\n });\n\n return modal.open();\n };\n\n /**\n * Gets tag settings\n *\n * @param {Element} tag The player tag\n * @return {Array} An array of sources and track objects\n * @static\n * @method getTagSettings\n */\n\n Player.getTagSettings = function getTagSettings(tag) {\n var baseOptions = {\n 'sources': [],\n 'tracks': []\n };\n\n var tagOptions = Dom.getElAttributes(tag);\n var dataSetup = tagOptions['data-setup'];\n\n // Check if data-setup attr exists.\n if (dataSetup !== null) {\n // Parse options JSON\n\n var _safeParseTuple = _safeJsonParseTuple2['default'](dataSetup || '{}');\n\n var err = _safeParseTuple[0];\n var data = _safeParseTuple[1];\n\n if (err) {\n _utilsLogJs2['default'].error(err);\n }\n _objectAssign2['default'](tagOptions, data);\n }\n\n _objectAssign2['default'](baseOptions, tagOptions);\n\n // Get tag children settings\n if (tag.hasChildNodes()) {\n var children = tag.childNodes;\n\n for (var i = 0, j = children.length; i < j; i++) {\n var child = children[i];\n // Change case needed: http://ejohn.org/blog/nodename-case-sensitivity/\n var childName = child.nodeName.toLowerCase();\n if (childName === 'source') {\n baseOptions.sources.push(Dom.getElAttributes(child));\n } else if (childName === 'track') {\n baseOptions.tracks.push(Dom.getElAttributes(child));\n }\n }\n }\n\n return baseOptions;\n };\n\n return Player;\n})(_componentJs2['default']);\n\nPlayer.players = {};\n\nvar navigator = _globalWindow2['default'].navigator;\n/*\n * Player instance options, surfaced using options\n * options = Player.prototype.options_\n * Make changes in options, not here.\n *\n * @type {Object}\n * @private\n */\nPlayer.prototype.options_ = {\n // Default order of fallback technology\n techOrder: ['html5', 'flash'],\n // techOrder: ['flash','html5'],\n\n html5: {},\n flash: {},\n\n // defaultVolume: 0.85,\n defaultVolume: 0.00, // The freakin seaguls are driving me crazy!\n\n // default inactivity timeout\n inactivityTimeout: 2000,\n\n // default playback rates\n playbackRates: [],\n // Add playback rate selection by adding rates\n // 'playbackRates': [0.5, 1, 1.5, 2],\n\n // Included control sets\n children: ['mediaLoader', 'posterImage', 'textTrackDisplay', 'loadingSpinner', 'bigPlayButton', 'controlBar', 'errorDisplay', 'textTrackSettings'],\n\n language: _globalDocument2['default'].getElementsByTagName('html')[0].getAttribute('lang') || navigator.languages && navigator.languages[0] || navigator.userLanguage || navigator.language || 'en',\n\n // locales and their language translations\n languages: {},\n\n // Default message to show when a video cannot be played.\n notSupportedMessage: 'No compatible source was found for this media.'\n};\n\n/**\n * Fired when the player has initial duration and dimension information\n *\n * @event loadedmetadata\n */\nPlayer.prototype.handleLoadedMetaData_;\n\n/**\n * Fired when the player has downloaded data at the current playback position\n *\n * @event loadeddata\n */\nPlayer.prototype.handleLoadedData_;\n\n/**\n * Fired when the user is active, e.g. moves the mouse over the player\n *\n * @event useractive\n */\nPlayer.prototype.handleUserActive_;\n\n/**\n * Fired when the user is inactive, e.g. a short delay after the last mouse move or control interaction\n *\n * @event userinactive\n */\nPlayer.prototype.handleUserInactive_;\n\n/**\n * Fired when the current playback position has changed *\n * During playback this is fired every 15-250 milliseconds, depending on the\n * playback technology in use.\n *\n * @event timeupdate\n */\nPlayer.prototype.handleTimeUpdate_;\n\n/**\n * Fired when video playback ends\n *\n * @event ended\n */\nPlayer.prototype.handleTechEnded_;\n\n/**\n * Fired when the volume changes\n *\n * @event volumechange\n */\nPlayer.prototype.handleVolumeChange_;\n\n/**\n * Fired when an error occurs\n *\n * @event error\n */\nPlayer.prototype.handleError_;\n\nPlayer.prototype.flexNotSupported_ = function () {\n var elem = _globalDocument2['default'].createElement('i');\n\n // Note: We don't actually use flexBasis (or flexOrder), but it's one of the more\n // common flex features that we can rely on when checking for flex support.\n return !('flexBasis' in elem.style || 'webkitFlexBasis' in elem.style || 'mozFlexBasis' in elem.style || 'msFlexBasis' in elem.style || 'msFlexOrder' in elem.style) /* IE10-specific (2012 flex spec) */;\n};\n\n_componentJs2['default'].registerComponent('Player', Player);\nexports['default'] = Player;\nmodule.exports = exports['default'];\n// If empty string, make it a parsable json object.\n\n},{\"./big-play-button.js\":63,\"./component.js\":67,\"./control-bar/control-bar.js\":68,\"./error-display.js\":100,\"./fullscreen-api.js\":103,\"./loading-spinner.js\":104,\"./media-error.js\":105,\"./modal-dialog\":109,\"./poster-image.js\":114,\"./tech/html5.js\":119,\"./tech/loader.js\":120,\"./tech/tech.js\":121,\"./tracks/text-track-display.js\":125,\"./tracks/text-track-list-converter.js\":127,\"./tracks/text-track-settings.js\":129,\"./utils/browser.js\":131,\"./utils/buffer.js\":132,\"./utils/dom.js\":134,\"./utils/events.js\":135,\"./utils/fn.js\":136,\"./utils/guid.js\":138,\"./utils/log.js\":139,\"./utils/merge-options.js\":140,\"./utils/stylesheet.js\":141,\"./utils/time-ranges.js\":142,\"./utils/to-title-case.js\":143,\"global/document\":1,\"global/window\":2,\"object.assign\":45,\"safe-json-parse/tuple\":54}],111:[function(_dereq_,module,exports){\n/**\n * @file plugins.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _playerJs = _dereq_('./player.js');\n\nvar _playerJs2 = _interopRequireDefault(_playerJs);\n\n/**\n * The method for registering a video.js plugin\n *\n * @param {String} name The name of the plugin\n * @param {Function} init The function that is run when the player inits\n * @method plugin\n */\nvar plugin = function plugin(name, init) {\n _playerJs2['default'].prototype[name] = init;\n};\n\nexports['default'] = plugin;\nmodule.exports = exports['default'];\n\n},{\"./player.js\":110}],112:[function(_dereq_,module,exports){\n/**\n * @file popup-button.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _clickableComponentJs = _dereq_('../clickable-component.js');\n\nvar _clickableComponentJs2 = _interopRequireDefault(_clickableComponentJs);\n\nvar _componentJs = _dereq_('../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\nvar _popupJs = _dereq_('./popup.js');\n\nvar _popupJs2 = _interopRequireDefault(_popupJs);\n\nvar _utilsDomJs = _dereq_('../utils/dom.js');\n\nvar Dom = _interopRequireWildcard(_utilsDomJs);\n\nvar _utilsFnJs = _dereq_('../utils/fn.js');\n\nvar Fn = _interopRequireWildcard(_utilsFnJs);\n\nvar _utilsToTitleCaseJs = _dereq_('../utils/to-title-case.js');\n\nvar _utilsToTitleCaseJs2 = _interopRequireDefault(_utilsToTitleCaseJs);\n\n/**\n * A button class with a popup control\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends ClickableComponent\n * @class PopupButton\n */\n\nvar PopupButton = (function (_ClickableComponent) {\n _inherits(PopupButton, _ClickableComponent);\n\n function PopupButton(player) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n _classCallCheck(this, PopupButton);\n\n _ClickableComponent.call(this, player, options);\n\n this.update();\n }\n\n /**\n * Update popup\n *\n * @method update\n */\n\n PopupButton.prototype.update = function update() {\n var popup = this.createPopup();\n\n if (this.popup) {\n this.removeChild(this.popup);\n }\n\n this.popup = popup;\n this.addChild(popup);\n\n if (this.items && this.items.length === 0) {\n this.hide();\n } else if (this.items && this.items.length > 1) {\n this.show();\n }\n };\n\n /**\n * Create popup - Override with specific functionality for component\n *\n * @return {Popup} The constructed popup\n * @method createPopup\n */\n\n PopupButton.prototype.createPopup = function createPopup() {};\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n\n PopupButton.prototype.createEl = function createEl() {\n return _ClickableComponent.prototype.createEl.call(this, 'div', {\n className: this.buildCSSClass()\n });\n };\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n\n PopupButton.prototype.buildCSSClass = function buildCSSClass() {\n var menuButtonClass = 'vjs-menu-button';\n\n // If the inline option is passed, we want to use different styles altogether.\n if (this.options_.inline === true) {\n menuButtonClass += '-inline';\n } else {\n menuButtonClass += '-popup';\n }\n\n return 'vjs-menu-button ' + menuButtonClass + ' ' + _ClickableComponent.prototype.buildCSSClass.call(this);\n };\n\n return PopupButton;\n})(_clickableComponentJs2['default']);\n\n_componentJs2['default'].registerComponent('PopupButton', PopupButton);\nexports['default'] = PopupButton;\nmodule.exports = exports['default'];\n\n},{\"../clickable-component.js\":65,\"../component.js\":67,\"../utils/dom.js\":134,\"../utils/fn.js\":136,\"../utils/to-title-case.js\":143,\"./popup.js\":113}],113:[function(_dereq_,module,exports){\n/**\n * @file popup.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _componentJs = _dereq_('../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\nvar _utilsDomJs = _dereq_('../utils/dom.js');\n\nvar Dom = _interopRequireWildcard(_utilsDomJs);\n\nvar _utilsFnJs = _dereq_('../utils/fn.js');\n\nvar Fn = _interopRequireWildcard(_utilsFnJs);\n\nvar _utilsEventsJs = _dereq_('../utils/events.js');\n\nvar Events = _interopRequireWildcard(_utilsEventsJs);\n\n/**\n * The Popup component is used to build pop up controls.\n *\n * @extends Component\n * @class Popup\n */\n\nvar Popup = (function (_Component) {\n _inherits(Popup, _Component);\n\n function Popup() {\n _classCallCheck(this, Popup);\n\n _Component.apply(this, arguments);\n }\n\n /**\n * Add a popup item to the popup\n *\n * @param {Object|String} component Component or component type to add\n * @method addItem\n */\n\n Popup.prototype.addItem = function addItem(component) {\n this.addChild(component);\n component.on('click', Fn.bind(this, function () {\n this.unlockShowing();\n }));\n };\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n\n Popup.prototype.createEl = function createEl() {\n var contentElType = this.options_.contentElType || 'ul';\n this.contentEl_ = Dom.createEl(contentElType, {\n className: 'vjs-menu-content'\n });\n var el = _Component.prototype.createEl.call(this, 'div', {\n append: this.contentEl_,\n className: 'vjs-menu'\n });\n el.appendChild(this.contentEl_);\n\n // Prevent clicks from bubbling up. Needed for Popup Buttons,\n // where a click on the parent is significant\n Events.on(el, 'click', function (event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n });\n\n return el;\n };\n\n return Popup;\n})(_componentJs2['default']);\n\n_componentJs2['default'].registerComponent('Popup', Popup);\nexports['default'] = Popup;\nmodule.exports = exports['default'];\n\n},{\"../component.js\":67,\"../utils/dom.js\":134,\"../utils/events.js\":135,\"../utils/fn.js\":136}],114:[function(_dereq_,module,exports){\n/**\n * @file poster-image.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _clickableComponentJs = _dereq_('./clickable-component.js');\n\nvar _clickableComponentJs2 = _interopRequireDefault(_clickableComponentJs);\n\nvar _componentJs = _dereq_('./component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\nvar _utilsFnJs = _dereq_('./utils/fn.js');\n\nvar Fn = _interopRequireWildcard(_utilsFnJs);\n\nvar _utilsDomJs = _dereq_('./utils/dom.js');\n\nvar Dom = _interopRequireWildcard(_utilsDomJs);\n\nvar _utilsBrowserJs = _dereq_('./utils/browser.js');\n\nvar browser = _interopRequireWildcard(_utilsBrowserJs);\n\n/**\n * The component that handles showing the poster image.\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class PosterImage\n */\n\nvar PosterImage = (function (_ClickableComponent) {\n _inherits(PosterImage, _ClickableComponent);\n\n function PosterImage(player, options) {\n _classCallCheck(this, PosterImage);\n\n _ClickableComponent.call(this, player, options);\n\n this.update();\n player.on('posterchange', Fn.bind(this, this.update));\n }\n\n /**\n * Clean up the poster image\n *\n * @method dispose\n */\n\n PosterImage.prototype.dispose = function dispose() {\n this.player().off('posterchange', this.update);\n _ClickableComponent.prototype.dispose.call(this);\n };\n\n /**\n * Create the poster's image element\n *\n * @return {Element}\n * @method createEl\n */\n\n PosterImage.prototype.createEl = function createEl() {\n var el = Dom.createEl('div', {\n className: 'vjs-poster',\n\n // Don't want poster to be tabbable.\n tabIndex: -1\n });\n\n // To ensure the poster image resizes while maintaining its original aspect\n // ratio, use a div with `background-size` when available. For browsers that\n // do not support `background-size` (e.g. IE8), fall back on using a regular\n // img element.\n if (!browser.BACKGROUND_SIZE_SUPPORTED) {\n this.fallbackImg_ = Dom.createEl('img');\n el.appendChild(this.fallbackImg_);\n }\n\n return el;\n };\n\n /**\n * Event handler for updates to the player's poster source\n *\n * @method update\n */\n\n PosterImage.prototype.update = function update() {\n var url = this.player().poster();\n\n this.setSrc(url);\n\n // If there's no poster source we should display:none on this component\n // so it's not still clickable or right-clickable\n if (url) {\n this.show();\n } else {\n this.hide();\n }\n };\n\n /**\n * Set the poster source depending on the display method\n *\n * @param {String} url The URL to the poster source\n * @method setSrc\n */\n\n PosterImage.prototype.setSrc = function setSrc(url) {\n if (this.fallbackImg_) {\n this.fallbackImg_.src = url;\n } else {\n var backgroundImage = '';\n // Any falsey values should stay as an empty string, otherwise\n // this will throw an extra error\n if (url) {\n backgroundImage = 'url(\"' + url + '\")';\n }\n\n this.el_.style.backgroundImage = backgroundImage;\n }\n };\n\n /**\n * Event handler for clicks on the poster image\n *\n * @method handleClick\n */\n\n PosterImage.prototype.handleClick = function handleClick() {\n // We don't want a click to trigger playback when controls are disabled\n // but CSS should be hiding the poster to prevent that from happening\n if (this.player_.paused()) {\n this.player_.play();\n } else {\n this.player_.pause();\n }\n };\n\n return PosterImage;\n})(_clickableComponentJs2['default']);\n\n_componentJs2['default'].registerComponent('PosterImage', PosterImage);\nexports['default'] = PosterImage;\nmodule.exports = exports['default'];\n\n},{\"./clickable-component.js\":65,\"./component.js\":67,\"./utils/browser.js\":131,\"./utils/dom.js\":134,\"./utils/fn.js\":136}],115:[function(_dereq_,module,exports){\n/**\n * @file setup.js\n *\n * Functions for automatically setting up a player\n * based on the data-setup attribute of the video tag\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _utilsEventsJs = _dereq_('./utils/events.js');\n\nvar Events = _interopRequireWildcard(_utilsEventsJs);\n\nvar _globalDocument = _dereq_('global/document');\n\nvar _globalDocument2 = _interopRequireDefault(_globalDocument);\n\nvar _globalWindow = _dereq_('global/window');\n\nvar _globalWindow2 = _interopRequireDefault(_globalWindow);\n\nvar _windowLoaded = false;\nvar videojs = undefined;\n\n// Automatically set up any tags that have a data-setup attribute\nvar autoSetup = function autoSetup() {\n // One day, when we stop supporting IE8, go back to this, but in the meantime...*hack hack hack*\n // var vids = Array.prototype.slice.call(document.getElementsByTagName('video'));\n // var audios = Array.prototype.slice.call(document.getElementsByTagName('audio'));\n // var mediaEls = vids.concat(audios);\n\n // Because IE8 doesn't support calling slice on a node list, we need to loop through each list of elements\n // to build up a new, combined list of elements.\n var vids = _globalDocument2['default'].getElementsByTagName('video');\n var audios = _globalDocument2['default'].getElementsByTagName('audio');\n var mediaEls = [];\n if (vids && vids.length > 0) {\n for (var i = 0, e = vids.length; i < e; i++) {\n mediaEls.push(vids[i]);\n }\n }\n if (audios && audios.length > 0) {\n for (var i = 0, e = audios.length; i < e; i++) {\n mediaEls.push(audios[i]);\n }\n }\n\n // Check if any media elements exist\n if (mediaEls && mediaEls.length > 0) {\n\n for (var i = 0, e = mediaEls.length; i < e; i++) {\n var mediaEl = mediaEls[i];\n\n // Check if element exists, has getAttribute func.\n // IE seems to consider typeof el.getAttribute == 'object' instead of 'function' like expected, at least when loading the player immediately.\n if (mediaEl && mediaEl.getAttribute) {\n\n // Make sure this player hasn't already been set up.\n if (mediaEl['player'] === undefined) {\n var options = mediaEl.getAttribute('data-setup');\n\n // Check if data-setup attr exists.\n // We only auto-setup if they've added the data-setup attr.\n if (options !== null) {\n // Create new video.js instance.\n var player = videojs(mediaEl);\n }\n }\n\n // If getAttribute isn't defined, we need to wait for the DOM.\n } else {\n autoSetupTimeout(1);\n break;\n }\n }\n\n // No videos were found, so keep looping unless page is finished loading.\n } else if (!_windowLoaded) {\n autoSetupTimeout(1);\n }\n};\n\n// Pause to let the DOM keep processing\nvar autoSetupTimeout = function autoSetupTimeout(wait, vjs) {\n if (vjs) {\n videojs = vjs;\n }\n\n setTimeout(autoSetup, wait);\n};\n\nif (_globalDocument2['default'].readyState === 'complete') {\n _windowLoaded = true;\n} else {\n Events.one(_globalWindow2['default'], 'load', function () {\n _windowLoaded = true;\n });\n}\n\nvar hasLoaded = function hasLoaded() {\n return _windowLoaded;\n};\n\nexports.autoSetup = autoSetup;\nexports.autoSetupTimeout = autoSetupTimeout;\nexports.hasLoaded = hasLoaded;\n\n},{\"./utils/events.js\":135,\"global/document\":1,\"global/window\":2}],116:[function(_dereq_,module,exports){\n/**\n * @file slider.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _componentJs = _dereq_('../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\nvar _utilsDomJs = _dereq_('../utils/dom.js');\n\nvar Dom = _interopRequireWildcard(_utilsDomJs);\n\nvar _objectAssign = _dereq_('object.assign');\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\n/**\n * The base functionality for sliders like the volume bar and seek bar\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class Slider\n */\n\nvar Slider = (function (_Component) {\n _inherits(Slider, _Component);\n\n function Slider(player, options) {\n _classCallCheck(this, Slider);\n\n _Component.call(this, player, options);\n\n // Set property names to bar to match with the child Slider class is looking for\n this.bar = this.getChild(this.options_.barName);\n\n // Set a horizontal or vertical class on the slider depending on the slider type\n this.vertical(!!this.options_.vertical);\n\n this.on('mousedown', this.handleMouseDown);\n this.on('touchstart', this.handleMouseDown);\n this.on('focus', this.handleFocus);\n this.on('blur', this.handleBlur);\n this.on('click', this.handleClick);\n\n this.on(player, 'controlsvisible', this.update);\n this.on(player, this.playerEvent, this.update);\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String} type Type of element to create\n * @param {Object=} props List of properties in Object form\n * @return {Element}\n * @method createEl\n */\n\n Slider.prototype.createEl = function createEl(type) {\n var props = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n var attributes = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];\n\n // Add the slider element class to all sub classes\n props.className = props.className + ' vjs-slider';\n props = _objectAssign2['default']({\n tabIndex: 0\n }, props);\n\n attributes = _objectAssign2['default']({\n 'role': 'slider',\n 'aria-valuenow': 0,\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n tabIndex: 0\n }, attributes);\n\n return _Component.prototype.createEl.call(this, type, props, attributes);\n };\n\n /**\n * Handle mouse down on slider\n *\n * @param {Object} event Mouse down event object\n * @method handleMouseDown\n */\n\n Slider.prototype.handleMouseDown = function handleMouseDown(event) {\n var doc = this.bar.el_.ownerDocument;\n\n event.preventDefault();\n Dom.blockTextSelection();\n\n this.addClass('vjs-sliding');\n this.trigger('slideractive');\n\n this.on(doc, 'mousemove', this.handleMouseMove);\n this.on(doc, 'mouseup', this.handleMouseUp);\n this.on(doc, 'touchmove', this.handleMouseMove);\n this.on(doc, 'touchend', this.handleMouseUp);\n\n this.handleMouseMove(event);\n };\n\n /**\n * To be overridden by a subclass\n *\n * @method handleMouseMove\n */\n\n Slider.prototype.handleMouseMove = function handleMouseMove() {};\n\n /**\n * Handle mouse up on Slider\n *\n * @method handleMouseUp\n */\n\n Slider.prototype.handleMouseUp = function handleMouseUp() {\n var doc = this.bar.el_.ownerDocument;\n\n Dom.unblockTextSelection();\n\n this.removeClass('vjs-sliding');\n this.trigger('sliderinactive');\n\n this.off(doc, 'mousemove', this.handleMouseMove);\n this.off(doc, 'mouseup', this.handleMouseUp);\n this.off(doc, 'touchmove', this.handleMouseMove);\n this.off(doc, 'touchend', this.handleMouseUp);\n\n this.update();\n };\n\n /**\n * Update slider\n *\n * @method update\n */\n\n Slider.prototype.update = function update() {\n // In VolumeBar init we have a setTimeout for update that pops and update to the end of the\n // execution stack. The player is destroyed before then update will cause an error\n if (!this.el_) return;\n\n // If scrubbing, we could use a cached value to make the handle keep up with the user's mouse.\n // On HTML5 browsers scrubbing is really smooth, but some flash players are slow, so we might want to utilize this later.\n // var progress = (this.player_.scrubbing()) ? this.player_.getCache().currentTime / this.player_.duration() : this.player_.currentTime() / this.player_.duration();\n var progress = this.getPercent();\n var bar = this.bar;\n\n // If there's no bar...\n if (!bar) return;\n\n // Protect against no duration and other division issues\n if (typeof progress !== 'number' || progress !== progress || progress < 0 || progress === Infinity) {\n progress = 0;\n }\n\n // Convert to a percentage for setting\n var percentage = (progress * 100).toFixed(2) + '%';\n\n // Set the new bar width or height\n if (this.vertical()) {\n bar.el().style.height = percentage;\n } else {\n bar.el().style.width = percentage;\n }\n };\n\n /**\n * Calculate distance for slider\n *\n * @param {Object} event Event object\n * @method calculateDistance\n */\n\n Slider.prototype.calculateDistance = function calculateDistance(event) {\n var position = Dom.getPointerPosition(this.el_, event);\n if (this.vertical()) {\n return position.y;\n }\n return position.x;\n };\n\n /**\n * Handle on focus for slider\n *\n * @method handleFocus\n */\n\n Slider.prototype.handleFocus = function handleFocus() {\n this.on(this.bar.el_.ownerDocument, 'keydown', this.handleKeyPress);\n };\n\n /**\n * Handle key press for slider\n *\n * @param {Object} event Event object\n * @method handleKeyPress\n */\n\n Slider.prototype.handleKeyPress = function handleKeyPress(event) {\n if (event.which === 37 || event.which === 40) {\n // Left and Down Arrows\n event.preventDefault();\n this.stepBack();\n } else if (event.which === 38 || event.which === 39) {\n // Up and Right Arrows\n event.preventDefault();\n this.stepForward();\n }\n };\n\n /**\n * Handle on blur for slider\n *\n * @method handleBlur\n */\n\n Slider.prototype.handleBlur = function handleBlur() {\n this.off(this.bar.el_.ownerDocument, 'keydown', this.handleKeyPress);\n };\n\n /**\n * Listener for click events on slider, used to prevent clicks\n * from bubbling up to parent elements like button menus.\n *\n * @param {Object} event Event object\n * @method handleClick\n */\n\n Slider.prototype.handleClick = function handleClick(event) {\n event.stopImmediatePropagation();\n event.preventDefault();\n };\n\n /**\n * Get/set if slider is horizontal for vertical\n *\n * @param {Boolean} bool True if slider is vertical, false is horizontal\n * @return {Boolean} True if slider is vertical, false is horizontal\n * @method vertical\n */\n\n Slider.prototype.vertical = function vertical(bool) {\n if (bool === undefined) {\n return this.vertical_ || false;\n }\n\n this.vertical_ = !!bool;\n\n if (this.vertical_) {\n this.addClass('vjs-slider-vertical');\n } else {\n this.addClass('vjs-slider-horizontal');\n }\n\n return this;\n };\n\n return Slider;\n})(_componentJs2['default']);\n\n_componentJs2['default'].registerComponent('Slider', Slider);\nexports['default'] = Slider;\nmodule.exports = exports['default'];\n\n},{\"../component.js\":67,\"../utils/dom.js\":134,\"object.assign\":45}],117:[function(_dereq_,module,exports){\n/**\n * @file flash-rtmp.js\n */\n'use strict';\n\nexports.__esModule = true;\nfunction FlashRtmpDecorator(Flash) {\n Flash.streamingFormats = {\n 'rtmp/mp4': 'MP4',\n 'rtmp/flv': 'FLV'\n };\n\n Flash.streamFromParts = function (connection, stream) {\n return connection + '&' + stream;\n };\n\n Flash.streamToParts = function (src) {\n var parts = {\n connection: '',\n stream: ''\n };\n\n if (!src) return parts;\n\n // Look for the normal URL separator we expect, '&'.\n // If found, we split the URL into two pieces around the\n // first '&'.\n var connEnd = src.search(/&(?!\\w+=)/);\n var streamBegin = undefined;\n if (connEnd !== -1) {\n streamBegin = connEnd + 1;\n } else {\n // If there's not a '&', we use the last '/' as the delimiter.\n connEnd = streamBegin = src.lastIndexOf('/') + 1;\n if (connEnd === 0) {\n // really, there's not a '/'?\n connEnd = streamBegin = src.length;\n }\n }\n parts.connection = src.substring(0, connEnd);\n parts.stream = src.substring(streamBegin, src.length);\n\n return parts;\n };\n\n Flash.isStreamingType = function (srcType) {\n return srcType in Flash.streamingFormats;\n };\n\n // RTMP has four variations, any string starting\n // with one of these protocols should be valid\n Flash.RTMP_RE = /^rtmp[set]?:\\/\\//i;\n\n Flash.isStreamingSrc = function (src) {\n return Flash.RTMP_RE.test(src);\n };\n\n /**\n * A source handler for RTMP urls\n * @type {Object}\n */\n Flash.rtmpSourceHandler = {};\n\n /**\n * Check if Flash can play the given videotype\n * @param {String} type The mimetype to check\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\n Flash.rtmpSourceHandler.canPlayType = function (type) {\n if (Flash.isStreamingType(type)) {\n return 'maybe';\n }\n\n return '';\n };\n\n /**\n * Check if Flash can handle the source natively\n * @param {Object} source The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\n Flash.rtmpSourceHandler.canHandleSource = function (source) {\n var can = Flash.rtmpSourceHandler.canPlayType(source.type);\n\n if (can) {\n return can;\n }\n\n if (Flash.isStreamingSrc(source.src)) {\n return 'maybe';\n }\n\n return '';\n };\n\n /**\n * Pass the source to the flash object\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n */\n Flash.rtmpSourceHandler.handleSource = function (source, tech) {\n var srcParts = Flash.streamToParts(source.src);\n\n tech['setRtmpConnection'](srcParts.connection);\n tech['setRtmpStream'](srcParts.stream);\n };\n\n // Register the native source handler\n Flash.registerSourceHandler(Flash.rtmpSourceHandler);\n\n return Flash;\n}\n\nexports['default'] = FlashRtmpDecorator;\nmodule.exports = exports['default'];\n\n},{}],118:[function(_dereq_,module,exports){\n/**\n * @file flash.js\n * VideoJS-SWF - Custom Flash Player with HTML5-ish API\n * https://github.com/zencoder/video-js-swf\n * Not using setupTriggers. Using global onEvent func to distribute events\n */\n\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _tech = _dereq_('./tech');\n\nvar _tech2 = _interopRequireDefault(_tech);\n\nvar _utilsDomJs = _dereq_('../utils/dom.js');\n\nvar Dom = _interopRequireWildcard(_utilsDomJs);\n\nvar _utilsUrlJs = _dereq_('../utils/url.js');\n\nvar Url = _interopRequireWildcard(_utilsUrlJs);\n\nvar _utilsTimeRangesJs = _dereq_('../utils/time-ranges.js');\n\nvar _flashRtmp = _dereq_('./flash-rtmp');\n\nvar _flashRtmp2 = _interopRequireDefault(_flashRtmp);\n\nvar _component = _dereq_('../component');\n\nvar _component2 = _interopRequireDefault(_component);\n\nvar _globalWindow = _dereq_('global/window');\n\nvar _globalWindow2 = _interopRequireDefault(_globalWindow);\n\nvar _objectAssign = _dereq_('object.assign');\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\nvar navigator = _globalWindow2['default'].navigator;\n/**\n * Flash Media Controller - Wrapper for fallback SWF API\n *\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Tech\n * @class Flash\n */\n\nvar Flash = (function (_Tech) {\n _inherits(Flash, _Tech);\n\n function Flash(options, ready) {\n _classCallCheck(this, Flash);\n\n _Tech.call(this, options, ready);\n\n // Set the source when ready\n if (options.source) {\n this.ready(function () {\n this.setSource(options.source);\n }, true);\n }\n\n // Having issues with Flash reloading on certain page actions (hide/resize/fullscreen) in certain browsers\n // This allows resetting the playhead when we catch the reload\n if (options.startTime) {\n this.ready(function () {\n this.load();\n this.play();\n this.currentTime(options.startTime);\n }, true);\n }\n\n // Add global window functions that the swf expects\n // A 4.x workflow we weren't able to solve for in 5.0\n // because of the need to hard code these functions\n // into the swf for security reasons\n _globalWindow2['default'].videojs = _globalWindow2['default'].videojs || {};\n _globalWindow2['default'].videojs.Flash = _globalWindow2['default'].videojs.Flash || {};\n _globalWindow2['default'].videojs.Flash.onReady = Flash.onReady;\n _globalWindow2['default'].videojs.Flash.onEvent = Flash.onEvent;\n _globalWindow2['default'].videojs.Flash.onError = Flash.onError;\n\n this.on('seeked', function () {\n this.lastSeekTarget_ = undefined;\n });\n }\n\n // Create setters and getters for attributes\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n\n Flash.prototype.createEl = function createEl() {\n var options = this.options_;\n\n // If video.js is hosted locally you should also set the location\n // for the hosted swf, which should be relative to the page (not video.js)\n // Otherwise this adds a CDN url.\n // The CDN also auto-adds a swf URL for that specific version.\n if (!options.swf) {\n options.swf = '//vjs.zencdn.net/swf/5.0.1/video-js.swf';\n }\n\n // Generate ID for swf object\n var objId = options.techId;\n\n // Merge default flashvars with ones passed in to init\n var flashVars = _objectAssign2['default']({\n\n // SWF Callback Functions\n 'readyFunction': 'videojs.Flash.onReady',\n 'eventProxyFunction': 'videojs.Flash.onEvent',\n 'errorEventProxyFunction': 'videojs.Flash.onError',\n\n // Player Settings\n 'autoplay': options.autoplay,\n 'preload': options.preload,\n 'loop': options.loop,\n 'muted': options.muted\n\n }, options.flashVars);\n\n // Merge default parames with ones passed in\n var params = _objectAssign2['default']({\n 'wmode': 'opaque', // Opaque is needed to overlay controls, but can affect playback performance\n 'bgcolor': '#000000' // Using bgcolor prevents a white flash when the object is loading\n }, options.params);\n\n // Merge default attributes with ones passed in\n var attributes = _objectAssign2['default']({\n 'id': objId,\n 'name': objId, // Both ID and Name needed or swf to identify itself\n 'class': 'vjs-tech'\n }, options.attributes);\n\n this.el_ = Flash.embed(options.swf, flashVars, params, attributes);\n this.el_.tech = this;\n\n return this.el_;\n };\n\n /**\n * Play for flash tech\n *\n * @method play\n */\n\n Flash.prototype.play = function play() {\n if (this.ended()) {\n this.setCurrentTime(0);\n }\n this.el_.vjs_play();\n };\n\n /**\n * Pause for flash tech\n *\n * @method pause\n */\n\n Flash.prototype.pause = function pause() {\n this.el_.vjs_pause();\n };\n\n /**\n * Get/set video\n *\n * @param {Object=} src Source object\n * @return {Object}\n * @method src\n */\n\n Flash.prototype.src = function src(_src) {\n if (_src === undefined) {\n return this.currentSrc();\n }\n\n // Setting src through `src` not `setSrc` will be deprecated\n return this.setSrc(_src);\n };\n\n /**\n * Set video\n *\n * @param {Object=} src Source object\n * @deprecated\n * @method setSrc\n */\n\n Flash.prototype.setSrc = function setSrc(src) {\n // Make sure source URL is absolute.\n src = Url.getAbsoluteURL(src);\n this.el_.vjs_src(src);\n\n // Currently the SWF doesn't autoplay if you load a source later.\n // e.g. Load player w/ no source, wait 2s, set src.\n if (this.autoplay()) {\n var tech = this;\n this.setTimeout(function () {\n tech.play();\n }, 0);\n }\n };\n\n /**\n * Returns true if the tech is currently seeking.\n * @return {boolean} true if seeking\n */\n\n Flash.prototype.seeking = function seeking() {\n return this.lastSeekTarget_ !== undefined;\n };\n\n /**\n * Set current time\n *\n * @param {Number} time Current time of video\n * @method setCurrentTime\n */\n\n Flash.prototype.setCurrentTime = function setCurrentTime(time) {\n var seekable = this.seekable();\n if (seekable.length) {\n // clamp to the current seekable range\n time = time > seekable.start(0) ? time : seekable.start(0);\n time = time < seekable.end(seekable.length - 1) ? time : seekable.end(seekable.length - 1);\n\n this.lastSeekTarget_ = time;\n this.trigger('seeking');\n this.el_.vjs_setProperty('currentTime', time);\n _Tech.prototype.setCurrentTime.call(this);\n }\n };\n\n /**\n * Get current time\n *\n * @param {Number=} time Current time of video\n * @return {Number} Current time\n * @method currentTime\n */\n\n Flash.prototype.currentTime = function currentTime(time) {\n // when seeking make the reported time keep up with the requested time\n // by reading the time we're seeking to\n if (this.seeking()) {\n return this.lastSeekTarget_ || 0;\n }\n return this.el_.vjs_getProperty('currentTime');\n };\n\n /**\n * Get current source\n *\n * @method currentSrc\n */\n\n Flash.prototype.currentSrc = function currentSrc() {\n if (this.currentSource_) {\n return this.currentSource_.src;\n } else {\n return this.el_.vjs_getProperty('currentSrc');\n }\n };\n\n /**\n * Load media into player\n *\n * @method load\n */\n\n Flash.prototype.load = function load() {\n this.el_.vjs_load();\n };\n\n /**\n * Get poster\n *\n * @method poster\n */\n\n Flash.prototype.poster = function poster() {\n this.el_.vjs_getProperty('poster');\n };\n\n /**\n * Poster images are not handled by the Flash tech so make this a no-op\n *\n * @method setPoster\n */\n\n Flash.prototype.setPoster = function setPoster() {};\n\n /**\n * Determine if can seek in media\n *\n * @return {TimeRangeObject}\n * @method seekable\n */\n\n Flash.prototype.seekable = function seekable() {\n var duration = this.duration();\n if (duration === 0) {\n return _utilsTimeRangesJs.createTimeRange();\n }\n return _utilsTimeRangesJs.createTimeRange(0, duration);\n };\n\n /**\n * Get buffered time range\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n\n Flash.prototype.buffered = function buffered() {\n var ranges = this.el_.vjs_getProperty('buffered');\n if (ranges.length === 0) {\n return _utilsTimeRangesJs.createTimeRange();\n }\n return _utilsTimeRangesJs.createTimeRange(ranges[0][0], ranges[0][1]);\n };\n\n /**\n * Get fullscreen support -\n * Flash does not allow fullscreen through javascript\n * so always returns false\n *\n * @return {Boolean} false\n * @method supportsFullScreen\n */\n\n Flash.prototype.supportsFullScreen = function supportsFullScreen() {\n return false; // Flash does not allow fullscreen through javascript\n };\n\n /**\n * Request to enter fullscreen\n * Flash does not allow fullscreen through javascript\n * so always returns false\n *\n * @return {Boolean} false\n * @method enterFullScreen\n */\n\n Flash.prototype.enterFullScreen = function enterFullScreen() {\n return false;\n };\n\n return Flash;\n})(_tech2['default']);\n\nvar _api = Flash.prototype;\nvar _readWrite = 'rtmpConnection,rtmpStream,preload,defaultPlaybackRate,playbackRate,autoplay,loop,mediaGroup,controller,controls,volume,muted,defaultMuted'.split(',');\nvar _readOnly = 'networkState,readyState,initialTime,duration,startOffsetTime,paused,ended,videoTracks,audioTracks,videoWidth,videoHeight'.split(',');\n\nfunction _createSetter(attr) {\n var attrUpper = attr.charAt(0).toUpperCase() + attr.slice(1);\n _api['set' + attrUpper] = function (val) {\n return this.el_.vjs_setProperty(attr, val);\n };\n}\nfunction _createGetter(attr) {\n _api[attr] = function () {\n return this.el_.vjs_getProperty(attr);\n };\n}\n\n// Create getter and setters for all read/write attributes\nfor (var i = 0; i < _readWrite.length; i++) {\n _createGetter(_readWrite[i]);\n _createSetter(_readWrite[i]);\n}\n\n// Create getters for read-only attributes\nfor (var i = 0; i < _readOnly.length; i++) {\n _createGetter(_readOnly[i]);\n}\n\n/* Flash Support Testing -------------------------------------------------------- */\n\nFlash.isSupported = function () {\n return Flash.version()[0] >= 10;\n // return swfobject.hasFlashPlayerVersion('10');\n};\n\n// Add Source Handler pattern functions to this tech\n_tech2['default'].withSourceHandlers(Flash);\n\n/*\n * The default native source handler.\n * This simply passes the source to the video element. Nothing fancy.\n *\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n */\nFlash.nativeSourceHandler = {};\n\n/**\n * Check if Flash can play the given videotype\n * @param {String} type The mimetype to check\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nFlash.nativeSourceHandler.canPlayType = function (type) {\n if (type in Flash.formats) {\n return 'maybe';\n }\n\n return '';\n};\n\n/*\n * Check Flash can handle the source natively\n *\n * @param {Object} source The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nFlash.nativeSourceHandler.canHandleSource = function (source) {\n var type;\n\n function guessMimeType(src) {\n var ext = Url.getFileExtension(src);\n if (ext) {\n return 'video/' + ext;\n }\n return '';\n }\n\n if (!source.type) {\n type = guessMimeType(source.src);\n } else {\n // Strip code information from the type because we don't get that specific\n type = source.type.replace(/;.*/, '').toLowerCase();\n }\n\n return Flash.nativeSourceHandler.canPlayType(type);\n};\n\n/*\n * Pass the source to the flash object\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n *\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n */\nFlash.nativeSourceHandler.handleSource = function (source, tech) {\n tech.setSrc(source.src);\n};\n\n/*\n * Clean up the source handler when disposing the player or switching sources..\n * (no cleanup is needed when supporting the format natively)\n */\nFlash.nativeSourceHandler.dispose = function () {};\n\n// Register the native source handler\nFlash.registerSourceHandler(Flash.nativeSourceHandler);\n\nFlash.formats = {\n 'video/flv': 'FLV',\n 'video/x-flv': 'FLV',\n 'video/mp4': 'MP4',\n 'video/m4v': 'MP4'\n};\n\nFlash.onReady = function (currSwf) {\n var el = Dom.getEl(currSwf);\n var tech = el && el.tech;\n\n // if there is no el then the tech has been disposed\n // and the tech element was removed from the player div\n if (tech && tech.el()) {\n // check that the flash object is really ready\n Flash.checkReady(tech);\n }\n};\n\n// The SWF isn't always ready when it says it is. Sometimes the API functions still need to be added to the object.\n// If it's not ready, we set a timeout to check again shortly.\nFlash.checkReady = function (tech) {\n // stop worrying if the tech has been disposed\n if (!tech.el()) {\n return;\n }\n\n // check if API property exists\n if (tech.el().vjs_getProperty) {\n // tell tech it's ready\n tech.triggerReady();\n } else {\n // wait longer\n this.setTimeout(function () {\n Flash['checkReady'](tech);\n }, 50);\n }\n};\n\n// Trigger events from the swf on the player\nFlash.onEvent = function (swfID, eventName) {\n var tech = Dom.getEl(swfID).tech;\n tech.trigger(eventName);\n};\n\n// Log errors from the swf\nFlash.onError = function (swfID, err) {\n var tech = Dom.getEl(swfID).tech;\n\n // trigger MEDIA_ERR_SRC_NOT_SUPPORTED\n if (err === 'srcnotfound') {\n return tech.error(4);\n }\n\n // trigger a custom error\n tech.error('FLASH: ' + err);\n};\n\n// Flash Version Check\nFlash.version = function () {\n var version = '0,0,0';\n\n // IE\n try {\n version = new _globalWindow2['default'].ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n\n // other browsers\n } catch (e) {\n try {\n if (navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin) {\n version = (navigator.plugins['Shockwave Flash 2.0'] || navigator.plugins['Shockwave Flash']).description.replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n }\n } catch (err) {}\n }\n return version.split(',');\n};\n\n// Flash embedding method. Only used in non-iframe mode\nFlash.embed = function (swf, flashVars, params, attributes) {\n var code = Flash.getEmbedCode(swf, flashVars, params, attributes);\n\n // Get element by embedding code and retrieving created element\n var obj = Dom.createEl('div', { innerHTML: code }).childNodes[0];\n\n return obj;\n};\n\nFlash.getEmbedCode = function (swf, flashVars, params, attributes) {\n var objTag = '';\n });\n\n attributes = _objectAssign2['default']({\n // Add swf to attributes (need both for IE and Others to work)\n 'data': swf,\n\n // Default to 100% width/height\n 'width': '100%',\n 'height': '100%'\n\n }, attributes);\n\n // Create Attributes string\n Object.getOwnPropertyNames(attributes).forEach(function (key) {\n attrsString += key + '=\"' + attributes[key] + '\" ';\n });\n\n return '' + objTag + attrsString + '>' + paramsString + '';\n};\n\n// Run Flash through the RTMP decorator\n_flashRtmp2['default'](Flash);\n\n_component2['default'].registerComponent('Flash', Flash);\n_tech2['default'].registerTech('Flash', Flash);\nexports['default'] = Flash;\nmodule.exports = exports['default'];\n\n},{\"../component\":67,\"../utils/dom.js\":134,\"../utils/time-ranges.js\":142,\"../utils/url.js\":144,\"./flash-rtmp\":117,\"./tech\":121,\"global/window\":2,\"object.assign\":45}],119:[function(_dereq_,module,exports){\n/**\n * @file html5.js\n * HTML5 Media Controller - Wrapper for HTML5 Media API\n */\n\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _techJs = _dereq_('./tech.js');\n\nvar _techJs2 = _interopRequireDefault(_techJs);\n\nvar _component = _dereq_('../component');\n\nvar _component2 = _interopRequireDefault(_component);\n\nvar _utilsDomJs = _dereq_('../utils/dom.js');\n\nvar Dom = _interopRequireWildcard(_utilsDomJs);\n\nvar _utilsUrlJs = _dereq_('../utils/url.js');\n\nvar Url = _interopRequireWildcard(_utilsUrlJs);\n\nvar _utilsFnJs = _dereq_('../utils/fn.js');\n\nvar Fn = _interopRequireWildcard(_utilsFnJs);\n\nvar _utilsLogJs = _dereq_('../utils/log.js');\n\nvar _utilsLogJs2 = _interopRequireDefault(_utilsLogJs);\n\nvar _utilsBrowserJs = _dereq_('../utils/browser.js');\n\nvar browser = _interopRequireWildcard(_utilsBrowserJs);\n\nvar _globalDocument = _dereq_('global/document');\n\nvar _globalDocument2 = _interopRequireDefault(_globalDocument);\n\nvar _globalWindow = _dereq_('global/window');\n\nvar _globalWindow2 = _interopRequireDefault(_globalWindow);\n\nvar _objectAssign = _dereq_('object.assign');\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\nvar _utilsMergeOptionsJs = _dereq_('../utils/merge-options.js');\n\nvar _utilsMergeOptionsJs2 = _interopRequireDefault(_utilsMergeOptionsJs);\n\n/**\n * HTML5 Media Controller - Wrapper for HTML5 Media API\n *\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Tech\n * @class Html5\n */\n\nvar Html5 = (function (_Tech) {\n _inherits(Html5, _Tech);\n\n function Html5(options, ready) {\n _classCallCheck(this, Html5);\n\n _Tech.call(this, options, ready);\n\n var source = options.source;\n\n // Set the source if one is provided\n // 1) Check if the source is new (if not, we want to keep the original so playback isn't interrupted)\n // 2) Check to see if the network state of the tag was failed at init, and if so, reset the source\n // anyway so the error gets fired.\n if (source && (this.el_.currentSrc !== source.src || options.tag && options.tag.initNetworkState_ === 3)) {\n this.setSource(source);\n } else {\n this.handleLateInit_(this.el_);\n }\n\n if (this.el_.hasChildNodes()) {\n\n var nodes = this.el_.childNodes;\n var nodesLength = nodes.length;\n var removeNodes = [];\n\n while (nodesLength--) {\n var node = nodes[nodesLength];\n var nodeName = node.nodeName.toLowerCase();\n\n if (nodeName === 'track') {\n if (!this.featuresNativeTextTracks) {\n // Empty video tag tracks so the built-in player doesn't use them also.\n // This may not be fast enough to stop HTML5 browsers from reading the tags\n // so we'll need to turn off any default tracks if we're manually doing\n // captions and subtitles. videoElement.textTracks\n removeNodes.push(node);\n } else {\n // store HTMLTrackElement and TextTrack to remote list\n this.remoteTextTrackEls().addTrackElement_(node);\n this.remoteTextTracks().addTrack_(node.track);\n }\n }\n }\n\n for (var i = 0; i < removeNodes.length; i++) {\n this.el_.removeChild(removeNodes[i]);\n }\n }\n\n if (this.featuresNativeTextTracks) {\n this.handleTextTrackChange_ = Fn.bind(this, this.handleTextTrackChange);\n this.handleTextTrackAdd_ = Fn.bind(this, this.handleTextTrackAdd);\n this.handleTextTrackRemove_ = Fn.bind(this, this.handleTextTrackRemove);\n this.proxyNativeTextTracks_();\n }\n\n // Determine if native controls should be used\n // Our goal should be to get the custom controls on mobile solid everywhere\n // so we can remove this all together. Right now this will block custom\n // controls on touch enabled laptops like the Chrome Pixel\n if (browser.TOUCH_ENABLED && options.nativeControlsForTouch === true || browser.IS_IPHONE || browser.IS_NATIVE_ANDROID) {\n this.setControls(true);\n }\n\n this.triggerReady();\n }\n\n /* HTML5 Support Testing ---------------------------------------------------- */\n\n /*\n * Element for testing browser HTML5 video capabilities\n *\n * @type {Element}\n * @constant\n * @private\n */\n\n /**\n * Dispose of html5 media element\n *\n * @method dispose\n */\n\n Html5.prototype.dispose = function dispose() {\n var tt = this.el().textTracks;\n var emulatedTt = this.textTracks();\n\n // remove native event listeners\n if (tt && tt.removeEventListener) {\n tt.removeEventListener('change', this.handleTextTrackChange_);\n tt.removeEventListener('addtrack', this.handleTextTrackAdd_);\n tt.removeEventListener('removetrack', this.handleTextTrackRemove_);\n }\n\n // clearout the emulated text track list.\n var i = emulatedTt.length;\n\n while (i--) {\n emulatedTt.removeTrack_(emulatedTt[i]);\n }\n\n Html5.disposeMediaElement(this.el_);\n _Tech.prototype.dispose.call(this);\n };\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n\n Html5.prototype.createEl = function createEl() {\n var el = this.options_.tag;\n\n // Check if this browser supports moving the element into the box.\n // On the iPhone video will break if you move the element,\n // So we have to create a brand new element.\n if (!el || this['movingMediaElementInDOM'] === false) {\n\n // If the original tag is still there, clone and remove it.\n if (el) {\n var clone = el.cloneNode(true);\n el.parentNode.insertBefore(clone, el);\n Html5.disposeMediaElement(el);\n el = clone;\n } else {\n el = _globalDocument2['default'].createElement('video');\n\n // determine if native controls should be used\n var tagAttributes = this.options_.tag && Dom.getElAttributes(this.options_.tag);\n var attributes = _utilsMergeOptionsJs2['default']({}, tagAttributes);\n if (!browser.TOUCH_ENABLED || this.options_.nativeControlsForTouch !== true) {\n delete attributes.controls;\n }\n\n Dom.setElAttributes(el, _objectAssign2['default'](attributes, {\n id: this.options_.techId,\n 'class': 'vjs-tech'\n }));\n }\n }\n\n // Update specific tag settings, in case they were overridden\n var settingsAttrs = ['autoplay', 'preload', 'loop', 'muted'];\n for (var i = settingsAttrs.length - 1; i >= 0; i--) {\n var attr = settingsAttrs[i];\n var overwriteAttrs = {};\n if (typeof this.options_[attr] !== 'undefined') {\n overwriteAttrs[attr] = this.options_[attr];\n }\n Dom.setElAttributes(el, overwriteAttrs);\n }\n\n return el;\n // jenniisawesome = true;\n };\n\n // If we're loading the playback object after it has started loading\n // or playing the video (often with autoplay on) then the loadstart event\n // has already fired and we need to fire it manually because many things\n // rely on it.\n\n Html5.prototype.handleLateInit_ = function handleLateInit_(el) {\n var _this = this;\n\n if (el.networkState === 0 || el.networkState === 3) {\n // The video element hasn't started loading the source yet\n // or didn't find a source\n return;\n }\n\n if (el.readyState === 0) {\n var _ret = (function () {\n // NetworkState is set synchronously BUT loadstart is fired at the\n // end of the current stack, usually before setInterval(fn, 0).\n // So at this point we know loadstart may have already fired or is\n // about to fire, and either way the player hasn't seen it yet.\n // We don't want to fire loadstart prematurely here and cause a\n // double loadstart so we'll wait and see if it happens between now\n // and the next loop, and fire it if not.\n // HOWEVER, we also want to make sure it fires before loadedmetadata\n // which could also happen between now and the next loop, so we'll\n // watch for that also.\n var loadstartFired = false;\n var setLoadstartFired = function setLoadstartFired() {\n loadstartFired = true;\n };\n _this.on('loadstart', setLoadstartFired);\n\n var triggerLoadstart = function triggerLoadstart() {\n // We did miss the original loadstart. Make sure the player\n // sees loadstart before loadedmetadata\n if (!loadstartFired) {\n this.trigger('loadstart');\n }\n };\n _this.on('loadedmetadata', triggerLoadstart);\n\n _this.ready(function () {\n this.off('loadstart', setLoadstartFired);\n this.off('loadedmetadata', triggerLoadstart);\n\n if (!loadstartFired) {\n // We did miss the original native loadstart. Fire it now.\n this.trigger('loadstart');\n }\n });\n\n return {\n v: undefined\n };\n })();\n\n if (typeof _ret === 'object') return _ret.v;\n }\n\n // From here on we know that loadstart already fired and we missed it.\n // The other readyState events aren't as much of a problem if we double\n // them, so not going to go to as much trouble as loadstart to prevent\n // that unless we find reason to.\n var eventsToTrigger = ['loadstart'];\n\n // loadedmetadata: newly equal to HAVE_METADATA (1) or greater\n eventsToTrigger.push('loadedmetadata');\n\n // loadeddata: newly increased to HAVE_CURRENT_DATA (2) or greater\n if (el.readyState >= 2) {\n eventsToTrigger.push('loadeddata');\n }\n\n // canplay: newly increased to HAVE_FUTURE_DATA (3) or greater\n if (el.readyState >= 3) {\n eventsToTrigger.push('canplay');\n }\n\n // canplaythrough: newly equal to HAVE_ENOUGH_DATA (4)\n if (el.readyState >= 4) {\n eventsToTrigger.push('canplaythrough');\n }\n\n // We still need to give the player time to add event listeners\n this.ready(function () {\n eventsToTrigger.forEach(function (type) {\n this.trigger(type);\n }, this);\n });\n };\n\n Html5.prototype.proxyNativeTextTracks_ = function proxyNativeTextTracks_() {\n var tt = this.el().textTracks;\n\n if (tt) {\n // Add tracks - if player is initialised after DOM loaded, textTracks\n // will not trigger addtrack\n for (var i = 0; i < tt.length; i++) {\n this.textTracks().addTrack_(tt[i]);\n }\n\n if (tt.addEventListener) {\n tt.addEventListener('change', this.handleTextTrackChange_);\n tt.addEventListener('addtrack', this.handleTextTrackAdd_);\n tt.addEventListener('removetrack', this.handleTextTrackRemove_);\n }\n }\n };\n\n Html5.prototype.handleTextTrackChange = function handleTextTrackChange(e) {\n var tt = this.textTracks();\n this.textTracks().trigger({\n type: 'change',\n target: tt,\n currentTarget: tt,\n srcElement: tt\n });\n };\n\n Html5.prototype.handleTextTrackAdd = function handleTextTrackAdd(e) {\n this.textTracks().addTrack_(e.track);\n };\n\n Html5.prototype.handleTextTrackRemove = function handleTextTrackRemove(e) {\n this.textTracks().removeTrack_(e.track);\n };\n\n /**\n * Play for html5 tech\n *\n * @method play\n */\n\n Html5.prototype.play = function play() {\n // CHROME 66+ introduced this thing where you cannot play a video unmuted unless the user\n // has interacted\n // This is temporary until we can re-address out videos/editor in an updated version\n // of videojs\n const tryToPlay = () => {\n try {\n this.el_.play().catch((err) => {\n console.log(err);\n setTimeout(tryToPlay, 500);\n });\n } catch (ex) {}\n }\n tryToPlay();\n };\n\n /**\n * Pause for html5 tech\n *\n * @method pause\n */\n\n Html5.prototype.pause = function pause() {\n this.el_.pause();\n };\n\n /**\n * Paused for html5 tech\n *\n * @return {Boolean}\n * @method paused\n */\n\n Html5.prototype.paused = function paused() {\n return this.el_.paused;\n };\n\n /**\n * Get current time\n *\n * @return {Number}\n * @method currentTime\n */\n\n Html5.prototype.currentTime = function currentTime() {\n return this.el_.currentTime;\n };\n\n /**\n * Set current time\n *\n * @param {Number} seconds Current time of video\n * @method setCurrentTime\n */\n\n Html5.prototype.setCurrentTime = function setCurrentTime(seconds) {\n try {\n this.el_.currentTime = seconds;\n } catch (e) {\n _utilsLogJs2['default'](e, 'Video is not ready. (Video.js)');\n // this.warning(VideoJS.warnings.videoNotReady);\n }\n };\n\n /**\n * Get duration\n *\n * @return {Number}\n * @method duration\n */\n\n Html5.prototype.duration = function duration() {\n return this.el_.duration || 0;\n };\n\n /**\n * Get a TimeRange object that represents the intersection\n * of the time ranges for which the user agent has all\n * relevant media\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n\n Html5.prototype.buffered = function buffered() {\n return this.el_.buffered;\n };\n\n /**\n * Get volume level\n *\n * @return {Number}\n * @method volume\n */\n\n Html5.prototype.volume = function volume() {\n return this.el_.volume;\n };\n\n /**\n * Set volume level\n *\n * @param {Number} percentAsDecimal Volume percent as a decimal\n * @method setVolume\n */\n\n Html5.prototype.setVolume = function setVolume(percentAsDecimal) {\n this.el_.volume = percentAsDecimal;\n };\n\n /**\n * Get if muted\n *\n * @return {Boolean}\n * @method muted\n */\n\n Html5.prototype.muted = function muted() {\n return this.el_.muted;\n };\n\n /**\n * Set muted\n *\n * @param {Boolean} If player is to be muted or note\n * @method setMuted\n */\n\n Html5.prototype.setMuted = function setMuted(muted) {\n this.el_.muted = muted;\n };\n\n /**\n * Get player width\n *\n * @return {Number}\n * @method width\n */\n\n Html5.prototype.width = function width() {\n return this.el_.offsetWidth;\n };\n\n /**\n * Get player height\n *\n * @return {Number}\n * @method height\n */\n\n Html5.prototype.height = function height() {\n return this.el_.offsetHeight;\n };\n\n /**\n * Get if there is fullscreen support\n *\n * @return {Boolean}\n * @method supportsFullScreen\n */\n\n Html5.prototype.supportsFullScreen = function supportsFullScreen() {\n if (typeof this.el_.webkitEnterFullScreen === 'function') {\n var userAgent = _globalWindow2['default'].navigator.userAgent;\n // Seems to be broken in Chromium/Chrome && Safari in Leopard\n if (/Android/.test(userAgent) || !/Chrome|Mac OS X 10.5/.test(userAgent)) {\n return true;\n }\n }\n return false;\n };\n\n /**\n * Request to enter fullscreen\n *\n * @method enterFullScreen\n */\n\n Html5.prototype.enterFullScreen = function enterFullScreen() {\n var video = this.el_;\n\n if ('webkitDisplayingFullscreen' in video) {\n this.one('webkitbeginfullscreen', function () {\n this.one('webkitendfullscreen', function () {\n this.trigger('fullscreenchange', { isFullscreen: false });\n });\n\n this.trigger('fullscreenchange', { isFullscreen: true });\n });\n }\n\n if (video.paused && video.networkState <= video.HAVE_METADATA) {\n // attempt to prime the video element for programmatic access\n // this isn't necessary on the desktop but shouldn't hurt\n this.el_.play();\n\n // playing and pausing synchronously during the transition to fullscreen\n // can get iOS ~6.1 devices into a play/pause loop\n this.setTimeout(function () {\n video.pause();\n video.webkitEnterFullScreen();\n }, 0);\n } else {\n video.webkitEnterFullScreen();\n }\n };\n\n /**\n * Request to exit fullscreen\n *\n * @method exitFullScreen\n */\n\n Html5.prototype.exitFullScreen = function exitFullScreen() {\n this.el_.webkitExitFullScreen();\n };\n\n /**\n * Get/set video\n *\n * @param {Object=} src Source object\n * @return {Object}\n * @method src\n */\n\n Html5.prototype.src = function src(_src) {\n if (_src === undefined) {\n return this.el_.src;\n } else {\n // Setting src through `src` instead of `setSrc` will be deprecated\n this.setSrc(_src);\n }\n };\n\n /**\n * Set video\n *\n * @param {Object} src Source object\n * @deprecated\n * @method setSrc\n */\n\n Html5.prototype.setSrc = function setSrc(src) {\n this.el_.src = src;\n };\n\n /**\n * Load media into player\n *\n * @method load\n */\n\n Html5.prototype.load = function load() {\n this.el_.load();\n };\n\n /**\n * Reset the tech. Removes all sources and calls `load`.\n *\n * @method reset\n */\n\n Html5.prototype.reset = function reset() {\n Html5.resetMediaElement(this.el_);\n };\n\n /**\n * Get current source\n *\n * @return {Object}\n * @method currentSrc\n */\n\n Html5.prototype.currentSrc = function currentSrc() {\n if (this.currentSource_) {\n return this.currentSource_.src;\n } else {\n return this.el_.currentSrc;\n }\n };\n\n /**\n * Get poster\n *\n * @return {String}\n * @method poster\n */\n\n Html5.prototype.poster = function poster() {\n return this.el_.poster;\n };\n\n /**\n * Set poster\n *\n * @param {String} val URL to poster image\n * @method\n */\n\n Html5.prototype.setPoster = function setPoster(val) {\n this.el_.poster = val;\n };\n\n /**\n * Get preload attribute\n *\n * @return {String}\n * @method preload\n */\n\n Html5.prototype.preload = function preload() {\n return this.el_.preload;\n };\n\n /**\n * Set preload attribute\n *\n * @param {String} val Value for preload attribute\n * @method setPreload\n */\n\n Html5.prototype.setPreload = function setPreload(val) {\n this.el_.preload = val;\n };\n\n /**\n * Get autoplay attribute\n *\n * @return {String}\n * @method autoplay\n */\n\n Html5.prototype.autoplay = function autoplay() {\n return this.el_.autoplay;\n };\n\n /**\n * Set autoplay attribute\n *\n * @param {String} val Value for preload attribute\n * @method setAutoplay\n */\n\n Html5.prototype.setAutoplay = function setAutoplay(val) {\n this.el_.autoplay = val;\n };\n\n /**\n * Get controls attribute\n *\n * @return {String}\n * @method controls\n */\n\n Html5.prototype.controls = function controls() {\n return this.el_.controls;\n };\n\n /**\n * Set controls attribute\n *\n * @param {String} val Value for controls attribute\n * @method setControls\n */\n\n Html5.prototype.setControls = function setControls(val) {\n this.el_.controls = !!val;\n };\n\n /**\n * Get loop attribute\n *\n * @return {String}\n * @method loop\n */\n\n Html5.prototype.loop = function loop() {\n return this.el_.loop;\n };\n\n /**\n * Set loop attribute\n *\n * @param {String} val Value for loop attribute\n * @method setLoop\n */\n\n Html5.prototype.setLoop = function setLoop(val) {\n this.el_.loop = val;\n };\n\n /**\n * Get error value\n *\n * @return {String}\n * @method error\n */\n\n Html5.prototype.error = function error() {\n return this.el_.error;\n };\n\n /**\n * Get whether or not the player is in the \"seeking\" state\n *\n * @return {Boolean}\n * @method seeking\n */\n\n Html5.prototype.seeking = function seeking() {\n return this.el_.seeking;\n };\n\n /**\n * Get a TimeRanges object that represents the\n * ranges of the media resource to which it is possible\n * for the user agent to seek.\n *\n * @return {TimeRangeObject}\n * @method seekable\n */\n\n Html5.prototype.seekable = function seekable() {\n return this.el_.seekable;\n };\n\n /**\n * Get if video ended\n *\n * @return {Boolean}\n * @method ended\n */\n\n Html5.prototype.ended = function ended() {\n return this.el_.ended;\n };\n\n /**\n * Get the value of the muted content attribute\n * This attribute has no dynamic effect, it only\n * controls the default state of the element\n *\n * @return {Boolean}\n * @method defaultMuted\n */\n\n Html5.prototype.defaultMuted = function defaultMuted() {\n return this.el_.defaultMuted;\n };\n\n /**\n * Get desired speed at which the media resource is to play\n *\n * @return {Number}\n * @method playbackRate\n */\n\n Html5.prototype.playbackRate = function playbackRate() {\n return this.el_.playbackRate;\n };\n\n /**\n * Returns a TimeRanges object that represents the ranges of the\n * media resource that the user agent has played.\n * @return {TimeRangeObject} the range of points on the media\n * timeline that has been reached through normal playback\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-played\n */\n\n Html5.prototype.played = function played() {\n return this.el_.played;\n };\n\n /**\n * Set desired speed at which the media resource is to play\n *\n * @param {Number} val Speed at which the media resource is to play\n * @method setPlaybackRate\n */\n\n Html5.prototype.setPlaybackRate = function setPlaybackRate(val) {\n this.el_.playbackRate = val;\n };\n\n /**\n * Get the current state of network activity for the element, from\n * the list below\n * NETWORK_EMPTY (numeric value 0)\n * NETWORK_IDLE (numeric value 1)\n * NETWORK_LOADING (numeric value 2)\n * NETWORK_NO_SOURCE (numeric value 3)\n *\n * @return {Number}\n * @method networkState\n */\n\n Html5.prototype.networkState = function networkState() {\n return this.el_.networkState;\n };\n\n /**\n * Get a value that expresses the current state of the element\n * with respect to rendering the current playback position, from\n * the codes in the list below\n * HAVE_NOTHING (numeric value 0)\n * HAVE_METADATA (numeric value 1)\n * HAVE_CURRENT_DATA (numeric value 2)\n * HAVE_FUTURE_DATA (numeric value 3)\n * HAVE_ENOUGH_DATA (numeric value 4)\n *\n * @return {Number}\n * @method readyState\n */\n\n Html5.prototype.readyState = function readyState() {\n return this.el_.readyState;\n };\n\n /**\n * Get width of video\n *\n * @return {Number}\n * @method videoWidth\n */\n\n Html5.prototype.videoWidth = function videoWidth() {\n return this.el_.videoWidth;\n };\n\n /**\n * Get height of video\n *\n * @return {Number}\n * @method videoHeight\n */\n\n Html5.prototype.videoHeight = function videoHeight() {\n return this.el_.videoHeight;\n };\n\n /**\n * Get text tracks\n *\n * @return {TextTrackList}\n * @method textTracks\n */\n\n Html5.prototype.textTracks = function textTracks() {\n return _Tech.prototype.textTracks.call(this);\n };\n\n /**\n * Creates and returns a text track object\n *\n * @param {String} kind Text track kind (subtitles, captions, descriptions\n * chapters and metadata)\n * @param {String=} label Label to identify the text track\n * @param {String=} language Two letter language abbreviation\n * @return {TextTrackObject}\n * @method addTextTrack\n */\n\n Html5.prototype.addTextTrack = function addTextTrack(kind, label, language) {\n if (!this['featuresNativeTextTracks']) {\n return _Tech.prototype.addTextTrack.call(this, kind, label, language);\n }\n\n return this.el_.addTextTrack(kind, label, language);\n };\n\n /**\n * Creates a remote text track object and returns a html track element\n *\n * @param {Object} options The object should contain values for\n * kind, language, label and src (location of the WebVTT file)\n * @return {HTMLTrackElement}\n * @method addRemoteTextTrack\n */\n\n Html5.prototype.addRemoteTextTrack = function addRemoteTextTrack() {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n if (!this['featuresNativeTextTracks']) {\n return _Tech.prototype.addRemoteTextTrack.call(this, options);\n }\n\n var htmlTrackElement = _globalDocument2['default'].createElement('track');\n\n if (options.kind) {\n htmlTrackElement.kind = options.kind;\n }\n if (options.label) {\n htmlTrackElement.label = options.label;\n }\n if (options.language || options.srclang) {\n htmlTrackElement.srclang = options.language || options.srclang;\n }\n if (options['default']) {\n htmlTrackElement['default'] = options['default'];\n }\n if (options.id) {\n htmlTrackElement.id = options.id;\n }\n if (options.src) {\n htmlTrackElement.src = options.src;\n }\n\n this.el().appendChild(htmlTrackElement);\n\n // store HTMLTrackElement and TextTrack to remote list\n this.remoteTextTrackEls().addTrackElement_(htmlTrackElement);\n this.remoteTextTracks().addTrack_(htmlTrackElement.track);\n\n return htmlTrackElement;\n };\n\n /**\n * Remove remote text track from TextTrackList object\n *\n * @param {TextTrackObject} track Texttrack object to remove\n * @method removeRemoteTextTrack\n */\n\n Html5.prototype.removeRemoteTextTrack = function removeRemoteTextTrack(track) {\n if (!this['featuresNativeTextTracks']) {\n return _Tech.prototype.removeRemoteTextTrack.call(this, track);\n }\n\n var tracks = undefined,\n i = undefined;\n\n var trackElement = this.remoteTextTrackEls().getTrackElementByTrack_(track);\n\n // remove HTMLTrackElement and TextTrack from remote list\n this.remoteTextTrackEls().removeTrackElement_(trackElement);\n this.remoteTextTracks().removeTrack_(track);\n\n tracks = this.$$('track');\n\n i = tracks.length;\n while (i--) {\n if (track === tracks[i] || track === tracks[i].track) {\n this.el().removeChild(tracks[i]);\n }\n }\n };\n\n return Html5;\n})(_techJs2['default']);\n\nHtml5.TEST_VID = _globalDocument2['default'].createElement('video');\nvar track = _globalDocument2['default'].createElement('track');\ntrack.kind = 'captions';\ntrack.srclang = 'en';\ntrack.label = 'English';\nHtml5.TEST_VID.appendChild(track);\n\n/*\n * Check if HTML5 video is supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.isSupported = function () {\n // IE9 with no Media Player is a LIAR! (#984)\n try {\n Html5.TEST_VID['volume'] = 0.5;\n } catch (e) {\n return false;\n }\n\n return !!Html5.TEST_VID.canPlayType;\n};\n\n// Add Source Handler pattern functions to this tech\n_techJs2['default'].withSourceHandlers(Html5);\n\n/*\n * The default native source handler.\n * This simply passes the source to the video element. Nothing fancy.\n *\n * @param {Object} source The source object\n * @param {Html5} tech The instance of the HTML5 tech\n */\nHtml5.nativeSourceHandler = {};\n\n/*\n * Check if the video element can play the given videotype\n *\n * @param {String} type The mimetype to check\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nHtml5.nativeSourceHandler.canPlayType = function (type) {\n // IE9 on Windows 7 without MediaPlayer throws an error here\n // https://github.com/videojs/video.js/issues/519\n try {\n return Html5.TEST_VID.canPlayType(type);\n } catch (e) {\n return '';\n }\n};\n\n/*\n * Check if the video element can handle the source natively\n *\n * @param {Object} source The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nHtml5.nativeSourceHandler.canHandleSource = function (source) {\n var match, ext;\n\n // If a type was provided we should rely on that\n if (source.type) {\n return Html5.nativeSourceHandler.canPlayType(source.type);\n } else if (source.src) {\n // If no type, fall back to checking 'video/[EXTENSION]'\n ext = Url.getFileExtension(source.src);\n\n return Html5.nativeSourceHandler.canPlayType('video/' + ext);\n }\n\n return '';\n};\n\n/*\n * Pass the source to the video element\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n *\n * @param {Object} source The source object\n * @param {Html5} tech The instance of the Html5 tech\n */\nHtml5.nativeSourceHandler.handleSource = function (source, tech) {\n tech.setSrc(source.src);\n};\n\n/*\n* Clean up the source handler when disposing the player or switching sources..\n* (no cleanup is needed when supporting the format natively)\n*/\nHtml5.nativeSourceHandler.dispose = function () {};\n\n// Register the native source handler\nHtml5.registerSourceHandler(Html5.nativeSourceHandler);\n\n/*\n * Check if the volume can be changed in this browser/device.\n * Volume cannot be changed in a lot of mobile devices.\n * Specifically, it can't be changed from 1 on iOS.\n *\n * @return {Boolean}\n */\nHtml5.canControlVolume = function () {\n var volume = Html5.TEST_VID.volume;\n Html5.TEST_VID.volume = volume / 2 + 0.1;\n return volume !== Html5.TEST_VID.volume;\n};\n\n/*\n * Check if playbackRate is supported in this browser/device.\n *\n * @return {Boolean}\n */\nHtml5.canControlPlaybackRate = function () {\n // Playback rate API is implemented in Android Chrome, but doesn't do anything\n // https://github.com/videojs/video.js/issues/3180\n if (browser.IS_ANDROID && browser.IS_CHROME) {\n return false;\n }\n var playbackRate = Html5.TEST_VID.playbackRate;\n Html5.TEST_VID.playbackRate = playbackRate / 2 + 0.1;\n return playbackRate !== Html5.TEST_VID.playbackRate;\n};\n\n/*\n * Check to see if native text tracks are supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.supportsNativeTextTracks = function () {\n var supportsTextTracks;\n\n // Figure out native text track support\n // If mode is a number, we cannot change it because it'll disappear from view.\n // Browsers with numeric modes include IE10 and older (<=2013) samsung android models.\n // Firefox isn't playing nice either with modifying the mode\n // TODO: Investigate firefox: https://github.com/videojs/video.js/issues/1862\n supportsTextTracks = !!Html5.TEST_VID.textTracks;\n if (supportsTextTracks && Html5.TEST_VID.textTracks.length > 0) {\n supportsTextTracks = typeof Html5.TEST_VID.textTracks[0]['mode'] !== 'number';\n }\n if (supportsTextTracks && browser.IS_FIREFOX) {\n supportsTextTracks = false;\n }\n if (supportsTextTracks && !('onremovetrack' in Html5.TEST_VID.textTracks)) {\n supportsTextTracks = false;\n }\n\n return supportsTextTracks;\n};\n\n/**\n * An array of events available on the Html5 tech.\n *\n * @private\n * @type {Array}\n */\nHtml5.Events = ['loadstart', 'suspend', 'abort', 'error', 'emptied', 'stalled', 'loadedmetadata', 'loadeddata', 'canplay', 'canplaythrough', 'playing', 'waiting', 'seeking', 'seeked', 'ended', 'durationchange', 'timeupdate', 'progress', 'play', 'pause', 'ratechange', 'volumechange'];\n\n/*\n * Set the tech's volume control support status\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresVolumeControl'] = Html5.canControlVolume();\n\n/*\n * Set the tech's playbackRate support status\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresPlaybackRate'] = Html5.canControlPlaybackRate();\n\n/*\n * Set the tech's status on moving the video element.\n * In iOS, if you move a video element in the DOM, it breaks video playback.\n *\n * @type {Boolean}\n */\nHtml5.prototype['movingMediaElementInDOM'] = !browser.IS_IOS;\n\n/*\n * Set the the tech's fullscreen resize support status.\n * HTML video is able to automatically resize when going to fullscreen.\n * (No longer appears to be used. Can probably be removed.)\n */\nHtml5.prototype['featuresFullscreenResize'] = true;\n\n/*\n * Set the tech's progress event support status\n * (this disables the manual progress events of the Tech)\n */\nHtml5.prototype['featuresProgressEvents'] = true;\n\n/*\n * Sets the tech's status on native text track support\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresNativeTextTracks'] = Html5.supportsNativeTextTracks();\n\n// HTML5 Feature detection and Device Fixes --------------------------------- //\nvar canPlayType = undefined;\nvar mpegurlRE = /^application\\/(?:x-|vnd\\.apple\\.)mpegurl/i;\nvar mp4RE = /^video\\/mp4/i;\n\nHtml5.patchCanPlayType = function () {\n // Android 4.0 and above can play HLS to some extent but it reports being unable to do so\n if (browser.ANDROID_VERSION >= 4.0) {\n if (!canPlayType) {\n canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;\n }\n\n Html5.TEST_VID.constructor.prototype.canPlayType = function (type) {\n if (type && mpegurlRE.test(type)) {\n return 'maybe';\n }\n return canPlayType.call(this, type);\n };\n }\n\n // Override Android 2.2 and less canPlayType method which is broken\n if (browser.IS_OLD_ANDROID) {\n if (!canPlayType) {\n canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;\n }\n\n Html5.TEST_VID.constructor.prototype.canPlayType = function (type) {\n if (type && mp4RE.test(type)) {\n return 'maybe';\n }\n return canPlayType.call(this, type);\n };\n }\n};\n\nHtml5.unpatchCanPlayType = function () {\n var r = Html5.TEST_VID.constructor.prototype.canPlayType;\n Html5.TEST_VID.constructor.prototype.canPlayType = canPlayType;\n canPlayType = null;\n return r;\n};\n\n// by default, patch the video element\nHtml5.patchCanPlayType();\n\nHtml5.disposeMediaElement = function (el) {\n if (!el) {\n return;\n }\n\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n\n // remove any child track or source nodes to prevent their loading\n while (el.hasChildNodes()) {\n el.removeChild(el.firstChild);\n }\n\n // remove any src reference. not setting `src=''` because that causes a warning\n // in firefox\n el.removeAttribute('src');\n\n // force the media element to update its loading state by calling load()\n // however IE on Windows 7N has a bug that throws an error so need a try/catch (#793)\n if (typeof el.load === 'function') {\n // wrapping in an iife so it's not deoptimized (#1060#discussion_r10324473)\n (function () {\n try {\n el.load();\n } catch (e) {\n // not supported\n }\n })();\n }\n};\n\nHtml5.resetMediaElement = function (el) {\n if (!el) {\n return;\n }\n\n var sources = el.querySelectorAll('source');\n var i = sources.length;\n while (i--) {\n el.removeChild(sources[i]);\n }\n\n // remove any src reference.\n // not setting `src=''` because that throws an error\n el.removeAttribute('src');\n\n if (typeof el.load === 'function') {\n // wrapping in an iife so it's not deoptimized (#1060#discussion_r10324473)\n (function () {\n try {\n el.load();\n } catch (e) {}\n })();\n }\n};\n\n_component2['default'].registerComponent('Html5', Html5);\n_techJs2['default'].registerTech('Html5', Html5);\nexports['default'] = Html5;\nmodule.exports = exports['default'];\n\n},{\"../component\":67,\"../utils/browser.js\":131,\"../utils/dom.js\":134,\"../utils/fn.js\":136,\"../utils/log.js\":139,\"../utils/merge-options.js\":140,\"../utils/url.js\":144,\"./tech.js\":121,\"global/document\":1,\"global/window\":2,\"object.assign\":45}],120:[function(_dereq_,module,exports){\n/**\n * @file loader.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _componentJs = _dereq_('../component.js');\n\nvar _componentJs2 = _interopRequireDefault(_componentJs);\n\nvar _techJs = _dereq_('./tech.js');\n\nvar _techJs2 = _interopRequireDefault(_techJs);\n\nvar _globalWindow = _dereq_('global/window');\n\nvar _globalWindow2 = _interopRequireDefault(_globalWindow);\n\nvar _utilsToTitleCaseJs = _dereq_('../utils/to-title-case.js');\n\nvar _utilsToTitleCaseJs2 = _interopRequireDefault(_utilsToTitleCaseJs);\n\n/**\n * The Media Loader is the component that decides which playback technology to load\n * when the player is initialized.\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class MediaLoader\n */\n\nvar MediaLoader = (function (_Component) {\n _inherits(MediaLoader, _Component);\n\n function MediaLoader(player, options, ready) {\n _classCallCheck(this, MediaLoader);\n\n _Component.call(this, player, options, ready);\n\n // If there are no sources when the player is initialized,\n // load the first supported playback technology.\n\n if (!options.playerOptions['sources'] || options.playerOptions['sources'].length === 0) {\n for (var i = 0, j = options.playerOptions['techOrder']; i < j.length; i++) {\n var techName = _utilsToTitleCaseJs2['default'](j[i]);\n var tech = _techJs2['default'].getTech(techName);\n // Support old behavior of techs being registered as components.\n // Remove once that deprecated behavior is removed.\n if (!techName) {\n tech = _componentJs2['default'].getComponent(techName);\n }\n\n // Check if the browser supports this technology\n if (tech && tech.isSupported()) {\n player.loadTech_(techName);\n break;\n }\n }\n } else {\n // // Loop through playback technologies (HTML5, Flash) and check for support.\n // // Then load the best source.\n // // A few assumptions here:\n // // All playback technologies respect preload false.\n player.src(options.playerOptions['sources']);\n }\n }\n\n return MediaLoader;\n})(_componentJs2['default']);\n\n_componentJs2['default'].registerComponent('MediaLoader', MediaLoader);\nexports['default'] = MediaLoader;\nmodule.exports = exports['default'];\n\n},{\"../component.js\":67,\"../utils/to-title-case.js\":143,\"./tech.js\":121,\"global/window\":2}],121:[function(_dereq_,module,exports){\n/**\n * @file tech.js\n * Media Technology Controller - Base class for media playback\n * technology controllers like Flash and HTML5\n */\n\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _component = _dereq_('../component');\n\nvar _component2 = _interopRequireDefault(_component);\n\nvar _tracksHtmlTrackElement = _dereq_('../tracks/html-track-element');\n\nvar _tracksHtmlTrackElement2 = _interopRequireDefault(_tracksHtmlTrackElement);\n\nvar _tracksHtmlTrackElementList = _dereq_('../tracks/html-track-element-list');\n\nvar _tracksHtmlTrackElementList2 = _interopRequireDefault(_tracksHtmlTrackElementList);\n\nvar _utilsMergeOptionsJs = _dereq_('../utils/merge-options.js');\n\nvar _utilsMergeOptionsJs2 = _interopRequireDefault(_utilsMergeOptionsJs);\n\nvar _tracksTextTrack = _dereq_('../tracks/text-track');\n\nvar _tracksTextTrack2 = _interopRequireDefault(_tracksTextTrack);\n\nvar _tracksTextTrackList = _dereq_('../tracks/text-track-list');\n\nvar _tracksTextTrackList2 = _interopRequireDefault(_tracksTextTrackList);\n\nvar _utilsFnJs = _dereq_('../utils/fn.js');\n\nvar Fn = _interopRequireWildcard(_utilsFnJs);\n\nvar _utilsLogJs = _dereq_('../utils/log.js');\n\nvar _utilsLogJs2 = _interopRequireDefault(_utilsLogJs);\n\nvar _utilsTimeRangesJs = _dereq_('../utils/time-ranges.js');\n\nvar _utilsBufferJs = _dereq_('../utils/buffer.js');\n\nvar _mediaErrorJs = _dereq_('../media-error.js');\n\nvar _mediaErrorJs2 = _interopRequireDefault(_mediaErrorJs);\n\nvar _globalWindow = _dereq_('global/window');\n\nvar _globalWindow2 = _interopRequireDefault(_globalWindow);\n\nvar _globalDocument = _dereq_('global/document');\n\nvar _globalDocument2 = _interopRequireDefault(_globalDocument);\n\n/**\n * Base class for media (HTML5 Video, Flash) controllers\n *\n * @param {Object=} options Options object\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class Tech\n */\n\nvar Tech = (function (_Component) {\n _inherits(Tech, _Component);\n\n function Tech() {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n var ready = arguments.length <= 1 || arguments[1] === undefined ? function () {} : arguments[1];\n\n _classCallCheck(this, Tech);\n\n // we don't want the tech to report user activity automatically.\n // This is done manually in addControlsListeners\n options.reportTouchActivity = false;\n _Component.call(this, null, options, ready);\n\n // keep track of whether the current source has played at all to\n // implement a very limited played()\n this.hasStarted_ = false;\n this.on('playing', function () {\n this.hasStarted_ = true;\n });\n this.on('loadstart', function () {\n this.hasStarted_ = false;\n });\n\n this.textTracks_ = options.textTracks;\n\n // Manually track progress in cases where the browser/flash player doesn't report it.\n if (!this.featuresProgressEvents) {\n this.manualProgressOn();\n }\n\n // Manually track timeupdates in cases where the browser/flash player doesn't report it.\n if (!this.featuresTimeupdateEvents) {\n this.manualTimeUpdatesOn();\n }\n\n if (options.nativeCaptions === false || options.nativeTextTracks === false) {\n this.featuresNativeTextTracks = false;\n }\n\n if (!this.featuresNativeTextTracks) {\n this.on('ready', this.emulateTextTracks);\n }\n\n this.initTextTrackListeners();\n\n // Turn on component tap events\n this.emitTapEvents();\n }\n\n /*\n * List of associated text tracks\n *\n * @type {Array}\n * @private\n */\n\n /* Fallbacks for unsupported event types\n ================================================================================ */\n // Manually trigger progress events based on changes to the buffered amount\n // Many flash players and older HTML5 browsers don't send progress or progress-like events\n /**\n * Turn on progress events\n *\n * @method manualProgressOn\n */\n\n Tech.prototype.manualProgressOn = function manualProgressOn() {\n this.on('durationchange', this.onDurationChange);\n\n this.manualProgress = true;\n\n // Trigger progress watching when a source begins loading\n this.one('ready', this.trackProgress);\n };\n\n /**\n * Turn off progress events\n *\n * @method manualProgressOff\n */\n\n Tech.prototype.manualProgressOff = function manualProgressOff() {\n this.manualProgress = false;\n this.stopTrackingProgress();\n\n this.off('durationchange', this.onDurationChange);\n };\n\n /**\n * Track progress\n *\n * @method trackProgress\n */\n\n Tech.prototype.trackProgress = function trackProgress() {\n this.stopTrackingProgress();\n this.progressInterval = this.setInterval(Fn.bind(this, function () {\n // Don't trigger unless buffered amount is greater than last time\n\n var numBufferedPercent = this.bufferedPercent();\n\n if (this.bufferedPercent_ !== numBufferedPercent) {\n this.trigger('progress');\n }\n\n this.bufferedPercent_ = numBufferedPercent;\n\n if (numBufferedPercent === 1) {\n this.stopTrackingProgress();\n }\n }), 500);\n };\n\n /**\n * Update duration\n *\n * @method onDurationChange\n */\n\n Tech.prototype.onDurationChange = function onDurationChange() {\n this.duration_ = this.duration();\n };\n\n /**\n * Create and get TimeRange object for buffering\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n\n Tech.prototype.buffered = function buffered() {\n return _utilsTimeRangesJs.createTimeRange(0, 0);\n };\n\n /**\n * Get buffered percent\n *\n * @return {Number}\n * @method bufferedPercent\n */\n\n Tech.prototype.bufferedPercent = function bufferedPercent() {\n return _utilsBufferJs.bufferedPercent(this.buffered(), this.duration_);\n };\n\n /**\n * Stops tracking progress by clearing progress interval\n *\n * @method stopTrackingProgress\n */\n\n Tech.prototype.stopTrackingProgress = function stopTrackingProgress() {\n this.clearInterval(this.progressInterval);\n };\n\n /*! Time Tracking -------------------------------------------------------------- */\n /**\n * Set event listeners for on play and pause and tracking current time\n *\n * @method manualTimeUpdatesOn\n */\n\n Tech.prototype.manualTimeUpdatesOn = function manualTimeUpdatesOn() {\n this.manualTimeUpdates = true;\n\n this.on('play', this.trackCurrentTime);\n this.on('pause', this.stopTrackingCurrentTime);\n };\n\n /**\n * Remove event listeners for on play and pause and tracking current time\n *\n * @method manualTimeUpdatesOff\n */\n\n Tech.prototype.manualTimeUpdatesOff = function manualTimeUpdatesOff() {\n this.manualTimeUpdates = false;\n this.stopTrackingCurrentTime();\n this.off('play', this.trackCurrentTime);\n this.off('pause', this.stopTrackingCurrentTime);\n };\n\n /**\n * Tracks current time\n *\n * @method trackCurrentTime\n */\n\n Tech.prototype.trackCurrentTime = function trackCurrentTime() {\n if (this.currentTimeInterval) {\n this.stopTrackingCurrentTime();\n }\n this.currentTimeInterval = this.setInterval(function () {\n this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true });\n }, 250); // 42 = 24 fps // 250 is what Webkit uses // FF uses 15\n };\n\n /**\n * Turn off play progress tracking (when paused or dragging)\n *\n * @method stopTrackingCurrentTime\n */\n\n Tech.prototype.stopTrackingCurrentTime = function stopTrackingCurrentTime() {\n this.clearInterval(this.currentTimeInterval);\n\n // #1002 - if the video ends right before the next timeupdate would happen,\n // the progress bar won't make it all the way to the end\n this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true });\n };\n\n /**\n * Turn off any manual progress or timeupdate tracking\n *\n * @method dispose\n */\n\n Tech.prototype.dispose = function dispose() {\n // clear out text tracks because we can't reuse them between techs\n var textTracks = this.textTracks();\n\n if (textTracks) {\n var i = textTracks.length;\n while (i--) {\n this.removeRemoteTextTrack(textTracks[i]);\n }\n }\n\n // Turn off any manual progress or timeupdate tracking\n if (this.manualProgress) {\n this.manualProgressOff();\n }\n\n if (this.manualTimeUpdates) {\n this.manualTimeUpdatesOff();\n }\n\n _Component.prototype.dispose.call(this);\n };\n\n /**\n * Reset the tech. Removes all sources and resets readyState.\n *\n * @method reset\n */\n\n Tech.prototype.reset = function reset() {};\n\n /**\n * When invoked without an argument, returns a MediaError object\n * representing the current error state of the player or null if\n * there is no error. When invoked with an argument, set the current\n * error state of the player.\n * @param {MediaError=} err Optional an error object\n * @return {MediaError} the current error object or null\n * @method error\n */\n\n Tech.prototype.error = function error(err) {\n if (err !== undefined) {\n if (err instanceof _mediaErrorJs2['default']) {\n this.error_ = err;\n } else {\n this.error_ = new _mediaErrorJs2['default'](err);\n }\n this.trigger('error');\n }\n return this.error_;\n };\n\n /**\n * Return the time ranges that have been played through for the\n * current source. This implementation is incomplete. It does not\n * track the played time ranges, only whether the source has played\n * at all or not.\n * @return {TimeRangeObject} a single time range if this video has\n * played or an empty set of ranges if not.\n * @method played\n */\n\n Tech.prototype.played = function played() {\n if (this.hasStarted_) {\n return _utilsTimeRangesJs.createTimeRange(0, 0);\n }\n return _utilsTimeRangesJs.createTimeRange();\n };\n\n /**\n * Set current time\n *\n * @method setCurrentTime\n */\n\n Tech.prototype.setCurrentTime = function setCurrentTime() {\n // improve the accuracy of manual timeupdates\n if (this.manualTimeUpdates) {\n this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true });\n }\n };\n\n /**\n * Initialize texttrack listeners\n *\n * @method initTextTrackListeners\n */\n\n Tech.prototype.initTextTrackListeners = function initTextTrackListeners() {\n var textTrackListChanges = Fn.bind(this, function () {\n this.trigger('texttrackchange');\n });\n\n var tracks = this.textTracks();\n\n if (!tracks) return;\n\n tracks.addEventListener('removetrack', textTrackListChanges);\n tracks.addEventListener('addtrack', textTrackListChanges);\n\n this.on('dispose', Fn.bind(this, function () {\n tracks.removeEventListener('removetrack', textTrackListChanges);\n tracks.removeEventListener('addtrack', textTrackListChanges);\n }));\n };\n\n /**\n * Emulate texttracks\n *\n * @method emulateTextTracks\n */\n\n Tech.prototype.emulateTextTracks = function emulateTextTracks() {\n var _this = this;\n\n var tracks = this.textTracks();\n if (!tracks) {\n return;\n }\n\n if (!_globalWindow2['default']['WebVTT'] && this.el().parentNode != null) {\n (function () {\n var script = _globalDocument2['default'].createElement('script');\n script.src = _this.options_['vtt.js'] || 'https://cdn.rawgit.com/gkatsev/vtt.js/vjs-v0.12.1/dist/vtt.min.js';\n script.onload = function () {\n _this.trigger('vttjsloaded');\n };\n script.onerror = function () {\n _this.trigger('vttjserror');\n };\n _this.on('dispose', function () {\n script.onload = null;\n script.onerror = null;\n });\n _this.el().parentNode.appendChild(script);\n _globalWindow2['default']['WebVTT'] = true;\n })();\n }\n\n var updateDisplay = function updateDisplay() {\n return _this.trigger('texttrackchange');\n };\n var textTracksChanges = function textTracksChanges() {\n updateDisplay();\n\n for (var i = 0; i < tracks.length; i++) {\n var track = tracks[i];\n track.removeEventListener('cuechange', updateDisplay);\n if (track.mode === 'showing') {\n track.addEventListener('cuechange', updateDisplay);\n }\n }\n };\n\n textTracksChanges();\n tracks.addEventListener('change', textTracksChanges);\n\n this.on('dispose', function () {\n tracks.removeEventListener('change', textTracksChanges);\n });\n };\n\n /*\n * Provide default methods for text tracks.\n *\n * Html5 tech overrides these.\n */\n\n /**\n * Get texttracks\n *\n * @returns {TextTrackList}\n * @method textTracks\n */\n\n Tech.prototype.textTracks = function textTracks() {\n this.textTracks_ = this.textTracks_ || new _tracksTextTrackList2['default']();\n return this.textTracks_;\n };\n\n /**\n * Get remote texttracks\n *\n * @returns {TextTrackList}\n * @method remoteTextTracks\n */\n\n Tech.prototype.remoteTextTracks = function remoteTextTracks() {\n this.remoteTextTracks_ = this.remoteTextTracks_ || new _tracksTextTrackList2['default']();\n return this.remoteTextTracks_;\n };\n\n /**\n * Get remote htmltrackelements\n *\n * @returns {HTMLTrackElementList}\n * @method remoteTextTrackEls\n */\n\n Tech.prototype.remoteTextTrackEls = function remoteTextTrackEls() {\n this.remoteTextTrackEls_ = this.remoteTextTrackEls_ || new _tracksHtmlTrackElementList2['default']();\n return this.remoteTextTrackEls_;\n };\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {String} kind Text track kind (subtitles, captions, descriptions\n * chapters and metadata)\n * @param {String=} label Label to identify the text track\n * @param {String=} language Two letter language abbreviation\n * @return {TextTrackObject}\n * @method addTextTrack\n */\n\n Tech.prototype.addTextTrack = function addTextTrack(kind, label, language) {\n if (!kind) {\n throw new Error('TextTrack kind is required but was not provided');\n }\n\n return createTrackHelper(this, kind, label, language);\n };\n\n /**\n * Creates a remote text track object and returns a emulated html track element\n *\n * @param {Object} options The object should contain values for\n * kind, language, label and src (location of the WebVTT file)\n * @return {HTMLTrackElement}\n * @method addRemoteTextTrack\n */\n\n Tech.prototype.addRemoteTextTrack = function addRemoteTextTrack(options) {\n var track = _utilsMergeOptionsJs2['default'](options, {\n tech: this\n });\n\n var htmlTrackElement = new _tracksHtmlTrackElement2['default'](track);\n\n // store HTMLTrackElement and TextTrack to remote list\n this.remoteTextTrackEls().addTrackElement_(htmlTrackElement);\n this.remoteTextTracks().addTrack_(htmlTrackElement.track);\n\n // must come after remoteTextTracks()\n this.textTracks().addTrack_(htmlTrackElement.track);\n\n return htmlTrackElement;\n };\n\n /**\n * Remove remote texttrack\n *\n * @param {TextTrackObject} track Texttrack to remove\n * @method removeRemoteTextTrack\n */\n\n Tech.prototype.removeRemoteTextTrack = function removeRemoteTextTrack(track) {\n this.textTracks().removeTrack_(track);\n\n var trackElement = this.remoteTextTrackEls().getTrackElementByTrack_(track);\n\n // remove HTMLTrackElement and TextTrack from remote list\n this.remoteTextTrackEls().removeTrackElement_(trackElement);\n this.remoteTextTracks().removeTrack_(track);\n };\n\n /**\n * Provide a default setPoster method for techs\n * Poster support for techs should be optional, so we don't want techs to\n * break if they don't have a way to set a poster.\n *\n * @method setPoster\n */\n\n Tech.prototype.setPoster = function setPoster() {};\n\n /*\n * Check if the tech can support the given type\n *\n * The base tech does not support any type, but source handlers might\n * overwrite this.\n *\n * @param {String} type The mimetype to check\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\n\n Tech.prototype.canPlayType = function canPlayType() {\n return '';\n };\n\n /*\n * Return whether the argument is a Tech or not.\n * Can be passed either a Class like `Html5` or a instance like `player.tech_`\n *\n * @param {Object} component An item to check\n * @return {Boolean} Whether it is a tech or not\n */\n\n Tech.isTech = function isTech(component) {\n return component.prototype instanceof Tech || component instanceof Tech || component === Tech;\n };\n\n /**\n * Registers a Tech\n *\n * @param {String} name Name of the Tech to register\n * @param {Object} tech The tech to register\n * @static\n * @method registerComponent\n */\n\n Tech.registerTech = function registerTech(name, tech) {\n if (!Tech.techs_) {\n Tech.techs_ = {};\n }\n\n if (!Tech.isTech(tech)) {\n throw new Error('Tech ' + name + ' must be a Tech');\n }\n\n Tech.techs_[name] = tech;\n return tech;\n };\n\n /**\n * Gets a component by name\n *\n * @param {String} name Name of the component to get\n * @return {Component}\n * @static\n * @method getComponent\n */\n\n Tech.getTech = function getTech(name) {\n if (Tech.techs_ && Tech.techs_[name]) {\n return Tech.techs_[name];\n }\n\n if (_globalWindow2['default'] && _globalWindow2['default'].videojs && _globalWindow2['default'].videojs[name]) {\n _utilsLogJs2['default'].warn('The ' + name + ' tech was added to the videojs object when it should be registered using videojs.registerTech(name, tech)');\n return _globalWindow2['default'].videojs[name];\n }\n };\n\n return Tech;\n})(_component2['default']);\n\nTech.prototype.textTracks_;\n\nvar createTrackHelper = function createTrackHelper(self, kind, label, language) {\n var options = arguments.length <= 4 || arguments[4] === undefined ? {} : arguments[4];\n\n var tracks = self.textTracks();\n\n options.kind = kind;\n\n if (label) {\n options.label = label;\n }\n if (language) {\n options.language = language;\n }\n options.tech = self;\n\n var track = new _tracksTextTrack2['default'](options);\n tracks.addTrack_(track);\n\n return track;\n};\n\nTech.prototype.featuresVolumeControl = true;\n\n// Resizing plugins using request fullscreen reloads the plugin\nTech.prototype.featuresFullscreenResize = false;\nTech.prototype.featuresPlaybackRate = false;\n\n// Optional events that we can manually mimic with timers\n// currently not triggered by video-js-swf\nTech.prototype.featuresProgressEvents = false;\nTech.prototype.featuresTimeupdateEvents = false;\n\nTech.prototype.featuresNativeTextTracks = false;\n\n/*\n * A functional mixin for techs that want to use the Source Handler pattern.\n *\n * ##### EXAMPLE:\n *\n * Tech.withSourceHandlers.call(MyTech);\n *\n */\nTech.withSourceHandlers = function (_Tech) {\n /*\n * Register a source handler\n * Source handlers are scripts for handling specific formats.\n * The source handler pattern is used for adaptive formats (HLS, DASH) that\n * manually load video data and feed it into a Source Buffer (Media Source Extensions)\n * @param {Function} handler The source handler\n * @param {Boolean} first Register it before any existing handlers\n */\n _Tech.registerSourceHandler = function (handler, index) {\n var handlers = _Tech.sourceHandlers;\n\n if (!handlers) {\n handlers = _Tech.sourceHandlers = [];\n }\n\n if (index === undefined) {\n // add to the end of the list\n index = handlers.length;\n }\n\n handlers.splice(index, 0, handler);\n };\n\n /*\n * Check if the tech can support the given type\n * @param {String} type The mimetype to check\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\n _Tech.canPlayType = function (type) {\n var handlers = _Tech.sourceHandlers || [];\n var can = undefined;\n\n for (var i = 0; i < handlers.length; i++) {\n can = handlers[i].canPlayType(type);\n\n if (can) {\n return can;\n }\n }\n\n return '';\n };\n\n /*\n * Return the first source handler that supports the source\n * TODO: Answer question: should 'probably' be prioritized over 'maybe'\n * @param {Object} source The source object\n * @returns {Object} The first source handler that supports the source\n * @returns {null} Null if no source handler is found\n */\n _Tech.selectSourceHandler = function (source) {\n var handlers = _Tech.sourceHandlers || [];\n var can = undefined;\n\n for (var i = 0; i < handlers.length; i++) {\n can = handlers[i].canHandleSource(source);\n\n if (can) {\n return handlers[i];\n }\n }\n\n return null;\n };\n\n /*\n * Check if the tech can support the given source\n * @param {Object} srcObj The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\n _Tech.canPlaySource = function (srcObj) {\n var sh = _Tech.selectSourceHandler(srcObj);\n\n if (sh) {\n return sh.canHandleSource(srcObj);\n }\n\n return '';\n };\n\n /*\n * When using a source handler, prefer its implementation of\n * any function normally provided by the tech.\n */\n var deferrable = ['seekable', 'duration'];\n\n deferrable.forEach(function (fnName) {\n var originalFn = this[fnName];\n\n if (typeof originalFn !== 'function') {\n return;\n }\n\n this[fnName] = function () {\n if (this.sourceHandler_ && this.sourceHandler_[fnName]) {\n return this.sourceHandler_[fnName].apply(this.sourceHandler_, arguments);\n }\n return originalFn.apply(this, arguments);\n };\n }, _Tech.prototype);\n\n /*\n * Create a function for setting the source using a source object\n * and source handlers.\n * Should never be called unless a source handler was found.\n * @param {Object} source A source object with src and type keys\n * @return {Tech} self\n */\n _Tech.prototype.setSource = function (source) {\n var sh = _Tech.selectSourceHandler(source);\n\n if (!sh) {\n // Fall back to a native source hander when unsupported sources are\n // deliberately set\n if (_Tech.nativeSourceHandler) {\n sh = _Tech.nativeSourceHandler;\n } else {\n _utilsLogJs2['default'].error('No source hander found for the current source.');\n }\n }\n\n // Dispose any existing source handler\n this.disposeSourceHandler();\n this.off('dispose', this.disposeSourceHandler);\n\n this.currentSource_ = source;\n this.sourceHandler_ = sh.handleSource(source, this);\n this.on('dispose', this.disposeSourceHandler);\n\n return this;\n };\n\n /*\n * Clean up any existing source handler\n */\n _Tech.prototype.disposeSourceHandler = function () {\n if (this.sourceHandler_ && this.sourceHandler_.dispose) {\n this.sourceHandler_.dispose();\n }\n };\n};\n\n_component2['default'].registerComponent('Tech', Tech);\n// Old name for Tech\n_component2['default'].registerComponent('MediaTechController', Tech);\nTech.registerTech('Tech', Tech);\nexports['default'] = Tech;\nmodule.exports = exports['default'];\n\n},{\"../component\":67,\"../media-error.js\":105,\"../tracks/html-track-element\":123,\"../tracks/html-track-element-list\":122,\"../tracks/text-track\":130,\"../tracks/text-track-list\":128,\"../utils/buffer.js\":132,\"../utils/fn.js\":136,\"../utils/log.js\":139,\"../utils/merge-options.js\":140,\"../utils/time-ranges.js\":142,\"global/document\":1,\"global/window\":2}],122:[function(_dereq_,module,exports){\n/**\n * @file html-track-element-list.js\n */\n\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar _utilsBrowserJs = _dereq_('../utils/browser.js');\n\nvar browser = _interopRequireWildcard(_utilsBrowserJs);\n\nvar _globalDocument = _dereq_('global/document');\n\nvar _globalDocument2 = _interopRequireDefault(_globalDocument);\n\nvar HtmlTrackElementList = (function () {\n function HtmlTrackElementList() {\n var trackElements = arguments.length <= 0 || arguments[0] === undefined ? [] : arguments[0];\n\n _classCallCheck(this, HtmlTrackElementList);\n\n var list = this;\n\n if (browser.IS_IE8) {\n list = _globalDocument2['default'].createElement('custom');\n\n for (var prop in HtmlTrackElementList.prototype) {\n if (prop !== 'constructor') {\n list[prop] = HtmlTrackElementList.prototype[prop];\n }\n }\n }\n\n list.trackElements_ = [];\n\n Object.defineProperty(list, 'length', {\n get: function get() {\n return this.trackElements_.length;\n }\n });\n\n for (var i = 0, _length = trackElements.length; i < _length; i++) {\n list.addTrackElement_(trackElements[i]);\n }\n\n if (browser.IS_IE8) {\n return list;\n }\n }\n\n HtmlTrackElementList.prototype.addTrackElement_ = function addTrackElement_(trackElement) {\n this.trackElements_.push(trackElement);\n };\n\n HtmlTrackElementList.prototype.getTrackElementByTrack_ = function getTrackElementByTrack_(track) {\n var trackElement_ = undefined;\n\n for (var i = 0, _length2 = this.trackElements_.length; i < _length2; i++) {\n if (track === this.trackElements_[i].track) {\n trackElement_ = this.trackElements_[i];\n\n break;\n }\n }\n\n return trackElement_;\n };\n\n HtmlTrackElementList.prototype.removeTrackElement_ = function removeTrackElement_(trackElement) {\n for (var i = 0, _length3 = this.trackElements_.length; i < _length3; i++) {\n if (trackElement === this.trackElements_[i]) {\n this.trackElements_.splice(i, 1);\n\n break;\n }\n }\n };\n\n return HtmlTrackElementList;\n})();\n\nexports['default'] = HtmlTrackElementList;\nmodule.exports = exports['default'];\n\n},{\"../utils/browser.js\":131,\"global/document\":1}],123:[function(_dereq_,module,exports){\n/**\n * @file html-track-element.js\n */\n\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _utilsBrowserJs = _dereq_('../utils/browser.js');\n\nvar browser = _interopRequireWildcard(_utilsBrowserJs);\n\nvar _globalDocument = _dereq_('global/document');\n\nvar _globalDocument2 = _interopRequireDefault(_globalDocument);\n\nvar _eventTarget = _dereq_('../event-target');\n\nvar _eventTarget2 = _interopRequireDefault(_eventTarget);\n\nvar _tracksTextTrack = _dereq_('../tracks/text-track');\n\nvar _tracksTextTrack2 = _interopRequireDefault(_tracksTextTrack);\n\nvar NONE = 0;\nvar LOADING = 1;\nvar LOADED = 2;\nvar ERROR = 3;\n\n/**\n * https://html.spec.whatwg.org/multipage/embedded-content.html#htmltrackelement\n *\n * interface HTMLTrackElement : HTMLElement {\n * attribute DOMString kind;\n * attribute DOMString src;\n * attribute DOMString srclang;\n * attribute DOMString label;\n * attribute boolean default;\n *\n * const unsigned short NONE = 0;\n * const unsigned short LOADING = 1;\n * const unsigned short LOADED = 2;\n * const unsigned short ERROR = 3;\n * readonly attribute unsigned short readyState;\n *\n * readonly attribute TextTrack track;\n * };\n *\n * @param {Object} options TextTrack configuration\n * @class HTMLTrackElement\n */\n\nvar HTMLTrackElement = (function (_EventTarget) {\n _inherits(HTMLTrackElement, _EventTarget);\n\n function HTMLTrackElement() {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n _classCallCheck(this, HTMLTrackElement);\n\n _EventTarget.call(this);\n\n var readyState = undefined,\n trackElement = this;\n\n if (browser.IS_IE8) {\n trackElement = _globalDocument2['default'].createElement('custom');\n\n for (var prop in HTMLTrackElement.prototype) {\n if (prop !== 'constructor') {\n trackElement[prop] = HTMLTrackElement.prototype[prop];\n }\n }\n }\n\n var track = new _tracksTextTrack2['default'](options);\n\n trackElement.kind = track.kind;\n trackElement.src = track.src;\n trackElement.srclang = track.language;\n trackElement.label = track.label;\n trackElement['default'] = track['default'];\n\n Object.defineProperty(trackElement, 'readyState', {\n get: function get() {\n return readyState;\n }\n });\n\n Object.defineProperty(trackElement, 'track', {\n get: function get() {\n return track;\n }\n });\n\n readyState = NONE;\n\n track.addEventListener('loadeddata', function () {\n readyState = LOADED;\n\n trackElement.trigger({\n type: 'load',\n target: trackElement\n });\n });\n\n if (browser.IS_IE8) {\n return trackElement;\n }\n }\n\n return HTMLTrackElement;\n})(_eventTarget2['default']);\n\nHTMLTrackElement.prototype.allowedEvents_ = {\n load: 'load'\n};\n\nHTMLTrackElement.NONE = NONE;\nHTMLTrackElement.LOADING = LOADING;\nHTMLTrackElement.LOADED = LOADED;\nHTMLTrackElement.ERROR = ERROR;\n\nexports['default'] = HTMLTrackElement;\nmodule.exports = exports['default'];\n\n},{\"../event-target\":101,\"../tracks/text-track\":130,\"../utils/browser.js\":131,\"global/document\":1}],124:[function(_dereq_,module,exports){\n/**\n * @file text-track-cue-list.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar _utilsBrowserJs = _dereq_('../utils/browser.js');\n\nvar browser = _interopRequireWildcard(_utilsBrowserJs);\n\nvar _globalDocument = _dereq_('global/document');\n\nvar _globalDocument2 = _interopRequireDefault(_globalDocument);\n\n/**\n * A List of text track cues as defined in:\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcuelist\n *\n * interface TextTrackCueList {\n * readonly attribute unsigned long length;\n * getter TextTrackCue (unsigned long index);\n * TextTrackCue? getCueById(DOMString id);\n * };\n *\n * @param {Array} cues A list of cues to be initialized with\n * @class TextTrackCueList\n */\n\nvar TextTrackCueList = (function () {\n function TextTrackCueList(cues) {\n _classCallCheck(this, TextTrackCueList);\n\n var list = this;\n\n if (browser.IS_IE8) {\n list = _globalDocument2['default'].createElement('custom');\n\n for (var prop in TextTrackCueList.prototype) {\n if (prop !== 'constructor') {\n list[prop] = TextTrackCueList.prototype[prop];\n }\n }\n }\n\n TextTrackCueList.prototype.setCues_.call(list, cues);\n\n Object.defineProperty(list, 'length', {\n get: function get() {\n return this.length_;\n }\n });\n\n if (browser.IS_IE8) {\n return list;\n }\n }\n\n /**\n * A setter for cues in this list\n *\n * @param {Array} cues an array of cues\n * @method setCues_\n * @private\n */\n\n TextTrackCueList.prototype.setCues_ = function setCues_(cues) {\n var oldLength = this.length || 0;\n var i = 0;\n var l = cues.length;\n\n this.cues_ = cues;\n this.length_ = cues.length;\n\n var defineProp = function defineProp(index) {\n if (!('' + index in this)) {\n Object.defineProperty(this, '' + index, {\n get: function get() {\n return this.cues_[index];\n }\n });\n }\n };\n\n if (oldLength < l) {\n i = oldLength;\n\n for (; i < l; i++) {\n defineProp.call(this, i);\n }\n }\n };\n\n /**\n * Get a cue that is currently in the Cue list by id\n *\n * @param {String} id\n * @method getCueById\n * @return {Object} a single cue\n */\n\n TextTrackCueList.prototype.getCueById = function getCueById(id) {\n var result = null;\n\n for (var i = 0, l = this.length; i < l; i++) {\n var cue = this[i];\n\n if (cue.id === id) {\n result = cue;\n break;\n }\n }\n\n return result;\n };\n\n return TextTrackCueList;\n})();\n\nexports['default'] = TextTrackCueList;\nmodule.exports = exports['default'];\n\n},{\"../utils/browser.js\":131,\"global/document\":1}],125:[function(_dereq_,module,exports){\n/**\n * @file text-track-display.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _component = _dereq_('../component');\n\nvar _component2 = _interopRequireDefault(_component);\n\nvar _menuMenuJs = _dereq_('../menu/menu.js');\n\nvar _menuMenuJs2 = _interopRequireDefault(_menuMenuJs);\n\nvar _menuMenuItemJs = _dereq_('../menu/menu-item.js');\n\nvar _menuMenuItemJs2 = _interopRequireDefault(_menuMenuItemJs);\n\nvar _menuMenuButtonJs = _dereq_('../menu/menu-button.js');\n\nvar _menuMenuButtonJs2 = _interopRequireDefault(_menuMenuButtonJs);\n\nvar _utilsFnJs = _dereq_('../utils/fn.js');\n\nvar Fn = _interopRequireWildcard(_utilsFnJs);\n\nvar _globalDocument = _dereq_('global/document');\n\nvar _globalDocument2 = _interopRequireDefault(_globalDocument);\n\nvar _globalWindow = _dereq_('global/window');\n\nvar _globalWindow2 = _interopRequireDefault(_globalWindow);\n\nvar darkGray = '#222';\nvar lightGray = '#ccc';\nvar fontMap = {\n monospace: 'monospace',\n sansSerif: 'sans-serif',\n serif: 'serif',\n monospaceSansSerif: '\"Andale Mono\", \"Lucida Console\", monospace',\n monospaceSerif: '\"Courier New\", monospace',\n proportionalSansSerif: 'sans-serif',\n proportionalSerif: 'serif',\n casual: '\"Comic Sans MS\", Impact, fantasy',\n script: '\"Monotype Corsiva\", cursive',\n smallcaps: '\"Andale Mono\", \"Lucida Console\", monospace, sans-serif'\n};\n\n/**\n * The component for displaying text track cues\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class TextTrackDisplay\n */\n\nvar TextTrackDisplay = (function (_Component) {\n _inherits(TextTrackDisplay, _Component);\n\n function TextTrackDisplay(player, options, ready) {\n _classCallCheck(this, TextTrackDisplay);\n\n _Component.call(this, player, options, ready);\n\n player.on('loadstart', Fn.bind(this, this.toggleDisplay));\n player.on('texttrackchange', Fn.bind(this, this.updateDisplay));\n\n // This used to be called during player init, but was causing an error\n // if a track should show by default and the display hadn't loaded yet.\n // Should probably be moved to an external track loader when we support\n // tracks that don't need a display.\n player.ready(Fn.bind(this, function () {\n if (player.tech_ && player.tech_['featuresNativeTextTracks']) {\n this.hide();\n return;\n }\n\n player.on('fullscreenchange', Fn.bind(this, this.updateDisplay));\n\n var tracks = this.options_.playerOptions['tracks'] || [];\n for (var i = 0; i < tracks.length; i++) {\n var track = tracks[i];\n this.player_.addRemoteTextTrack(track);\n }\n\n var modes = { 'captions': 1, 'subtitles': 1 };\n var trackList = this.player_.textTracks();\n var firstDesc = undefined;\n var firstCaptions = undefined;\n\n if (trackList) {\n for (var i = 0; i < trackList.length; i++) {\n var track = trackList[i];\n if (track['default']) {\n if (track.kind === 'descriptions' && !firstDesc) {\n firstDesc = track;\n } else if (track.kind in modes && !firstCaptions) {\n firstCaptions = track;\n }\n }\n }\n\n // We want to show the first default track but captions and subtitles\n // take precedence over descriptions.\n // So, display the first default captions or subtitles track\n // and otherwise the first default descriptions track.\n if (firstCaptions) {\n firstCaptions.mode = 'showing';\n } else if (firstDesc) {\n firstDesc.mode = 'showing';\n }\n }\n }));\n }\n\n /**\n * Add cue HTML to display\n *\n * @param {Number} color Hex number for color, like #f0e\n * @param {Number} opacity Value for opacity,0.0 - 1.0\n * @return {RGBAColor} In the form 'rgba(255, 0, 0, 0.3)'\n * @method constructColor\n */\n\n /**\n * Toggle display texttracks\n *\n * @method toggleDisplay\n */\n\n TextTrackDisplay.prototype.toggleDisplay = function toggleDisplay() {\n if (this.player_.tech_ && this.player_.tech_['featuresNativeTextTracks']) {\n this.hide();\n } else {\n this.show();\n }\n };\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n\n TextTrackDisplay.prototype.createEl = function createEl() {\n return _Component.prototype.createEl.call(this, 'div', {\n className: 'vjs-text-track-display'\n }, {\n 'aria-live': 'assertive',\n 'aria-atomic': 'true'\n });\n };\n\n /**\n * Clear display texttracks\n *\n * @method clearDisplay\n */\n\n TextTrackDisplay.prototype.clearDisplay = function clearDisplay() {\n if (typeof _globalWindow2['default']['WebVTT'] === 'function') {\n _globalWindow2['default']['WebVTT']['processCues'](_globalWindow2['default'], [], this.el_);\n }\n };\n\n /**\n * Update display texttracks\n *\n * @method updateDisplay\n */\n\n TextTrackDisplay.prototype.updateDisplay = function updateDisplay() {\n var tracks = this.player_.textTracks();\n\n this.clearDisplay();\n\n if (!tracks) {\n return;\n }\n\n // Track display prioritization model: if multiple tracks are 'showing',\n // display the first 'subtitles' or 'captions' track which is 'showing',\n // otherwise display the first 'descriptions' track which is 'showing'\n\n var descriptionsTrack = null;\n var captionsSubtitlesTrack = null;\n\n var i = tracks.length;\n while (i--) {\n var track = tracks[i];\n if (track['mode'] === 'showing') {\n if (track['kind'] === 'descriptions') {\n descriptionsTrack = track;\n } else {\n captionsSubtitlesTrack = track;\n }\n }\n }\n\n if (captionsSubtitlesTrack) {\n this.updateForTrack(captionsSubtitlesTrack);\n } else if (descriptionsTrack) {\n this.updateForTrack(descriptionsTrack);\n }\n };\n\n /**\n * Add texttrack to texttrack list\n *\n * @param {TextTrackObject} track Texttrack object to be added to list\n * @method updateForTrack\n */\n\n TextTrackDisplay.prototype.updateForTrack = function updateForTrack(track) {\n if (typeof _globalWindow2['default']['WebVTT'] !== 'function' || !track['activeCues']) {\n return;\n }\n\n var overrides = this.player_['textTrackSettings'].getValues();\n\n var cues = [];\n for (var _i = 0; _i < track['activeCues'].length; _i++) {\n cues.push(track['activeCues'][_i]);\n }\n\n _globalWindow2['default']['WebVTT']['processCues'](_globalWindow2['default'], cues, this.el_);\n\n var i = cues.length;\n while (i--) {\n var cue = cues[i];\n if (!cue) {\n continue;\n }\n\n var cueDiv = cue.displayState;\n if (overrides.color) {\n cueDiv.firstChild.style.color = overrides.color;\n }\n if (overrides.textOpacity) {\n tryUpdateStyle(cueDiv.firstChild, 'color', constructColor(overrides.color || '#fff', overrides.textOpacity));\n }\n if (overrides.backgroundColor) {\n cueDiv.firstChild.style.backgroundColor = overrides.backgroundColor;\n }\n if (overrides.backgroundOpacity) {\n tryUpdateStyle(cueDiv.firstChild, 'backgroundColor', constructColor(overrides.backgroundColor || '#000', overrides.backgroundOpacity));\n }\n if (overrides.windowColor) {\n if (overrides.windowOpacity) {\n tryUpdateStyle(cueDiv, 'backgroundColor', constructColor(overrides.windowColor, overrides.windowOpacity));\n } else {\n cueDiv.style.backgroundColor = overrides.windowColor;\n }\n }\n if (overrides.edgeStyle) {\n if (overrides.edgeStyle === 'dropshadow') {\n cueDiv.firstChild.style.textShadow = '2px 2px 3px ' + darkGray + ', 2px 2px 4px ' + darkGray + ', 2px 2px 5px ' + darkGray;\n } else if (overrides.edgeStyle === 'raised') {\n cueDiv.firstChild.style.textShadow = '1px 1px ' + darkGray + ', 2px 2px ' + darkGray + ', 3px 3px ' + darkGray;\n } else if (overrides.edgeStyle === 'depressed') {\n cueDiv.firstChild.style.textShadow = '1px 1px ' + lightGray + ', 0 1px ' + lightGray + ', -1px -1px ' + darkGray + ', 0 -1px ' + darkGray;\n } else if (overrides.edgeStyle === 'uniform') {\n cueDiv.firstChild.style.textShadow = '0 0 4px ' + darkGray + ', 0 0 4px ' + darkGray + ', 0 0 4px ' + darkGray + ', 0 0 4px ' + darkGray;\n }\n }\n if (overrides.fontPercent && overrides.fontPercent !== 1) {\n var fontSize = _globalWindow2['default'].parseFloat(cueDiv.style.fontSize);\n cueDiv.style.fontSize = fontSize * overrides.fontPercent + 'px';\n cueDiv.style.height = 'auto';\n cueDiv.style.top = 'auto';\n cueDiv.style.bottom = '2px';\n }\n if (overrides.fontFamily && overrides.fontFamily !== 'default') {\n if (overrides.fontFamily === 'small-caps') {\n cueDiv.firstChild.style.fontVariant = 'small-caps';\n } else {\n cueDiv.firstChild.style.fontFamily = fontMap[overrides.fontFamily];\n }\n }\n }\n };\n\n return TextTrackDisplay;\n})(_component2['default']);\n\nfunction constructColor(color, opacity) {\n return 'rgba(' +\n // color looks like \"#f0e\"\n parseInt(color[1] + color[1], 16) + ',' + parseInt(color[2] + color[2], 16) + ',' + parseInt(color[3] + color[3], 16) + ',' + opacity + ')';\n}\n\n/**\n * Try to update style\n * Some style changes will throw an error, particularly in IE8. Those should be noops.\n *\n * @param {Element} el The element to be styles\n * @param {CSSProperty} style The CSS property to be styled\n * @param {CSSStyle} rule The actual style to be applied to the property\n * @method tryUpdateStyle\n */\nfunction tryUpdateStyle(el, style, rule) {\n //\n try {\n el.style[style] = rule;\n } catch (e) {}\n}\n\n_component2['default'].registerComponent('TextTrackDisplay', TextTrackDisplay);\nexports['default'] = TextTrackDisplay;\nmodule.exports = exports['default'];\n\n},{\"../component\":67,\"../menu/menu-button.js\":106,\"../menu/menu-item.js\":107,\"../menu/menu.js\":108,\"../utils/fn.js\":136,\"global/document\":1,\"global/window\":2}],126:[function(_dereq_,module,exports){\n/**\n * @file text-track-enums.js\n */\n\n/**\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackmode\n *\n * enum TextTrackMode { \"disabled\", \"hidden\", \"showing\" };\n */\n'use strict';\n\nexports.__esModule = true;\nvar TextTrackMode = {\n disabled: 'disabled',\n hidden: 'hidden',\n showing: 'showing'\n};\n\n/**\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackkind\n *\n * enum TextTrackKind {\n * \"subtitles\",\n * \"captions\",\n * \"descriptions\",\n * \"chapters\",\n * \"metadata\"\n * };\n */\nvar TextTrackKind = {\n subtitles: 'subtitles',\n captions: 'captions',\n descriptions: 'descriptions',\n chapters: 'chapters',\n metadata: 'metadata'\n};\n\n/* jshint ignore:start */\n// we ignore jshint here because it does not see\n// TextTrackMode or TextTrackKind as defined here somehow...\nexports.TextTrackMode = TextTrackMode;\nexports.TextTrackKind = TextTrackKind;\n\n/* jshint ignore:end */\n\n},{}],127:[function(_dereq_,module,exports){\n/**\n * Utilities for capturing text track state and re-creating tracks\n * based on a capture.\n *\n * @file text-track-list-converter.js\n */\n\n/**\n * Examine a single text track and return a JSON-compatible javascript\n * object that represents the text track's state.\n * @param track {TextTrackObject} the text track to query\n * @return {Object} a serializable javascript representation of the\n * @private\n */\n'use strict';\n\nexports.__esModule = true;\nvar trackToJson_ = function trackToJson_(track) {\n var ret = ['kind', 'label', 'language', 'id', 'inBandMetadataTrackDispatchType', 'mode', 'src'].reduce(function (acc, prop, i) {\n if (track[prop]) {\n acc[prop] = track[prop];\n }\n\n return acc;\n }, {\n cues: track.cues && Array.prototype.map.call(track.cues, function (cue) {\n return {\n startTime: cue.startTime,\n endTime: cue.endTime,\n text: cue.text,\n id: cue.id\n };\n })\n });\n\n return ret;\n};\n\n/**\n * Examine a tech and return a JSON-compatible javascript array that\n * represents the state of all text tracks currently configured. The\n * return array is compatible with `jsonToTextTracks`.\n * @param tech {tech} the tech object to query\n * @return {Array} a serializable javascript representation of the\n * @function textTracksToJson\n */\nvar textTracksToJson = function textTracksToJson(tech) {\n\n var trackEls = tech.$$('track');\n\n var trackObjs = Array.prototype.map.call(trackEls, function (t) {\n return t.track;\n });\n var tracks = Array.prototype.map.call(trackEls, function (trackEl) {\n var json = trackToJson_(trackEl.track);\n if (trackEl.src) {\n json.src = trackEl.src;\n }\n return json;\n });\n\n return tracks.concat(Array.prototype.filter.call(tech.textTracks(), function (track) {\n return trackObjs.indexOf(track) === -1;\n }).map(trackToJson_));\n};\n\n/**\n * Creates a set of remote text tracks on a tech based on an array of\n * javascript text track representations.\n * @param json {Array} an array of text track representation objects,\n * like those that would be produced by `textTracksToJson`\n * @param tech {tech} the tech to create text tracks on\n * @function jsonToTextTracks\n */\nvar jsonToTextTracks = function jsonToTextTracks(json, tech) {\n json.forEach(function (track) {\n var addedTrack = tech.addRemoteTextTrack(track).track;\n if (!track.src && track.cues) {\n track.cues.forEach(function (cue) {\n return addedTrack.addCue(cue);\n });\n }\n });\n\n return tech.textTracks();\n};\n\nexports['default'] = { textTracksToJson: textTracksToJson, jsonToTextTracks: jsonToTextTracks, trackToJson_: trackToJson_ };\nmodule.exports = exports['default'];\n\n},{}],128:[function(_dereq_,module,exports){\n/**\n * @file text-track-list.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _eventTarget = _dereq_('../event-target');\n\nvar _eventTarget2 = _interopRequireDefault(_eventTarget);\n\nvar _utilsFnJs = _dereq_('../utils/fn.js');\n\nvar Fn = _interopRequireWildcard(_utilsFnJs);\n\nvar _utilsBrowserJs = _dereq_('../utils/browser.js');\n\nvar browser = _interopRequireWildcard(_utilsBrowserJs);\n\nvar _globalDocument = _dereq_('global/document');\n\nvar _globalDocument2 = _interopRequireDefault(_globalDocument);\n\n/**\n * A text track list as defined in:\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttracklist\n *\n * interface TextTrackList : EventTarget {\n * readonly attribute unsigned long length;\n * getter TextTrack (unsigned long index);\n * TextTrack? getTrackById(DOMString id);\n *\n * attribute EventHandler onchange;\n * attribute EventHandler onaddtrack;\n * attribute EventHandler onremovetrack;\n * };\n *\n * @param {Track[]} tracks A list of tracks to initialize the list with\n * @extends EventTarget\n * @class TextTrackList\n */\n\nvar TextTrackList = (function (_EventTarget) {\n _inherits(TextTrackList, _EventTarget);\n\n function TextTrackList() {\n var tracks = arguments.length <= 0 || arguments[0] === undefined ? [] : arguments[0];\n\n _classCallCheck(this, TextTrackList);\n\n _EventTarget.call(this);\n var list = this;\n\n if (browser.IS_IE8) {\n list = _globalDocument2['default'].createElement('custom');\n\n for (var prop in TextTrackList.prototype) {\n if (prop !== 'constructor') {\n list[prop] = TextTrackList.prototype[prop];\n }\n }\n }\n\n list.tracks_ = [];\n\n Object.defineProperty(list, 'length', {\n get: function get() {\n return this.tracks_.length;\n }\n });\n\n for (var i = 0; i < tracks.length; i++) {\n list.addTrack_(tracks[i]);\n }\n\n if (browser.IS_IE8) {\n return list;\n }\n }\n\n /**\n * change - One or more tracks in the track list have been enabled or disabled.\n * addtrack - A track has been added to the track list.\n * removetrack - A track has been removed from the track list.\n */\n\n /**\n * Add TextTrack from TextTrackList\n *\n * @param {TextTrack} track\n * @method addTrack_\n * @private\n */\n\n TextTrackList.prototype.addTrack_ = function addTrack_(track) {\n var index = this.tracks_.length;\n\n if (!('' + index in this)) {\n Object.defineProperty(this, index, {\n get: function get() {\n return this.tracks_[index];\n }\n });\n }\n\n track.addEventListener('modechange', Fn.bind(this, function () {\n this.trigger('change');\n }));\n\n // Do not add duplicate tracks\n if (this.tracks_.indexOf(track) === -1) {\n this.tracks_.push(track);\n this.trigger({\n track: track,\n type: 'addtrack'\n });\n }\n };\n\n /**\n * Remove TextTrack from TextTrackList\n * NOTE: Be mindful of what is passed in as it may be a HTMLTrackElement\n *\n * @param {TextTrack} rtrack\n * @method removeTrack_\n * @private\n */\n\n TextTrackList.prototype.removeTrack_ = function removeTrack_(rtrack) {\n var track = undefined;\n\n for (var i = 0, l = this.length; i < l; i++) {\n if (this[i] === rtrack) {\n track = this[i];\n if (track.off) {\n track.off();\n }\n\n this.tracks_.splice(i, 1);\n\n break;\n }\n }\n\n if (!track) {\n return;\n }\n\n this.trigger({\n track: track,\n type: 'removetrack'\n });\n };\n\n /**\n * Get a TextTrack from TextTrackList by a tracks id\n *\n * @param {String} id - the id of the track to get\n * @method getTrackById\n * @return {TextTrack}\n * @private\n */\n\n TextTrackList.prototype.getTrackById = function getTrackById(id) {\n var result = null;\n\n for (var i = 0, l = this.length; i < l; i++) {\n var track = this[i];\n\n if (track.id === id) {\n result = track;\n break;\n }\n }\n\n return result;\n };\n\n return TextTrackList;\n})(_eventTarget2['default']);\n\nTextTrackList.prototype.allowedEvents_ = {\n change: 'change',\n addtrack: 'addtrack',\n removetrack: 'removetrack'\n};\n\n// emulate attribute EventHandler support to allow for feature detection\nfor (var _event in TextTrackList.prototype.allowedEvents_) {\n TextTrackList.prototype['on' + _event] = null;\n}\n\nexports['default'] = TextTrackList;\nmodule.exports = exports['default'];\n\n},{\"../event-target\":101,\"../utils/browser.js\":131,\"../utils/fn.js\":136,\"global/document\":1}],129:[function(_dereq_,module,exports){\n/**\n * @file text-track-settings.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _component = _dereq_('../component');\n\nvar _component2 = _interopRequireDefault(_component);\n\nvar _utilsEventsJs = _dereq_('../utils/events.js');\n\nvar Events = _interopRequireWildcard(_utilsEventsJs);\n\nvar _utilsFnJs = _dereq_('../utils/fn.js');\n\nvar Fn = _interopRequireWildcard(_utilsFnJs);\n\nvar _utilsLogJs = _dereq_('../utils/log.js');\n\nvar _utilsLogJs2 = _interopRequireDefault(_utilsLogJs);\n\nvar _safeJsonParseTuple = _dereq_('safe-json-parse/tuple');\n\nvar _safeJsonParseTuple2 = _interopRequireDefault(_safeJsonParseTuple);\n\nvar _globalWindow = _dereq_('global/window');\n\nvar _globalWindow2 = _interopRequireDefault(_globalWindow);\n\n/**\n * Manipulate settings of texttracks\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class TextTrackSettings\n */\n\nvar TextTrackSettings = (function (_Component) {\n _inherits(TextTrackSettings, _Component);\n\n function TextTrackSettings(player, options) {\n _classCallCheck(this, TextTrackSettings);\n\n _Component.call(this, player, options);\n this.hide();\n\n // Grab `persistTextTrackSettings` from the player options if not passed in child options\n if (options.persistTextTrackSettings === undefined) {\n this.options_.persistTextTrackSettings = this.options_.playerOptions.persistTextTrackSettings;\n }\n\n Events.on(this.$('.vjs-done-button'), 'click', Fn.bind(this, function () {\n this.saveSettings();\n this.hide();\n }));\n\n Events.on(this.$('.vjs-default-button'), 'click', Fn.bind(this, function () {\n this.$('.vjs-fg-color > select').selectedIndex = 0;\n this.$('.vjs-bg-color > select').selectedIndex = 0;\n this.$('.window-color > select').selectedIndex = 0;\n this.$('.vjs-text-opacity > select').selectedIndex = 0;\n this.$('.vjs-bg-opacity > select').selectedIndex = 0;\n this.$('.vjs-window-opacity > select').selectedIndex = 0;\n this.$('.vjs-edge-style select').selectedIndex = 0;\n this.$('.vjs-font-family select').selectedIndex = 0;\n this.$('.vjs-font-percent select').selectedIndex = 2;\n this.updateDisplay();\n }));\n\n Events.on(this.$('.vjs-fg-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.$('.vjs-bg-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.$('.window-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.$('.vjs-text-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.$('.vjs-bg-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.$('.vjs-window-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.$('.vjs-font-percent select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.$('.vjs-edge-style select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.$('.vjs-font-family select'), 'change', Fn.bind(this, this.updateDisplay));\n\n if (this.options_.persistTextTrackSettings) {\n this.restoreSettings();\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n\n TextTrackSettings.prototype.createEl = function createEl() {\n return _Component.prototype.createEl.call(this, 'div', {\n className: 'vjs-caption-settings vjs-modal-overlay',\n innerHTML: captionOptionsMenuTemplate()\n });\n };\n\n /**\n * Get texttrack settings\n * Settings are\n * .vjs-edge-style\n * .vjs-font-family\n * .vjs-fg-color\n * .vjs-text-opacity\n * .vjs-bg-color\n * .vjs-bg-opacity\n * .window-color\n * .vjs-window-opacity\n *\n * @return {Object}\n * @method getValues\n */\n\n TextTrackSettings.prototype.getValues = function getValues() {\n var textEdge = getSelectedOptionValue(this.$('.vjs-edge-style select'));\n var fontFamily = getSelectedOptionValue(this.$('.vjs-font-family select'));\n var fgColor = getSelectedOptionValue(this.$('.vjs-fg-color > select'));\n var textOpacity = getSelectedOptionValue(this.$('.vjs-text-opacity > select'));\n var bgColor = getSelectedOptionValue(this.$('.vjs-bg-color > select'));\n var bgOpacity = getSelectedOptionValue(this.$('.vjs-bg-opacity > select'));\n var windowColor = getSelectedOptionValue(this.$('.window-color > select'));\n var windowOpacity = getSelectedOptionValue(this.$('.vjs-window-opacity > select'));\n var fontPercent = _globalWindow2['default']['parseFloat'](getSelectedOptionValue(this.$('.vjs-font-percent > select')));\n\n var result = {\n 'backgroundOpacity': bgOpacity,\n 'textOpacity': textOpacity,\n 'windowOpacity': windowOpacity,\n 'edgeStyle': textEdge,\n 'fontFamily': fontFamily,\n 'color': fgColor,\n 'backgroundColor': bgColor,\n 'windowColor': windowColor,\n 'fontPercent': fontPercent\n };\n for (var _name in result) {\n if (result[_name] === '' || result[_name] === 'none' || _name === 'fontPercent' && result[_name] === 1.00) {\n delete result[_name];\n }\n }\n return result;\n };\n\n /**\n * Set texttrack settings\n * Settings are\n * .vjs-edge-style\n * .vjs-font-family\n * .vjs-fg-color\n * .vjs-text-opacity\n * .vjs-bg-color\n * .vjs-bg-opacity\n * .window-color\n * .vjs-window-opacity\n *\n * @param {Object} values Object with texttrack setting values\n * @method setValues\n */\n\n TextTrackSettings.prototype.setValues = function setValues(values) {\n setSelectedOption(this.$('.vjs-edge-style select'), values.edgeStyle);\n setSelectedOption(this.$('.vjs-font-family select'), values.fontFamily);\n setSelectedOption(this.$('.vjs-fg-color > select'), values.color);\n setSelectedOption(this.$('.vjs-text-opacity > select'), values.textOpacity);\n setSelectedOption(this.$('.vjs-bg-color > select'), values.backgroundColor);\n setSelectedOption(this.$('.vjs-bg-opacity > select'), values.backgroundOpacity);\n setSelectedOption(this.$('.window-color > select'), values.windowColor);\n setSelectedOption(this.$('.vjs-window-opacity > select'), values.windowOpacity);\n\n var fontPercent = values.fontPercent;\n\n if (fontPercent) {\n fontPercent = fontPercent.toFixed(2);\n }\n\n setSelectedOption(this.$('.vjs-font-percent > select'), fontPercent);\n };\n\n /**\n * Restore texttrack settings\n *\n * @method restoreSettings\n */\n\n TextTrackSettings.prototype.restoreSettings = function restoreSettings() {\n var err = undefined,\n values = undefined;\n\n try {\n var _safeParseTuple = _safeJsonParseTuple2['default'](_globalWindow2['default'].localStorage.getItem('vjs-text-track-settings'));\n\n err = _safeParseTuple[0];\n values = _safeParseTuple[1];\n\n if (err) {\n _utilsLogJs2['default'].error(err);\n }\n } catch (e) {\n _utilsLogJs2['default'].warn(e);\n }\n\n if (values) {\n this.setValues(values);\n }\n };\n\n /**\n * Save texttrack settings to local storage\n *\n * @method saveSettings\n */\n\n TextTrackSettings.prototype.saveSettings = function saveSettings() {\n if (!this.options_.persistTextTrackSettings) {\n return;\n }\n\n var values = this.getValues();\n try {\n if (Object.getOwnPropertyNames(values).length > 0) {\n _globalWindow2['default'].localStorage.setItem('vjs-text-track-settings', JSON.stringify(values));\n } else {\n _globalWindow2['default'].localStorage.removeItem('vjs-text-track-settings');\n }\n } catch (e) {\n _utilsLogJs2['default'].warn(e);\n }\n };\n\n /**\n * Update display of texttrack settings\n *\n * @method updateDisplay\n */\n\n TextTrackSettings.prototype.updateDisplay = function updateDisplay() {\n var ttDisplay = this.player_.getChild('textTrackDisplay');\n if (ttDisplay) {\n ttDisplay.updateDisplay();\n }\n };\n\n return TextTrackSettings;\n})(_component2['default']);\n\n_component2['default'].registerComponent('TextTrackSettings', TextTrackSettings);\n\nfunction getSelectedOptionValue(target) {\n var selectedOption = undefined;\n // not all browsers support selectedOptions, so, fallback to options\n if (target.selectedOptions) {\n selectedOption = target.selectedOptions[0];\n } else if (target.options) {\n selectedOption = target.options[target.options.selectedIndex];\n }\n\n return selectedOption.value;\n}\n\nfunction setSelectedOption(target, value) {\n if (!value) {\n return;\n }\n\n var i = undefined;\n for (i = 0; i < target.options.length; i++) {\n var option = target.options[i];\n if (option.value === value) {\n break;\n }\n }\n\n target.selectedIndex = i;\n}\n\nfunction captionOptionsMenuTemplate() {\n var template = '
\\n
\\n
\\n \\n \\n \\n \\n \\n
\\n
\\n \\n \\n \\n \\n \\n
\\n
\\n \\n \\n \\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
';\n\n return template;\n}\n\nexports['default'] = TextTrackSettings;\nmodule.exports = exports['default'];\n\n},{\"../component\":67,\"../utils/events.js\":135,\"../utils/fn.js\":136,\"../utils/log.js\":139,\"global/window\":2,\"safe-json-parse/tuple\":54}],130:[function(_dereq_,module,exports){\n/**\n * @file text-track.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _textTrackCueList = _dereq_('./text-track-cue-list');\n\nvar _textTrackCueList2 = _interopRequireDefault(_textTrackCueList);\n\nvar _utilsFnJs = _dereq_('../utils/fn.js');\n\nvar Fn = _interopRequireWildcard(_utilsFnJs);\n\nvar _utilsGuidJs = _dereq_('../utils/guid.js');\n\nvar Guid = _interopRequireWildcard(_utilsGuidJs);\n\nvar _utilsBrowserJs = _dereq_('../utils/browser.js');\n\nvar browser = _interopRequireWildcard(_utilsBrowserJs);\n\nvar _textTrackEnums = _dereq_('./text-track-enums');\n\nvar TextTrackEnum = _interopRequireWildcard(_textTrackEnums);\n\nvar _utilsLogJs = _dereq_('../utils/log.js');\n\nvar _utilsLogJs2 = _interopRequireDefault(_utilsLogJs);\n\nvar _eventTarget = _dereq_('../event-target');\n\nvar _eventTarget2 = _interopRequireDefault(_eventTarget);\n\nvar _globalDocument = _dereq_('global/document');\n\nvar _globalDocument2 = _interopRequireDefault(_globalDocument);\n\nvar _globalWindow = _dereq_('global/window');\n\nvar _globalWindow2 = _interopRequireDefault(_globalWindow);\n\nvar _utilsUrlJs = _dereq_('../utils/url.js');\n\nvar _xhr = _dereq_('xhr');\n\nvar _xhr2 = _interopRequireDefault(_xhr);\n\n/**\n * takes a webvtt file contents and parses it into cues\n *\n * @param {String} srcContent webVTT file contents\n * @param {Track} track track to addcues to\n */\nvar parseCues = function parseCues(srcContent, track) {\n var parser = new _globalWindow2['default'].WebVTT.Parser(_globalWindow2['default'], _globalWindow2['default'].vttjs, _globalWindow2['default'].WebVTT.StringDecoder());\n var errors = [];\n\n parser.oncue = function (cue) {\n track.addCue(cue);\n };\n\n parser.onparsingerror = function (error) {\n errors.push(error);\n };\n\n parser.onflush = function () {\n track.trigger({\n type: 'loadeddata',\n target: track\n });\n };\n\n parser.parse(srcContent);\n if (errors.length > 0) {\n if (console.groupCollapsed) {\n console.groupCollapsed('Text Track parsing errors for ' + track.src);\n }\n errors.forEach(function (error) {\n return _utilsLogJs2['default'].error(error);\n });\n if (console.groupEnd) {\n console.groupEnd();\n }\n }\n\n parser.flush();\n};\n\n/**\n * load a track from a specifed url\n *\n * @param {String} src url to load track from\n * @param {Track} track track to addcues to\n */\nvar loadTrack = function loadTrack(src, track) {\n var opts = {\n uri: src\n };\n var crossOrigin = _utilsUrlJs.isCrossOrigin(src);\n\n if (crossOrigin) {\n opts.cors = crossOrigin;\n }\n\n _xhr2['default'](opts, Fn.bind(this, function (err, response, responseBody) {\n if (err) {\n return _utilsLogJs2['default'].error(err, response);\n }\n\n track.loaded_ = true;\n\n // Make sure that vttjs has loaded, otherwise, wait till it finished loading\n // NOTE: this is only used for the alt/video.novtt.js build\n if (typeof _globalWindow2['default'].WebVTT !== 'function') {\n if (track.tech_) {\n (function () {\n var loadHandler = function loadHandler() {\n return parseCues(responseBody, track);\n };\n track.tech_.on('vttjsloaded', loadHandler);\n track.tech_.on('vttjserror', function () {\n _utilsLogJs2['default'].error('vttjs failed to load, stopping trying to process ' + track.src);\n track.tech_.off('vttjsloaded', loadHandler);\n });\n })();\n }\n } else {\n parseCues(responseBody, track);\n }\n }));\n};\n\n/**\n * A single text track as defined in:\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrack\n *\n * interface TextTrack : EventTarget {\n * readonly attribute TextTrackKind kind;\n * readonly attribute DOMString label;\n * readonly attribute DOMString language;\n *\n * readonly attribute DOMString id;\n * readonly attribute DOMString inBandMetadataTrackDispatchType;\n *\n * attribute TextTrackMode mode;\n *\n * readonly attribute TextTrackCueList? cues;\n * readonly attribute TextTrackCueList? activeCues;\n *\n * void addCue(TextTrackCue cue);\n * void removeCue(TextTrackCue cue);\n *\n * attribute EventHandler oncuechange;\n * };\n *\n * @param {Object=} options Object of option names and values\n * @extends EventTarget\n * @class TextTrack\n */\n\nvar TextTrack = (function (_EventTarget) {\n _inherits(TextTrack, _EventTarget);\n\n function TextTrack() {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n _classCallCheck(this, TextTrack);\n\n _EventTarget.call(this);\n if (!options.tech) {\n throw new Error('A tech was not provided.');\n }\n\n var tt = this;\n\n if (browser.IS_IE8) {\n tt = _globalDocument2['default'].createElement('custom');\n\n for (var prop in TextTrack.prototype) {\n if (prop !== 'constructor') {\n tt[prop] = TextTrack.prototype[prop];\n }\n }\n }\n\n tt.tech_ = options.tech;\n\n var mode = TextTrackEnum.TextTrackMode[options.mode] || 'disabled';\n var kind = TextTrackEnum.TextTrackKind[options.kind] || 'subtitles';\n var default_ = options['default'];\n var label = options.label || '';\n var language = options.language || options.srclang || '';\n var id = options.id || 'vjs_text_track_' + Guid.newGUID();\n\n if (kind === 'metadata' || kind === 'chapters') {\n mode = 'hidden';\n }\n\n tt.cues_ = [];\n tt.activeCues_ = [];\n\n var cues = new _textTrackCueList2['default'](tt.cues_);\n var activeCues = new _textTrackCueList2['default'](tt.activeCues_);\n var changed = false;\n var timeupdateHandler = Fn.bind(tt, function () {\n this.activeCues;\n if (changed) {\n this.trigger('cuechange');\n changed = false;\n }\n });\n\n if (mode !== 'disabled') {\n tt.tech_.on('timeupdate', timeupdateHandler);\n }\n\n Object.defineProperty(tt, 'kind', {\n get: function get() {\n return kind;\n },\n set: function set() {}\n });\n\n Object.defineProperty(tt, 'label', {\n get: function get() {\n return label;\n },\n set: function set() {}\n });\n\n Object.defineProperty(tt, 'language', {\n get: function get() {\n return language;\n },\n set: function set() {}\n });\n\n Object.defineProperty(tt, 'id', {\n get: function get() {\n return id;\n },\n set: function set() {}\n });\n\n Object.defineProperty(tt, 'default', {\n get: function get() {\n return default_;\n },\n set: function set() {}\n });\n\n Object.defineProperty(tt, 'mode', {\n get: function get() {\n return mode;\n },\n set: function set(newMode) {\n if (!TextTrackEnum.TextTrackMode[newMode]) {\n return;\n }\n mode = newMode;\n if (mode === 'showing') {\n this.tech_.on('timeupdate', timeupdateHandler);\n }\n this.trigger('modechange');\n }\n });\n\n Object.defineProperty(tt, 'cues', {\n get: function get() {\n if (!this.loaded_) {\n return null;\n }\n\n return cues;\n },\n set: function set() {}\n });\n\n Object.defineProperty(tt, 'activeCues', {\n get: function get() {\n if (!this.loaded_) {\n return null;\n }\n\n // nothing to do\n if (this.cues.length === 0) {\n return activeCues;\n }\n\n var ct = this.tech_.currentTime();\n var active = [];\n\n for (var i = 0, l = this.cues.length; i < l; i++) {\n var cue = this.cues[i];\n\n if (cue.startTime <= ct && cue.endTime >= ct) {\n active.push(cue);\n } else if (cue.startTime === cue.endTime && cue.startTime <= ct && cue.startTime + 0.5 >= ct) {\n active.push(cue);\n }\n }\n\n changed = false;\n\n if (active.length !== this.activeCues_.length) {\n changed = true;\n } else {\n for (var i = 0; i < active.length; i++) {\n if (this.activeCues_.indexOf(active[i]) === -1) {\n changed = true;\n }\n }\n }\n\n this.activeCues_ = active;\n activeCues.setCues_(this.activeCues_);\n\n return activeCues;\n },\n set: function set() {}\n });\n\n if (options.src) {\n tt.src = options.src;\n loadTrack(options.src, tt);\n } else {\n tt.loaded_ = true;\n }\n\n if (browser.IS_IE8) {\n return tt;\n }\n }\n\n /**\n * cuechange - One or more cues in the track have become active or stopped being active.\n */\n\n /**\n * add a cue to the internal list of cues\n *\n * @param {Object} cue the cue to add to our internal list\n * @method addCue\n */\n\n TextTrack.prototype.addCue = function addCue(cue) {\n var tracks = this.tech_.textTracks();\n\n if (tracks) {\n for (var i = 0; i < tracks.length; i++) {\n if (tracks[i] !== this) {\n tracks[i].removeCue(cue);\n }\n }\n }\n\n this.cues_.push(cue);\n this.cues.setCues_(this.cues_);\n };\n\n /**\n * remvoe a cue from our internal list\n *\n * @param {Object} removeCue the cue to remove from our internal list\n * @method removeCue\n */\n\n TextTrack.prototype.removeCue = function removeCue(_removeCue) {\n var removed = false;\n\n for (var i = 0, l = this.cues_.length; i < l; i++) {\n var cue = this.cues_[i];\n\n if (cue === _removeCue) {\n this.cues_.splice(i, 1);\n removed = true;\n }\n }\n\n if (removed) {\n this.cues.setCues_(this.cues_);\n }\n };\n\n return TextTrack;\n})(_eventTarget2['default']);\n\nTextTrack.prototype.allowedEvents_ = {\n cuechange: 'cuechange'\n};\n\nexports['default'] = TextTrack;\nmodule.exports = exports['default'];\n\n},{\"../event-target\":101,\"../utils/browser.js\":131,\"../utils/fn.js\":136,\"../utils/guid.js\":138,\"../utils/log.js\":139,\"../utils/url.js\":144,\"./text-track-cue-list\":124,\"./text-track-enums\":126,\"global/document\":1,\"global/window\":2,\"xhr\":56}],131:[function(_dereq_,module,exports){\n/**\n * @file browser.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _globalDocument = _dereq_('global/document');\n\nvar _globalDocument2 = _interopRequireDefault(_globalDocument);\n\nvar _globalWindow = _dereq_('global/window');\n\nvar _globalWindow2 = _interopRequireDefault(_globalWindow);\n\nvar USER_AGENT = _globalWindow2['default'].navigator.userAgent;\nvar webkitVersionMap = /AppleWebKit\\/([\\d.]+)/i.exec(USER_AGENT);\nvar appleWebkitVersion = webkitVersionMap ? parseFloat(webkitVersionMap.pop()) : null;\n\n/*\n * Device is an iPhone\n *\n * @type {Boolean}\n * @constant\n * @private\n */\nvar IS_IPAD = /iPad/i.test(USER_AGENT);\n\nexports.IS_IPAD = IS_IPAD;\n// The Facebook app's UIWebView identifies as both an iPhone and iPad, so\n// to identify iPhones, we need to exclude iPads.\n// http://artsy.github.io/blog/2012/10/18/the-perils-of-ios-user-agent-sniffing/\nvar IS_IPHONE = /iPhone/i.test(USER_AGENT) && !IS_IPAD;\nexports.IS_IPHONE = IS_IPHONE;\nvar IS_IPOD = /iPod/i.test(USER_AGENT);\nexports.IS_IPOD = IS_IPOD;\nvar IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\n\nexports.IS_IOS = IS_IOS;\nvar IOS_VERSION = (function () {\n var match = USER_AGENT.match(/OS (\\d+)_/i);\n if (match && match[1]) {\n return match[1];\n }\n})();\n\nexports.IOS_VERSION = IOS_VERSION;\nvar IS_ANDROID = /Android/i.test(USER_AGENT);\nexports.IS_ANDROID = IS_ANDROID;\nvar ANDROID_VERSION = (function () {\n // This matches Android Major.Minor.Patch versions\n // ANDROID_VERSION is Major.Minor as a Number, if Minor isn't available, then only Major is returned\n var match = USER_AGENT.match(/Android (\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))*/i),\n major,\n minor;\n\n if (!match) {\n return null;\n }\n\n major = match[1] && parseFloat(match[1]);\n minor = match[2] && parseFloat(match[2]);\n\n if (major && minor) {\n return parseFloat(match[1] + '.' + match[2]);\n } else if (major) {\n return major;\n } else {\n return null;\n }\n})();\nexports.ANDROID_VERSION = ANDROID_VERSION;\n// Old Android is defined as Version older than 2.3, and requiring a webkit version of the android browser\nvar IS_OLD_ANDROID = IS_ANDROID && /webkit/i.test(USER_AGENT) && ANDROID_VERSION < 2.3;\nexports.IS_OLD_ANDROID = IS_OLD_ANDROID;\nvar IS_NATIVE_ANDROID = IS_ANDROID && ANDROID_VERSION < 5 && appleWebkitVersion < 537;\n\nexports.IS_NATIVE_ANDROID = IS_NATIVE_ANDROID;\nvar IS_FIREFOX = /Firefox/i.test(USER_AGENT);\nexports.IS_FIREFOX = IS_FIREFOX;\nvar IS_EDGE = /Edge/i.test(USER_AGENT);\nexports.IS_EDGE = IS_EDGE;\nvar IS_CHROME = !IS_EDGE && /Chrome/i.test(USER_AGENT);\nexports.IS_CHROME = IS_CHROME;\nvar IS_IE8 = /MSIE\\s8\\.0/.test(USER_AGENT);\n\nexports.IS_IE8 = IS_IE8;\nvar TOUCH_ENABLED = !!('ontouchstart' in _globalWindow2['default'] || _globalWindow2['default'].DocumentTouch && _globalDocument2['default'] instanceof _globalWindow2['default'].DocumentTouch);\nexports.TOUCH_ENABLED = TOUCH_ENABLED;\nvar BACKGROUND_SIZE_SUPPORTED = ('backgroundSize' in _globalDocument2['default'].createElement('video').style);\nexports.BACKGROUND_SIZE_SUPPORTED = BACKGROUND_SIZE_SUPPORTED;\n\n},{\"global/document\":1,\"global/window\":2}],132:[function(_dereq_,module,exports){\n/**\n * @file buffer.js\n */\n'use strict';\n\nexports.__esModule = true;\nexports.bufferedPercent = bufferedPercent;\n\nvar _timeRangesJs = _dereq_('./time-ranges.js');\n\n/**\n * Compute how much your video has been buffered\n *\n * @param {Object} Buffered object\n * @param {Number} Total duration\n * @return {Number} Percent buffered of the total duration\n * @private\n * @function bufferedPercent\n */\n\nfunction bufferedPercent(buffered, duration) {\n var bufferedDuration = 0,\n start,\n end;\n\n if (!duration) {\n return 0;\n }\n\n if (!buffered || !buffered.length) {\n buffered = _timeRangesJs.createTimeRange(0, 0);\n }\n\n for (var i = 0; i < buffered.length; i++) {\n start = buffered.start(i);\n end = buffered.end(i);\n\n // buffered end can be bigger than duration by a very small fraction\n if (end > duration) {\n end = duration;\n }\n\n bufferedDuration += end - start;\n }\n\n return bufferedDuration / duration;\n}\n\n},{\"./time-ranges.js\":142}],133:[function(_dereq_,module,exports){\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _logJs = _dereq_('./log.js');\n\nvar _logJs2 = _interopRequireDefault(_logJs);\n\n/**\n * Object containing the default behaviors for available handler methods.\n *\n * @private\n * @type {Object}\n */\nvar defaultBehaviors = {\n get: function get(obj, key) {\n return obj[key];\n },\n set: function set(obj, key, value) {\n obj[key] = value;\n return true;\n }\n};\n\n/**\n * Expose private objects publicly using a Proxy to log deprecation warnings.\n *\n * Browsers that do not support Proxy objects will simply return the `target`\n * object, so it can be directly exposed.\n *\n * @param {Object} target The target object.\n * @param {Object} messages Messages to display from a Proxy. Only operations\n * with an associated message will be proxied.\n * @param {String} [messages.get]\n * @param {String} [messages.set]\n * @return {Object} A Proxy if supported or the `target` argument.\n */\n\nexports['default'] = function (target) {\n var messages = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n if (typeof Proxy === 'function') {\n var _ret = (function () {\n var handler = {};\n\n // Build a handler object based on those keys that have both messages\n // and default behaviors.\n Object.keys(messages).forEach(function (key) {\n if (defaultBehaviors.hasOwnProperty(key)) {\n handler[key] = function () {\n _logJs2['default'].warn(messages[key]);\n return defaultBehaviors[key].apply(this, arguments);\n };\n }\n });\n\n return {\n v: new Proxy(target, handler)\n };\n })();\n\n if (typeof _ret === 'object') return _ret.v;\n }\n return target;\n};\n\nmodule.exports = exports['default'];\n\n},{\"./log.js\":139}],134:[function(_dereq_,module,exports){\n/**\n * @file dom.js\n */\n'use strict';\n\nexports.__esModule = true;\nexports.getEl = getEl;\nexports.createEl = createEl;\nexports.textContent = textContent;\nexports.insertElFirst = insertElFirst;\nexports.getElData = getElData;\nexports.hasElData = hasElData;\nexports.removeElData = removeElData;\nexports.hasElClass = hasElClass;\nexports.addElClass = addElClass;\nexports.removeElClass = removeElClass;\nexports.toggleElClass = toggleElClass;\nexports.setElAttributes = setElAttributes;\nexports.getElAttributes = getElAttributes;\nexports.blockTextSelection = blockTextSelection;\nexports.unblockTextSelection = unblockTextSelection;\nexports.findElPosition = findElPosition;\nexports.getPointerPosition = getPointerPosition;\nexports.isEl = isEl;\nexports.isTextNode = isTextNode;\nexports.emptyEl = emptyEl;\nexports.normalizeContent = normalizeContent;\nexports.appendContent = appendContent;\nexports.insertContent = insertContent;\n\nvar _templateObject = _taggedTemplateLiteralLoose(['Setting attributes in the second argument of createEl()\\n has been deprecated. Use the third argument instead.\\n createEl(type, properties, attributes). Attempting to set ', ' to ', '.'], ['Setting attributes in the second argument of createEl()\\n has been deprecated. Use the third argument instead.\\n createEl(type, properties, attributes). Attempting to set ', ' to ', '.']);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _taggedTemplateLiteralLoose(strings, raw) { strings.raw = raw; return strings; }\n\nvar _globalDocument = _dereq_('global/document');\n\nvar _globalDocument2 = _interopRequireDefault(_globalDocument);\n\nvar _globalWindow = _dereq_('global/window');\n\nvar _globalWindow2 = _interopRequireDefault(_globalWindow);\n\nvar _guidJs = _dereq_('./guid.js');\n\nvar Guid = _interopRequireWildcard(_guidJs);\n\nvar _logJs = _dereq_('./log.js');\n\nvar _logJs2 = _interopRequireDefault(_logJs);\n\nvar _tsml = _dereq_('tsml');\n\nvar _tsml2 = _interopRequireDefault(_tsml);\n\n/**\n * Detect if a value is a string with any non-whitespace characters.\n *\n * @param {String} str\n * @return {Boolean}\n */\nfunction isNonBlankString(str) {\n return typeof str === 'string' && /\\S/.test(str);\n}\n\n/**\n * Throws an error if the passed string has whitespace. This is used by\n * class methods to be relatively consistent with the classList API.\n *\n * @param {String} str\n * @return {Boolean}\n */\nfunction throwIfWhitespace(str) {\n if (/\\s/.test(str)) {\n throw new Error('class has illegal whitespace characters');\n }\n}\n\n/**\n * Produce a regular expression for matching a class name.\n *\n * @param {String} className\n * @return {RegExp}\n */\nfunction classRegExp(className) {\n return new RegExp('(^|\\\\s)' + className + '($|\\\\s)');\n}\n\n/**\n * Creates functions to query the DOM using a given method.\n *\n * @function createQuerier\n * @private\n * @param {String} method\n * @return {Function}\n */\nfunction createQuerier(method) {\n return function (selector, context) {\n if (!isNonBlankString(selector)) {\n return _globalDocument2['default'][method](null);\n }\n if (isNonBlankString(context)) {\n context = _globalDocument2['default'].querySelector(context);\n }\n return (isEl(context) ? context : _globalDocument2['default'])[method](selector);\n };\n}\n\n/**\n * Shorthand for document.getElementById()\n * Also allows for CSS (jQuery) ID syntax. But nothing other than IDs.\n *\n * @param {String} id Element ID\n * @return {Element} Element with supplied ID\n * @function getEl\n */\n\nfunction getEl(id) {\n if (id.indexOf('#') === 0) {\n id = id.slice(1);\n }\n\n return _globalDocument2['default'].getElementById(id);\n}\n\n/**\n * Creates an element and applies properties.\n *\n * @param {String} [tagName='div'] Name of tag to be created.\n * @param {Object} [properties={}] Element properties to be applied.\n * @param {Object} [attributes={}] Element attributes to be applied.\n * @return {Element}\n * @function createEl\n */\n\nfunction createEl() {\n var tagName = arguments.length <= 0 || arguments[0] === undefined ? 'div' : arguments[0];\n var properties = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n var attributes = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];\n\n var el = _globalDocument2['default'].createElement(tagName);\n\n Object.getOwnPropertyNames(properties).forEach(function (propName) {\n var val = properties[propName];\n\n // See #2176\n // We originally were accepting both properties and attributes in the\n // same object, but that doesn't work so well.\n if (propName.indexOf('aria-') !== -1 || propName === 'role' || propName === 'type') {\n _logJs2['default'].warn(_tsml2['default'](_templateObject, propName, val));\n el.setAttribute(propName, val);\n } else {\n el[propName] = val;\n }\n });\n\n Object.getOwnPropertyNames(attributes).forEach(function (attrName) {\n var val = attributes[attrName];\n el.setAttribute(attrName, attributes[attrName]);\n });\n\n return el;\n}\n\n/**\n * Injects text into an element, replacing any existing contents entirely.\n *\n * @param {Element} el\n * @param {String} text\n * @return {Element}\n * @function textContent\n */\n\nfunction textContent(el, text) {\n if (typeof el.textContent === 'undefined') {\n el.innerText = text;\n } else {\n el.textContent = text;\n }\n}\n\n/**\n * Insert an element as the first child node of another\n *\n * @param {Element} child Element to insert\n * @param {Element} parent Element to insert child into\n * @private\n * @function insertElFirst\n */\n\nfunction insertElFirst(child, parent) {\n if (parent.firstChild) {\n parent.insertBefore(child, parent.firstChild);\n } else {\n parent.appendChild(child);\n }\n}\n\n/**\n * Element Data Store. Allows for binding data to an element without putting it directly on the element.\n * Ex. Event listeners are stored here.\n * (also from jsninja.com, slightly modified and updated for closure compiler)\n *\n * @type {Object}\n * @private\n */\nvar elData = {};\n\n/*\n * Unique attribute name to store an element's guid in\n *\n * @type {String}\n * @constant\n * @private\n */\nvar elIdAttr = 'vdata' + new Date().getTime();\n\n/**\n * Returns the cache object where data for an element is stored\n *\n * @param {Element} el Element to store data for.\n * @return {Object}\n * @function getElData\n */\n\nfunction getElData(el) {\n var id = el[elIdAttr];\n\n if (!id) {\n id = el[elIdAttr] = Guid.newGUID();\n }\n\n if (!elData[id]) {\n elData[id] = {};\n }\n\n return elData[id];\n}\n\n/**\n * Returns whether or not an element has cached data\n *\n * @param {Element} el A dom element\n * @return {Boolean}\n * @private\n * @function hasElData\n */\n\nfunction hasElData(el) {\n var id = el[elIdAttr];\n\n if (!id) {\n return false;\n }\n\n return !!Object.getOwnPropertyNames(elData[id]).length;\n}\n\n/**\n * Delete data for the element from the cache and the guid attr from getElementById\n *\n * @param {Element} el Remove data for an element\n * @private\n * @function removeElData\n */\n\nfunction removeElData(el) {\n var id = el[elIdAttr];\n\n if (!id) {\n return;\n }\n\n // Remove all stored data\n delete elData[id];\n\n // Remove the elIdAttr property from the DOM node\n try {\n delete el[elIdAttr];\n } catch (e) {\n if (el.removeAttribute) {\n el.removeAttribute(elIdAttr);\n } else {\n // IE doesn't appear to support removeAttribute on the document element\n el[elIdAttr] = null;\n }\n }\n}\n\n/**\n * Check if an element has a CSS class\n *\n * @function hasElClass\n * @param {Element} element Element to check\n * @param {String} classToCheck Classname to check\n */\n\nfunction hasElClass(element, classToCheck) {\n if (element.classList) {\n return element.classList.contains(classToCheck);\n } else {\n throwIfWhitespace(classToCheck);\n return classRegExp(classToCheck).test(element.className);\n }\n}\n\n/**\n * Add a CSS class name to an element\n *\n * @function addElClass\n * @param {Element} element Element to add class name to\n * @param {String} classToAdd Classname to add\n */\n\nfunction addElClass(element, classToAdd) {\n if (element.classList) {\n element.classList.add(classToAdd);\n\n // Don't need to `throwIfWhitespace` here because `hasElClass` will do it\n // in the case of classList not being supported.\n } else if (!hasElClass(element, classToAdd)) {\n element.className = (element.className + ' ' + classToAdd).trim();\n }\n\n return element;\n}\n\n/**\n * Remove a CSS class name from an element\n *\n * @function removeElClass\n * @param {Element} element Element to remove from class name\n * @param {String} classToRemove Classname to remove\n */\n\nfunction removeElClass(element, classToRemove) {\n if (element.classList) {\n element.classList.remove(classToRemove);\n } else {\n throwIfWhitespace(classToRemove);\n element.className = element.className.split(/\\s+/).filter(function (c) {\n return c !== classToRemove;\n }).join(' ');\n }\n\n return element;\n}\n\n/**\n * Adds or removes a CSS class name on an element depending on an optional\n * condition or the presence/absence of the class name.\n *\n * @function toggleElClass\n * @param {Element} element\n * @param {String} classToToggle\n * @param {Boolean|Function} [predicate]\n * Can be a function that returns a Boolean. If `true`, the class\n * will be added; if `false`, the class will be removed. If not\n * given, the class will be added if not present and vice versa.\n */\n\nfunction toggleElClass(element, classToToggle, predicate) {\n\n // This CANNOT use `classList` internally because IE does not support the\n // second parameter to the `classList.toggle()` method! Which is fine because\n // `classList` will be used by the add/remove functions.\n var has = hasElClass(element, classToToggle);\n\n if (typeof predicate === 'function') {\n predicate = predicate(element, classToToggle);\n }\n\n if (typeof predicate !== 'boolean') {\n predicate = !has;\n }\n\n // If the necessary class operation matches the current state of the\n // element, no action is required.\n if (predicate === has) {\n return;\n }\n\n if (predicate) {\n addElClass(element, classToToggle);\n } else {\n removeElClass(element, classToToggle);\n }\n\n return element;\n}\n\n/**\n * Apply attributes to an HTML element.\n *\n * @param {Element} el Target element.\n * @param {Object=} attributes Element attributes to be applied.\n * @private\n * @function setElAttributes\n */\n\nfunction setElAttributes(el, attributes) {\n Object.getOwnPropertyNames(attributes).forEach(function (attrName) {\n var attrValue = attributes[attrName];\n\n if (attrValue === null || typeof attrValue === 'undefined' || attrValue === false) {\n el.removeAttribute(attrName);\n } else {\n el.setAttribute(attrName, attrValue === true ? '' : attrValue);\n }\n });\n}\n\n/**\n * Get an element's attribute values, as defined on the HTML tag\n * Attributes are not the same as properties. They're defined on the tag\n * or with setAttribute (which shouldn't be used with HTML)\n * This will return true or false for boolean attributes.\n *\n * @param {Element} tag Element from which to get tag attributes\n * @return {Object}\n * @private\n * @function getElAttributes\n */\n\nfunction getElAttributes(tag) {\n var obj, knownBooleans, attrs, attrName, attrVal;\n\n obj = {};\n\n // known boolean attributes\n // we can check for matching boolean properties, but older browsers\n // won't know about HTML5 boolean attributes that we still read from\n knownBooleans = ',' + 'autoplay,controls,loop,muted,default' + ',';\n\n if (tag && tag.attributes && tag.attributes.length > 0) {\n attrs = tag.attributes;\n\n for (var i = attrs.length - 1; i >= 0; i--) {\n attrName = attrs[i].name;\n attrVal = attrs[i].value;\n\n // check for known booleans\n // the matching element property will return a value for typeof\n if (typeof tag[attrName] === 'boolean' || knownBooleans.indexOf(',' + attrName + ',') !== -1) {\n // the value of an included boolean attribute is typically an empty\n // string ('') which would equal false if we just check for a false value.\n // we also don't want support bad code like autoplay='false'\n attrVal = attrVal !== null ? true : false;\n }\n\n obj[attrName] = attrVal;\n }\n }\n\n return obj;\n}\n\n/**\n * Attempt to block the ability to select text while dragging controls\n *\n * @return {Boolean}\n * @function blockTextSelection\n */\n\nfunction blockTextSelection() {\n _globalDocument2['default'].body.focus();\n _globalDocument2['default'].onselectstart = function () {\n return false;\n };\n}\n\n/**\n * Turn off text selection blocking\n *\n * @return {Boolean}\n * @function unblockTextSelection\n */\n\nfunction unblockTextSelection() {\n _globalDocument2['default'].onselectstart = function () {\n return true;\n };\n}\n\n/**\n * Offset Left\n * getBoundingClientRect technique from\n * John Resig http://ejohn.org/blog/getboundingclientrect-is-awesome/\n *\n * @function findElPosition\n * @param {Element} el Element from which to get offset\n * @return {Object}\n */\n\nfunction findElPosition(el) {\n var box = undefined;\n\n if (el.getBoundingClientRect && el.parentNode) {\n box = el.getBoundingClientRect();\n }\n\n if (!box) {\n return {\n left: 0,\n top: 0\n };\n }\n\n var docEl = _globalDocument2['default'].documentElement;\n var body = _globalDocument2['default'].body;\n\n var clientLeft = docEl.clientLeft || body.clientLeft || 0;\n var scrollLeft = _globalWindow2['default'].pageXOffset || body.scrollLeft;\n var left = box.left + scrollLeft - clientLeft;\n\n var clientTop = docEl.clientTop || body.clientTop || 0;\n var scrollTop = _globalWindow2['default'].pageYOffset || body.scrollTop;\n var top = box.top + scrollTop - clientTop;\n\n // Android sometimes returns slightly off decimal values, so need to round\n return {\n left: Math.round(left),\n top: Math.round(top)\n };\n}\n\n/**\n * Get pointer position in element\n * Returns an object with x and y coordinates.\n * The base on the coordinates are the bottom left of the element.\n *\n * @function getPointerPosition\n * @param {Element} el Element on which to get the pointer position on\n * @param {Event} event Event object\n * @return {Object} This object will have x and y coordinates corresponding to the mouse position\n */\n\nfunction getPointerPosition(el, event) {\n var position = {};\n var box = findElPosition(el);\n var boxW = el.offsetWidth;\n var boxH = el.offsetHeight;\n\n var boxY = box.top;\n var boxX = box.left;\n var pageY = event.pageY;\n var pageX = event.pageX;\n\n if (event.changedTouches) {\n pageX = event.changedTouches[0].pageX;\n pageY = event.changedTouches[0].pageY;\n }\n\n position.y = Math.max(0, Math.min(1, (boxY - pageY + boxH) / boxH));\n position.x = Math.max(0, Math.min(1, (pageX - boxX) / boxW));\n\n return position;\n}\n\n/**\n * Determines, via duck typing, whether or not a value is a DOM element.\n *\n * @function isEl\n * @param {Mixed} value\n * @return {Boolean}\n */\n\nfunction isEl(value) {\n return !!value && typeof value === 'object' && value.nodeType === 1;\n}\n\n/**\n * Determines, via duck typing, whether or not a value is a text node.\n *\n * @param {Mixed} value\n * @return {Boolean}\n */\n\nfunction isTextNode(value) {\n return !!value && typeof value === 'object' && value.nodeType === 3;\n}\n\n/**\n * Empties the contents of an element.\n *\n * @function emptyEl\n * @param {Element} el\n * @return {Element}\n */\n\nfunction emptyEl(el) {\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n return el;\n}\n\n/**\n * Normalizes content for eventual insertion into the DOM.\n *\n * This allows a wide range of content definition methods, but protects\n * from falling into the trap of simply writing to `innerHTML`, which is\n * an XSS concern.\n *\n * The content for an element can be passed in multiple types and\n * combinations, whose behavior is as follows:\n *\n * - String\n * Normalized into a text node.\n *\n * - Element, TextNode\n * Passed through.\n *\n * - Array\n * A one-dimensional array of strings, elements, nodes, or functions (which\n * return single strings, elements, or nodes).\n *\n * - Function\n * If the sole argument, is expected to produce a string, element,\n * node, or array.\n *\n * @function normalizeContent\n * @param {String|Element|TextNode|Array|Function} content\n * @return {Array}\n */\n\nfunction normalizeContent(content) {\n\n // First, invoke content if it is a function. If it produces an array,\n // that needs to happen before normalization.\n if (typeof content === 'function') {\n content = content();\n }\n\n // Next up, normalize to an array, so one or many items can be normalized,\n // filtered, and returned.\n return (Array.isArray(content) ? content : [content]).map(function (value) {\n\n // First, invoke value if it is a function to produce a new value,\n // which will be subsequently normalized to a Node of some kind.\n if (typeof value === 'function') {\n value = value();\n }\n\n if (isEl(value) || isTextNode(value)) {\n return value;\n }\n\n if (typeof value === 'string' && /\\S/.test(value)) {\n return _globalDocument2['default'].createTextNode(value);\n }\n }).filter(function (value) {\n return value;\n });\n}\n\n/**\n * Normalizes and appends content to an element.\n *\n * @function appendContent\n * @param {Element} el\n * @param {String|Element|TextNode|Array|Function} content\n * See: `normalizeContent`\n * @return {Element}\n */\n\nfunction appendContent(el, content) {\n normalizeContent(content).forEach(function (node) {\n return el.appendChild(node);\n });\n return el;\n}\n\n/**\n * Normalizes and inserts content into an element; this is identical to\n * `appendContent()`, except it empties the element first.\n *\n * @function insertContent\n * @param {Element} el\n * @param {String|Element|TextNode|Array|Function} content\n * See: `normalizeContent`\n * @return {Element}\n */\n\nfunction insertContent(el, content) {\n return appendContent(emptyEl(el), content);\n}\n\n/**\n * Finds a single DOM element matching `selector` within the optional\n * `context` of another DOM element (defaulting to `document`).\n *\n * @function $\n * @param {String} selector\n * A valid CSS selector, which will be passed to `querySelector`.\n *\n * @param {Element|String} [context=document]\n * A DOM element within which to query. Can also be a selector\n * string in which case the first matching element will be used\n * as context. If missing (or no element matches selector), falls\n * back to `document`.\n *\n * @return {Element|null}\n */\nvar $ = createQuerier('querySelector');\n\nexports.$ = $;\n/**\n * Finds a all DOM elements matching `selector` within the optional\n * `context` of another DOM element (defaulting to `document`).\n *\n * @function $$\n * @param {String} selector\n * A valid CSS selector, which will be passed to `querySelectorAll`.\n *\n * @param {Element|String} [context=document]\n * A DOM element within which to query. Can also be a selector\n * string in which case the first matching element will be used\n * as context. If missing (or no element matches selector), falls\n * back to `document`.\n *\n * @return {NodeList}\n */\nvar $$ = createQuerier('querySelectorAll');\nexports.$$ = $$;\n\n},{\"./guid.js\":138,\"./log.js\":139,\"global/document\":1,\"global/window\":2,\"tsml\":55}],135:[function(_dereq_,module,exports){\n/**\n * @file events.js\n *\n * Event System (John Resig - Secrets of a JS Ninja http://jsninja.com/)\n * (Original book version wasn't completely usable, so fixed some things and made Closure Compiler compatible)\n * This should work very similarly to jQuery's events, however it's based off the book version which isn't as\n * robust as jquery's, so there's probably some differences.\n */\n\n'use strict';\n\nexports.__esModule = true;\nexports.on = on;\nexports.off = off;\nexports.trigger = trigger;\nexports.one = one;\nexports.fixEvent = fixEvent;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _domJs = _dereq_('./dom.js');\n\nvar Dom = _interopRequireWildcard(_domJs);\n\nvar _guidJs = _dereq_('./guid.js');\n\nvar Guid = _interopRequireWildcard(_guidJs);\n\nvar _globalWindow = _dereq_('global/window');\n\nvar _globalWindow2 = _interopRequireDefault(_globalWindow);\n\nvar _globalDocument = _dereq_('global/document');\n\nvar _globalDocument2 = _interopRequireDefault(_globalDocument);\n\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String|Array} type Type of event to bind to.\n * @param {Function} fn Event listener.\n * @method on\n */\n\nfunction on(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(on, elem, type, fn);\n }\n\n var data = Dom.getElData(elem);\n\n // We need a place to store all our handler data\n if (!data.handlers) data.handlers = {};\n\n if (!data.handlers[type]) data.handlers[type] = [];\n\n if (!fn.guid) fn.guid = Guid.newGUID();\n\n data.handlers[type].push(fn);\n\n if (!data.dispatcher) {\n data.disabled = false;\n\n data.dispatcher = function (event, hash) {\n\n if (data.disabled) return;\n event = fixEvent(event);\n\n var handlers = data.handlers[event.type];\n\n if (handlers) {\n // Copy handlers so if handlers are added/removed during the process it doesn't throw everything off.\n var handlersCopy = handlers.slice(0);\n\n for (var m = 0, n = handlersCopy.length; m < n; m++) {\n if (event.isImmediatePropagationStopped()) {\n break;\n } else {\n handlersCopy[m].call(elem, event, hash);\n }\n }\n }\n };\n }\n\n if (data.handlers[type].length === 1) {\n if (elem.addEventListener) {\n elem.addEventListener(type, data.dispatcher, false);\n } else if (elem.attachEvent) {\n elem.attachEvent('on' + type, data.dispatcher);\n }\n }\n}\n\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem Object to remove listeners from\n * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element.\n * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type.\n * @method off\n */\n\nfunction off(elem, type, fn) {\n // Don't want to add a cache object through getElData if not needed\n if (!Dom.hasElData(elem)) return;\n\n var data = Dom.getElData(elem);\n\n // If no events exist, nothing to unbind\n if (!data.handlers) {\n return;\n }\n\n if (Array.isArray(type)) {\n return _handleMultipleEvents(off, elem, type, fn);\n }\n\n // Utility function\n var removeType = function removeType(t) {\n data.handlers[t] = [];\n _cleanUpEvents(elem, t);\n };\n\n // Are we removing all bound events?\n if (!type) {\n for (var t in data.handlers) {\n removeType(t);\n }return;\n }\n\n var handlers = data.handlers[type];\n\n // If no handlers exist, nothing to unbind\n if (!handlers) return;\n\n // If no listener was provided, remove all listeners for type\n if (!fn) {\n removeType(type);\n return;\n }\n\n // We're only removing a single handler\n if (fn.guid) {\n for (var n = 0; n < handlers.length; n++) {\n if (handlers[n].guid === fn.guid) {\n handlers.splice(n--, 1);\n }\n }\n }\n\n _cleanUpEvents(elem, type);\n}\n\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem Element to trigger an event on\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Boolean=} Returned only if default was prevented\n * @method trigger\n */\n\nfunction trigger(elem, event, hash) {\n // Fetches element data and a reference to the parent (for bubbling).\n // Don't want to add a data object to cache for every parent,\n // so checking hasElData first.\n var elemData = Dom.hasElData(elem) ? Dom.getElData(elem) : {};\n var parent = elem.parentNode || elem.ownerDocument;\n // type = event.type || event,\n // handler;\n\n // If an event name was passed as a string, creates an event out of it\n if (typeof event === 'string') {\n event = { type: event, target: elem };\n }\n // Normalizes the event properties.\n event = fixEvent(event);\n\n // If the passed element has a dispatcher, executes the established handlers.\n if (elemData.dispatcher) {\n elemData.dispatcher.call(elem, event, hash);\n }\n\n // Unless explicitly stopped or the event does not bubble (e.g. media events)\n // recursively calls this function to bubble the event up the DOM.\n if (parent && !event.isPropagationStopped() && event.bubbles === true) {\n trigger.call(null, parent, event, hash);\n\n // If at the top of the DOM, triggers the default action unless disabled.\n } else if (!parent && !event.defaultPrevented) {\n var targetData = Dom.getElData(event.target);\n\n // Checks if the target has a default action for this event.\n if (event.target[event.type]) {\n // Temporarily disables event dispatching on the target as we have already executed the handler.\n targetData.disabled = true;\n // Executes the default action.\n if (typeof event.target[event.type] === 'function') {\n event.target[event.type]();\n }\n // Re-enables event dispatching.\n targetData.disabled = false;\n }\n }\n\n // Inform the triggerer if the default was prevented by returning false\n return !event.defaultPrevented;\n}\n\n/**\n * Trigger a listener only once for an event\n *\n * @param {Element|Object} elem Element or object to\n * @param {String|Array} type Name/type of event\n * @param {Function} fn Event handler function\n * @method one\n */\n\nfunction one(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(one, elem, type, fn);\n }\n var func = function func() {\n off(elem, type, func);\n fn.apply(this, arguments);\n };\n // copy the guid to the new function so it can removed using the original function's ID\n func.guid = fn.guid = fn.guid || Guid.newGUID();\n on(elem, type, func);\n}\n\n/**\n * Fix a native event to have standard property values\n *\n * @param {Object} event Event object to fix\n * @return {Object}\n * @private\n * @method fixEvent\n */\n\nfunction fixEvent(event) {\n\n function returnTrue() {\n return true;\n }\n function returnFalse() {\n return false;\n }\n\n // Test if fixing up is needed\n // Used to check if !event.stopPropagation instead of isPropagationStopped\n // But native events return true for stopPropagation, but don't have\n // other expected methods like isPropagationStopped. Seems to be a problem\n // with the Javascript Ninja code. So we're just overriding all events now.\n if (!event || !event.isPropagationStopped) {\n var old = event || _globalWindow2['default'].event;\n\n event = {};\n // Clone the old object so that we can modify the values event = {};\n // IE8 Doesn't like when you mess with native event properties\n // Firefox returns false for event.hasOwnProperty('type') and other props\n // which makes copying more difficult.\n // TODO: Probably best to create a whitelist of event props\n for (var key in old) {\n // Safari 6.0.3 warns you if you try to copy deprecated layerX/Y\n // Chrome warns you if you try to copy deprecated keyboardEvent.keyLocation\n // and webkitMovementX/Y\n if (key !== 'layerX' && key !== 'layerY' && key !== 'keyLocation' && key !== 'webkitMovementX' && key !== 'webkitMovementY') {\n // Chrome 32+ warns if you try to copy deprecated returnValue, but\n // we still want to if preventDefault isn't supported (IE8).\n if (!(key === 'returnValue' && old.preventDefault)) {\n event[key] = old[key];\n }\n }\n }\n\n // The event occurred on this element\n if (!event.target) {\n event.target = event.srcElement || _globalDocument2['default'];\n }\n\n // Handle which other element the event is related to\n if (!event.relatedTarget) {\n event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n }\n\n // Stop the default browser action\n event.preventDefault = function () {\n if (old.preventDefault) {\n old.preventDefault();\n }\n event.returnValue = false;\n old.returnValue = false;\n event.defaultPrevented = true;\n };\n\n event.defaultPrevented = false;\n\n // Stop the event from bubbling\n event.stopPropagation = function () {\n if (old.stopPropagation) {\n old.stopPropagation();\n }\n event.cancelBubble = true;\n old.cancelBubble = true;\n event.isPropagationStopped = returnTrue;\n };\n\n event.isPropagationStopped = returnFalse;\n\n // Stop the event from bubbling and executing other handlers\n event.stopImmediatePropagation = function () {\n if (old.stopImmediatePropagation) {\n old.stopImmediatePropagation();\n }\n event.isImmediatePropagationStopped = returnTrue;\n event.stopPropagation();\n };\n\n event.isImmediatePropagationStopped = returnFalse;\n\n // Handle mouse position\n if (event.clientX != null) {\n var doc = _globalDocument2['default'].documentElement,\n body = _globalDocument2['default'].body;\n\n event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);\n }\n\n // Handle key presses\n event.which = event.charCode || event.keyCode;\n\n // Fix button for mouse clicks:\n // 0 == left; 1 == middle; 2 == right\n if (event.button != null) {\n event.button = event.button & 1 ? 0 : event.button & 4 ? 1 : event.button & 2 ? 2 : 0;\n }\n }\n\n // Returns fixed-up instance\n return event;\n}\n\n/**\n * Clean up the listener cache and dispatchers\n*\n * @param {Element|Object} elem Element to clean up\n * @param {String} type Type of event to clean up\n * @private\n * @method _cleanUpEvents\n */\nfunction _cleanUpEvents(elem, type) {\n var data = Dom.getElData(elem);\n\n // Remove the events of a particular type if there are none left\n if (data.handlers[type].length === 0) {\n delete data.handlers[type];\n // data.handlers[type] = null;\n // Setting to null was causing an error with data.handlers\n\n // Remove the meta-handler from the element\n if (elem.removeEventListener) {\n elem.removeEventListener(type, data.dispatcher, false);\n } else if (elem.detachEvent) {\n elem.detachEvent('on' + type, data.dispatcher);\n }\n }\n\n // Remove the events object if there are no types left\n if (Object.getOwnPropertyNames(data.handlers).length <= 0) {\n delete data.handlers;\n delete data.dispatcher;\n delete data.disabled;\n }\n\n // Finally remove the element data if there is no data left\n if (Object.getOwnPropertyNames(data).length === 0) {\n Dom.removeElData(elem);\n }\n}\n\n/**\n * Loops through an array of event types and calls the requested method for each type.\n *\n * @param {Function} fn The event method we want to use.\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String} type Type of event to bind to.\n * @param {Function} callback Event listener.\n * @private\n * @function _handleMultipleEvents\n */\nfunction _handleMultipleEvents(fn, elem, types, callback) {\n types.forEach(function (type) {\n //Call the event method for each one of the types\n fn(elem, type, callback);\n });\n}\n\n},{\"./dom.js\":134,\"./guid.js\":138,\"global/document\":1,\"global/window\":2}],136:[function(_dereq_,module,exports){\n/**\n * @file fn.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nvar _guidJs = _dereq_('./guid.js');\n\n/**\n * Bind (a.k.a proxy or Context). A simple method for changing the context of a function\n * It also stores a unique id on the function so it can be easily removed from events\n *\n * @param {*} context The object to bind as scope\n * @param {Function} fn The function to be bound to a scope\n * @param {Number=} uid An optional unique ID for the function to be set\n * @return {Function}\n * @private\n * @method bind\n */\nvar bind = function bind(context, fn, uid) {\n // Make sure the function has a unique ID\n if (!fn.guid) {\n fn.guid = _guidJs.newGUID();\n }\n\n // Create the new function that changes the context\n var ret = function ret() {\n return fn.apply(context, arguments);\n };\n\n // Allow for the ability to individualize this function\n // Needed in the case where multiple objects might share the same prototype\n // IF both items add an event listener with the same function, then you try to remove just one\n // it will remove both because they both have the same guid.\n // when using this, you need to use the bind method when you remove the listener as well.\n // currently used in text tracks\n ret.guid = uid ? uid + '_' + fn.guid : fn.guid;\n\n return ret;\n};\nexports.bind = bind;\n\n},{\"./guid.js\":138}],137:[function(_dereq_,module,exports){\n/**\n * @file format-time.js\n *\n * Format seconds as a time string, H:MM:SS or M:SS\n * Supplying a guide (in seconds) will force a number of leading zeros\n * to cover the length of the guide\n *\n * @param {Number} seconds Number of seconds to be turned into a string\n * @param {Number} guide Number (in seconds) to model the string after\n * @return {String} Time formatted as H:MM:SS or M:SS\n * @private\n * @function formatTime\n */\n'use strict';\n\nexports.__esModule = true;\nfunction formatTime(seconds) {\n var guide = arguments.length <= 1 || arguments[1] === undefined ? seconds : arguments[1];\n return (function () {\n seconds = seconds < 0 ? 0 : seconds;\n var s = Math.floor(seconds % 60);\n var m = Math.floor(seconds / 60 % 60);\n var h = Math.floor(seconds / 3600);\n var gm = Math.floor(guide / 60 % 60);\n var gh = Math.floor(guide / 3600);\n\n // handle invalid times\n if (isNaN(seconds) || seconds === Infinity) {\n // '-' is false for all relational operators (e.g. <, >=) so this setting\n // will add the minimum number of fields specified by the guide\n h = m = s = '-';\n }\n\n // Check if we need to show hours\n h = h > 0 || gh > 0 ? h + ':' : '';\n\n // If hours are showing, we may need to add a leading zero.\n // Always show at least one digit of minutes.\n m = ((h || gm >= 10) && m < 10 ? '0' + m : m) + ':';\n\n // Check if leading zero is need for seconds\n s = s < 10 ? '0' + s : s;\n\n return h + m + s;\n })();\n}\n\nexports['default'] = formatTime;\nmodule.exports = exports['default'];\n\n},{}],138:[function(_dereq_,module,exports){\n/**\n * @file guid.js\n *\n * Unique ID for an element or function\n * @type {Number}\n * @private\n */\n\"use strict\";\n\nexports.__esModule = true;\nexports.newGUID = newGUID;\nvar _guid = 1;\n\n/**\n * Get the next unique ID\n *\n * @return {String} \n * @function newGUID\n */\n\nfunction newGUID() {\n return _guid++;\n}\n\n},{}],139:[function(_dereq_,module,exports){\n/**\n * @file log.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _globalWindow = _dereq_('global/window');\n\nvar _globalWindow2 = _interopRequireDefault(_globalWindow);\n\n/**\n * Log plain debug messages\n */\nvar log = function log() {\n _logType(null, arguments);\n};\n\n/**\n * Keep a history of log messages\n * @type {Array}\n */\nlog.history = [];\n\n/**\n * Log error messages\n */\nlog.error = function () {\n _logType('error', arguments);\n};\n\n/**\n * Log warning messages\n */\nlog.warn = function () {\n _logType('warn', arguments);\n};\n\n/**\n * Log messages to the console and history based on the type of message\n *\n * @param {String} type The type of message, or `null` for `log`\n * @param {Object} args The args to be passed to the log\n * @private\n * @method _logType\n */\nfunction _logType(type, args) {\n // convert args to an array to get array functions\n var argsArray = Array.prototype.slice.call(args);\n // if there's no console then don't try to output messages\n // they will still be stored in log.history\n // Was setting these once outside of this function, but containing them\n // in the function makes it easier to test cases where console doesn't exist\n var noop = function noop() {};\n\n var console = _globalWindow2['default']['console'] || {\n 'log': noop,\n 'warn': noop,\n 'error': noop\n };\n\n if (type) {\n // add the type to the front of the message\n argsArray.unshift(type.toUpperCase() + ':');\n } else {\n // default to log with no prefix\n type = 'log';\n }\n\n // add to history\n log.history.push(argsArray);\n\n // add console prefix after adding to history\n argsArray.unshift('VIDEOJS:');\n\n // call appropriate log function\n if (console[type].apply) {\n console[type].apply(console, argsArray);\n } else {\n // ie8 doesn't allow error.apply, but it will just join() the array anyway\n console[type](argsArray.join(' '));\n }\n}\n\nexports['default'] = log;\nmodule.exports = exports['default'];\n\n},{\"global/window\":2}],140:[function(_dereq_,module,exports){\n/**\n * @file merge-options.js\n */\n'use strict';\n\nexports.__esModule = true;\nexports['default'] = mergeOptions;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _lodashCompatObjectMerge = _dereq_('lodash-compat/object/merge');\n\nvar _lodashCompatObjectMerge2 = _interopRequireDefault(_lodashCompatObjectMerge);\n\nfunction isPlain(obj) {\n return !!obj && typeof obj === 'object' && obj.toString() === '[object Object]' && obj.constructor === Object;\n}\n\n/**\n * Merge customizer. video.js simply overwrites non-simple objects\n * (like arrays) instead of attempting to overlay them.\n * @see https://lodash.com/docs#merge\n */\nvar customizer = function customizer(destination, source) {\n // If we're not working with a plain object, copy the value as is\n // If source is an array, for instance, it will replace destination\n if (!isPlain(source)) {\n return source;\n }\n\n // If the new value is a plain object but the first object value is not\n // we need to create a new object for the first object to merge with.\n // This makes it consistent with how merge() works by default\n // and also protects from later changes the to first object affecting\n // the second object's values.\n if (!isPlain(destination)) {\n return mergeOptions(source);\n }\n};\n\n/**\n * Merge one or more options objects, recursively merging **only**\n * plain object properties. Previously `deepMerge`.\n *\n * @param {...Object} source One or more objects to merge\n * @returns {Object} a new object that is the union of all\n * provided objects\n * @function mergeOptions\n */\n\nfunction mergeOptions() {\n // contruct the call dynamically to handle the variable number of\n // objects to merge\n var args = Array.prototype.slice.call(arguments);\n\n // unshift an empty object into the front of the call as the target\n // of the merge\n args.unshift({});\n\n // customize conflict resolution to match our historical merge behavior\n args.push(customizer);\n\n _lodashCompatObjectMerge2['default'].apply(null, args);\n\n // return the mutated result object\n return args[0];\n}\n\nmodule.exports = exports['default'];\n\n},{\"lodash-compat/object/merge\":40}],141:[function(_dereq_,module,exports){\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _globalDocument = _dereq_('global/document');\n\nvar _globalDocument2 = _interopRequireDefault(_globalDocument);\n\nvar createStyleElement = function createStyleElement(className) {\n var style = _globalDocument2['default'].createElement('style');\n style.className = className;\n\n return style;\n};\n\nexports.createStyleElement = createStyleElement;\nvar setTextContent = function setTextContent(el, content) {\n if (el.styleSheet) {\n el.styleSheet.cssText = content;\n } else {\n el.textContent = content;\n }\n};\nexports.setTextContent = setTextContent;\n\n},{\"global/document\":1}],142:[function(_dereq_,module,exports){\n'use strict';\n\nexports.__esModule = true;\nexports.createTimeRanges = createTimeRanges;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _logJs = _dereq_('./log.js');\n\nvar _logJs2 = _interopRequireDefault(_logJs);\n\n/**\n * @file time-ranges.js\n *\n * Should create a fake TimeRange object\n * Mimics an HTML5 time range instance, which has functions that\n * return the start and end times for a range\n * TimeRanges are returned by the buffered() method\n *\n * @param {(Number|Array)} Start of a single range or an array of ranges\n * @param {Number} End of a single range\n * @private\n * @method createTimeRanges\n */\n\nfunction createTimeRanges(start, end) {\n if (Array.isArray(start)) {\n return createTimeRangesObj(start);\n } else if (start === undefined || end === undefined) {\n return createTimeRangesObj();\n }\n return createTimeRangesObj([[start, end]]);\n}\n\nexports.createTimeRange = createTimeRanges;\n\nfunction createTimeRangesObj(ranges) {\n if (ranges === undefined || ranges.length === 0) {\n return {\n length: 0,\n start: function start() {\n throw new Error('This TimeRanges object is empty');\n },\n end: function end() {\n throw new Error('This TimeRanges object is empty');\n }\n };\n }\n return {\n length: ranges.length,\n start: getRange.bind(null, 'start', 0, ranges),\n end: getRange.bind(null, 'end', 1, ranges)\n };\n}\n\nfunction getRange(fnName, valueIndex, ranges, rangeIndex) {\n if (rangeIndex === undefined) {\n _logJs2['default'].warn('DEPRECATED: Function \\'' + fnName + '\\' on \\'TimeRanges\\' called without an index argument.');\n rangeIndex = 0;\n }\n rangeCheck(fnName, rangeIndex, ranges.length - 1);\n return ranges[rangeIndex][valueIndex];\n}\n\nfunction rangeCheck(fnName, index, maxIndex) {\n if (index < 0 || index > maxIndex) {\n throw new Error('Failed to execute \\'' + fnName + '\\' on \\'TimeRanges\\': The index provided (' + index + ') is greater than or equal to the maximum bound (' + maxIndex + ').');\n }\n}\n\n},{\"./log.js\":139}],143:[function(_dereq_,module,exports){\n/**\n * @file to-title-case.js\n *\n * Uppercase the first letter of a string\n *\n * @param {String} string String to be uppercased\n * @return {String}\n * @private\n * @method toTitleCase\n */\n\"use strict\";\n\nexports.__esModule = true;\nfunction toTitleCase(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexports[\"default\"] = toTitleCase;\nmodule.exports = exports[\"default\"];\n\n},{}],144:[function(_dereq_,module,exports){\n/**\n * @file url.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _globalDocument = _dereq_('global/document');\n\nvar _globalDocument2 = _interopRequireDefault(_globalDocument);\n\nvar _globalWindow = _dereq_('global/window');\n\nvar _globalWindow2 = _interopRequireDefault(_globalWindow);\n\n/**\n * Resolve and parse the elements of a URL\n *\n * @param {String} url The url to parse\n * @return {Object} An object of url details\n * @method parseUrl\n */\nvar parseUrl = function parseUrl(url) {\n var props = ['protocol', 'hostname', 'port', 'pathname', 'search', 'hash', 'host'];\n\n // add the url to an anchor and let the browser parse the URL\n var a = _globalDocument2['default'].createElement('a');\n a.href = url;\n\n // IE8 (and 9?) Fix\n // ie8 doesn't parse the URL correctly until the anchor is actually\n // added to the body, and an innerHTML is needed to trigger the parsing\n var addToBody = a.host === '' && a.protocol !== 'file:';\n var div = undefined;\n if (addToBody) {\n div = _globalDocument2['default'].createElement('div');\n div.innerHTML = '';\n a = div.firstChild;\n // prevent the div from affecting layout\n div.setAttribute('style', 'display:none; position:absolute;');\n _globalDocument2['default'].body.appendChild(div);\n }\n\n // Copy the specific URL properties to a new object\n // This is also needed for IE8 because the anchor loses its\n // properties when it's removed from the dom\n var details = {};\n for (var i = 0; i < props.length; i++) {\n details[props[i]] = a[props[i]];\n }\n\n // IE9 adds the port to the host property unlike everyone else. If\n // a port identifier is added for standard ports, strip it.\n if (details.protocol === 'http:') {\n details.host = details.host.replace(/:80$/, '');\n }\n if (details.protocol === 'https:') {\n details.host = details.host.replace(/:443$/, '');\n }\n\n if (addToBody) {\n _globalDocument2['default'].body.removeChild(div);\n }\n\n return details;\n};\n\nexports.parseUrl = parseUrl;\n/**\n * Get absolute version of relative URL. Used to tell flash correct URL.\n * http://stackoverflow.com/questions/470832/getting-an-absolute-url-from-a-relative-one-ie6-issue\n *\n * @param {String} url URL to make absolute\n * @return {String} Absolute URL\n * @private\n * @method getAbsoluteURL\n */\nvar getAbsoluteURL = function getAbsoluteURL(url) {\n // Check if absolute URL\n if (!url.match(/^https?:\\/\\//)) {\n // Convert to absolute URL. Flash hosted off-site needs an absolute URL.\n var div = _globalDocument2['default'].createElement('div');\n div.innerHTML = 'x';\n url = div.firstChild.href;\n }\n\n return url;\n};\n\nexports.getAbsoluteURL = getAbsoluteURL;\n/**\n * Returns the extension of the passed file name. It will return an empty string if you pass an invalid path\n *\n * @param {String} path The fileName path like '/path/to/file.mp4'\n * @returns {String} The extension in lower case or an empty string if no extension could be found.\n * @method getFileExtension\n */\nvar getFileExtension = function getFileExtension(path) {\n if (typeof path === 'string') {\n var splitPathRe = /^(\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?)(\\.([^\\.\\/\\?]+)))(?:[\\/]*|[\\?].*)$/i;\n var pathParts = splitPathRe.exec(path);\n\n if (pathParts) {\n return pathParts.pop().toLowerCase();\n }\n }\n\n return '';\n};\n\nexports.getFileExtension = getFileExtension;\n/**\n * Returns whether the url passed is a cross domain request or not.\n *\n * @param {String} url The url to check\n * @return {Boolean} Whether it is a cross domain request or not\n * @method isCrossOrigin\n */\nvar isCrossOrigin = function isCrossOrigin(url) {\n var winLoc = _globalWindow2['default'].location;\n var urlInfo = parseUrl(url);\n\n // IE8 protocol relative urls will return ':' for protocol\n var srcProtocol = urlInfo.protocol === ':' ? winLoc.protocol : urlInfo.protocol;\n\n // Check if url is for another domain/origin\n // IE8 doesn't know location.origin, so we won't rely on it here\n var crossOrigin = srcProtocol + urlInfo.host !== winLoc.protocol + winLoc.host;\n\n return crossOrigin;\n};\nexports.isCrossOrigin = isCrossOrigin;\n\n},{\"global/document\":1,\"global/window\":2}],145:[function(_dereq_,module,exports){\n/**\n * @file video.js\n */\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _globalWindow = _dereq_('global/window');\n\nvar _globalWindow2 = _interopRequireDefault(_globalWindow);\n\nvar _globalDocument = _dereq_('global/document');\n\nvar _globalDocument2 = _interopRequireDefault(_globalDocument);\n\nvar _setup = _dereq_('./setup');\n\nvar setup = _interopRequireWildcard(_setup);\n\nvar _utilsStylesheetJs = _dereq_('./utils/stylesheet.js');\n\nvar stylesheet = _interopRequireWildcard(_utilsStylesheetJs);\n\nvar _component = _dereq_('./component');\n\nvar _component2 = _interopRequireDefault(_component);\n\nvar _eventTarget = _dereq_('./event-target');\n\nvar _eventTarget2 = _interopRequireDefault(_eventTarget);\n\nvar _utilsEventsJs = _dereq_('./utils/events.js');\n\nvar Events = _interopRequireWildcard(_utilsEventsJs);\n\nvar _player = _dereq_('./player');\n\nvar _player2 = _interopRequireDefault(_player);\n\nvar _pluginsJs = _dereq_('./plugins.js');\n\nvar _pluginsJs2 = _interopRequireDefault(_pluginsJs);\n\nvar _srcJsUtilsMergeOptionsJs = _dereq_('../../src/js/utils/merge-options.js');\n\nvar _srcJsUtilsMergeOptionsJs2 = _interopRequireDefault(_srcJsUtilsMergeOptionsJs);\n\nvar _utilsFnJs = _dereq_('./utils/fn.js');\n\nvar Fn = _interopRequireWildcard(_utilsFnJs);\n\nvar _tracksTextTrackJs = _dereq_('./tracks/text-track.js');\n\nvar _tracksTextTrackJs2 = _interopRequireDefault(_tracksTextTrackJs);\n\nvar _objectAssign = _dereq_('object.assign');\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\nvar _utilsTimeRangesJs = _dereq_('./utils/time-ranges.js');\n\nvar _utilsFormatTimeJs = _dereq_('./utils/format-time.js');\n\nvar _utilsFormatTimeJs2 = _interopRequireDefault(_utilsFormatTimeJs);\n\nvar _utilsLogJs = _dereq_('./utils/log.js');\n\nvar _utilsLogJs2 = _interopRequireDefault(_utilsLogJs);\n\nvar _utilsDomJs = _dereq_('./utils/dom.js');\n\nvar Dom = _interopRequireWildcard(_utilsDomJs);\n\nvar _utilsBrowserJs = _dereq_('./utils/browser.js');\n\nvar browser = _interopRequireWildcard(_utilsBrowserJs);\n\nvar _utilsUrlJs = _dereq_('./utils/url.js');\n\nvar Url = _interopRequireWildcard(_utilsUrlJs);\n\nvar _extendJs = _dereq_('./extend.js');\n\nvar _extendJs2 = _interopRequireDefault(_extendJs);\n\nvar _lodashCompatObjectMerge = _dereq_('lodash-compat/object/merge');\n\nvar _lodashCompatObjectMerge2 = _interopRequireDefault(_lodashCompatObjectMerge);\n\nvar _utilsCreateDeprecationProxyJs = _dereq_('./utils/create-deprecation-proxy.js');\n\nvar _utilsCreateDeprecationProxyJs2 = _interopRequireDefault(_utilsCreateDeprecationProxyJs);\n\nvar _xhr = _dereq_('xhr');\n\nvar _xhr2 = _interopRequireDefault(_xhr);\n\n// Include the built-in techs\n\nvar _techTechJs = _dereq_('./tech/tech.js');\n\nvar _techTechJs2 = _interopRequireDefault(_techTechJs);\n\nvar _techHtml5Js = _dereq_('./tech/html5.js');\n\nvar _techHtml5Js2 = _interopRequireDefault(_techHtml5Js);\n\nvar _techFlashJs = _dereq_('./tech/flash.js');\n\nvar _techFlashJs2 = _interopRequireDefault(_techFlashJs);\n\n// HTML5 Element Shim for IE8\nif (typeof HTMLVideoElement === 'undefined') {\n _globalDocument2['default'].createElement('video');\n _globalDocument2['default'].createElement('audio');\n _globalDocument2['default'].createElement('track');\n}\n\n/**\n * Doubles as the main function for users to create a player instance and also\n * the main library object.\n * The `videojs` function can be used to initialize or retrieve a player.\n * ```js\n * var myPlayer = videojs('my_video_id');\n * ```\n *\n * @param {String|Element} id Video element or video element ID\n * @param {Object=} options Optional options object for config/settings\n * @param {Function=} ready Optional ready callback\n * @return {Player} A player instance\n * @mixes videojs\n * @method videojs\n */\nvar videojs = function videojs(id, options, ready) {\n var tag = undefined; // Element of ID\n\n // Allow for element or ID to be passed in\n // String ID\n if (typeof id === 'string') {\n\n // Adjust for jQuery ID syntax\n if (id.indexOf('#') === 0) {\n id = id.slice(1);\n }\n\n // If a player instance has already been created for this ID return it.\n if (videojs.getPlayers()[id]) {\n\n // If options or ready funtion are passed, warn\n if (options) {\n _utilsLogJs2['default'].warn('Player \"' + id + '\" is already initialised. Options will not be applied.');\n }\n\n if (ready) {\n videojs.getPlayers()[id].ready(ready);\n }\n\n return videojs.getPlayers()[id];\n\n // Otherwise get element for ID\n } else {\n tag = Dom.getEl(id);\n }\n\n // ID is a media element\n } else {\n tag = id;\n }\n\n // Check for a useable element\n if (!tag || !tag.nodeName) {\n // re: nodeName, could be a box div also\n throw new TypeError('The element or ID supplied is not valid. (videojs)'); // Returns\n }\n\n // Element may have a player attr referring to an already created player instance.\n // If not, set up a new player and return the instance.\n return tag['player'] || _player2['default'].players[tag.playerId] || new _player2['default'](tag, options, ready);\n};\n\n// Add default styles\nif (_globalWindow2['default'].VIDEOJS_NO_DYNAMIC_STYLE !== true) {\n var style = Dom.$('.vjs-styles-defaults');\n\n if (!style) {\n style = stylesheet.createStyleElement('vjs-styles-defaults');\n var head = Dom.$('head');\n head.insertBefore(style, head.firstChild);\n stylesheet.setTextContent(style, '\\n .video-js {\\n width: 300px;\\n height: 150px;\\n }\\n\\n .vjs-fluid {\\n padding-top: 56.25%\\n }\\n ');\n }\n}\n\n// Run Auto-load players\n// You have to wait at least once in case this script is loaded after your video in the DOM (weird behavior only with minified version)\nsetup.autoSetupTimeout(1, videojs);\n\n/*\n * Current software version (semver)\n *\n * @type {String}\n */\nvideojs.VERSION = '5.9.2';\n\n/**\n * The global options object. These are the settings that take effect\n * if no overrides are specified when the player is created.\n *\n * ```js\n * videojs.options.autoplay = true\n * // -> all players will autoplay by default\n * ```\n *\n * @type {Object}\n */\nvideojs.options = _player2['default'].prototype.options_;\n\n/**\n * Get an object with the currently created players, keyed by player ID\n *\n * @return {Object} The created players\n * @mixes videojs\n * @method getPlayers\n */\nvideojs.getPlayers = function () {\n return _player2['default'].players;\n};\n\n/**\n * For backward compatibility, expose players object.\n *\n * @deprecated\n * @memberOf videojs\n * @property {Object|Proxy} players\n */\nvideojs.players = _utilsCreateDeprecationProxyJs2['default'](_player2['default'].players, {\n get: 'Access to videojs.players is deprecated; use videojs.getPlayers instead',\n set: 'Modification of videojs.players is deprecated'\n});\n\n/**\n * Get a component class object by name\n * ```js\n * var VjsButton = videojs.getComponent('Button');\n * // Create a new instance of the component\n * var myButton = new VjsButton(myPlayer);\n * ```\n *\n * @return {Component} Component identified by name\n * @mixes videojs\n * @method getComponent\n */\nvideojs.getComponent = _component2['default'].getComponent;\n\n/**\n * Register a component so it can referred to by name\n * Used when adding to other\n * components, either through addChild\n * `component.addChild('myComponent')`\n * or through default children options\n * `{ children: ['myComponent'] }`.\n * ```js\n * // Get a component to subclass\n * var VjsButton = videojs.getComponent('Button');\n * // Subclass the component (see 'extend' doc for more info)\n * var MySpecialButton = videojs.extend(VjsButton, {});\n * // Register the new component\n * VjsButton.registerComponent('MySepcialButton', MySepcialButton);\n * // (optionally) add the new component as a default player child\n * myPlayer.addChild('MySepcialButton');\n * ```\n * NOTE: You could also just initialize the component before adding.\n * `component.addChild(new MyComponent());`\n *\n * @param {String} The class name of the component\n * @param {Component} The component class\n * @return {Component} The newly registered component\n * @mixes videojs\n * @method registerComponent\n */\nvideojs.registerComponent = function (name, comp) {\n if (_techTechJs2['default'].isTech(comp)) {\n _utilsLogJs2['default'].warn('The ' + name + ' tech was registered as a component. It should instead be registered using videojs.registerTech(name, tech)');\n }\n\n _component2['default'].registerComponent.call(_component2['default'], name, comp);\n};\n\n/**\n * Get a Tech class object by name\n * ```js\n * var Html5 = videojs.getTech('Html5');\n * // Create a new instance of the component\n * var html5 = new Html5(options);\n * ```\n *\n * @return {Tech} Tech identified by name\n * @mixes videojs\n * @method getComponent\n */\nvideojs.getTech = _techTechJs2['default'].getTech;\n\n/**\n * Register a Tech so it can referred to by name.\n * This is used in the tech order for the player.\n *\n * ```js\n * // get the Html5 Tech\n * var Html5 = videojs.getTech('Html5');\n * var MyTech = videojs.extend(Html5, {});\n * // Register the new Tech\n * VjsButton.registerTech('Tech', MyTech);\n * var player = videojs('myplayer', {\n * techOrder: ['myTech', 'html5']\n * });\n * ```\n *\n * @param {String} The class name of the tech\n * @param {Tech} The tech class\n * @return {Tech} The newly registered Tech\n * @mixes videojs\n * @method registerTech\n */\nvideojs.registerTech = _techTechJs2['default'].registerTech;\n\n/**\n * A suite of browser and device tests\n *\n * @type {Object}\n * @private\n */\nvideojs.browser = browser;\n\n/**\n * Whether or not the browser supports touch events. Included for backward\n * compatibility with 4.x, but deprecated. Use `videojs.browser.TOUCH_ENABLED`\n * instead going forward.\n *\n * @deprecated\n * @type {Boolean}\n */\nvideojs.TOUCH_ENABLED = browser.TOUCH_ENABLED;\n\n/**\n * Subclass an existing class\n * Mimics ES6 subclassing with the `extend` keyword\n * ```js\n * // Create a basic javascript 'class'\n * function MyClass(name){\n * // Set a property at initialization\n * this.myName = name;\n * }\n * // Create an instance method\n * MyClass.prototype.sayMyName = function(){\n * alert(this.myName);\n * };\n * // Subclass the exisitng class and change the name\n * // when initializing\n * var MySubClass = videojs.extend(MyClass, {\n * constructor: function(name) {\n * // Call the super class constructor for the subclass\n * MyClass.call(this, name)\n * }\n * });\n * // Create an instance of the new sub class\n * var myInstance = new MySubClass('John');\n * myInstance.sayMyName(); // -> should alert \"John\"\n * ```\n *\n * @param {Function} The Class to subclass\n * @param {Object} An object including instace methods for the new class\n * Optionally including a `constructor` function\n * @return {Function} The newly created subclass\n * @mixes videojs\n * @method extend\n */\nvideojs.extend = _extendJs2['default'];\n\n/**\n * Merge two options objects recursively\n * Performs a deep merge like lodash.merge but **only merges plain objects**\n * (not arrays, elements, anything else)\n * Other values will be copied directly from the second object.\n * ```js\n * var defaultOptions = {\n * foo: true,\n * bar: {\n * a: true,\n * b: [1,2,3]\n * }\n * };\n * var newOptions = {\n * foo: false,\n * bar: {\n * b: [4,5,6]\n * }\n * };\n * var result = videojs.mergeOptions(defaultOptions, newOptions);\n * // result.foo = false;\n * // result.bar.a = true;\n * // result.bar.b = [4,5,6];\n * ```\n *\n * @param {Object} defaults The options object whose values will be overriden\n * @param {Object} overrides The options object with values to override the first\n * @param {Object} etc Any number of additional options objects\n *\n * @return {Object} a new object with the merged values\n * @mixes videojs\n * @method mergeOptions\n */\nvideojs.mergeOptions = _srcJsUtilsMergeOptionsJs2['default'];\n\n/**\n * Change the context (this) of a function\n *\n * videojs.bind(newContext, function(){\n * this === newContext\n * });\n *\n * NOTE: as of v5.0 we require an ES5 shim, so you should use the native\n * `function(){}.bind(newContext);` instead of this.\n *\n * @param {*} context The object to bind as scope\n * @param {Function} fn The function to be bound to a scope\n * @param {Number=} uid An optional unique ID for the function to be set\n * @return {Function}\n */\nvideojs.bind = Fn.bind;\n\n/**\n * Create a Video.js player plugin\n * Plugins are only initialized when options for the plugin are included\n * in the player options, or the plugin function on the player instance is\n * called.\n * **See the plugin guide in the docs for a more detailed example**\n * ```js\n * // Make a plugin that alerts when the player plays\n * videojs.plugin('myPlugin', function(myPluginOptions) {\n * myPluginOptions = myPluginOptions || {};\n *\n * var player = this;\n * var alertText = myPluginOptions.text || 'Player is playing!'\n *\n * player.on('play', function(){\n * alert(alertText);\n * });\n * });\n * // USAGE EXAMPLES\n * // EXAMPLE 1: New player with plugin options, call plugin immediately\n * var player1 = videojs('idOne', {\n * myPlugin: {\n * text: 'Custom text!'\n * }\n * });\n * // Click play\n * // --> Should alert 'Custom text!'\n * // EXAMPLE 3: New player, initialize plugin later\n * var player3 = videojs('idThree');\n * // Click play\n * // --> NO ALERT\n * // Click pause\n * // Initialize plugin using the plugin function on the player instance\n * player3.myPlugin({\n * text: 'Plugin added later!'\n * });\n * // Click play\n * // --> Should alert 'Plugin added later!'\n * ```\n *\n * @param {String} name The plugin name\n * @param {Function} fn The plugin function that will be called with options\n * @mixes videojs\n * @method plugin\n */\nvideojs.plugin = _pluginsJs2['default'];\n\n/**\n * Adding languages so that they're available to all players.\n * ```js\n * videojs.addLanguage('es', { 'Hello': 'Hola' });\n * ```\n *\n * @param {String} code The language code or dictionary property\n * @param {Object} data The data values to be translated\n * @return {Object} The resulting language dictionary object\n * @mixes videojs\n * @method addLanguage\n */\nvideojs.addLanguage = function (code, data) {\n var _merge;\n\n code = ('' + code).toLowerCase();\n return _lodashCompatObjectMerge2['default'](videojs.options.languages, (_merge = {}, _merge[code] = data, _merge))[code];\n};\n\n/**\n * Log debug messages.\n *\n * @param {...Object} messages One or more messages to log\n */\nvideojs.log = _utilsLogJs2['default'];\n\n/**\n * Creates an emulated TimeRange object.\n *\n * @param {Number|Array} start Start time in seconds or an array of ranges\n * @param {Number} end End time in seconds\n * @return {Object} Fake TimeRange object\n * @method createTimeRange\n */\nvideojs.createTimeRange = videojs.createTimeRanges = _utilsTimeRangesJs.createTimeRanges;\n\n/**\n * Format seconds as a time string, H:MM:SS or M:SS\n * Supplying a guide (in seconds) will force a number of leading zeros\n * to cover the length of the guide\n *\n * @param {Number} seconds Number of seconds to be turned into a string\n * @param {Number} guide Number (in seconds) to model the string after\n * @return {String} Time formatted as H:MM:SS or M:SS\n * @method formatTime\n */\nvideojs.formatTime = _utilsFormatTimeJs2['default'];\n\n/**\n * Resolve and parse the elements of a URL\n *\n * @param {String} url The url to parse\n * @return {Object} An object of url details\n * @method parseUrl\n */\nvideojs.parseUrl = Url.parseUrl;\n\n/**\n * Returns whether the url passed is a cross domain request or not.\n *\n * @param {String} url The url to check\n * @return {Boolean} Whether it is a cross domain request or not\n * @method isCrossOrigin\n */\nvideojs.isCrossOrigin = Url.isCrossOrigin;\n\n/**\n * Event target class.\n *\n * @type {Function}\n */\nvideojs.EventTarget = _eventTarget2['default'];\n\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String|Array} type Type of event to bind to.\n * @param {Function} fn Event listener.\n * @method on\n */\nvideojs.on = Events.on;\n\n/**\n * Trigger a listener only once for an event\n *\n * @param {Element|Object} elem Element or object to\n * @param {String|Array} type Name/type of event\n * @param {Function} fn Event handler function\n * @method one\n */\nvideojs.one = Events.one;\n\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem Object to remove listeners from\n * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element.\n * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type.\n * @method off\n */\nvideojs.off = Events.off;\n\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem Element to trigger an event on\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Boolean=} Returned only if default was prevented\n * @method trigger\n */\nvideojs.trigger = Events.trigger;\n\n/**\n * A cross-browser XMLHttpRequest wrapper. Here's a simple example:\n *\n * videojs.xhr({\n * body: someJSONString,\n * uri: \"/foo\",\n * headers: {\n * \"Content-Type\": \"application/json\"\n * }\n * }, function (err, resp, body) {\n * // check resp.statusCode\n * });\n *\n * Check out the [full\n * documentation](https://github.com/Raynos/xhr/blob/v2.1.0/README.md)\n * for more options.\n *\n * @param {Object} options settings for the request.\n * @return {XMLHttpRequest|XDomainRequest} the request object.\n * @see https://github.com/Raynos/xhr\n */\nvideojs.xhr = _xhr2['default'];\n\n/**\n * TextTrack class\n *\n * @type {Function}\n */\nvideojs.TextTrack = _tracksTextTrackJs2['default'];\n\n/**\n * Determines, via duck typing, whether or not a value is a DOM element.\n *\n * @method isEl\n * @param {Mixed} value\n * @return {Boolean}\n */\nvideojs.isEl = Dom.isEl;\n\n/**\n * Determines, via duck typing, whether or not a value is a text node.\n *\n * @method isTextNode\n * @param {Mixed} value\n * @return {Boolean}\n */\nvideojs.isTextNode = Dom.isTextNode;\n\n/**\n * Creates an element and applies properties.\n *\n * @method createEl\n * @param {String} [tagName='div'] Name of tag to be created.\n * @param {Object} [properties={}] Element properties to be applied.\n * @param {Object} [attributes={}] Element attributes to be applied.\n * @return {Element}\n */\nvideojs.createEl = Dom.createEl;\n\n/**\n * Check if an element has a CSS class\n *\n * @method hasClass\n * @param {Element} element Element to check\n * @param {String} classToCheck Classname to check\n */\nvideojs.hasClass = Dom.hasElClass;\n\n/**\n * Add a CSS class name to an element\n *\n * @method addClass\n * @param {Element} element Element to add class name to\n * @param {String} classToAdd Classname to add\n */\nvideojs.addClass = Dom.addElClass;\n\n/**\n * Remove a CSS class name from an element\n *\n * @method removeClass\n * @param {Element} element Element to remove from class name\n * @param {String} classToRemove Classname to remove\n */\nvideojs.removeClass = Dom.removeElClass;\n\n/**\n * Adds or removes a CSS class name on an element depending on an optional\n * condition or the presence/absence of the class name.\n *\n * @method toggleElClass\n * @param {Element} element\n * @param {String} classToToggle\n * @param {Boolean|Function} [predicate]\n * Can be a function that returns a Boolean. If `true`, the class\n * will be added; if `false`, the class will be removed. If not\n * given, the class will be added if not present and vice versa.\n */\nvideojs.toggleClass = Dom.toggleElClass;\n\n/**\n * Apply attributes to an HTML element.\n *\n * @method setAttributes\n * @param {Element} el Target element.\n * @param {Object=} attributes Element attributes to be applied.\n */\nvideojs.setAttributes = Dom.setElAttributes;\n\n/**\n * Get an element's attribute values, as defined on the HTML tag\n * Attributes are not the same as properties. They're defined on the tag\n * or with setAttribute (which shouldn't be used with HTML)\n * This will return true or false for boolean attributes.\n *\n * @method getAttributes\n * @param {Element} tag Element from which to get tag attributes\n * @return {Object}\n */\nvideojs.getAttributes = Dom.getElAttributes;\n\n/**\n * Empties the contents of an element.\n *\n * @method emptyEl\n * @param {Element} el\n * @return {Element}\n */\nvideojs.emptyEl = Dom.emptyEl;\n\n/**\n * Normalizes and appends content to an element.\n *\n * The content for an element can be passed in multiple types and\n * combinations, whose behavior is as follows:\n *\n * - String\n * Normalized into a text node.\n *\n * - Element, TextNode\n * Passed through.\n *\n * - Array\n * A one-dimensional array of strings, elements, nodes, or functions (which\n * return single strings, elements, or nodes).\n *\n * - Function\n * If the sole argument, is expected to produce a string, element,\n * node, or array.\n *\n * @method appendContent\n * @param {Element} el\n * @param {String|Element|TextNode|Array|Function} content\n * @return {Element}\n */\nvideojs.appendContent = Dom.appendContent;\n\n/**\n * Normalizes and inserts content into an element; this is identical to\n * `appendContent()`, except it empties the element first.\n *\n * The content for an element can be passed in multiple types and\n * combinations, whose behavior is as follows:\n *\n * - String\n * Normalized into a text node.\n *\n * - Element, TextNode\n * Passed through.\n *\n * - Array\n * A one-dimensional array of strings, elements, nodes, or functions (which\n * return single strings, elements, or nodes).\n *\n * - Function\n * If the sole argument, is expected to produce a string, element,\n * node, or array.\n *\n * @method insertContent\n * @param {Element} el\n * @param {String|Element|TextNode|Array|Function} content\n * @return {Element}\n */\nvideojs.insertContent = Dom.insertContent;\n\n/*\n * Custom Universal Module Definition (UMD)\n *\n * Video.js will never be a non-browser lib so we can simplify UMD a bunch and\n * still support requirejs and browserify. This also needs to be closure\n * compiler compatible, so string keys are used.\n */\nif (typeof define === 'function' && define['amd']) {\n define('videojs', [], function () {\n return videojs;\n });\n\n // checking that module is an object too because of umdjs/umd#35\n} else if (typeof exports === 'object' && typeof module === 'object') {\n module['exports'] = videojs;\n }\n\nexports['default'] = videojs;\nmodule.exports = exports['default'];\n\n},{\"../../src/js/utils/merge-options.js\":140,\"./component\":67,\"./event-target\":101,\"./extend.js\":102,\"./player\":110,\"./plugins.js\":111,\"./setup\":115,\"./tech/flash.js\":118,\"./tech/html5.js\":119,\"./tech/tech.js\":121,\"./tracks/text-track.js\":130,\"./utils/browser.js\":131,\"./utils/create-deprecation-proxy.js\":133,\"./utils/dom.js\":134,\"./utils/events.js\":135,\"./utils/fn.js\":136,\"./utils/format-time.js\":137,\"./utils/log.js\":139,\"./utils/stylesheet.js\":141,\"./utils/time-ranges.js\":142,\"./utils/url.js\":144,\"global/document\":1,\"global/window\":2,\"lodash-compat/object/merge\":40,\"object.assign\":45,\"xhr\":56}]},{},[145])(145)\n});\n\n\n//# sourceMappingURL=video.js.map\n/* vtt.js - v0.12.1 (https://github.com/mozilla/vtt.js) built on 08-07-2015 */\n\n(function(root) {\n var vttjs = root.vttjs = {};\n var cueShim = vttjs.VTTCue;\n var regionShim = vttjs.VTTRegion;\n var oldVTTCue = root.VTTCue;\n var oldVTTRegion = root.VTTRegion;\n\n vttjs.shim = function() {\n vttjs.VTTCue = cueShim;\n vttjs.VTTRegion = regionShim;\n };\n\n vttjs.restore = function() {\n vttjs.VTTCue = oldVTTCue;\n vttjs.VTTRegion = oldVTTRegion;\n };\n}(this));\n\n/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n(function(root, vttjs) {\n\n var autoKeyword = \"auto\";\n var directionSetting = {\n \"\": true,\n \"lr\": true,\n \"rl\": true\n };\n var alignSetting = {\n \"start\": true,\n \"middle\": true,\n \"end\": true,\n \"left\": true,\n \"right\": true\n };\n\n function findDirectionSetting(value) {\n if (typeof value !== \"string\") {\n return false;\n }\n var dir = directionSetting[value.toLowerCase()];\n return dir ? value.toLowerCase() : false;\n }\n\n function findAlignSetting(value) {\n if (typeof value !== \"string\") {\n return false;\n }\n var align = alignSetting[value.toLowerCase()];\n return align ? value.toLowerCase() : false;\n }\n\n function extend(obj) {\n var i = 1;\n for (; i < arguments.length; i++) {\n var cobj = arguments[i];\n for (var p in cobj) {\n obj[p] = cobj[p];\n }\n }\n\n return obj;\n }\n\n function VTTCue(startTime, endTime, text) {\n var cue = this;\n var isIE8 = (/MSIE\\s8\\.0/).test(navigator.userAgent);\n var baseObj = {};\n\n if (isIE8) {\n cue = document.createElement('custom');\n } else {\n baseObj.enumerable = true;\n }\n\n /**\n * Shim implementation specific properties. These properties are not in\n * the spec.\n */\n\n // Lets us know when the VTTCue's data has changed in such a way that we need\n // to recompute its display state. This lets us compute its display state\n // lazily.\n cue.hasBeenReset = false;\n\n /**\n * VTTCue and TextTrackCue properties\n * http://dev.w3.org/html5/webvtt/#vttcue-interface\n */\n\n var _id = \"\";\n var _pauseOnExit = false;\n var _startTime = startTime;\n var _endTime = endTime;\n var _text = text;\n var _region = null;\n var _vertical = \"\";\n var _snapToLines = true;\n var _line = \"auto\";\n var _lineAlign = \"start\";\n var _position = 50;\n var _positionAlign = \"middle\";\n var _size = 50;\n var _align = \"middle\";\n\n Object.defineProperty(cue,\n \"id\", extend({}, baseObj, {\n get: function() {\n return _id;\n },\n set: function(value) {\n _id = \"\" + value;\n }\n }));\n\n Object.defineProperty(cue,\n \"pauseOnExit\", extend({}, baseObj, {\n get: function() {\n return _pauseOnExit;\n },\n set: function(value) {\n _pauseOnExit = !!value;\n }\n }));\n\n Object.defineProperty(cue,\n \"startTime\", extend({}, baseObj, {\n get: function() {\n return _startTime;\n },\n set: function(value) {\n if (typeof value !== \"number\") {\n throw new TypeError(\"Start time must be set to a number.\");\n }\n _startTime = value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"endTime\", extend({}, baseObj, {\n get: function() {\n return _endTime;\n },\n set: function(value) {\n if (typeof value !== \"number\") {\n throw new TypeError(\"End time must be set to a number.\");\n }\n _endTime = value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"text\", extend({}, baseObj, {\n get: function() {\n return _text;\n },\n set: function(value) {\n _text = \"\" + value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"region\", extend({}, baseObj, {\n get: function() {\n return _region;\n },\n set: function(value) {\n _region = value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"vertical\", extend({}, baseObj, {\n get: function() {\n return _vertical;\n },\n set: function(value) {\n var setting = findDirectionSetting(value);\n // Have to check for false because the setting an be an empty string.\n if (setting === false) {\n throw new SyntaxError(\"An invalid or illegal string was specified.\");\n }\n _vertical = setting;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"snapToLines\", extend({}, baseObj, {\n get: function() {\n return _snapToLines;\n },\n set: function(value) {\n _snapToLines = !!value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"line\", extend({}, baseObj, {\n get: function() {\n return _line;\n },\n set: function(value) {\n if (typeof value !== \"number\" && value !== autoKeyword) {\n throw new SyntaxError(\"An invalid number or illegal string was specified.\");\n }\n _line = value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"lineAlign\", extend({}, baseObj, {\n get: function() {\n return _lineAlign;\n },\n set: function(value) {\n var setting = findAlignSetting(value);\n if (!setting) {\n throw new SyntaxError(\"An invalid or illegal string was specified.\");\n }\n _lineAlign = setting;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"position\", extend({}, baseObj, {\n get: function() {\n return _position;\n },\n set: function(value) {\n if (value < 0 || value > 100) {\n throw new Error(\"Position must be between 0 and 100.\");\n }\n _position = value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"positionAlign\", extend({}, baseObj, {\n get: function() {\n return _positionAlign;\n },\n set: function(value) {\n var setting = findAlignSetting(value);\n if (!setting) {\n throw new SyntaxError(\"An invalid or illegal string was specified.\");\n }\n _positionAlign = setting;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"size\", extend({}, baseObj, {\n get: function() {\n return _size;\n },\n set: function(value) {\n if (value < 0 || value > 100) {\n throw new Error(\"Size must be between 0 and 100.\");\n }\n _size = value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"align\", extend({}, baseObj, {\n get: function() {\n return _align;\n },\n set: function(value) {\n var setting = findAlignSetting(value);\n if (!setting) {\n throw new SyntaxError(\"An invalid or illegal string was specified.\");\n }\n _align = setting;\n this.hasBeenReset = true;\n }\n }));\n\n /**\n * Other